Abaixo, fornecemos uma tradução adaptada do artigo O guia para servidores para não-técnicos, de Kannan Chandrasegaran, um desenvolvedor da Panopto. Observe que o artigo é destinado a iniciantes que estão pouco familiarizados com o conceito do lado servidor do aplicativo e dos servidores.
Da vida no escritório
É difícil ser um “não técnico” em uma empresa de TI, acredite! Profissionais de marketing, gerentes de vendas, contadores - não importa - de vez em quando encontram colegas com experiência técnica. Eles poderiam ser programadores ou administradores de sistema... De qualquer forma, os "não-técnicos" sentem que tiveram uma parte importante de seu cérebro amputada. Ou pousaram em um planeta desconhecido com vida não-humanóide inteligente. Ou…
Às vezes, é claro, tudo acaba bem. Por exemplo, uma garota
do front-end está andando pelo corredor. Nada prenuncia problemas: ela está indo para a esquerda, você está indo para a direita, e o mais rápido possível... Não, desta vez não aconteceu. Você já está sentado à mesa com ela e, tentando superar o silêncio constrangedor, pergunta: “E... o que exatamente você faz?” Ela começa a dizer alguma coisa, mas você não entende imediatamente do que ela está falando. As palavras parecem familiares: interface de usuário, aplicativos e - sim, Facebook é um site. Sim, existem botões, menus... Você de alguma forma descobriu os meandros do trabalho dela, acenou para ela e seus caminhos divergem nos corredores de um grande escritório.
Mas mais cedo ou mais tarde você não terá tanta sorte: encontrará um engenheiro de servidor. Ou um desenvolvedor back-end. Sem saber em que tipo de selva você se encontrará agora, você ingenuamente faz a mesma pergunta e... recebe abracadabra em resposta. Você ouve muitas palavras estrangeiras e pensamentos passam pela sua cabeça: “É educado perguntar o que é uma API?”, “Usamos “banco de dados” o tempo todo, não é?”, “Quem diabos é esse Jason?” (JSON)??”. Seu amigo engenheiro está tentando lhe falar sobre servidores, mas ele não entende como é difícil para você entender o discurso dele repleto de termos profissionais. Você provavelmente já ouviu a palavra “servidor” antes, mas ela é usada em tantos contextos diferentes que é difícil entender seu significado. Bem, vamos tentar entender esse termo.
No buraco do coelho
Quando uma pessoa comum (ou seja, não um programador ou administrador) usa um aplicativo, tudo o que ela vê é a interface, uma imagem que reage a algumas ações óbvias (na maioria das vezes). Na verdade, o que os usuários costumam entender por “aplicação” é o seu front-end, ou seja, a parte frontal, o wrapper com o qual interagem. Mas os usuários sabem muito pouco sobre o que há dentro, ou seja, sobre o que faz o aplicativo funcionar. Digamos que você me envie uma mensagem, por exemplo, via Whatsapp ou Viber. Parece que uma mensagem está vindo do seu smartphone para o meu. Vamos dar uma olhada mais de perto nesse processo. Digamos que você me envie uma mensagem quando meu telefone estiver desligado e depois desligue você mesmo o smartphone. E assim ligo meu telefone e ainda recebo sua mensagem, embora nossos telefones não funcionassem ao mesmo tempo. Parece que está faltando alguma coisa! Este é o “algo” que perdemos – o back-end ou servidor.
Quando os programadores falam sobre front-end e back-end, eles geralmente se referem à separação da parte do usuário do aplicativo da lógica do programa. Portanto, o front-end é a parte da interface do aplicativo e o back-end é a parte do servidor.
Servidores
Essencialmente, um servidor é uma máquina de computação, um computador conectado à Internet e constantemente ligado.
As duas tarefas principais do servidor são armazenamento de dados e comunicação. |
Você envia uma mensagem via Whatsapp ou Viber, o aplicativo do seu smartphone envia a mensagem para o servidor onde ela está armazenada. Quando o Viber instalado no meu smartphone se conecta ao servidor, ele me envia todas as mensagens armazenadas.
O servidor é a “estação base” a partir da qual o aplicativo é executado |
Quando um aplicativo requer alguma informação, ele entra em contato com o servidor. Quando uma aplicação precisa se comunicar com outro usuário da aplicação, é o servidor que permite a comunicação. Os termos servidor, back-end e API são frequentemente usados de forma intercambiável.
Sistemas de armazenamento ou armazenamento de dados
A principal tarefa do servidor é o armazenamento de dados. Isso inclui
arquivos : fotos, vídeos e documentos. O servidor os armazena de forma estruturada, semelhante às pastas do seu computador, para que possam ser acessados pelos aplicativos.
As informações também são armazenadas no servidor . Todas as aplicações contêm informações importantes para o seu funcionamento.
Você pode apresentar essas informações como um conjunto de tabelas. Por exemplo, um aplicativo precisa armazenar informações sobre um usuário e sua senha para que a autenticação possa ocorrer. Sua aplicação pode ser um guia de restaurantes, caso em que o servidor armazenará informações sobre cada restaurante. Além das informações em si, o servidor também registra
relacionamentos entre os dados. Por exemplo, um usuário curte um restaurante em um aplicativo de smartphone, e o servidor lembra dessa conexão entre o restaurante e o usuário.
Isso permite que você responda a muitas perguntas. Por exemplo:
- Quantos usuários gostaram deste restaurante?
- De quais restaurantes esse usuário gosta?
- Quais cozinhas atraem vários usuários ao mesmo tempo?
As informações e relacionamentos entre os dados são armazenados em
um banco de dados (BD). Existem muitos tipos de bancos de dados, mas são todos:
- pode armazenar informações
- pode armazenar relacionamentos entre dados
- pode receber solicitações de informações e respondê-las como dados únicos ou como um conjunto de dados, dependendo da solicitação.
Existem muitos tipos de bancos de dados, cada um com suas vantagens e desvantagens. Se você ouvir termos como SQL, MySQL, MongoDB, CouchDB, Redis, saiba que estamos falando de bancos de dados.
Interação
A principal tarefa do servidor é a interação com o aplicativo e outros servidores.
Muitas tarefas do aplicativo requerem interação com o servidor. Por exemplo, se um usuário está pesquisando algo, a consulta de pesquisa é enviada ao servidor e o resultado vem de lá. Se um usuário envia uma mensagem para outro usuário, ela chega primeiro ao servidor. E a partir daí ele é enviado para o aplicativo de outro usuário, geralmente na forma de uma notificação enviada. As interfaces que um servidor fornece para que os aplicativos possam interagir com ele são geralmente chamadas de
APIs . Pois bem, algumas funções da interface podem ser associadas a
endpoints , por exemplo, com pesquisa ou autorização no site. Para os não iniciados, esta interação pode parecer estranha. Os dois formatos de interoperabilidade mais comuns são JSON e XML.
XML à esquerda, JSON à direita À primeira vista, os formatos parecem difíceis de ler. É importante entender que um servidor é apenas um computador, como seu laptop ou smartphone. O aplicativo do seu telefone aceita entrada do usuário por voz, texto, reconhecimento de voz ou toque na tela. O aplicativo processa essas informações e depois fornece uma resposta na forma de uma imagem na tela. Um smartphone é um computador que interage com uma pessoa, portanto, a entrada e a saída são fornecidas de uma forma conveniente para a pessoa. Um servidor é uma máquina de computação que interage apenas com outros computadores. Uma pessoa percebe informações graças a coisas como: tamanho da fonte, cor do texto e formatação. Mas isso não significa nada para o computador.
A interação entre servidores ocorre em formatos fáceis de analisar e entender para outros computadores. |
Aplicativo de servidor
Se quiser criar um aplicativo que será executado no seu telefone, você também precisará de um aplicativo que será executado no servidor. Aplicações server-side são criadas usando linguagens e frameworks de programação server-side, sendo opções populares
Java ,
Ruby on Rails ,
Node.js ,
PHP ,
ASP.NET .
Você poderia dizer que a API é a “porta” do seu servidor e a aplicação sabe como bater nela. O banco de dados armazena todas as suas informações. E o aplicativo de servidor é o “cérebro” que conecta tudo. Ele recebe e responde às solicitações que lhe são enviadas por meio da API, adiciona e recupera informações do banco de dados e toma decisões. Por exemplo, quando um aplicativo de usuário envia informações de login, a solicitação vem através da API, as informações de login corretas são armazenadas no banco de dados. A tarefa do aplicativo servidor é compará-los e responder de acordo com o aplicativo usando a API.
Hardware
Ao ouvir a palavra “servidor”, você provavelmente imagina esta imagem: armários com luzes bruxuleantes em uma sala fechada. Provavelmente, para completar o quadro, só falta Tom Cruise, que descerá do teto e roubará alguma coisa. Muitas grandes empresas possuem seus próprios servidores e data centers inteiros (aquelas salas enormes com gabinetes oscilantes). O Facebook e o Google têm centenas de servidores em todo o mundo. Quando você executa um serviço enorme com milhões de usuários, executar seus próprios servidores pode ser significativamente mais barato e fornecer melhor desempenho. Em vez de manter seus próprios servidores, muitos desenvolvedores usam serviços em nuvem. Serviços como Amazon Web Services, Azure e Digital Ocean oferecem a capacidade de usar “servidores virtuais”. Esses serviços possuem e mantêm o hardware, e o desenvolvedor simplesmente carrega um aplicativo de servidor nele. Alguns provedores de serviços fornecem o back-end como um serviço, permitindo que você tenha um back-end simples sem precisar escrever o aplicativo de back-end sozinho.
Todos os aplicativos precisam de um back-end?
A maioria dos aplicativos com os quais você está familiarizado provavelmente possui um componente de back-end. Claro, você pode encontrar programas sem parte de servidor. Por exemplo, alguns aplicativos de produtividade. Uma maneira fácil de descobrir se um aplicativo tem back-end é semelhante a esta:
Se você mudar para o modo Voo, o aplicativo ainda funcionará? |
Se a resposta for “não”, isso significa que o aplicativo definitivamente possui um servidor backend.
Espero que agora você entenda o que é o back-end de um aplicativo. Talvez na próxima vez que você encontrar seus colegas programadores, você será capaz não apenas de entender o que eles estão falando, mas também de usar um maldito “Jason” em sua conversa.
GO TO FULL VERSION