Alguns conceitos que todos
desenvolvedor deveria saber antes de iniciar no mundo da nuvem.
O diagrama abaixo é uma
representação de uma aplicação web básica bem estruturada, caso você não seja
um desenvolvedor da nuvem, provavelmente achará complicado.
A seguir vamos conhecer cada um
desse componente e dar uma introdução para que você possa ter o conhecimento
necessário quando incluí-lo na arquitetura do projeto.
1. DNS
A sigla DNS (Domain Name System),
é a tecnologia que permite a internet. Esse componente permite que todos os IP
e domínios possa ser referenciados e encontrados. Imagine uma gigante lista
telefônica da internet, é através dela que é possível encontrar onde está um
determinado endereço. Quando informamos
um domínio em nosso navegador, por exemplo
www.pudim.com.br, esse endereço será pesquisa nesta lista telefonica
para encontrar onde deve ser direcionado a navegado, por trás é sempre um IP,
no caso desse endereço é o 54.207.20.104.
2. LOAD BALANCE
O Load Balance é um componente
essencial para a arquitetura de nuvem, uma das principais características das
aplicações em nuvem é sua escabilidade horizontal, ou seja, podemos criar
inúmeras instâncias (replicas) das aplicações para atender um grande demanda de
requisições, garantindo assim a disponibilidade. E neste cenário que o Load
Balance entra, porque ele será o responsável por distribuir essa demanda entre
todas as instâncias existentes, garantir um as regras neles definidas sejam
atendidas para evitar sobrecarga em determinada instância e prover alta
performance das requisições.
3.
WEB APP SERVER
Esse são os servidores de
aplicativos web, basicamente é onde a aplicação está instalada e responderá ao
usuário através do recebimento da requisição e fornecerá uma resposta HTML. Por
ser o cérebro da aplicação, será responsável por se comunicar com uma variedade
de outros componentes, como banco de dados, filas, cachês, microserviços e
muito mais. As implementações no servidor requer uma escolha de uma linguagem (C#
.NET , Node.js, Ruby, Scala, Java, etc).
4. DATABASE
Basicamente todo aplicativo
utiliza banco de dados para armazenar informações. É através deles que podemos
armazenar e atualizar os dados capturados ou gerados pela aplicação. No modelo
nuvem, principalmente com microserviços, é bem comum utilizarmos vários banco
de dados. Além disso atualmente existe duas versão de banco de dados, sendo a
mais utilizada o banco relacional (SQL Server, Oracle, MySql, etc) e banco não
relacional (CosmoDB, MongoDB , DynamoDB, etc), basicamente a diferença é que o
relacional oferece maior consistência e confiabilidade e não relacional tem
como vantagem uma escalabilidade maior, com a informação agrupada e armazenada
no mesmo registro.
5. CACHE SERVER
O serviço de cache basicamente
fornece a consulta e persistência de dados em praticamente tempo real. Os
aplicativos geralmente utilizam consulta ao banco de dados que são executadas
várias vezes e retornam o mesmo valor, para evitar o processamento dessa informação,
o cachê armazena esse resultado em memória e o mantêm disponível pelo tempo
configurado para a aplicação, efetuando assim um grande ganho de performance.
6. JOBS
A maioria dos aplicativos da
precisa trabalhar de forma assíncrona, ou seja, que não esteja associada à
resposta à solicitação de um usuário. Para isso são utilizado as "filas de
trabalho", é através delas que rotinas são agendadas para serem executadas
de tempos em tempos para realizar trabalhos que não necessitam que aconteçam
diretamente associados a usuários. As opções de linguagem e estruturas
subjacentes são tão numerosas quanto para os servidores da web e na sua grande
maioria podem ser criados no conceito "serverless ", que são
algoritmos que são executados sem servidor e com orientação para eventos.
7. STORAGE
Esse repositórios são uma maneira
simples e escalável de armazenar e acessar dados na nuvem. Eles são perfeitos
para qualquer tipo de informação que você armazenaria num sistema de arquivos
local, com o beneficio de ser acessível por meio de http de qualquer local. E ainda pode contar com a
configuração de redundância para garantir sua alta disponibilidade.
8. CDN
A CDN (Content Delivery Network)
é uma tecnologia que oferece uma maneira de permitir o acesso a arquivos estáticos
(html, css, javascript, imagens, etc) mais rapidamente do que permitir que o
usuário tenha que chegar até a aplicação web para receber seu conteúdo.
Basicamente ele funciona distribuindo uma cópia do conteúdo mais atual entre
muitos servidores em todo mundo, assim quando um usuário efetuar o acesso ao
aplicativo web, esse conteúdo será entregue pela CDN mais próxima ao usuário e
evitando assim consumo de tráfego do servidor, isso irá garantir uma latência
bem menor para o usuário e uma melhor experiência.
Trabalhar com a nuvem é simples e
complexo ao mesmo tempo. Esses elementos apresentados são uma pequena parte das
inúmeras possibilidades que existem para montar uma arquitetura, porém espero
que seja útil para dar o ponta pé inicial na sua utilização. Acredite que o
futuro das aplicações será inevitavelmente estar na nuvem.
Marcelo Goberto de Azevedo 💫
Arquiteto na GFT Brasil
//marcelogoberto.com.br/
//marcelogoberto.com.br/