Mastering Spring Boot 2.0
上QQ阅读APP看书,第一时间看更新

Cloud-native application architecture

Many top companies are moving ahead very rapidly due to a lot of innovations in business and innovations in the software they are using. As Mark Andreessen said, Software is eating the world. So software is also one of the main pillars for each business. Top companies are innovating the following common features:

  • Software speed
  • Availability of services
  • Software scalability
  • Software user experiences for all devices, such as computer and mobile

So moving to the cloud is one of the major evolutions in software innovations; providing cloud-native solutions and architecture to software is one of the major innovations taken by many top companies. Cloud provides on-demand storage resources and networking solutions elastically. Such services include Amazon Web Services, Google Cloud, and Microsoft Azure.

Using cloud-native application architecture gives you several benefits and addresses the common problems of scalability, durability, and availability. Here are some common motivations for the cloud-native application architecture:

  • Speed of the application
  • Safety and security
  • Software scalability
  • Monitoring the application
  • Fault isolation and tolerance

So, as you can see, your application must follow cloud-native patterns because it is based on the distributed nature and easily scalable. The application must be designed as horizontally scalable rather than vertically scalability. Microservices architecture is one of the examples of horizontally scalable application architectures. You could create a number of small applications or services based on the bounded context instead of creating a single large application. The cloud-native pattern provides optimal resource utilization; if your application needs resources, it provides the resource elastically on demand. Suppose your application doesn't need more resources, then it must release these zero utilization resources. The elasticity of the cloud demands ephemerality.

Horizontally scalable means we can add resources on demand to the existing application without making any changes in the application. In the case of vertical scalability, we have to change the application architecture.

If you want to create applications, then at the initial level of design you have to focus on some key characteristics of the cloud-native application architecture. The following are key characteristics of the cloud-native application:

  • Twelve-Factor applications: A set of patterns for an optimized application to improve application design for speed, safety, and scale.
  • Microservices: An architecture pattern. According to this pattern, we create inpidual and independent services such as deploying these without impacting other business services. It allows each capability to move independently and autonomously, and in turn faster and safer.
  • Self-service agile infrastructure: It is related to the cloud platforms and infrastructure that enable development teams to operate at an application and service-abstraction level.
  • API-based collaboration: It defines service-to-service interaction between several microservices.
  • Antifragility: It is related to responsiveness, which means that as we increase load on the system using sudden traffic or speed and scale, the system improves its ability to respond, increasing safety.

The preceding points are the best practices for any cloud-based application. Spring Cloud facilitates these styles of development. So let's move to the next section and explore one of the characteristics of the cloud-native application—the microservices architecture.