👨🏽💻 Cell-based architecture, green software e outras tendências em arquitetura e design de software
Relatório do InfoQ destaca apostas nessas áreas. Mais: codando um jogo de xadrez, integrando LLM em uma aplicação, GPUs com um trilhão de transistores e desafios de escala no Duolingo e Netflix
InfoQ, site sobre arquitetura e desenvolvimento de software, publicou suas Tendências em Arquitetura e Design de Software para 2024. Mesmo que pareçam tópicos distantes do dia a dia, vale ficar ligado sobre o que pode se tornar padrão no futuro próximo.
Conforme a imagem acima, o relatório lista tópicos em quatro fases de adoção: Innovators (novidades emergentes), Early Adopters (tecnologias em estágio inicial de adoção), Early Majority (inovações em vias de se consolidarem na indústria) e Late Majority (práticas já consolidadas).
Embora seja recomendável pesquisar sobre os tópicos das demais fases, caso você não os conheça, o relatório enfatiza as novidades emergentes, que são:
Cell-based architecture (arquitetura baseada em células): design de software que organiza sistemas em unidades independentes e autônomas (células), em que cada uma é responsável por uma funcionalidade e pode se comunicar com outras células por meio de interfaces bem definidas. As células encapsulam lógica de negócios, dados e interface de usuários. A comunicação entre elas é feita por meio de mensagens ou chamadas de API. Slack já usa o padrão.
Privacy engineering (engenharia de privacidade): incorporação de práticas, processos e mecanismos de proteção à privacidade de dados desde fases iniciais do desenvolvimento. O objetivo é evitar que a preocupação seja acessória e venha só ao fim do processo. Visa a atender à legislação crescente de proteção e privacidade de dados no mundo. DoorDash já adota a prática.
Green software (software verde): prática de projetar, desenvolver e operar software de forma ecologicamente sustentável. Visa à eficiência energética, por meio da otimização de software e de infraestrutura, com objetivo de consumir menos recursos (energia elétrica, água para refrigeração de servidores etc.) e reduzir emissões de CO2. Green Software Foundation agrupa empresas em torno do assunto.
GraphQL federation: abordagem para construir APIs escaláveis e modulares usando GraphQL. A API é dividida em múltiplos subgrafos, cada um gerenciado por uma equipe ou serviço. Um gateway GraphQL federado atua como ponto de entrada, roteando consultas para subgrafos correspondentes e agregando respostas em API única. Visa à escalabilidade, reutilização de código, autonomia de equipes e performance. Mais no GraphQL.com.
HTTP/3: próxima versão do HTTP, para resolver limitações do HTTP/2. Utiliza protocolo QUIC sobre UDP em vez de TCP. QUIC, desenvolvido pelo Google e adotado pela IETF, possibilita conexão mais rápida, zero tempo de ida e volta (0-RTT) e criptografia abrangente por padrão. Embora ainda em desenvolvimento, já conta com suporte em algumas ferramentas. Tem como desafio o alto consumo de CPU. Quic Working Group concentra a discussão.
dApps (aplicações descentralizadas): uso de blockchain e contratos inteligentes para criar aplicações que operam em redes descentralizadas, em vez de servidores tradicionais. Visam à imutabilidade, transparência e resistência a interferências em transações, além de ganhos a quem participa da rede. Têm desafios amplos, sejam tecnológicos ou sociopolíticos. Investopedia expande o assunto.
Além das inovações emergentes (que, obviamente, são sempre apostas ou promessas), outros tópicos com maior adoção continuam relevantes, segundo a InfoQ. Entre eles:
dados como fator importante nas decisões arquiteturais, com plataformas analíticas e modelos de Machine Learning (ML) se tornando componentes centrais de sistemas;
espaço para evolução do uso de LLMs além dos chatbots;
arquitetura sociotécnica, que considera também fatores humanos de quem constrói e mantém sistemas;
edge computing já em fase de adoção inicial e low-code/no-code como prática mais consolidada.
Considerações completas sobre as tendências estão neste artigo, com links para se aprofundar sobre alguns dos tópicos. Aqui, tendências de 2023 para comparação. Esse podcast expande e debate o assunto.
♟️Construa um jogo de xadrez como desafio de código
Coding Challenges é uma newsletter gratuita, feita pelo engenheiro John Crickett, que traz desafios de codificação diversos e interessantes. Agora em abril, Crickett lançou um desafio clássico: construir um jogo de xadrez em código. O artigo dá um roteiro em etapas e recomendações úteis, como usar TDD (Test Driven Development) para validar o movimento das peças, explorar algoritmos como minmax e busca em árvore de Monte Carlo, além de comentar um pouco sobre a complexidade combinatória do jogo. Um bom exercício, inclusive para aprender sobre fundamentos da computação, como algoritmos e estrutura de dados.
🤖 Integrando um chatbot de IA em uma aplicação
Para não ficarmos só nas notícias do hype da IA — já se começou a falar em "bolha" no setor, para variar —, que tal algo mais prático e implementável nesse campo? Eis "tutorial" que ensina a adicionar uma interface de linguagem natural em uma aplicação — que, convenhamos, pode ser uma tarefa cada vez mais solicitada a devs. O tutorial aborda desde a simples adição da interface até a personalização do chatbot por meio da integração de arquivos PDF e CSV ou comandos de voz. A tecnologia usada é a OpenAI API (paga), mas, com um pouco de esforço e criatividade, é possível usar um LLM open source na experiência.
📀 GPUs com um trilhão de transistores, na visão da TMSC
TMSC é a sigla para Taiwan Semiconductor Manufacturing Co., maior fabricante de chips do mundo — que, por pouco, não foi seriamente afetada pelo terremoto recente em Taiwan. Em um artigo rico em referências e história na revista da IEEE (maior organização técnica do mundo), o presidente e o cientista-chefe da TMSC comentam desafios e caminhos para chegarmos a GPUs de um trilhão de transistores em dez anos, necessárias às “IAs” futuras. Para se ter ideia, o Deep Blue, supercomputador que venceu Kasparov no xadrez, em 1997, tinha chips com componentes de 0,6 a 0,35 micrômetros. ChatGPT já usa tecnologia de 4 nanômetros — e isso ainda é só um décimo de trilhão de transistores... Mais no artigo completo.
🚀 Gerindo 4 milhões de notificações em segundos no Duolingo e 238 milhões de assinaturas na Netflix
Imagine os desafios de engenharia de software e de dados para enviar 4 milhões de notificações push no Duolingo para dispositivos móveis durante um anúncio de cerca de 5 segundos no Super Bowl, usando arquitetura AWS assíncrona e soluções como SQS FIFO e S3? Ou como é a complexidade de gerir 238 milhões de assinaturas na Netflix, orquestrando soluções como CockroachDB, Cassandra, Apache Spark e Kafka? Essas histórias estão contadas aqui e aqui (também na InfoQ, para variar — é que o conteúdo é bom mesmo). Ficam de inspiração a quem gosta de saber mais sobre desafios que envolvem complexidade, criticidade e escala.
☀️ Eclipse fez tráfego online cair até 60% no EUA
O eclipse total do Sol, visível nos Estados Unidos e Canadá esta semana, fez o tráfego online cair até 40% ou 60% em cidades dos EUA durante o evento, segundo a Cloudflare. Muita gente usou conexão para mandar fotos para a nuvem, obviamente, mas a maioria preferiu mesmo fazer festas em parques, praias, estádios, como fazemos há milênios durante eventos raros. Outro eclipse assim, só em 2045 (e também nos EUA). Para descontrair, fotos do evento. Como curiosidade, um calendário de eclipses para os próximos dez anos.
❓Por que, tecnicamente, usamos GPUs e não CPUS no treinamento de LLMs?
Talvez você intua ou tenha lido por aí. Envolve um conceito matemático. Explicaremos na próxima edição.
A propósito, a resposta à pergunta da edição anterior é: RAG (Retrieval-Augmented Generation) é uma abordagem que orquestra técnicas de recuperação e de geração de informações. Na recuperação, a aplicação consulta informações em uma base de conhecimentos (banco de dados, repositório de documentos etc.). Na geração, um modelo generativo usa as informações recuperadas para gerar respostas mais contextualizadas e precisas. Basicamente, RAG combina um mecanismo determinístico (preciso, mas não criativo) que recupera informações com um mecanismo aleatório (criativo, mas não preciso) que gera informações. Mais neste artigo.
Obrigado por ler!
Voltaremos com mais fatos, tendências e dicas na próxima sexta. Curta, compartilhe, comente e vote na enquete. Obrigado por ler e por estar com Be!