5 months ago

Trends in Web Apps Development.

Mohamed Wagdy - Software Engineer @uniparticle
Development

Today, there are over one billion websites on the web, new websites are being created every second. However, there are only 200 million websites that are active. These websites tend to change as the web development trends and tech do. With the rapid advancements in technology, businesses should always know the latest web development trends, technologies, and approaches in order to take advantage of the new opportunities. 
On the other hand, being well-informed on the current trends is equally important for web developers if they attempt to deliver both quality and relevant software products. 
In a highly competitive market such as a digital one, it is important to foresee changes and learn how to adapt to them. Get to know some of the currently used web trends. 

#1 webRTC (real time communication). 
In the digital era -where real time communication is a very important factor in software development- websites are focusing on informing their users about important news and events as soon as possible. 
Initially done by phone calls, SMSs and emails; are now done by push notifications and web-sockets. 
Push notifications have quickly become a tool to drive conversions. This type of pop-app messages is targeted at holding the users’ attention and enabling smoother sending of small data messages. They are a great marketing tool for anyone with a mobile app as they help you stay in contact with your users. Just make sure you use this strategy carefully, as if you overuse this method, it’ll probably make users mute your notifications. 
Push notifications are actively utilized by the companies because they are cost-effective and affordable for all businesses. 
On the other hand, Web-sockets are one of the convenient ways to achieve real-time capabilities in an application. It gives us a lot of flexibility to achieve a full-duplex communication. 
There were a lot of trials to achieve full-duplex communication between a client and the server in the past, creating web apps that needed real-time data (like gaming or chat apps) required a lot of HTTP requests and responses to establish bidirectional data transfer. There were multiple methods used to achieve real-time capabilities, but none of them were neither reliable nor efficient when it comes to full-duplex real-time communications.. 

Web-sockets are commonly used in: 

  • Real-time web application: Real-time web application uses a web socket to show the data at the client end, which is sent continuously by the backend server. In Web-socket, data is continuously transmitted to the same connection which is already open, that is why web socket is faster and improves the application performance.
  • Gaming application: In a Gaming application, you might focus on receiving continuously the data by the server and without refreshing the connection, the screen gets automatically refreshed without even establishing the new connection, so it is very important in a Gaming application.
  • Chat application: Chat application uses Web-socket to establish the connection only once for exchange, publishing and broadcasting the message among the subscriber. it reuses the same Web-socket connection, for sending and receiving the message and one to one message transfer.
#2 serverless applications 
Serverless technology is the result of searching for the possibility to avoid system overloading, data loss, or costly development. Supported by major vendors like Amazon Web Services (AWS), serverless algorithms were recently built as a cloud-computing execution model. Accordingly, regular servers could be exchanged with clouds that manage machine resource consumption. 
Like many trends in software, there’s no one clear view of what Serverless is. As, it encompasses two overlapping areas: 
  • Serverless was used to describe applications that significantly/fully incorporate third-party, cloud-hosted applications and services, to manage server-side logic. These are typically “rich client” applications -think single-page web apps, or mobile apps- that use the vast ecosystem of cloud-accessible databases (e.g., Firebase), authentication services (e.g., Auth0), and so on. These types of services have been previously described as “Backend as a Service" (Baas).
  • Serverless can also mean applications where server-side logic is still written by the developer. But, unlike traditional architectures, it’s run in stateless containers that are event-triggered, and fully managed by a third party. One way to think of this is “Functions as a Service” (Faas).
Current web trends concerning serverless app architecture help reduce development and support budgets, strengthen apps with flexibility potential, and keep the Internet environment more sustainable. 
The large cloud vendors all have “Serverless portfolios” that include both Baas and Faas products, for example, Google’s Firebase BaaS database has explicit FaaS support through Google Cloud Functions for Firebase. 

#3 AI (artificial intelligence)

Artificial intelligence encompasses the following


#chatbots 

  • Chatbots are programmed chat interfaces inside a website so that the customers can interact with it, ask it for questions or help.
  • They closely mimic human behavior and replay to the customers in a conversational manner.
  • Think of a chatbot as website assistants helping consumers find their way in and out of your website information.
#Simple Chatbot 
Simple chatbots respond to pre-saved dictionary of keywords and commands programmed by a developer. Thus they can be useless sometimes when it comes to communication. So a website visitor asks a bot a question with words that doesn’t exist in it’s dictionary, the bot would fail to understand.


#Advanced Chatbot 

  • Advanced chatbots use Artificial Intelligence. This makes them understand basic language and respond with suggestions, without the need of a pre-saved dictionary. Also, it can become better and learn new keywords and phrases on communicating with website visitors.
  • Many visitors can chat with an AI chatbot without feeling they are talking to a machine
#marketing & statistics 
AI Marketing allows to get huge amounts of analytical statistics about your business from social media, emails in a very short time. This will help you boost campaign performance, change or assess your plans faster, and gives you more time to focus on other important tasks. Also, makes you understand who exactly your target audience is, thereby creating a personal experience for your users. 
There are several ways you can use AI in marketing to your advantage as: 
  • Sales forecasting:  AI can be used for gathering data about your past deals. It will gather the data from emails, and meetings. Then, gives you probabilities of success for your current and future plans. 
  • Find the trend:  Due to its ability to analyze very big chunks of data, AI can be used to analyze posts in groups and forms on social media to find upcoming trends. So your company can lead with these trends. 
  • Programmatic Ad Targeting:  Using the cookies data of the user to determine if the user meets an ads certain criteria, and based on this data shows users the ads that can be relevant to them. 

#4 micro-services 

Microservices are currently one of the hottest topics in software development. The concept is to break down your application into smaller pieces that each performs a single function and can be developed/deployed independently. These small pieces called services, can then be combined into a fully functioning application. The microservices approach is considered the architecture of choice for teams that want to build a scalable platform efficiently and rapidly. Also, the same service can be reused in any application in the future. 
Advantages of Using Microservices 
  • By linking together each tier of the application (database, business logic, and web layers), individual services can address each other by leveraging an API that is similar to an MVC-style pattern.
  • Using an API, the application can scale rapidly to accommodate heavy traffic data.
  • A service-oriented architecture can also provide greater visibility and easier troubleshooting.
  • Each microservice packaged into its own container prevents full application failures. In other words, the failure of one microservice does not impact another microservice.
  • Another advantage is their ability to be built and signed to ensure their integrity.
When you start moving to microservices, the first question before you write code is: How do you organize your codebase — do you create a repository for each service, or do you create a single ‘mono repo’ for all services? The two approaches are illustrated below: 
  • Multiple Repositories
  • Clear ownership. Since the codebase mimics the architecture, a small team can own and independently develop and deploy the full stack of a microservice.
  • Better scale. Smaller codebases are easier to manage and lead to fewer instances of "merge hell." Teams do not need to coordinate with other teams leading to faster execution.
  • Narrow clones. Most source control providers including git do not support cloning parts of a repository. For large codebases, clones, pulls, and pushes take too much time, which is inefficient.
  • Mono Repository
  • Better developer testing. Developers can easily run the entire platform on their machine and this helps them understand all services and how they work together. This has led our developers to find more bugs locally before even sending a pull request.
  • Reduced code complexity. Senior engineers can easily enforce standardization across all services since it is easy to keep track of pull requests and changes happening across the repository.
  • Effective code reviews. Most developers now understand the end to end platform leading to more bugs being identified and fixed at the code review stage.
  • Sharing of common components. Developers have a view of what is happening across all services and can effectively carve out common components.
  • Easy refactoring. Any time we want to rename something, refactoring is as simple as running a grep command. Restructuring is also easier as everything is neatly in one place and easier to understand.
Thus, Mono repos are the right choice for teams that want to ship code faster. There are concerns that this doesn't scale well, but these are largely unfounded. Companies like Twitter, Google, and Facebook run massive monolithic repos with thousands of developers. The only thing you really give up with a mono repo is the ability to shut off developers from code they don’t contribute to. There should be no reason to do this in a healthy organization with the right hiring practices. 

#5 Multi-tenant architecture 
What is multi-tenancy ? Multi-tenancy is serving multiple customers with different domains to serve them privately. It is commonly used for cost savings, single deployment point, and easier maintenance. 
Multi-tenancy can be achieved either by single database or multiple database. 
Although single database can be easier in migrations, and displaying data from multiple tenants on the same page, but each database query will contain an extra argument of the tenant id, and poses a lot of difficulties when integrating with third parties or trying to scale the database. 
On the other hand, multi-tenancy is the better approach as it gives easier scalability, better customer privacy, and data portability. But still you will have to work with more complex migrations. 
To choose the correct strategy, try to ask yourself: 
- Do you need to display information from different tenants on the same page? 
- Do you plan on integrating with many third party packages? 
- Are your customers providing highly sensitive data to your website? 

#6 Video processing in the background 
For video hosting and streaming websites, having a video background video processing is crucial. Where users, used to upload all the videos qualities to be streamed on the website, and had to do a lot of editing to their videos before uploading. Also, people could download the video easily without your permission. 
Today, most websites offer basic video processing and editing tool for users to use on uploading the video, then a background server could process the video and extract all the qualities and when ready the video becomes live on the website. 
FFMPEG video library is one of the most used libraries for website video processing, where with few commands, it extracts different streaming qualities from a video, changing the video format to DASH or HLS, which are formats used for video streaming as to protect your video from being downloaded, and enhances watching/streaming videos online.