CodeGym /Cursos /JAVA 25 SELF /Modelo de produto de TI

Modelo de produto de TI

JAVA 25 SELF
Nível 9, Lição 6
Disponível

1. Produtos modernos

Ninguém chama os produtos modernos de programas. Um produto moderno pode incluir dezenas de programas, centenas de serviços de internet e muitos APIs, fornecidos por um data center em nuvem (também chamados de centros de processamento de dados) no qual ele está implantado.

Muitos produtos modernos (se não todos) funcionam segundo a paradigma Cliente-Servidor. Isso significa que no seu dispositivo (telefone, notebook, computador) há um programa responsável pela comunicação com o usuário (você), enquanto a funcionalidade crítica fica em um servidor remoto, onde acontece tudo o que é importante ➡️🖥️

Às vezes, o seu cliente pode conversar com vários servidores independentes, ou o servidor de um produto pode se comunicar com o servidor de outro produto. Forma-se uma espécie de rede global de clientes e servidores, e todos eles trabalham entre si.

Por isso, talvez a melhor forma de descrever o modelo atual de aplicativos seja a paradigma Cliente-Internet-Servidor. Há comunicação complexa demais por ali. Surgiram até os chamados “canais de comunicação inteligentes”, que decidem por conta própria para quem e quando enviar sua requisição.🛰️📡

2. Clientes

Os programas clientes podem ser divididos, de forma geral, em 4 categorias:

  • 🖥️ Cliente desktop — um programa que roda no computador.
  • 📲 Cliente mobile — um aplicativo para iOS ou Android.
  • 🌐 Cliente web — um site/aplicativo web que roda no navegador.
  • 🌍 Cliente servidor — um aplicativo que é executado em outro servidor.

E cada uma delas pode, por sua vez, ser subdividida. Por exemplo, o cliente web é um site ou aplicativo web, o que significa que ele é composto pelo Navegador e pelo Site que é carregado nele. Os navegadores não são todos iguais e podem se comportar de maneiras diferentes.

Mas mesmo que peguemos o navegador mais comum, ainda resta o site que é carregado nele. Um site geralmente é composto por três coisas:

  • 📄 HTML
  • 🎨 CSS
  • ⚡ JavaScript

“Nada mais simples”, você dirá. Só que hoje ninguém escreve sites apenas em HTML e JavaScript. Para desenvolver sites, agora se usam não apenas bibliotecas, mas frameworks completos, como React, Angular ou Vue ⚛️. E já nem são “sites”, e sim aplicativos web completos com seus próprios processos de build, testes e paradigmas.

Ninguém usa mais CSS puro. Já existem pré-processadores de CSS que ajudam a gerá-lo e frameworks inteiros de CSS. E mais: até para emails existem frameworks específicos de CSS para que sua mensagem fique bonita tanto no navegador quanto na maioria dos clientes de email 💌.

Pouca gente ainda escreve em JavaScript puro — todos os grandes aplicativos web são criados em TypeScript, que depois é compilado para JavaScript. Pois é, você entendeu...

3. Internet e infraestrutura

A comunicação entre cliente e servidor — que poderia ser mais simples? Mas até nessa relação já mudou tudo.

Seu produto, muito provavelmente, será hospedado em um dos data centers modernos. Muitas empresas ao redor do mundo oferecem vários serviços de hospedagem para seus produtos, seja nos servidores delas ou nos seus próprios servidores físicos. Qualquer capricho — desde que você pague.

Data center

O servidor físico já não é mais “físico”. Todos os data centers modernos oferecem aluguel de servidores virtuais. Um servidor virtual é como um computador virtual, e em um único servidor físico pode haver dezenas deles. Em compensação, isso é conveniente para fazer upgrade do servidor. Se você precisa de mais memória, pode adicioná-la ao seu servidor virtual em poucos minutos ⏱️.

Mas até essa abordagem está ficando ultrapassada; agora está na moda migrar para a nuvem — quando o seu produto não está apenas implantado em um servidor virtual no data center, mas faz uso ativo de um amplo conjunto de infraestrutura e serviços desses data centers.

Precisa de um servidor para guardar backups? Há uma infraestrutura pronta e conveniente na nuvem para isso. Precisa de um banco de dados com confiabilidade de 99.9999999%? Também existe. Kafka, RabbitMQ, NoSQL? Já tem de tudo e é fácil de configurar. É só pagar.

E esses data centers e a nuvem estão começando a se tornar parte do seu produto. Por exemplo, a Amazon tem uma porção de data centers pelo mundo, por isso oferece o serviço de CDN: seu conteúdo público será armazenado em cache em todos os data centers da Amazon, e seus usuários ao redor do globo vão recebê-lo mais rápido 🛰️.

Ou as chamadas ao API do seu aplicativo podem passar pelo serviço Amazon API Gateway, que permite configurar de forma muito flexível o trabalho com seus serviços. É possível distribuir a carga entre serviços diferentes, mitigar ataques DDoS, automatizar o upload de arquivos, configurar cache inteligente — e muito mais 🛡️.

Assim, entre o aplicativo cliente e seus serviços surgem inúmeras “comunicações inteligentes” que podem e devem ser configuradas. Mesmo que você nunca faça isso pessoalmente, precisa saber que elas existem e podem influenciar significativamente o funcionamento do seu programa.

E isso sem nem tocar em temas como roteadores, torres 5G, satélites e cabos de internet no fundo do oceano. Você envia um fluxo de vídeo do seu servidor para o seu cliente, e ele falha porque o cliente tem uma conexão ruim e o link cai o tempo todo. Adivinha, quem vai resolver esse problema? Você 😅

4. Servidor

A palavra “servidor” pode ocultar conceitos bem diferentes. Será útil conhecer os mais comuns.

  • 🖥️ Servidor físico
    Servidor físico é um equipamento que constitui um computador dedicado com recursos (processador, memória, armazenamento) usado para processar dados e manter o funcionamento de diversos aplicativos de software. Esses servidores são instalados em centros de processamento de dados, onde fornecem capacidades para hospedagem de sites, aplicativos, bancos de dados e outros serviços.
  • 🪐 Servidor virtual
    Servidor virtual é um servidor emulado por software que roda dentro de um servidor físico. Com tecnologias de virtualização, um único servidor físico pode ser dividido em vários servidores virtuais isolados, cada um com seu próprio sistema operacional e que pode ser reiniciado e configurado de forma independente.
  • 🕹️ Programa-servidor (por exemplo, Nginx)
    Um programa-servidor, como o Nginx, é um software de servidor usado para processar requisições a recursos web. O Nginx é amplamente conhecido como servidor web, podendo também atuar como proxy de email e proxy reverso em arquiteturas de microsserviços, além de balanceador de carga.
  • 💾 Servidor de banco de dados
    Um servidor de banco de dados é um servidor especializado usado para gerenciar bancos de dados e processar as consultas a eles. Ele fornece armazenamento centralizado de dados e seu processamento, oferecendo acesso aos dados pela rede. Servidores de banco de dados suportam processamento de transações, busca e alteração de dados, garantindo confiabilidade e segurança no armazenamento das informações. Exemplos de servidores de banco de dados incluem MySQL, PostgreSQL, Oracle Database e Microsoft SQL Server.

E em algum lugar do data center, em um dos servidores virtuais, vai rodar o seu projeto em C# e ASP.NET Core. Ele vai trabalhar com o banco de dados, receber requisições por meio do Nginx ou do Azure Application Gateway, e enviar os logs de suas ações para sistemas de monitoramento como Azure Monitor ou Splunk 📈.

Mas é graças ao seu código que milhões de usuários do seu produto ficarão satisfeitos. Eles usarão o serviço, pagarão por ele e, no fim, o proprietário do produto também ficará satisfeito. As ações da empresa vão subir, você receberá bônus em ações — e ficará feliz 💸. O verdadeiro ciclo da felicidade na indústria :)

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION