Próximo Meetup

Introdução a AWS Lambda com NodeJS
Acredito que uma boa maneira de recomeçar o grupo é fazendo uma introdução ao AWS Lambda, uma das infras mais conhecidas de microsserviços. Se você for inexperiente ou quer começar com Lambdas, pretendo fazer uma introdução ao conceito e códigos de exemplo. Shameless plug: se você já for experiente, venha também (!), e confira uma vaga para trabalhar com NodeJS na minha startup: https://www.meetup.com/microservices-bh/messages/boards/thread/50885797

Fumsoft

Av Afonso Pena 4000, 3o andar · Belo Horizonte

3 comentários

O que fazemos

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

Tecnologias em nosso radar: Docker, Akka, Kubernetes, Consul, Pact (Consumer-Driven Contract Testing), Lattice, Dokku, AWS Lambda, Ansible, Scaleway...

Acreditamos nos movimentos DevOps (https://en.wikipedia.org/wiki/DevOps), Twelve-Factor App (http://12factor.net) e Reactive Manifesto (http://www.reactivemanifesto.org).

---

Micro-serviços (https://www.thoughtworks.com/pt/insights/blog/microservices-nutshell), 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" (http://www.infoq.com/news/2016/02/services-distributed-monolith), 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" (https://www.thoughtworks.com/pt/insights/blog/demystifying-conways-law)).

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" (http://samnewman.io/books/building_microservices), escrito por Sam Newman (ThoughtWorks).

Membros

Fotos (1)