Introdução a Microservices com Node.JS

27
Introdução +

Transcript of Introdução a Microservices com Node.JS

Page 1: Introdução  a Microservices com Node.JS

Introdução

+

Page 2: Introdução  a Microservices com Node.JS
Page 3: Introdução  a Microservices com Node.JS
Page 4: Introdução  a Microservices com Node.JS

# whoami Eduardo Nunes Pereira

Engenheiro de software com 11 anos de experiência em desenvolvimento web. Especializado em construir softwares utilizando PHP, Javascript (Node.JS) e Amazon Web Services.

github.com/eduardonunesp

br.linkedin.com/in/eduardonunesp

Page 5: Introdução  a Microservices com Node.JS

Modelo tradicional

Banco de dados

Negócios

Apresentação

http://martinfowler.com/articles/microservices.html

Page 6: Introdução  a Microservices com Node.JS

• Integração continua mais difícil

• Atualizar um ou mais componentes pode significar o “redeploy” da aplicação inteira.

• Escalar componentes individuais é quase impossível.

• Impacto no desenvolvimento

• Componentes fortemente unidos requerem uma maior coordenação entre os desenvolvedores.

• Base de código (git/svn/…) enormes, requer maior esforço para manter e extender o repositório.

• Vantajoso para um projeto rápido, mas a longo prazo irá manter o projeto “amarrado" as tecnologias envolvidas.

Page 7: Introdução  a Microservices com Node.JS

Aplicações modernas

Mobile

Web Apps

IoT

Page 8: Introdução  a Microservices com Node.JS

Serviços

• Aplicações modernas consomem serviços

• Aplicações modernas oferecem serviços

• Serviços de acordo e para qualquer device.

Page 9: Introdução  a Microservices com Node.JS
Page 10: Introdução  a Microservices com Node.JS

Microservices : Nutshell

• Comunicação entre processos na rede

• Funcionalidades entregues via requisições HTTP, TCP, PubSub, Queue

• Utilização de protocolos leves

• "Do One Thing And Do It Well” - UNIX Philosophy

Page 11: Introdução  a Microservices com Node.JS

Modelo moderno

Banco de Dados

Negócios

Apresentação

http://martinfowler.com/articles/microservices.html

Page 12: Introdução  a Microservices com Node.JS

Target : Particionamento• Serviços distribuídos de forma granular

• Micro aplicativos independentes

• Evolução de componentes individuais

• Deploy em pequenas partes, e com test A / B

• Escalabilidade de forma simples

• Melhor distribuição entre os times de dev.

Page 13: Introdução  a Microservices com Node.JS
Page 14: Introdução  a Microservices com Node.JS

SOA ?• Uma evolução do SOA

• Ser leve, aspecto principal simplicidade

• Fazer uma coisa e fazer bem (lembra da filosofia Unix)

• Kickstart, menos bla-bla-bla e mais code-code-code

• REST, sem milhões de parâmetros e nomes do tipo: ”ws-alguma-coisa".

• Padrão de comunicação mais flexível HTTP / QUEUE /PUBSUB / TCP.

Page 15: Introdução  a Microservices com Node.JS

Desvantagens• Deploy de uma arquitetura monolítica é bem mais simples

• Requer uma maior automação e utilização de ferramentas de análise

• Complexidade da operação, monitoramento, gerenciamento de um número enorme de diferentes processos

• Muitos padrões de comunicação podem dificultar um diagnóstico.

• Rede: Falhas, Timeouts e Latência (mais selvagem ainda na internet).

Page 16: Introdução  a Microservices com Node.JS

Fatores importantes• Codebase (GIT)

• Dependency Management

• Build, Release and Run

• Port Binding

• Disposability

• Logs

Page 17: Introdução  a Microservices com Node.JS

http://12factor.net/

Page 18: Introdução  a Microservices com Node.JS
Page 19: Introdução  a Microservices com Node.JS

• Sistema de empacotamento e distribuição super simples NPM

• Kickstart: npm init, npm install, “code-code-code"

• Metodologia leve e focada

• I/O asynchronous

• Excelente performance (thanks V8)

• MEAN Stack (Mongo, ExpressJS, AngularJS, Node.JS)

Page 20: Introdução  a Microservices com Node.JS
Page 21: Introdução  a Microservices com Node.JS
Page 22: Introdução  a Microservices com Node.JS

• Pattern matching: Maneira flexível de controlar as regras de negócio

• Transport Independence: Como as mensagens são transportadas não é algo que deve focar.

• Plugins: Vários plugins já desenvolvidos

• Seneca: Ferramentas para organizar as regras de negócio do seu App em forma de Microservices.

Page 23: Introdução  a Microservices com Node.JS
Page 24: Introdução  a Microservices com Node.JS

–Torvalds, Linus (2000-08-25).

“Talk is cheap. Show me the code.”

Page 25: Introdução  a Microservices com Node.JS

Referências• Martin Fowler / James Lewis

• http://martinfowler.com/articles/microservices.html

• http://nginx.com/blog/microservices-at-netflix-architectural-best-practices/

• http://www.slideshare.net/adrianco (Cockcroft)

• http://microservices.io/patterns/microservices.html

• http://theartofscalability.com/

Page 26: Introdução  a Microservices com Node.JS

Recomendações

Page 27: Introdução  a Microservices com Node.JS

Obrigado