Executando verificação de segurança...
21

Escrevendo Software que Escale, Além da Nuvem e Web

Bem, bem... parece que o mundo da programação gira em torno da web e da nuvem, né?

Acredite, ele não gira. E a própria web e nuvem são construídas em camadas muito mais baixas, com coisas que a maioria das pessoas que “escreve código para a nuvem” nunca viu e talvez nem queira ver. E tá tudo bem, tem espaço para todo mundo.

The-inverted-pyramid-of-dAgapeyeff

Mas não se engane, a verdade é simples: segurança, entrada e saída de dados, áudio, vídeo, matemática, gráficos, serialização, persistência, comunicação, compressão... Tudo isso é feito em alguma biblioteca obscura escrita antes da década 80. Em C ou Fortran. Ou algo do tipo,

Toda a moderna computação assíncrona, se resume basicamente a duas chamadas em C: epoll e pthread. E sim, Fortran! Achou que ele tinha morrido nos anos 70? Se nunca ouviu falar de BLAS (Basic Linear Algebra Subprograms) e LAPACK (Linear Algebra PACKage), agora sabe como são feitos os cálculos de machine learning com TensorFlow, PyTorch, ou qualquer outra biblioteca de IA bacaninha.

Mas, enfim, esse não é o assunto deste post. O ponto é que muitas dessas bibliotecas que mencionamos estão, de certa forma, paradas no tempo. Literalmente enxergam e interagem com o mundo como se ainda estivessem rodando em um processador single-core, com memória secundária de discos magnéticos, e, claro, alguns míseros megabytes de RAM.

Sim, você leu certo. A maioria dessas bibliotecas fundamentais ainda pensa que está vivendo nos anos 80. Elas não têm noção de múltiplos núcleos, SSD NVMe e 32 GB de RAM que você pode ter no seu laptop gamer. E quer saber o mais curioso? De alguma forma, isso funciona absurdamente bem. Esse software, otimizado para um mundo de processadores single-thread e discos que faziam mais barulho que a ventoinha da sua placa de vídeo, continua sendo a base de quase tudo que usamos hoje. Isso é incrível, mas também assustador. Mas como dizem por aí: "se não está quebrado, por que consertar?"

Mas, ei, estamos em 2024, e para novas infraestruturas, devemos e podemos fazer mais. Aqui está uma lista das ferramentas indispensáveis.

Comunicação: ZeroMQ (ZMQ)

Não precisa de middleware pesado para fazer o básico. O ZeroMQ entrega uma variedade de padrões de comunicação – publish/subscribe, request/reply, push/pull – de uma maneira que muitos protocolos só podem sonhar. ZMQ é como sockets, mas muito melhor. Ele permite a comunicação entre processos e máquinas de forma ágil e direta. Quer enviar dados com flexibilidade e velocidade entre dois sistemas em qualquer lugar do mundo ou até na mesma máquina? ZMQ é a resposta.

  1. Sabia que dá pra passar mensagens sem dar o deploy de um sistema inteiro né?

Serialização: Protocol Buffers (Protobuf)

Vamos falar de Protobuf. Enquanto você perde ciclos de CPU processando seu JSON pesado, o Protobuf já resolveu o problema. Criado pelo Google, ele permite que você serialize e compacte seus dados de forma absurdamente eficiente. Com Protobuf você ganha performance, redução de tamanho e um esquema claro. Se você precisa serializar grandes volumes de dados ou garantir alta performance, Protobuf é sua ferramenta.

  1. Precisa mesmo usar JSON para tudo?

Persistência: SQLite

Aqui vai uma verdade inquestionável: SQLite é o software mais usado no mundo. Ponto. E o segundo lugar nem chega perto. MacOS, iOS, Android, Python, PHP e todas as suas plataformas preferidas estão rodando dezenas ou até centenas de bancos de dados SQLite, enquanto você ainda não superou o mongo.

E se você ainda está pensando que o SQLite só serve para "projetinhos", pense de novo. Ao invés de pensar nele como substituto do Oracle, veja-o como a maneira mais sensata de persistir qualquer dado, localmente. Quer ver um exemplo curioso? O Grafana ingere dados de praticamente qualquer fonte imaginável, menos do SQLite... mas adivinha o que ele usa internamente para gerenciar suas próprias configurações? Sim, SQLite.

  1. Por que você ainda está escrevendo em arquivos?

Essas são as ferramentas indispensáveis para criar sistemas escaláveis e robustos nativas do século XXI, mas além da web e da cloud...Bom, alguém tem que construir as camadas de baixo, né? Então, cave fundo.

Um abraço e bons estudos.

Carregando publicação patrocinada...
4

De fato, muitos dos fundamentos da computação - tanto a teoria quanto as implementações - não mudam há décadas. E são eles que tornam possível todo o resto, do framework da moda ao protocolo desconhecido que só um nicho usa.

Complementando sobre o SQLite: realmente ele é o banco de dados mais usado no mundo (não confundir com "mais popular" ou "mais conhecido"). Os números exatos são difíceis de estimar, mas de fato é não apenas o banco, mas também um dos softwares mais usados - se não o mais usado - no mundo. Se contarmos apenas smartphones e desktops, e considerando que mais de um aplicativo instalado usa o SQLite, estima-se que haja trilhões de instâncias ativas atualmente.

Talvez muitos não tenham esta percepção porque não é usado diretamente nos sistemas web (que é onde a maioria acaba indo parar e escolhe MySQL, PostreSQL, Oracle, etc), mas no próprio site deles tem uma lista dos lugares onde ele é usado: basicamente, toda máquina/dispositivo Android, iOS, MacOS, Windows, os principais browsers (Firefox, Chrome e Safari), softwares como o Skype e iTunes, sistemas embarcados como set-top boxes de TV a cabo e sistemas multimídia de automóveis, e muito, muito mais.

É claro que ele não serve para tudo, mas para os casos citados, é uma opção excelente.


Sobre Protobuf, tem dois posts bem detalhados sobre o assunto:

2

Complementando a complementação, é isso aí, kht! Certíssimo, o SQLite é simplesmente onipresente.

E, embora não seja tão popular na web, um caso de uso muito interessante é em sistemas multi tenancy, onde ele pode ser usado em conjunto com um data warehouse. Existem muitas arquiteturas web que podem e devem fazer uso do SQLite.

Aliás, falando da web, tem o Turso ganhando alguma tração, mas o slogan deles – "SQLite for production" – é meio estranho. Como se o SQLite já não fosse o software mais usado em produção no planeta, haha. Mas, no fim, a percepção é mais importante que a realidade, né?

2

o proprio mavegador tinha uma engine de sqlite que foi descontinhada.

agora, como assim, nao é o assunto do post, nao me deixa aqui no vacuo veio, eu tava curtindo a leitura hahaha

1

Já escrevi bastante sobre essas coisas em outras postagens. Leia?! Obrigado pelo comentario, talvez continue esse papo mais no futuro.

Ah, sim, os antigos padrões de Web SQL. Ainda assim, o SQLite continua totalmente compatível com qualquer browser que suporte WASM e oferece uma ótima API em JavaScript!