Micro Servicos Com Nodejs

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 43

MICRO SERVIÇOS

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.

Feito para construir sistemas distribuídos.

Mas não é a bala de prata!

Uma vantagem de micro serviços é a


heterogeneidade tecnológica.

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

> mocha + chai.js


> supertest
> sinon.js

Funcional ou unitário?

Integrar ou mockar?

Testes de Contrato?

29
TESTES NO CONSUMIDOR

> mocha + chai.js Funcional ou unitário?


> supertest Testes de componente?
> nock / mountebank Contratos dirigidos pelo consumidor?
> pact

30
MUDANÇAS OBSERVADAS

Monolítico RESTful

▫︎ Views + Model ▫︎ Model + JSON


▫︎ Controllers ▫︎ REST + HTTP Clients
▫︎ TFuncionais
estes Unitários + ▫︎ TFuncionais
estes Unitários +
+ Integração +

▫︎ Dacoplado
omínio de negócio
Contrato + Componente

▫︎ Domínio de negócio isolado


▫︎ Host único ▫︎ Hdedicados
ost único, paths

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

Um build por serviço, repositório único

Imagem: http://www.slideshare.net/ThoughtWorks/deploying-operating-microservices
Video: https://www.youtube.com/watch?v=OTSlg7_y3bA 37
ENTREGA CONTÍNUA

Um build por serviço, vários repositórios

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

Você também pode gostar