Skip to content

What we’re about

Somos tecnologistas que constroem ou querem aprender sobre micro-serviços (microservices) e sistemas distribuídos. Nos interessamos por entrega contínua, domain-driven designAPIs, sistemas reativos e infraestrutura como código.

Tecnologias em nosso radar: Docker, Akka, Kubernetes, ConsulPact (Consumer-Driven Contract Testing)Lattice, Dokku, AWS Lambda, AnsibleScaleway...

Acreditamos nos movimentos DevOpsTwelve-Factor App e Reactive Manifesto.

---

Micro-serviços, apesar de ser um tema frequentemente mal compreendido, é um conjunto de boas práticas para construção de sistemas distribuídos e arquiteturas orientadas a serviços (SOA), que guiam a quebra de uma grande aplicação monolítica em serviços pequenos e auto-contidos. O principal objetivo é poder replicar estes serviços independentemente, resolvendo problemas de escalabilidade e reduzindo custos de infraestrutura.

Um erro comum é criar serviços que sejam orientados somente a funcionalidades e representem de maneira pobre o domínio da aplicação. Também frequentemente se vê o compartilhamento de banco de dados e outros recursos entre serviços, além do uso de protocolos de comunicação de alto acoplamento, tal como Web Services SOAP e Enterprise Message Brokers. Tais práticas acabam criando o que chamamos de "monolítico distribuído", e resultam em sérios problemas como grande overhead de comunicação, baixa testabilidade, complexidade excessiva e alto custo de manutenção.

Estes problemas podem ser mitigados ao se usar técnicas como Domain-Driven Design para criar serviços que representem o domínio da aplicação de maneira isolada e auto-contida, nunca compartilhando banco de dados ou outros recursos, e usando-se protocolos de baixo acoplamento, como REST. Também se faz necessário maturidade em práticas como testes automatizados, entrega contínua e infraestrutura como código. Por último, é necessário quebrar silos funcionais dentro da organização, agrupando desenvolvedores, QAs e administradores de sistemas dentro de um mesmo time (ver "Lei de Conway").

Não importa se você tem 5, 20 ou 200 serviços, se você está seguindo estas práticas então você está efetivamente implementando micro-serviços. É importante ressaltar que micro-serviços não se aplicam a todas as situações, e a maioria dos problemas pode ser resolvida por uma simples aplicação monolítica.

Uma excelente referência é o livro "Building Microservices", escrito por Sam Newman (ThoughtWorks).