
Designing Your Cloud-Native Application
In this chapter, we pause application development and take a step back to look at the bigger picture of designing cloud applications. As seen in the first chapter, applications in the cloud have more unique challenges than the traditional enterprise applications that we have been developing so far. Also, the business requirement of agility has to be met by not compromising on performance, stability, and resiliency. Hence, a look at the first principles becomes important.
In the first chapter, we had a look at the differences between cloud environments and traditional enterprises, and how the concepts of DevOps, 12-factor app, microservices, and ecosystems are important. Here, we will look at the various principles and techniques that enable us to design robust, scalable, and agile applications.
Some of the areas we will cover include the dominance of the REST, HTTP, and JSON for building APIs, the role of the API gateways, how to decouple applications, how to identify microservices, various microservice design guidelines, the role of the data architecture, and the role of security in designing the APIs.
We will cover the following topics in this chapter:
- Popularity of REST, HTTP, and JSON
- Rise and popularity of the APIs
- Role of API gateways
- Decoupling—the need for smaller application boundaries
- Microservice identifications
- Microservice design guidelines
- Microservice patterns
- Data architecture
- Role of security