Há tempos, a forma dominante de manter nossas aplicações “rodando” tem sido através de infraestruturas “mutáveis”. Ou seja, compostas por servidores projetados para continuar funcionando por tempo indeterminado, recebendo atualizações na medida em que estas ficam disponíveis. Entretanto, esse “jeito de funcionar”, parece estar com os dias contados! [tweet]Manter os servidores, em produção, devidamente atualizados […]
Passo a passo para escrever uma função em Assembly e executá-la a partir do C++ (usando o VS2019)
Uma das formas mais fáceis, hoje em dia, de começar a escrever código em Assembly é criando funções para programas em C++. Para escrever uma função, em assembly, para ser executada em C++: abra uma nova instância do Visual Studio 2019 e inicie um Empty Project (C++) (chame-o MyFirstASMFunction) clique com o botão direito no […]
Por que a metodologia “The Twelve-Factor App” é “jogada certa” em arquiteturas para nuvem?
A nuvem reduziu as dificuldades para que possamos desenvolver aplicações robustas e escaláveis. O time-to-market é potencialmente menor visto que podemos alocar recursos facilmente, na medida em que são necessários. Entretanto, demanda cuidados. Implementações ingênuas geram desperdícios e custos desnecessários, além de problemas de desempenho, segurança e confiabilidade. As arquiteturas de aplicações para a nuvem […]
Por que “SRE” é o jeito certo de melhorar a confiabilidade de um sistema?
Sistemas que não funcionam, geram prejuízos para o negócio. Entretanto, alguns tipos de sistema são mais críticos do que outros. No e-commerce, por exemplo, a falta de confiabilidade gera prejuízos diretos, sentidos rapidamente, muito além do setor de TI. Não basta que sejamos capazes de desenvolver sistemas inteligentes e sofisticados. É necessário que eles se […]
Utilizando HATEOAS para reduzir acoplamento e “inteligência de negócio” em aplicações cliente
APIs robustas e bem modeladas simplificam a construção de aplicações clientes, reduzindo o acoplamento e a necessidade delas implementarem “inteligência do negócio”. [tweet]Em APIs REST, a redução de acoplamento e da necessidade de implementar “inteligência do negócio” nas aplicações clientes é obtida pela adoção de HATEOAS.[/tweet] O que é HATEOAS? Hypermedia as the Engine of […]
Software projetado sem considerar performance e escalabilidade já nasce legado
Performance e escalabilidade são conceitos relacionados, porém distintos. Ambos demandam atenção na arquitetura e apresentam desafios particulares que ficam longe de soluções simplórias. RECORDANDO A performance de um software está relacionada com sua rapidez e eficiência para completar uma unidade de trabalho. Em um software baseado na interação com usuários, por exemplo, a performance poderá ser […]
Ferramentas de análise estática ajudam os times a produzir “código limpo”
Empiricamente, todos sabemos que os desenvolvedores gastam muito mais tempo tentando entender código antes de começar a fazer qualquer alteração que resolva um bug ou entregue alguma funcionalidade para o negócio. Há quem diga que essa relação chega a ser de 90/10, ou seja, em uma hora de trabalho, são investidos 54 minutos entendendo o […]
Cracking the Coding Interview
The book “Cracking the Coding Interview” is a spectacular and practical reference for all those who wish to develop competence in the essentials of our profession. Written by Gayle Laakmann McDowell, the book shows frequently asked questions from interviews for the developer position at some of the world’s largest and most influential tech companies (including […]
As etapas na jornada do “Legado” para “Cloud Native Applications”
Um bom engenheiro sabe, ao construir uma casa, que deve se preocupar primeiro com as fundações. Afinal, sem elas, “a casa cai”. Entendemos que essa ideia também é aplicável para o desenvolvimento de software. Há uma demanda crescente pela modernização de sistemas legados para que eles “rodem” na nuvem e que sejam otimizados para a […]
Compartilhar o banco de dados – o equívoco arquitetural mais difundido nas organizações
Se dois sistemas lidam com um mesmo conjunto de dados, por que não compartilhar a mesma base? Afinal de contas, nada tão simples, óbvio e indolor, certo? [tweet]Para todo problema complexo há uma solução clara, simples e … errada – Henry Mencken[/tweet] Infelizmente, talvez devido a obviedade dessa abordagem, ela seja tão utilizada no desenvolvimento […]