CodeGym /Cursos /Frontend SELF PT /Modelo de produto

Modelo de produto

Frontend SELF PT
Nível 48 , Lição 1
Disponível

11.1 Produtos Modernos

Produtos Modernos

Produtos modernos já não são chamados de programas. Um produto moderno pode ser composto de dezenas de programas, centenas de serviços de internet e um monte de APIs que as nuvens do data center, onde o produto está implantado, fornecem.

Muitos produtos modernos (se não todos) operam sob a paradigma Cliente-Servidor. Isso é quando no seu dispositivo (telefone, notebook, computador) tem um programa que se comunica com o usuário (você), mas toda a funcionalidade crítica está no servidor remoto, onde acontece toda a mágica.

Às vezes, seu cliente pode se comunicar 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, onde todos interagem.

Por isso, talvez a melhor forma de descrever o modelo de aplicativos modernos seja a paradigma Cliente-Internet-Servidor. Tem tanta comunicação complexa envolvida. Surgiram até "canais de comunicação inteligentes" que decidem por conta própria para quem enviar sua solicitação e quando.

11.2 Clientes

Os programas clientes podem ser divididos em 4 categorias:

  • Cliente Desktop — programa que roda em um computador
  • Cliente Mobile — aplicativo para iOS ou Android
  • Cliente Web — site/aplicativo web que funciona no navegador
  • Cliente Servidor — aplicativo que roda em outro servidor

E cada um deles pode ser subdividido. Por exemplo, o cliente web é um site ou aplicativo web, o que significa que ele consiste em Navegador e Site, que é carregado nele. Os navegadores também não são todos iguais e podem funcionar de maneiras diferentes.

Mas mesmo se a gente pegar o navegador mais popular, ainda tem o site que é carregado nele. Um site geralmente consiste em três coisas:

  • HTML
  • CSS
  • JavaScript

Fácil, né? Mas ninguém mais escreve sites só em HTML e JavaScript. Agora, pra desenvolver sites, utiliza-se não só bibliotecas, mas também frameworks completos como React, Angular ou Vue. E nem são mais sites, são aplicativos web completos. Com suas próprias construções, testes e paradigmas.

Nem CSS simples é usado mais: já existem pré-processadores de CSS que ajudam a gerá-lo e até frameworks inteiros de CSS. Meu Deus, até frameworks de CSS para e-mails, para que sua mensagem pareça legal se alguém visualizá-la no navegador ou na maioria dos clientes de e-mail.

Ninguém escreve mais em JavaScript também: todos os grandes aplicativos web são escritos em TypeScript, que depois é compilado para JavaScript. Tá ligado, né?

11.3 Internet e infraestrutura

Comunicação cliente-servidor — o que poderia ser mais simples? Mas mesmo isso já mudou.

Em primeiro lugar, seu produto provavelmente será hospedado em um dos data centers modernos. Muitas empresas ao redor do mundo oferecem diversos serviços de hospedagem para seus produtos, tanto em seus servidores quanto nos seus servidores físicos. Qualquer capricho pelo seu dinheiro.

Internet e infraestrutura

O servidor físico já não é mais físico. Todos os data centers modernos oferecem alugar servidores virtuais. É como um computador virtual, e num único servidor físico podem haver dezenas deles. Isso é conveniente pra upgrade do servidor. Se você precisar de mais memória, pode adicioná-la ao seu servidor virtual em minutos.

Mas esse tipo de abordagem já está ficando velho. Agora está na moda a migração para a nuvem — é quando seu produto não está apenas implantado num servidor virtual no data center, mas usa ativamente um amplo conjunto de infraestrutura e serviços desses data centers.

Precisa de um servidor pra armazenar backups? Tem uma infraestrutura inteira na nuvem pra isso. Precisa de um banco de dados com confiabilidade de 99.9999999%? Também tem. Kafka, RabbitMQ, NoSQL? Já está tudo lá e é fácil de configurar. Só precisa pagar.

Esses data centers e nuvens começam a se tornar parte do seu produto. Por exemplo, a Amazon tem uma porrada de data centers ao redor do mundo, então eles oferecem o serviço CDN: seu conteúdo público será armazenado em cache em todos os data centers da Amazon, e seus usuários em todo o mundo terão acesso a ele mais rápido.

Ou ainda, as chamadas para o API do seu aplicativo podem passar pelo Amazon API Gateway, que permite configurar de forma muito flexível o trabalho com seus serviços. Dá pra distribuir a carga em diferentes serviços, mitigar ataques DDoS, automatizar upload de arquivos, configurar cache inteligente, e muito mais.

Assim, entre o aplicativo cliente e seus serviços há um monte de "comunicações inteligentes" que podem e devem ser configuradas. Mesmo que você nunca faça isso pessoalmente, deve saber que elas existem e podem afetar bastante o funcionamento do seu programa.

E isso nem mencionamos assuntos como roteadores, torres 5G, satélites e cabos submarinos de internet. Você manda um stream de vídeo do seu servidor para o seu cliente, mas ele falha porque o cliente tem uma conexão ruim que fica caindo. Adivinha quem vai ter que resolver isso?

11.4 Servidor

A palavra servidor tem muitos significados diferentes, então vai ser útil pra você conhecer os mais populares.

Servidor Físico

Um servidor físico é um hardware que representa um computador separado com recursos (processador, memória, armazenamento), usado para processar dados e executar diferentes aplicações de software. Esses servidores são instalados em data centers, onde fornecem recursos para hospedar sites, aplicativos, bancos de dados e outros serviços.

Servidor Virtual

Um servidor virtual é um servidor emulado por software que roda no ambiente de um servidor físico. Com tecnologias de virtualização, um servidor físico pode ser dividido em vários servidores virtuais isolados, cada um com seu próprio sistema operacional, podendo ser reiniciado e configurado de forma independente.

Programa Servidor (exemplo Nginx)

Um programa servidor como Nginx é um software de servidor usado para lidar com solicitações de recursos web. O Nginx é amplamente conhecido como servidor web, mas também pode atuar como servidor proxy de e-mail e proxy reverso em arquiteturas com microsserviços e como 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 consultas. Ele fornece armazenamento centralizado de dados e seu processamento, permitindo acesso aos dados através da rede. Os servidores de banco de dados suportam processamento de transações, busca e modificação de dados, garantindo ao mesmo tempo confiabilidade e segurança da informação. Exemplos de servidores de banco de dados incluem MySQL, PostgreSQL, Oracle Database e Microsoft SQL Server.

E em algum lugar no data center, em um dos servidores virtuais, estará rodando seu projeto em React e Node.js, que trabalhará com o banco de dados, receberá solicitações do NginX e enviará logs de suas ações para o Splunk.

Mas é graças ao seu código que milhões de usuários do seu produto ficarão felizes. Eles vão usar o produto, pagar por ele, e então o dono do produto também ficará feliz. As ações da empresa crescerão, você receberá bônus em ações, e também ficará feliz. Parece um ciclo de felicidade na natureza :)

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