Basic Cloud Architecture
The diagram below is a representation of a well-structured basic web application, if you are not a cloud developer, you will probably find it complicated.
Next, we will get to know each one of these components and give an introduction so that you can have the necessary knowledge when including it in the project architecture.
The acronym DNS (Domain Name System) is the technology that allows the internet. This component allows all IP and domains to be referenced and found. Imagine a giant phone book on the internet, it is through it that you can find where a particular address is. When we enter a domain in our browser, for example, http://www.pudim.com.br, that address will be searched in this phone book to find where it should be directed to, it is always behind an IP, in the case of that address it is 184.108.40.206.
(2) LOAD BALANCE
Load Balance is an essential component for cloud architecture, one of the main characteristics of cloud applications is its horizontal scalability, that is, we can create numerous instances (replicas) of applications to meet a large demand of requests, thus ensuring availability. It is in this scenario that Load Balance enters because it will be responsible for distributing this demand among all existing instances, ensuring that the rules defined therein are met to avoid overload in a given instance and provide high performance of requests.
(3) WEB APP SERVER
These are the web application servers, basically, it is where the application is installed and will respond to the user by receiving the request and providing an HTML response. As the brain of the application, it will be responsible for communicating with a variety of other components, such as databases, queues, caches, microservices and much more. Server implementations require a choice a language (C # .NET, Node.js, Ruby, Scala, Java, etc.).
Basically, every application uses a database to store information. It is through them that we can store and update the data captured or generated by the application. In the cloud model, mainly with microservices, it is quite common to use several databases. Also, there are currently two database versions, the most used being the relational database (SQL Server, Oracle, MySql, etc.) and the non-relational database (CosmoDB, MongoDB, DynamoDB, etc.), basically, the difference is that the relational offers greater consistency and reliability and non-relational has the advantage of greater scalability, with the information grouped and stored in the same record.
(5) CACHE SERVER
The cache service basically provides query and persistence of data in virtually real-time. Applications generally use database queries that are executed several times and return the same value, to avoid processing this information, the cache stores this result in memory and keeps it available for the time configured for the application, thus making a big gain performance.
Most applications need to work asynchronously, that is, that is not associated with responding to a user’s request. For that, the “work queues” are used, it is through them that routines are scheduled to be executed from time to time to perform jobs that do not need to happen directly associated with users. The language options and underlying structures are as numerous as for web servers and most of them can be created in the “serverless” concept, which are algorithms that run without a server and are event-oriented.
These repositories are a simple and scalable way to store and access data in the cloud. They are perfect for any type of information you would store on a local file system, with the benefit of being accessible via http from anywhere. And you can also count on the redundancy configuration to guarantee its high availability.
Working with the cloud is simple and complex at the same time. These elements presented are a small part of the countless possibilities that exist to build an architecture, however, I hope that it will be useful to give the initial kick in its use. Believe that the future of applications will inevitably be in the cloud.