Technology’s Influence on Business Demands
Today, businesses are required to successfully adopt and apply rapidly changing technology in order to stay competitive and expand their markets and profits. Because of this, new techniques, frameworks and tools have been created to enable the development of Modern Web Applications that satisfy both actual business needs and end user demands. Different technologies have also emerged to solve common problems found in the implementation of software solutions. The correct utilization of these technologies allows the development of systems that can:
- Resist failure
- React faster to changing business needs
- Be accessed from different sources
- Reduce the effort required to interconnect with other systems
- Provide horizontal scalability with easy testing, monitoring and extending
- Deliver finer granularity of infrastructure services for costs management
Modern Web Application Execution Environments
Modern Web Applications run on two different execution environments: Front-end (Client) and back-end (Server). The programing languages, frameworks, development environments and tools used in each environment can be independent from each other. From this differentiation, new roles are considered in the modern development teams, where the skillsets of the developers are specialized in either end of the solution. There is also an additional role known as full-stack developer, which combines the skills of the front-end and a back-end developer.
The main goal of front-end components in a modern web application is to enable end users to access the functionality of an application and be provided with a positive experience. Nowadays browsers are more powerful than ever. The design of user interfaces in front-end applications has gone beyond the simple creation of forms that users interact with, and can now include responsive design, quiz games, gifs and much more.
Another interesting concept that is being adopted by many industries is the “Omni-channel model”. The Omni-channel is a business model that provides end-users with an integrated customer experience. This approach enables companies to sell, market and deliver services to their customers across different channels in an integrated and cohesive manner. Modern web applications can be considered as a channel that should be able to participate in an Omni-channel customer experience strategy.
One of the most popular patterns used in the modern web application is the Single Page Application (SPA) pattern. In an SPA, the resources needed to run the application are loaded in the browser only once, and the dynamic data and additional components are loaded as response to the actions executed by the user in the page. The following diagram shows the common components in an architecture for Single Page Applications.
Views – Views receive notifications on model changes and redraw themselves to reflect the current status of the models.
Model – Models are the in-memory representation of the data to be displayed in the views.
Whatever – Depending on the design pattern implemented, this component could be named differently. In an MVC pattern, for example, this could be the Controller. However, in other patterns like Flux, the component that performs these activities is named differently. This is why some people refer to these kinds of patterns as MVW (Model-View-Whatever).
From the technical point of view, the stack of technologies used to implement front-end applications for improved User Experience can be grouped in the following areas:
The back-end component is responsible for accessing information requested by an end-user via a front-end application in the most efficient way possible. It also handles complex business logic that is not exposed to client applications for security reasons. The back-end of modern web applications should satisfy technical requirements such as scalability, reusability and resiliency.
Microservices based architectures, along with cloud environments, API Management and integration infrastructure, provide a solution in the implementation of modern web applications to satisfy the requirements listed above.
Microservice based architecture is an architectural style that splits the functionality of an application into separate services that are loosely coupled. Every service encapsulates a specific business capability and should be considered an actual digital asset for the business. Individual services should be able to adapt to multiple contexts. The following are some best practices that should be considered when designing and implementing a microservices based architecture:
- The Domain Driven Design approach should be used to determine the services needed to implement the functionality of an application within a specific domain.
- A microservice should be small enough so that it can be built and maintained by a small group of developers.
- The microservices should expose their interfaces utilizing standard protocols such as RESTful APIs or AMQP.
- Every microservice should be deployed as an individual artifact and hard dependencies with other services should be avoided.
- Encapsulate the microservices into multiple business contexts.
- System APIs – Microservices that encapsulate Core Business Capabilities
- Process APIs – Composition of System APIs
- Experience APIs – Expose tailored APIs to apps.
Modern web applications are designed considering multiple factors such as scalability, re-usability, interoperability, resiliency and improved user experience.
Nowadays within the web development community there is an endless amount of development frameworks and tools that facilitate the implementation of web applications. The proper use of these tools in concert with the implementation of modern architectures, such as microservices, results in web applications that can respond in a faster way to changing business needs and at the same time provide an improved user experience, privileging the user’s preferred device for consumption.