Arquitetura de software distribuído Boas práticas para um mundo de microsserviços
Flávio LisboaPrefácio
Como fazer softwares que sobrevivam?
O que queremos dizer com isso? Vamos reformular.
Como fazer softwares que sobrevivam a constantes alterações, que incluam adição de novas funcionalidades, correções de erro, evoluções provocadas por necessidade ou oportunidade e integrações com outros sistemas?
Ainda não entendeu o que queremos dizer com sobrevivência do software? Vamos reformular novamente.
Como fazer com que seja possível continuar dando manutenção a um software se a cada mudança ele fica mais complexo e, assim, mais difícil de compreender?
Essa pergunta ainda pode ser reescrita de uma forma que sensibilize ainda mais os que vivem da produção de software:
Como continuar entregando software como um produto ou serviço sem que o custo de sua manutenção ultrapasse o valor que ele entrega?
Essa é uma questão que deve preocupar empreendedores e gestores de projetos de softwares, e a resposta deve ser dada por um profissional denominado arquiteto de software.
Pode ser que não haja um arquiteto de software em sua empresa e você precise de um ou queira se tornar um. Este livro pode ser de grande ajuda nesse caso, pois ele é destinado para desenvolvedores e desenvolvedoras de software iniciantes e profissionais que atuam ou querem atuar no papel de arquitetos ou arquitetas de software.
Para aproveitar o conteúdo deste livro, você deve ter pelo menos conhecimento e experiência como iniciante em desenvolvimento de software, independente de linguagem de programação, ou seja, você deve estar trilhando a carreira de programador. Você não deixará de ser programador ao se tornar arquiteto. Pelo contrário, se tornará um programador melhor e poderá se tornar mentor de outras pessoas programadoras. Isso não quer dizer necessariamente que você conhecerá linguagens de programação mais do que outros programadores, mas que será capaz de coordenar e aproveitar melhor o conhecimento de seus colegas.
O principal motivo de escrever este livro foi a constatação da ausência de literatura em língua portuguesa sobre arquitetura de software adequada à cultura brasileira. Existem diversos livros sobre arquitetura de software em inglês, mas esse conteúdo pode parecer assustador para quem desenvolve software no dia a dia e não pensa em todas as preocupações que são expostas nessa literatura específica. Há algumas poucas traduções, mas que podem soar distantes da realidade do mercado brasileiro.
Há também livros sobre arquitetura de linguagem, que orientam a construção de projetos de acordo com as características e restrições de uma linguagem de programação, o que pode dirigir o pensamento de forma equivocada, como uma caixa de ferramentas que tem apenas um martelo.
O objetivo deste livro é ser um guia prático para arquitetura de software baseado em exemplos. Conforme apresentarmos os problemas e implementarmos as soluções, abordaremos os conceitos. Ele está organizado da seguinte maneira:
No primeiro capítulo, trazemos conceitos de arquitetura a partir de um problema real de projeto de software.
O segundo capítulo apresenta o projeto de um sistema de software baseado em microsserviços para auditoria. Nesse capítulo, apresentamos o problema que pretendemos resolver e qual a arquitetura que será usada para implementar a solução.
O terceiro capítulo apresenta a implementação de uma fila em Java e discute a questão do uso de padrões, reúso e decisão entre implementar e usar algo existente.
O quarto capítulo apresenta a implementação de um microsserviço em Go, que produz dados para serem gravados na fila.
O quinto capítulo apresenta a implementação de um microsserviço em Python, que lê dados da fila para enviar a um sistema externo.
O sexto capítulo apresenta a implementação de um microsserviço em PHP, que monitora os microsserviços de produção e o consumo de dados da fila.
O sétimo capítulo apresenta a implementação de um microsserviço em JavaScript, que é executado em intervalos previamente configurados e funciona como ponto de controle para a monitoração.
Observe que trabalharemos com um software distribuído, formado por programas escritos em várias linguagens. Essa é a realidade do paradigma de microsserviços, que é a tendência contemporânea de construção de software. O arquiteto de software contemporâneo não deve ser arquiteto de uma linguagem só, mas um desenvolvedor de software poliglota. Existem vantagens em usar mais de uma linguagem de programação na construção de um sistema distribuído, e comentaremos essas vantagens ao longo do livro.
Todos os exemplos de código-fonte deste livro estarão disponíveis no GitHub em https://github.com/fgsl. O nome específico de cada trecho ou projeto será mencionado no respectivo capítulo.
Boa sorte e vamos em frente!
Sobre o autor
Flávio Gomes da Silva Lisboa é bacharel em Ciência da Computação, com especialização em Tecnologia Java, pela Universidade Tecnológica Federal do Paraná, e mestre em Tecnologia e Sociedade pela mesma instituição.
Programador formado pelo Centro Estadual de Educação Tecnológica Paula Souza, já atuou em empresas privadas de TI e foi funcionário do Banco do Brasil, onde atuou como analista na diretoria internacional.
É analista de desenvolvimento do Serviço Federal de Processamento de Dados (Serpro), no qual foi coordenador do Programa Serpro de Software Livre e gerente de equipe de desenvolvimento.
Tem mais de nove anos de experiência em treinamento de desenvolvedores em Programação Orientada a Objetos, Padrões de Projeto e uso de frameworks.
Foi professor no curso de Desenvolvimento de Sistemas para Internet PHP, da UNICID.
Atualmente, é professor da disciplina Frameworks back-end em PHP do curso de pós-graduação em Desenvolvimento de Aplicações Web da UNICESUMAR e da disciplina Frameworks de Desenvolvimento PHP II na Faculdade ALFA Umuarama.
É pioneiro na bibliografia em língua portuguesa sobre Zend Framework e Symfony.
Por fim, ele é associado a ABRAPHP, Zend PHP Certified Engineer, Zend Framework Certified Engineer e Zend Framework 2 Certified Architect.
Sumário
- 1 Introdução: nossa meta é não bagunçar
- 1.1 O que é arquitetura?
- 1.2 O que vem a seguir
- 2 O projeto de sistema distribuído
- 2.1 Aprendendo com os erros
- 2.2 Nosso projeto de sistema distribuído
- 2.3 Sistema distribuído
- 3 O microsserviço de fila
- 3.1 A estrutura de filas no nosso sistema de auditoria
- 3.2 Instalando o Apache ActiveMQ
- 3.3 Simulação de produtor e consumidor
- 4 O microsserviço produtor
- 4.1 A abstração no desenvolvimento de software
- 4.2 A escolha pela linguagem Go
- 4.3 O podips-reader
- 5 O microsserviço consumidor
- 5.1 A escolha pela linguagem Python
- 5.2 O podips-writer
- 6 O microsserviço de monitoramento
- 6.1 O podips-monitor
- 6.2 Criação do podips-monitor
- 6.3 Implementação do podips-monitor
- 6.4 Documentação da API
- 7 O microsserviço agendado
- 7.1 O podips-cronjob
- 7.2 Implementação do podips-cronjob
- 8 Conclusão
- 9 Referências
Dados do produto
- Número de páginas:
- 138
- ISBN:
- 978-65-86110-86-9
- Data publicação:
- 10/2021