Micro Servicos Com Nodejs
Micro Servicos Com Nodejs
Micro Servicos Com Nodejs
COM NODE.JS
BRUNO TRECENTI
trecenti@github /brunotrecenti@twitter
1
thoughtworks.com/join
MUDE A CARA DO
MERCADO DE TI
AGENDA
▫︎ Micro Serviços
▫︎ Um Design Evolucionário
▫︎ Um exemplo em Node.js
▫︎ Aspectos do teste e implantação
3
MICRO SERVIÇOS
Uma breve definição
4
Pequenos autônomos serviços, que
trabalham em conjunto modelados
em volta de um domínio de negócio.
5
AUTÔNOMOS Podem ser modificados e implantados de forma
independente.
Imagem: http://martinfowler.com/articles/microservice-testing/
6
TRABALHAM Apesar de serem independentes eles
EM conversam entre eles através de um canal.
CONJUNTO
Service C
TCP
HTTP
Service A
Service B
7
DOMÍNIO DE Modelados para representar um domínio de
NEGÓCIO negócio, geralmente cada parte representa um
modelo ou entidade de todo o negócio.
Comércio Eletrônico
Usuários
Outros Serviços
Produtos
Pedidos
8
DESIGN
EVOLUCIONÁRIO
Evoluindo do monolítico
9
Criar e modificar o design de um
sistema a medida em que ele é
desenvolvido.
10
TRÊS
ASPECTOS
Construindo
Implantando
Mantendo
11
TRÊS
ASPECTOS
Construindo
Implantando
Mantendo
12
O CAMINHO O caminho direto para uma arquitetura de
PARA MICRO micro serviços contém muitos riscos.
SERVIÇOS
Imagem: http://martinfowler.com/bliki/MonolithFirst.html
13
MONOLÍTICO Yagni (You aren’t gonna need it)
PRIMEIRO
Presumir que o sistema precisar de algo no
futuro, não indica que precisa ser construído
agora (por que você pode não precisar)
MONOLÍTICO
14
EVOLUÍNDO
MONOLÍTICO
15
EVOLUINDO
SERVIÇO
MONOLÍTICO
Extração
16
EVOLUINDO
SERVIÇO
MONOLÍTICO HTTP
17
EVOLUINDO
SERVIÇO A
MONOLÍTICO HTTP
HTTP
SERVIÇO B
18
Não é para qualquer um!
Imagem: http://martinfowler.com/bliki/MicroservicePrerequisites.html
19
PRÉ- Provisionamento Rápido
REQUISITOS
Criar servidores de forma rápida e fácil,
geralmente através de automação e servidores
na nuvem.
Monitoramento Básico
Habilidade de identificar e depurar problemas
entre os diferentes serviços.
Implantação Rápida ou Contínua
Implantar de forma contínua os serviços nos
diferentes ambientes (testes, produção, etc). A
cultura de DevOps ajuda na manutenção e
implantação dos serviços.
20
UM EXEMPLO EM
NODE.JS
Como node.js e seus frameworks ajudam a criar micro-serviços
21
22
POR QUE Rápido Provisionamento e fácil implantação
NODE.JS? contínua.
23
OBJETIVO
24
OBJETIVO
25
MONOLÍTICO > RESTFUL
Routers
restful/api/users.js restful/api/app.js
26
MONOLÍTICO > RESTFUL
Apps
restful/api/app.js restful/app.js
27
MUDANÇA NA ESTRATÉGIA
DE TESTES
Imagem: http://martinfowler.com/articles/microservice-testing/
28
TESTES NA API
Funcional ou unitário?
Integrar ou mockar?
Testes de Contrato?
29
TESTES NO CONSUMIDOR
30
MUDANÇAS OBSERVADAS
Monolítico RESTful
▫︎ Dacoplado
omínio de negócio
Contrato + Componente
31
FLEXIBILIDADE E EVOLUÇÃO
APP CONTAINER
ROUTERS
APP
ROUTERS
32
FLEXIBILIDADE E EVOLUÇÃO
https://192.168.0.1:3000 https://192.168.0.1:3100
APP APP
ROUTERS
ROUTERS
33
RESTFUL > MICRO SERVIÇO
Apps autônomas
micro-services/users/app.js
34
RESTFUL > MICRO SERVIÇO
Pensando na infra-estrutura
▫︎ Entrega/Integração Contínua
▫︎ Provisionamento
▫︎ Monitoramento
35
ENTREGA CONTÍNUA
Um grande build
Imagem: http://www.slideshare.net/ThoughtWorks/deploying-operating-microservices
Video: https://www.youtube.com/watch?v=OTSlg7_y3bA 36
ENTREGA CONTÍNUA
Imagem: http://www.slideshare.net/ThoughtWorks/deploying-operating-microservices
Video: https://www.youtube.com/watch?v=OTSlg7_y3bA 37
ENTREGA CONTÍNUA
Imagem: http://www.slideshare.net/ThoughtWorks/deploying-operating-microservices
Video: https://www.youtube.com/watch?v=OTSlg7_y3bA 38
PROVISIONAMENTO RÁPIDO
39
PROVISIONAMENTO RÁPIDO
Através de APIs
40
INFRA-ESTRUTURA COM O CÓDIGO
41
MONITORAMENTO
42
VALEU!
brunotrecenti@twitter
trecenti@github