CodeGym /Cursos /Python SELF PT /Modelo de Produto

Modelo de Produto

Python SELF PT
Nível 64 , Lição 1
Disponível

2.1 Produtos Modernos

Produtos modernos já não são chamados 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), onde ele está implantado.

Muitos produtos modernos (se não todos) operam na paradigma Cliente-Servidor. Isso ocorre quando em seu dispositivo (telefone, laptop, computador) há um programa que cuida da comunicação com o usuário (você), enquanto a funcionalidade crítica está em um servidor remoto, onde tudo importante acontece.

À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. Resultando em uma espécie de rede global de clientes e servidores, todos trabalhando juntos.

Portanto, pode ser melhor descrever o modelo de aplicativos modernos como uma paradigma Cliente-Internet-Servidor. Há muita comunicação complexa envolvida. Surgiram até canais de comunicação inteligentes que decidem autonomamente para quem e quando enviar sua solicitação.

2.2 Clientes

Os programas clientes podem ser divididos em 4 categorias:

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

E cada um pode ser detalhado ainda mais. Por exemplo, o cliente web é um site ou aplicação web, então ele consiste de Navegador e Site, que é carregado nele. Navegadores não são todos iguais e podem funcionar de maneiras diferentes.

Mas mesmo que peguemos o navegador mais comum, ainda há o site que é carregado nele. O site geralmente consiste em três coisas:

  • HTML
  • CSS
  • JavaScript

"Nada mais simples," você dirá. Só que hoje em dia ninguém cria sites apenas com HTML e JavaScript. Para desenvolver sites, agora são usadas não apenas bibliotecas, mas frameworks completos, como React, Angular ou Vue. E nem são mais sites, mas apps web completos com suas próprias builds, testes e paradigmas.

CSS puro também já não é mais usado. Já existem pré-processadores CSS que ajudam a gerá-lo, e frameworks CSS inteiros. Até para e-mails existem frameworks CSS especiais, para que seu e-mail fique bonito tanto no navegador quanto na maioria dos clientes de e-mail.

Em JavaScript puro também já quase ninguém escreve — todos os grandes apps web são criados em TypeScript, que então é compilado para JavaScript. Pois é...

2.3 Internet e Infraestrutura

Comunicação cliente e servidor — o que poderia ser mais simples? Mas mesmo nas relações entre eles tudo já mudou.

Seu produto, provavelmente, será colocado em um dos data centers modernos. Diversas empresas ao redor do mundo oferecem vários serviços de hospedagem para seus produtos, seja em seus servidores ou nos seus próprios servidores físicos. Qualquer capricho pelo seu dinheiro.

O servidor físico já não é mais físico. Todos os data centers modernos oferecem aluguel de servidores virtuais. Um servidor virtual é uma espécie de computador virtual, e em um servidor físico pode haver dezenas deles. É muito conveniente para atualizar o servidor. Se você precisar de mais memória, pode adicioná-la ao seu servidor virtual em poucos minutos.

Porém, essa abordagem já está ficando obsoleta, agora está na moda migrar para a nuvem — é quando seu produto não está apenas implantado em um servidor virtual no data center, mas usa ativamente uma grande variedade de infraestrutura e serviços desses data centers.

Você precisa de um servidor para armazenar backups — há uma infraestrutura pronta e conveniente na nuvem para isso. Você precisa de um banco de dados com confiabilidade de 99.9999999%? Isso também existe. Kafka, RabbitMQ, NoSQL? Tudo já existe e é fácil de configurar. Só precisa pagar.

E esses data centers e nuvens começam a se tornar parte do seu produto. Por exemplo, a Amazon tem um monte de data centers espalhados pelo mundo, por isso 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 poderão acessá-lo mais rapidamente.

Ou o acesso ao API de sua aplicação pode ser gerenciado através do serviço Amazon Gateway API, que permite configurar de forma muito flexível o trabalho com seus serviços. Você pode distribuir a carga entre diferentes serviços, mitigar ataques DDoS, automatizar o upload de arquivos, configurar cache inteligente, e muito mais.

Dessa forma, entre o aplicativo cliente e seus serviços, surgem muitas "comunicações inteligentes" que podem e devem ser configuradas. Mesmo que você nunca faça isso pessoalmente, deve saber que elas existem e podem influenciar significativamente o funcionamento do seu programa.

E ainda nem tocamos em tópicos como roteadores, torres 5G, satélites e cabos de internet no fundo do oceano. Você envia um stream de vídeo do seu servidor para o cliente, e ele falha porque o cliente tem uma conexão ruim e fica caindo. Adivinha quem vai resolver esse problema?

2.4 Servidor

Sob a palavra "servidor" podem se esconder conceitos completamente diferentes. Será útil conhecer os mais comuns.

Servidor Físico

Servidor físico é o equipamento que é um computador separado com recursos (processador, memória, armazenamento), usado para processar dados e fornecer funcionamento de vários aplicativos de software. Esses servidores são instalados em data centers, onde fornecem potência para hospedagem de sites, aplicativos, bancos de dados e outros serviços.

Servidor Virtual

Servidor virtual é um servidor emulado por software que opera em um ambiente de 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 reinicializado e configurado independentemente.

Software Servidor (por exemplo, Nginx)

Software Servidor, como o Nginx, é um aplicativo de servidor usado para processar solicitações a recursos web. Nginx é bem conhecido como um servidor web, que também pode atuar como proxy reverso para arquiteturas com microsserviços, além de ser um balanceador de carga.

Servidor de Banco de Dados

Servidor de banco de dados é um servidor especializado usado para gerenciar bancos de dados e processar solicitações a eles. Ele fornece armazenamento centralizado de dados e seu processamento, permitindo o acesso aos dados através da rede. Servidores de banco de dados suportam transações, busca e modificação de dados, garantindo a confiabilidade e segurança do armazenamento de informações. 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 Python e Django. Ele vai trabalhar com o banco de dados, receber solicitações do NginX e enviar logs de suas ações para o Splank.

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

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