Tecnologias Backend para Aprender em 2023

Notebook adesivado com linguagens de programação
AdsTerra, Junte-se ao AdsTerra

Tecnologia backend é qualquer coisa usada do lado do servidor para construir arquiteturas web estáveis e eficientes. As tecnologias backend incluem linguagens de programação, bancos de dados, mecanismos de comunicação ou frameworks que compõem os blocos de construção do back-end de uma aplicação web.

Em outras palavras, estamos falando de qualquer tipo de tecnologia que ajuda você, como desenvolvedor backend, a construir ou manter o backend de um site.

Até mesmo os desenvolvedores backend estabelecidos precisam estar sempre atualizados com as melhores tecnologias backend do momento. Você nunca sabe qual tecnologia será usada por uma empresa para manter seu backend, ou se a empresa exigirá uma migração de um produto antigo para algo mais moderno. Você pode até ter a chance de criar um novo projeto e escolher uma tecnologia backend por conta própria.

Como a tecnologia evolui rapidamente neste campo, é benéfico para o seu desenvolvimento como desenvolvedor backend estar familiarizado com as tecnologias backend mais úteis e mais usadas de hoje. Aqui estão as principais tecnologias backend que você deve conhecer. Cobriremos linguagens, bancos de dados relacionais, bancos de dados não relacionais e filas de mensagens.

Tabela de conteúdo

  • Linguagens backend
  • Banco de dados relacionais
  • Banco de dados não relacionais
  • Fila de mensagens
  • Bônus: Mais tecnologias backend
  • Conclusão

Linguagens backend

Go

GoLang

Go é a linguagem backend que mais cresce e é mais desejada, usada por empresas como Uber, YouTube e Spotify. Os desenvolvedores backend gostam dela porque é muito segura de usar, é incrivelmente fácil de aprender e é rápida. Você pode começar a aprender Go aqui.

Python

Python

Python é a linguagem de programação backend mais popular para iniciantes. Tem uma sintaxe simples e limitada, o que a torna fácil de ler e escrever. Seu imenso número de bibliotecas a torna incrivelmente versátil. Empresas como Airbnb, SpaceX e Stripe confiam no Python para manter seus backends. Você pode começar a aprender Python aqui.

JavaScript

JavaScript

JavaScript é a linguagem backend mais popular para todos os desenvolvedores, embora seja principalmente usada para desenvolvimento frontend. No entanto, seus frameworks como NodeJS tornam-no uma escolha popular para desenvolvedores backend também. Empresas como Facebook, Google e eBay usam JavaScript. Você pode começar a aprender JavaScript aqui.

Rust

Rust

Rust é um recém-chegado na cena de desenvolvimento backend, mas é a linguagem mais amada há sete anos consecutivos, desde sua criação. É de código aberto, possui ricas bibliotecas e é uma das linguagens mais rápidas por aí. A Meta é notável por ter adotado o Rust rapidamente, tendo usado desde 2016. A AWS também o usa para escrever a rede de infraestrutura. Você pode começar a aprender Rust aqui.

Java

Java

Este é uma linguagem legacy de backend. É a opção segura, pouco popular entre os novatos, mas tão enraizada em tantos backends das empresas que não irá embora tão cedo. Empresas como Google, Netflix, Uber e Facebook ainda confiam nela. Pode não ser a escolha principal no futuro, mas por enquanto é bom estar familiarizado com ela. Você pode começar a aprender Java aqui.

PHP

PHP

Ninguém (literalmente apenas 2% dos respondentes da pesquisa StackOverflow) quer aprender PHP. Mas está em 75% dos sites hoje. Como Java, não é a melhor ou mais atraente linguagem, mas vale a pena conhecê-la. A Meta em particular usou o PHP para desenvolver o backend do Facebook desde 2004. O Slack usa o PHP para otimizar o tempo de solicitação da web. Você pode começar a aprender PHP aqui.

Ruby

Ruby

Quer dinheiro? Aprenda Ruby. Graças ao framework Ruby on Rails, os desenvolvedores de back-end em Ruby recebem um salário generoso. No entanto, ainda é bastante específico entre outras linguagens como JavaScript. Atualmente, empresas como Crunchbase e Etsy usam Ruby on Rails para desenvolver e manter seus back-ends. Você pode começar a aprender Ruby aqui.

SQL

SQL

Pegadinha! SQL não é uma linguagem de programação como as outras sete. Mas é, como veremos abaixo, uma linguagem de consulta muito útil e popular. Os desenvolvedores de back-end frequentemente usam SQL para se comunicar entre bancos de dados relacionais. É difícil encontrar uma empresa que não acharia conhecimento em SQL útil, então conte isso como uma linguagem que deve ser conhecida para ser contratado. Você pode aprender SQL aqui.

Banco de dados relacionais

Certo, cobrimos as linguagens de codificação. Agora, vamos para os bancos de dados. Um banco de dados SQL é um banco de dados relacional, o que significa que ele armazena dados em tabelas que estão relacionadas entre si. Pense em linhas e colunas.

Os bancos de dados relacionais geralmente escalam verticalmente. Os dados vivem em um único servidor e você pode escalar adicionando mais poder de computação, como CPU, GPU e RAM, a esse único servidor.

Estes são os principais bancos de dados SQL de back-end definidos pela enorme pesquisa anual de desenvolvedores da StackOverflow.

Vale a pena destacar que o SQL é uma linguagem de consulta e, quando você aprende uma vez, habilita você a trabalhar com todos os bancos de dados SQL específicos que vamos cobrir em mais detalhes. Você pode aprender SQL aqui.

PostgreSQL

PostgreSQL

O PostgreSQL é o padrão de ouro quando se trata de bancos de dados SQL de código aberto e de nível profissional. É usado mais por profissionais (46,5% de profissionais versus 25,5% aprendendo a codificar). Ao contrário do MySQL, é visto como o banco de dados para produção, operações de dados de grande volume.

Ele não apenas armazena dados, mas também permite que você defina tipos de dados, tipos de índice e linguagens funcionais. Além disso, é totalmente de código aberto e muito personalizável. É usado por uma longa lista de empresas, incluindo (mas não se limitando a) Apple, BioPharm, Cisco, Etsy, Facebook, Instagram, Skype e Spotify.

SQLite

SQLite

Um nome descritivo: o SQLite é um banco de dados SQL mais leve e magro. É um banco de dados popular, usado por 32% dos respondentes da pesquisa Stack Overflow. É sem servidor e auto-contido.

Comparado ao Postgres, é muito fácil de começar a usar. No entanto, a contrapartida é que ele suporta apenas um conjunto limitado de tipos de dados (Blob, Integer, Null, Text e Real). Ele também não é bom para múltiplos usuários, não é muito escalável e não está otimizado para desempenho.

Apesar de tudo isso, é o banco de dados mais amplamente implementado no mundo porque é tão leve. Ele também é totalmente gratuito para uso e de código aberto, embora você possa optar por pagar pelo suporte com uma licença profissional.

O site do SQLite documenta muitos exemplos de empresas que o usam, incluindo:

  • Apple para a maioria dos aplicativos nativos em Mac OS-X desktops e servidores e dispositivos iOS.
  • Adobe como formato de arquivo de aplicativos.
  • Facebook como motor de banco de dados SQL no produto osquery.

MySQL

MySQL

MySQL é o banco de dados SQL "padrão". É o banco de dados mais usado com 46,85% dos respondentes do Stack Overflow usando-o. É uma boa escolha para muitos projetos. Dito isso, não há muitas razões para usá-lo sobre o PostgreSQL hoje em dia. Eles são tecnologias muito similares, mas muitos desenvolvedores concordam comigo que o Postgres é simplesmente a solução mais moderna.

Antigamente era totalmente open source, mas foi adquirido pela Oracle há algum tempo. A Oracle o distribui sob uma licença dual - você pode usar a versão OSS se quiser, mas se trabalhar em uma empresa que não quer que seu produto baseado no MySQL seja OSS também, terá que pagar uma licença.

Quem usa? Bem, quem não usa é uma pergunta melhor. Sistemas de gerenciamento de conteúdo como Drupal e WordPress dependem do MySQL, então está em praticamente todos os posts de blog que você já leu. Empresas como Facebook, Google, GitHub, Netflix, Spotify e outras usam MySQL.

MariaDB

MariaDB

MariaDB é usado por uma porcentagem menor de desenvolvedores, apenas 17,9%. Ele tem uma história interessante - quando a Oracle estava adquirindo o MySQL, uma série de desenvolvedores ficaram preocupados com o que isso significaria para uma das mais confiáveis bases de dados SQL. MariaDB é uma bifurcação do MySQL e totalmente open source, licenciado sob GPL que tem muito, muito poucas limitações para uso acadêmico, comercial ou pessoal.

Esses desenvolvedores fizeram algumas melhorias também: MariaDB tem 12+ motores de armazenamento e 200k+ conexões, tornando-o mais rápido e mais leve do que o MySQL. É usado por uma seleção mais nichada de empresas como Bandwidth, DigiCert, InfoArmor, Oppenheimer, Samsung, SelectQuote e SpendHQ.

Oracle

Oracle

Não foi a Oracle que adquiriu o MySQL? Por que ele tem uma entrada separada nesta lista?

A Oracle é uma empresa que possui tanto o banco de dados Enterprise "Oracle" quanto o MySQL parcialmente open-source. É usado por apenas 11,5% dos desenvolvedores, não é tão personalizável quanto o MySQL, mas é melhor para um grau maior de escalabilidade. Não está configurado para fazer o que você quiser, está configurado para fazer algumas coisas limitadas com bancos de dados maiores e mais interações, e com uma piscina de concorrência maior que o MySQL. Também é mais seguro.

Empresas como Netflix, LinkedIn, eBay e Intuit usam o Oracle. É típicamente usado por empresas muito grandes e eu não recomendaria para nada menor.

Microsoft SQL Server

Microsoft SQL Server

Também conhecido como MSSQL, este banco de dados SQL é usado por 26,7% dos participantes da pesquisa Stack Overflow. Como o nome indica, este banco de dados foi desenvolvido pela Microsoft, então não é um sistema operacional. Você precisa de licenças para executá-lo.

Este banco de dados é principalmente usado com .NET. Como você pode imaginar, é melhor para projetos baseados no Windows que se integram bem aos produtos da Microsoft. É mais seguro que o MySQL. Ao contrário do MySQL, que permite que processos manipulem binários e arquivos de banco de dados diretamente, o MSSQL exige que os usuários executem uma instância para fazer isso.

Claro, a própria Microsoft usa o MSSQL, mas outras empresas notáveis, como Accenture e Costco, também o usam.

Banco de dados não relacionais

O que é um banco de dados NoSQL? É um banco de dados não tabular que usa modelos de dados diferentes para armazenar, gerenciar e acessar dados. Pode ser orientado a documentos, chave-valor, gráfico, coluna ampla ou outra coisa.

Ao contrário dos bancos de dados SQL, os bancos de dados NoSQL são bons em armazenar dados não estruturados, como textos, fotos, vídeos e arquivos PDF. Eles também tendem a ser melhores em escalar operações de somente leitura. Dito isto, cada banco de dados NoSQL é diferente e eles são todos projetados para otimizar coisas específicas que você não obteria necessariamente de um banco de dados SQL padrão.

Prós: Muitos desses bancos de dados escalam horizontalmente e tendem a ter melhor desempenho de leitura. No entanto, muitos fazem esse trade-off ao abdicar de coisas como integridade de dados e conformidade com ACID.

MongoDB

MongoDB

Como muitos outros bancos de dados que já discutimos aqui, o MongoDB oferece uma versão gratuita de código aberto e uma versão Enterprise paga. É o banco de dados NoSQL mais padrão.

É usado por 28,3% dos respondentes da pesquisa do Stack Overflow, o que o torna o banco de dados NoSQL mais popular. O MongoDB permite que você consulte documentos por chave única ou múltiplas, intervalos ou textos de pesquisa. Em vez de representar informações em tabelas e linhas, ele representa informações como uma série de documentos semelhantes a JSON. Tem uma estrutura mais solta do que o formato rigoroso de linha/coluna de um banco de dados SQL.

A Forbes usou o MongoDB para migrar para a nuvem. A Toyota também o usou. A Sonoma usou-o para escalar sua aplicação. No final do dia, Mongo vs SQL é, principalmente, uma diferença arquitetural na gestão de dados. Um não é melhor que o outro, apenas diferente.

Redis

Redis

Redis é o segundo banco de dados NoSQL mais popular, utilizado por 22,1% dos respondentes. Diferentemente do MongoDB, você só pode acessá-lo através do acesso por chave primária, o que significa que ele tem uma funcionalidade de consulta mais limitada. Vale notar que essa funcionalidade pode ser estendida com módulos Redis, mas o Redis original é mais limitado.

Uma das principais razões para sua popularidade é que ele não concorre com os outros bancos de dados aqui mencionados. Ele geralmente é usado com um deles. Ele é hiper-otimizado para trabalhos mais efêmeros, como cache e estruturação de dados em memória.

A principal diferenciação entre Redis e MongoDB é que ele usa um armazenamento de valor de chave em memória. Isso significa que os dados são armazenados na RAM do host, não na mesa. Isso o torna rápido - pode fazer milhões de solicitações por segundo. Mas significa que você está limitado em termos do tamanho do conjunto de dados. Também é monossseado.

Se você tem conjuntos de dados pequenos e está procurando velocidade, escolha Redis. É isso que empresas como Twitter, GitHub, Snapchat, Craigslist, Stack Overflow e mais empresas fizeram.

Elasticsearch

Elasticsearch

Elasticsearch é um tipo mais limitado e ao mesmo tempo mais poderoso de banco de dados NoSQL usado por 12,2% dos respondentes. É de código aberto e construído com Java. Agora, existem modelos de licenciamento fechado para novas versões além da versão 7.9.

Como você pode ter adivinhado, Elasticsearch é usado para pesquisa e análise de logs. É geralmente usado em conjunto com Kibana e Logstash, mais comumente conhecidos como a pilha ELK. Atua como uma plataforma de pesquisa para acesso, recuperação e relatórios de dados, log e análise de logs, e análise de métricas de infraestrutura. Algumas empresas o usam para segurança e análise de negócios também.

É usado por Uber, Shopify, Udemy e outros.

Firebase

Firebase

Google tem o hábito de dizer: "Ei, a tecnologia existente realmente não funciona para nós. Vamos criar algo totalmente novo que atenda às nossas necessidades e torná-lo tão bom que outras pessoas comecem a usá-lo também!" Google fez isso com o Golang e com o Firebase.

Apesar de apenas 8,72% dos respondentes do Stack Overflow usarem Firebase, ele tem alguns casos de uso bem interessantes. É de propriedade da Google e é totalmente hospedado na nuvem. Essa hospedagem na nuvem significa que você pode armazenar e sincronizar dados entre usuários em tempo real. Uma cópia de cada alteração no banco de dados é realmente mantida no Cloud Firestore.

Você também pode executar código de backend que responde a eventos disparados pelo seu banco de dados usando Cloud Functions para Firebase. O Firebase é otimizado em particular como "back-end como um serviço". A ideia é que, ao usar o Firebase, você não precisa de seus próprios servidores de aplicativos. Seus aplicativos móveis podem falar diretamente com o banco de dados.

Firebase é usado pelo NYT, Lyft, Accenture, Instacart e outros.

Cassandra

Cassandra DB

Não estou falando sobre a profetisa, apesar de ser isso que o nome presta homenagem. O banco de dados Cassandra tem uma base de usuários muito menor, com apenas 2,7% dos respondentes do Stack Overflow relataram usá-lo. É interessante porque é um banco de dados muito distribuído e escalável. Todos os nós mestres estão em comunicação entre si em uma rede peer-to-peer, o que significa que não há um único ponto de falha. Em comparação, o PostgresQL tem um modelo de nó primário / nó de replicação.

No final do dia, o Cassandra é usado para cargas de trabalho de volume extremamente elevado. Discord usa para armazenar os bilhões e bilhões de mensagens enviadas em seu aplicativo.

É altamente disponível com tolerância à particionamento, de acordo com o teorema CAP. Isso significa que é menos consistente, mas é mais disponível do que o MongoDB. É também uma das poucas bases de dados NoSQL que não é um modelo orientado a objetos. Usa uma estrutura de tabela mais tradicional.

A Sky usa o Cassandra para persistência de banco de dados. A Spotify usa para personalização. A Target usa para manter estabilidade e consistência.

Fila de mensagens

O que é uma fila de mensagens?

Vamos considerá-lo desta forma: uma mensagem é basicamente apenas dados que foram enviados de uma aplicação remetente para uma aplicação destinatária. Esses dados podem ser um array de bytes com algumas metadados anexados. Por exemplo, a aplicação de contas pode publicar uma mensagem "Joe criou uma conta", em seguida, a aplicação de emails recebe essa mensagem e envia um email de boas-vindas para Joe.

Uma "fila de mensagens" é simplesmente uma lista ordenada dessas mensagens vindas de um remetente que precisam ser manipuladas por um destinatário.

Pode ajudar a pensar em uma fila de mensagens como um protocolo de comunicação assíncrono. Você pode enviar mensagens e deixá-las serem manipuladas quando os sistemas estiverem prontos para lidar com elas. Enquanto isso, você pode continuar e fazer outras coisas sem precisar esperar por uma resposta imediata.

Esse abordagem permite a escalabilidade, pois você não está bloqueando a aplicação de receber mais mensagens.

Existem dois sistemas típicos para filas de mensagens: Pub/sub e corretor de mensagens. Um sistema pub/sub é um padrão de distribuição de mensagens que permite que os produtores PUBLIQUEM cada mensagem que desejam para qualquer serviço que se INSCREVA neles, como um estilo de transmissão. É uma relação de um para muitos.

Enquanto isso, um corretor de mensagens fará um pouco mais - ele validará, roteará, armazenará e entregará mensagens a destinatários previstos. Os corretores são intermediários entre outras aplicações e podem traduzir mensagens entre diferentes protocolos.

RabbitMQ

RabbitMQ

RabbitMQ é o corretor de mensagens de código aberto mais amplamente implantado. É leve e fácil de usar para implantações on-prem e na nuvem. É versátil, pois pode suportar múltiplos protocolos de mensagens. E pode atender aos requisitos de alta disponibilidade, pois pode ser implantado em configurações distribuídas e federadas.

O consumidor irá definir um limite de pré-busca, e o RabbitMQ empurrará as mensagens até esse limite.

É usado por empresas como T-Mobile e Runtastic, por exemplo.

Kafka

Apache Kafka

Por outro lado, o Kafka é um barramento de mensagens pub/sub. Ele é direcionado para fluxos e reprodução de dados com alta entrada. Na verdade, não é uma fila, mas sim adiciona mensagens a um registro, onde elas permanecem até serem lidas ou atingir o limite de retenção.

É usado por 10,3% dos respondentes da pesquisa Stack Overflow. (Isso não é muito útil, pois nem o RabbitMQ nem o SQS apareceram na pesquisa, então é difícil comparar, mas eu queria incluir isso.)

Ele é baseado em pull, o que significa que os usuários podem solicitar lotes de mensagens. Pode ser usado para mensagens em lote para melhor taxa de transferência e entrega de mensagens mais eficiente.

É confiável por algumas das melhores empresas do mercado, incluindo Goldman Sachs, Target e Cisco.

PubSub

PubSub

PubSub é a oferta proprietária da nuvem da Google para filas de mensagens. É muito semelhante ao Apache Kafka, mas não requer configuração ou manutenção - a única forma de usá-lo é através da oferta de nuvem da Google.

SQS

SQS

Assim como a Google, a Amazon está começando a se acostumar a construir os serviços de que precisa para tornar seu negócio um sucesso. O SQS é um exemplo disso. SQS significa Simple Queue Service. É um sistema de corretor de mensagens pub/sub. Por ser baseado no AWS, é excelente para escalar para cima e para baixo. No entanto, também por ser baseado no AWS, na verdade não possui nenhum hospedagem disponível fora do AWS. Além disso, é caro.

Basicamente, se você estiver usando o AWS, é uma ótima escolha. Se não, talvez escolha outra coisa.

É usado por empresas como Cigna, Amtrak, Tableau e outras.

Bônus: Mais tecnologias backend

Além dessas linguagens e bancos de dados, recomendo dar uma olhada em algumas outras tecnologias específicas de domínio se você estiver interessado em se aprofundar tanto quanto puder na desenvolvimento back-end.

  • Docker: Containerização
  • Kubernetes e Helm: Gerenciamento de containers
  • Github actions: CI/CD
  • Bash: Scripting de shell
  • AWS/GCP: Ambientes em nuvem

Conclusão

Se você é um desenvolvedor back-end, pode estar um pouco abalado com esta lista extensa (e ainda não é completa!) das melhores tecnologias back-end. Lembre-se, você não precisa conhecer todas elas. Mas vale a pena estar familiarizado com uma ou duas de cada lista para poder tomar decisões informadas ao se candidatar a empregos ou escolher uma nova tecnologia back-end para usar.

Esta lista de linguagens back-end, bancos de dados SQL, bancos de dados NoSQL e filas de mensagens irá ajudá-lo a ficar bem versado nas tecnologias back-end mais importantes com as quais você deve estar familiarizado em 2023.

AdsTerra, Junte-se ao AdsTerra