SlideShare uma empresa Scribd logo
1 de 43
Baixar para ler offline
MICRO SERVIÇOS
COM NODE.JS
BRUNO TRECENTI
trecenti@github /brunotrecenti@twitter
1
t h o u g h t w o r k s . c o m / j o i n
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.
6
Imagem: http://martinfowler.com/articles/microservice-testing/
TRABALHAM
EM
CONJUNTO
Apesar de serem independentes eles
conversam entre eles através de um canal.
7
Service A
Service B
Service C
HTTP
TCP
DOMÍNIO DE
NEGÓCIO
Modelados para representar um domínio de
negócio, geralmente cada parte representa um
modelo ou entidade de todo o negócio.
8
Produtos
Pedidos
Usuários
Comércio Eletrônico
Outros Serviços
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
12
Implantando
Mantendo
O CAMINHO
PARA MICRO
SERVIÇOS
O caminho direto para uma arquitetura de
micro serviços contém muitos riscos.
13
Imagem: http://martinfowler.com/bliki/MonolithFirst.html
MONOLÍTICO
PRIMEIRO
Yagni (You aren’t gonna need it)
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)
14
MONOLÍTICO
EVOLUÍNDO
15
MONOLÍTICO
EVOLUINDO
16
MONOLÍTICO
SERVIÇO
Extração
EVOLUINDO
17
MONOLÍTICO
SERVIÇO
HTTP
EVOLUINDO
18
MONOLÍTICO
SERVIÇO A
HTTP
HTTP
SERVIÇO B
Não é para qualquer um!
19
Imagem: http://martinfowler.com/bliki/MicroservicePrerequisites.html
PRÉ-
REQUISITOS
Provisionamento Rápido
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
NODE.JS?
Rápido Provisionamento e fácil implantação
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
26
Routers
restful/api/users.js restful/api/app.js
MONOLÍTICO > RESTFUL
27
Apps
restful/api/app.js restful/app.js
MUDANÇA NA ESTRATÉGIA
DE TESTES
28
Imagem: http://martinfowler.com/articles/microservice-testing/
TESTES NA API
29
> mocha + chai.js
> supertest
> sinon.js
Funcional ou unitário?
Integrar ou mockar?
Testes de Contrato?
TESTES NO CONSUMIDOR
30
> mocha + chai.js
> supertest
> nock / mountebank
> pact
Funcional ou unitário?
Testes de componente?
Contratos dirigidos pelo consumidor?
MUDANÇAS OBSERVADAS
31
Monolítico
▫︎Views + Model
▫︎Controllers
▫︎Testes Unitários +
Funcionais
▫︎Domínio de negócio
acoplado
▫︎Host único
RESTful
▫︎Model + JSON
▫︎REST + HTTP Clients
▫︎Testes Unitários +
Funcionais + Integração +
Contrato + Componente
▫︎Domínio de negócio isolado
▫︎Host único, paths
dedicados
FLEXIBILIDADE E EVOLUÇÃO
32
APP
ROUTERS
APP CONTAINER
ROUTERS
FLEXIBILIDADE E EVOLUÇÃO
33
APP
ROUTERS
APP
ROUTERS
https://192.168.0.1:3000 https://192.168.0.1:3100
RESTFUL > MICRO SERVIÇO
34
Apps autônomas
micro-services/users/app.js
RESTFUL > MICRO SERVIÇO
35
Pensando na infra-estrutura
▫︎Entrega/Integração Contínua
▫︎Provisionamento
▫︎Monitoramento
ENTREGA CONTÍNUA
36
Um grande build
Imagem: http://www.slideshare.net/ThoughtWorks/deploying-operating-microservices
Video: https://www.youtube.com/watch?v=OTSlg7_y3bA
ENTREGA CONTÍNUA
37
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
ENTREGA CONTÍNUA
38
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
PROVISIONAMENTO RÁPIDO
39
PROVISIONAMENTO RÁPIDO
40
Através de APIs
INFRA-ESTRUTURA COM O CÓDIGO
41
MONITORAMENTO
42
brunotrecenti@twitter
trecenti@github
VALEU!

Mais conteúdo relacionado

Mais procurados

Introduction to webassembly
Introduction to webassemblyIntroduction to webassembly
Introduction to webassemblyGabriele Falasca
 
Microservices in Golang
Microservices in GolangMicroservices in Golang
Microservices in GolangMo'ath Qasim
 
Hands-On Java web passando por Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
Hands-On Java web passando por  Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...Hands-On Java web passando por  Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
Hands-On Java web passando por Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...Mario Jorge Pereira
 
Getting started with Apollo Client and GraphQL
Getting started with Apollo Client and GraphQLGetting started with Apollo Client and GraphQL
Getting started with Apollo Client and GraphQLMorgan Dedmon
 
MySQL Parallel Replication by Booking.com
MySQL Parallel Replication by Booking.comMySQL Parallel Replication by Booking.com
MySQL Parallel Replication by Booking.comJean-François Gagné
 
How Booking.com avoids and deals with replication lag
How Booking.com avoids and deals with replication lagHow Booking.com avoids and deals with replication lag
How Booking.com avoids and deals with replication lagJean-François Gagné
 
Automation with Packer and TerraForm
Automation with Packer and TerraFormAutomation with Packer and TerraForm
Automation with Packer and TerraFormWesley Charles Blake
 
Getting started with karate dsl
Getting started with karate dslGetting started with karate dsl
Getting started with karate dslKnoldus Inc.
 
ASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bitsASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bitsKen Cenerelli
 
Orquestração de containers com Rancher
Orquestração de containers com RancherOrquestração de containers com Rancher
Orquestração de containers com RancherAlex Ishida
 
MongoDB for Coder Training (Coding Serbia 2013)
MongoDB for Coder Training (Coding Serbia 2013)MongoDB for Coder Training (Coding Serbia 2013)
MongoDB for Coder Training (Coding Serbia 2013)Uwe Printz
 
How to build Micro Frontends with @angular/elements
How to build Micro Frontends with @angular/elementsHow to build Micro Frontends with @angular/elements
How to build Micro Frontends with @angular/elementsMarcellKiss7
 
GraalVM Native and Spring Boot 3.0
GraalVM Native and Spring Boot 3.0GraalVM Native and Spring Boot 3.0
GraalVM Native and Spring Boot 3.0MoritzHalbritter
 
ASP.NET Core MVC with EF Core code first
ASP.NET Core MVC with EF Core code firstASP.NET Core MVC with EF Core code first
ASP.NET Core MVC with EF Core code firstMd. Aftab Uddin Kajal
 
Ppt of soap ui
Ppt of soap uiPpt of soap ui
Ppt of soap uipkslide28
 
How to earn a black belt in Graphql testing
How to earn a black belt in Graphql testingHow to earn a black belt in Graphql testing
How to earn a black belt in Graphql testingLuca Pelosi
 
Decomposing Applications for Scalability and Deployability (April 2012)
Decomposing Applications for Scalability and Deployability (April 2012)Decomposing Applications for Scalability and Deployability (April 2012)
Decomposing Applications for Scalability and Deployability (April 2012)Chris Richardson
 

Mais procurados (20)

.NET6.pptx
.NET6.pptx.NET6.pptx
.NET6.pptx
 
Introduction to webassembly
Introduction to webassemblyIntroduction to webassembly
Introduction to webassembly
 
Microservices in Golang
Microservices in GolangMicroservices in Golang
Microservices in Golang
 
Hands-On Java web passando por Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
Hands-On Java web passando por  Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...Hands-On Java web passando por  Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
Hands-On Java web passando por Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
 
Getting started with Apollo Client and GraphQL
Getting started with Apollo Client and GraphQLGetting started with Apollo Client and GraphQL
Getting started with Apollo Client and GraphQL
 
Frameworks J2EE
Frameworks J2EEFrameworks J2EE
Frameworks J2EE
 
MySQL Parallel Replication by Booking.com
MySQL Parallel Replication by Booking.comMySQL Parallel Replication by Booking.com
MySQL Parallel Replication by Booking.com
 
How Booking.com avoids and deals with replication lag
How Booking.com avoids and deals with replication lagHow Booking.com avoids and deals with replication lag
How Booking.com avoids and deals with replication lag
 
Automation with Packer and TerraForm
Automation with Packer and TerraFormAutomation with Packer and TerraForm
Automation with Packer and TerraForm
 
Getting started with karate dsl
Getting started with karate dslGetting started with karate dsl
Getting started with karate dsl
 
Microbrewery in india wb policy
Microbrewery in india wb policyMicrobrewery in india wb policy
Microbrewery in india wb policy
 
ASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bitsASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bits
 
Orquestração de containers com Rancher
Orquestração de containers com RancherOrquestração de containers com Rancher
Orquestração de containers com Rancher
 
MongoDB for Coder Training (Coding Serbia 2013)
MongoDB for Coder Training (Coding Serbia 2013)MongoDB for Coder Training (Coding Serbia 2013)
MongoDB for Coder Training (Coding Serbia 2013)
 
How to build Micro Frontends with @angular/elements
How to build Micro Frontends with @angular/elementsHow to build Micro Frontends with @angular/elements
How to build Micro Frontends with @angular/elements
 
GraalVM Native and Spring Boot 3.0
GraalVM Native and Spring Boot 3.0GraalVM Native and Spring Boot 3.0
GraalVM Native and Spring Boot 3.0
 
ASP.NET Core MVC with EF Core code first
ASP.NET Core MVC with EF Core code firstASP.NET Core MVC with EF Core code first
ASP.NET Core MVC with EF Core code first
 
Ppt of soap ui
Ppt of soap uiPpt of soap ui
Ppt of soap ui
 
How to earn a black belt in Graphql testing
How to earn a black belt in Graphql testingHow to earn a black belt in Graphql testing
How to earn a black belt in Graphql testing
 
Decomposing Applications for Scalability and Deployability (April 2012)
Decomposing Applications for Scalability and Deployability (April 2012)Decomposing Applications for Scalability and Deployability (April 2012)
Decomposing Applications for Scalability and Deployability (April 2012)
 

Destaque (20)

Auto jornal - nº104
Auto jornal - nº104Auto jornal - nº104
Auto jornal - nº104
 
Pdfs Internet(3)
Pdfs Internet(3)Pdfs Internet(3)
Pdfs Internet(3)
 
Paginas Para Internet Screen
Paginas Para Internet ScreenPaginas Para Internet Screen
Paginas Para Internet Screen
 
Auto jornal ed. 116
Auto jornal ed. 116Auto jornal ed. 116
Auto jornal ed. 116
 
Pva 2011 programacao_resumida
Pva 2011 programacao_resumidaPva 2011 programacao_resumida
Pva 2011 programacao_resumida
 
Dia das mães 2011
Dia das mães 2011Dia das mães 2011
Dia das mães 2011
 
PDM San Agustín
PDM San AgustínPDM San Agustín
PDM San Agustín
 
Painel 14 - Radiciação de Números Naturais
Painel 14 - Radiciação de Números NaturaisPainel 14 - Radiciação de Números Naturais
Painel 14 - Radiciação de Números Naturais
 
70km de Ceilandia 2009
70km de Ceilandia 200970km de Ceilandia 2009
70km de Ceilandia 2009
 
Clipagem Asbrav Abril 2011
Clipagem Asbrav Abril 2011Clipagem Asbrav Abril 2011
Clipagem Asbrav Abril 2011
 
Ecoconselheiros 1415
Ecoconselheiros 1415Ecoconselheiros 1415
Ecoconselheiros 1415
 
Plano De Auditoria Tipo
Plano De Auditoria TipoPlano De Auditoria Tipo
Plano De Auditoria Tipo
 
Introducao a-homiletica
Introducao a-homileticaIntroducao a-homiletica
Introducao a-homiletica
 
02 aulas de-auditoria_5
02 aulas de-auditoria_502 aulas de-auditoria_5
02 aulas de-auditoria_5
 
Informativo sicredi abril_2012
Informativo sicredi abril_2012Informativo sicredi abril_2012
Informativo sicredi abril_2012
 
AssistêNcia Ao Parto
AssistêNcia Ao PartoAssistêNcia Ao Parto
AssistêNcia Ao Parto
 
Anuario construtoras ceará 2001
Anuario construtoras ceará 2001Anuario construtoras ceará 2001
Anuario construtoras ceará 2001
 
Banrisul
BanrisulBanrisul
Banrisul
 
Cooperativas BAHIA
Cooperativas BAHIA Cooperativas BAHIA
Cooperativas BAHIA
 
( Espiritismo) # - abrade - enderecos espiritas
( Espiritismo)   # - abrade - enderecos espiritas( Espiritismo)   # - abrade - enderecos espiritas
( Espiritismo) # - abrade - enderecos espiritas
 

Semelhante a Micro serviços com node.js

Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Renato Groff
 
Microservices - ALM Roadshow 2015
Microservices - ALM Roadshow 2015Microservices - ALM Roadshow 2015
Microservices - ALM Roadshow 2015Renato Groff
 
Microservices - Canal .NET Dev Weekend
Microservices - Canal .NET Dev WeekendMicroservices - Canal .NET Dev Weekend
Microservices - Canal .NET Dev WeekendRenato Groff
 
TDC2017 | POA Trilha Arquitetura - Desafios de se implantar uma arquitetura d...
TDC2017 | POA Trilha Arquitetura - Desafios de se implantar uma arquitetura d...TDC2017 | POA Trilha Arquitetura - Desafios de se implantar uma arquitetura d...
TDC2017 | POA Trilha Arquitetura - Desafios de se implantar uma arquitetura d...tdc-globalcode
 
Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016Renato Groff
 
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017Renato Groff
 
Desafios de implantar uma arquitetura de microservices
Desafios de implantar uma arquitetura de microservicesDesafios de implantar uma arquitetura de microservices
Desafios de implantar uma arquitetura de microservicesleopoa
 
Indo alem do_mvc_node_js
Indo alem do_mvc_node_jsIndo alem do_mvc_node_js
Indo alem do_mvc_node_jsgustavobeavis
 
Microservices arquitetura - parte1
Microservices arquitetura - parte1Microservices arquitetura - parte1
Microservices arquitetura - parte1Agni Campos
 
O desafio de sustentar centenas de servicos
O desafio de sustentar centenas de servicosO desafio de sustentar centenas de servicos
O desafio de sustentar centenas de servicosGraziella Bonizi
 
Phprs meetup - deploys automatizados com gitlab
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlabJackson F. de A. Mafra
 
Convivendo e migrando para microservices
Convivendo e migrando para microservicesConvivendo e migrando para microservices
Convivendo e migrando para microservicesDanilo Iurovski
 
Engenharia de software orientada a servicos
Engenharia de software orientada a servicosEngenharia de software orientada a servicos
Engenharia de software orientada a servicosLeonardo Eloy
 
Go e Microserviços - Nascidos um para o outro
Go e Microserviços - Nascidos um para o outroGo e Microserviços - Nascidos um para o outro
Go e Microserviços - Nascidos um para o outroElton Minetto
 

Semelhante a Micro serviços com node.js (20)

Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
 
Microservices
MicroservicesMicroservices
Microservices
 
Microservices - ALM Roadshow 2015
Microservices - ALM Roadshow 2015Microservices - ALM Roadshow 2015
Microservices - ALM Roadshow 2015
 
Microservices - Canal .NET Dev Weekend
Microservices - Canal .NET Dev WeekendMicroservices - Canal .NET Dev Weekend
Microservices - Canal .NET Dev Weekend
 
TDC2017 | POA Trilha Arquitetura - Desafios de se implantar uma arquitetura d...
TDC2017 | POA Trilha Arquitetura - Desafios de se implantar uma arquitetura d...TDC2017 | POA Trilha Arquitetura - Desafios de se implantar uma arquitetura d...
TDC2017 | POA Trilha Arquitetura - Desafios de se implantar uma arquitetura d...
 
Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016
 
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
 
Desafios de implantar uma arquitetura de microservices
Desafios de implantar uma arquitetura de microservicesDesafios de implantar uma arquitetura de microservices
Desafios de implantar uma arquitetura de microservices
 
Microservices 2
Microservices 2Microservices 2
Microservices 2
 
Microservices
MicroservicesMicroservices
Microservices
 
Indo alem do_mvc_node_js
Indo alem do_mvc_node_jsIndo alem do_mvc_node_js
Indo alem do_mvc_node_js
 
Microservices arquitetura - parte1
Microservices arquitetura - parte1Microservices arquitetura - parte1
Microservices arquitetura - parte1
 
O desafio de sustentar centenas de servicos
O desafio de sustentar centenas de servicosO desafio de sustentar centenas de servicos
O desafio de sustentar centenas de servicos
 
Arquitetura evolutiva
Arquitetura evolutivaArquitetura evolutiva
Arquitetura evolutiva
 
Phprs meetup - deploys automatizados com gitlab
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlab
 
Convivendo e migrando para microservices
Convivendo e migrando para microservicesConvivendo e migrando para microservices
Convivendo e migrando para microservices
 
Micro serviços ppt
Micro serviços pptMicro serviços ppt
Micro serviços ppt
 
Engenharia de software orientada a servicos
Engenharia de software orientada a servicosEngenharia de software orientada a servicos
Engenharia de software orientada a servicos
 
Go e Microserviços - Nascidos um para o outro
Go e Microserviços - Nascidos um para o outroGo e Microserviços - Nascidos um para o outro
Go e Microserviços - Nascidos um para o outro
 
MVC MVP MVVM para Web
MVC MVP MVVM para WebMVC MVP MVVM para Web
MVC MVP MVVM para Web
 

Micro serviços com node.js