1. Produtos modernos
Produtos modernos já não são mais chamados de programas. Um produto moderno pode incluir dezenas de programas, centenas de serviços na internet e muitos API, tudo isso hospedado em um data center em nuvem (também chamados de centros de processamento de dados), onde ele está implantado.
Muitos produtos atuais (se não todos) funcionam com a paradigma Cliente-Servidor. Isso significa que no seu dispositivo (celular, laptop, computador) roda um programa que cuida da comunicação com o usuário (você), enquanto a funcionalidade crítica fica no servidor dedicado, onde acontece tudo importante ➡️🖥️
Às vezes, seu cliente pode se comunicar com vários servidores independentes, ou um servidor de um produto pode fazer requisições a outro servidor de outro produto. Assim, surge uma rede global de clientes e servidores, todos interagindo entre si.
Por isso, a melhor forma de descrever o modelo de aplicações modernas é a paradigma Cliente-Internet-Servidor. Tem tanta comunicação complexa que até surgiram os chamados "canais de comunicação inteligentes", que decidem automaticamente quem e quando enviar sua requisição.🛰️📡
2. Clientes
Os programas clientes podem ser divididos em 4 categorias:
- 🖥️ Desktop-client — programa rodando no computador.
- 📲 Mobile-client — app para iOS ou Android.
- 🌐 Web-client — site/aplicação web rodando no navegador.
- 🌍 Server-client — aplicação que roda em outro servidor.
Cada um deles, por sua vez, pode ser subdividido. Por exemplo, um web-client é um site ou uma aplicação web, que consiste em Navegador e Site, que é carregado nele. Os navegadores também não são todos iguais e podem funcionar de formas diferentes.
Mas mesmo usando o navegador mais popular, ainda assim fica o site que ele carrega. Um site geralmente tem três componentes:
- 📄 HTML
- 🎨 CSS
- ⚡ JavaScript
"Não tem nada mais simples", você pode dizer. Mas hoje em dia, ninguém mais faz sites só com HTML e JavaScript. Para desenvolver sites, usam-se não só bibliotecas, mas frameworks completos, como React, Angular ou Vue ⚛️. E não são só sites, mas aplicações web completas, com suas builds, testes e paradigmas.
CSS puro também já não é mais usado. Existem preprocessadores de CSS que ajudam a gerar CSS, além de frameworks inteiros. E, para emails, existem frameworks específicos para deixar suas mensagens bonitas tanto no navegador quanto na maioria dos clientes de email 💌.
E quem ainda escreve só com JavaScript? Pouco, porque a maioria das grandes aplicações web hoje é feita em TypeScript, que depois é compilado para JavaScript. Você entendeu...
3. Internet e infraestrutura
Comunicação cliente-servidor, o que pode ser mais simples? Mas até nisso tudo mudou.
Seu produto provavelmente vai estar hospedado em um data center moderno. Muitas empresas ao redor do mundo oferecem serviços de hosting para seus produtos, seja em seus servidores ou em seus próprios servidores físicos. Tudo por um preço.
Um servidor físico não é mais "físico" de verdade. Todos os data centers modernos oferecem aluguel de servidores virtuais. Um servidor virtual é uma máquina virtual, que roda em um servidor físico. Com virtualização, um servidor físico pode ser dividido em dezenas de servidores virtuais, cada um com seu sistema operacional e podendo ser reiniciado e configurado independentemente.
Mas esse método também está ficando ultrapassado. Agora, a moda é migrar para a nuvem — onde seu produto não só roda em um servidor virtual, mas usa uma vasta infraestrutura e serviços desses data centers.
Precisa de um servidor para backups? Tem infraestrutura pronta na nuvem. Quer um banco de dados com 99.9999999% de confiabilidade? Tem também. Kafka, RabbitMQ, NoSQL? Tudo já existe e é fácil de configurar. Só pagar.
Esses data centers e nuvens começam a fazer parte do seu produto. Por exemplo, a Amazon tem muitos data centers pelo mundo, e oferece CDN: seu conteúdo público será cacheado em todos os data centers da Amazon, e seus usuários no mundo todo terão acesso mais rápido 🛰️.
Ou você pode usar o Amazon Gateway API para fazer chamadas ao seu API, que permite configurar tudo de forma bem flexível. Distribuir carga, bloquear ataques DDoS, automatizar uploads, fazer cache inteligente, e muito mais 🛡️.
Assim, entre seu app cliente e seus serviços, surgem várias "comunicações inteligentes", que você pode e deve configurar. Mesmo que você nunca faça isso pessoalmente, precisa saber que elas existem e podem impactar bastante o funcionamento do seu programa.
E ainda não falamos de roteadores, torres 5G, satélites e cabos submarinos. Você envia um stream de vídeo do seu servidor para seu cliente, e ele trava porque a conexão está ruim. Adivinha quem vai resolver esse problema? Você 😅
4. Servidor
A palavra "servidor" pode esconder conceitos bem diferentes. Aqui estão os mais comuns que você deve conhecer.
- 🖥️ Servidor físico
Servidor físico é um equipamento, um computador separado com recursos (CPU, memória, armazenamento), usado para processar dados e rodar várias aplicações. Esses servidores ficam em data centers, onde fornecem potência para hospedar sites, apps, bancos de dados e outros serviços. - 🪐 Servidor virtual
Servidor virtual é uma máquina virtual, que roda em um servidor físico. Com virtualização, um servidor físico pode ser dividido em várias máquinas virtuais isoladas, cada uma com seu sistema operacional, podendo ser reiniciada e configurada independentemente. - 🕹️ Programa-servidor (como Nginx)
Programa-servidor, como Nginx, é um software que processa requisições a recursos web. É conhecido como web server, mas também pode fazer proxy de email, proxy reverso, balanceador de carga, etc. - 💾 Servidor de banco de dados
Servidor de banco de dados é um servidor especializado em gerenciar bancos de dados e processar requisições a eles. Ele armazena dados de forma centralizada, acessível via rede, garantindo confiabilidade e segurança. Exemplos: MySQL, PostgreSQL, Oracle, SQL Server.
E lá no data center, em um dos servidores virtuais, roda seu projeto em C# com ASP.NET Core. Ele acessa o banco, recebe requisições pelo Nginx ou Azure Application Gateway, e envia logs para sistemas de monitoramento como Azure Monitor ou Splunk 📈.
Mas, graças ao seu código, milhões de usuários ficam satisfeitos. Usam o serviço, pagam por ele, e o dono do produto fica feliz. As ações da empresa crescem, você recebe bônus, e tudo fica ótimo 💸. É o ciclo da felicidade na indústria :)
GO TO FULL VERSION