SlideShare uma empresa Scribd logo
1 de 42
Micro Serviços para
Não Startups
Carlos A. Grahl
Giscard F. Faria
Carlos Grahl
Arquiteto, desenvolvedor, evangelizador,
ciclista, chapeiro e pai de família.
17 anos na Senior Sistemas
Giscard Faria
Arquiteto, desenvolvedor, filósofo,
economista, psicólogo, cervejeiro,
ciclista e pai de família.
5 anos na Senior Sistemas.
Ato Zero:
Introdução
O começo
•1988: COBOL Folha de pagamento, Cobol 8 bits
• 1988 - 1992 : 16 bits – Micros com 10 Mhz, 6 disquetes
• 1992 - 1994: 32 bits – Algumas partes em C (sério)
• 1994 - 1997: C – FCTree, “1.000 cartões em 3 minutos”
• 1995 – 2017: Delphi cliente/servidor
• 2000: Suporte a Web no Delphi
• 2002: Início versão Java EE
• 2005: Suporte a Web-services SOAP no Delphi
• 2008: Nova versão Java EE
• 2º/2015: Nova Plataforma
Aquisições
• 2014: Sythex (Oracle Forms, Java e GWT)
• 2015: Softran (Delphi)
• 2015: Programa Startups (Inove Senior)
• 2016: WorkCRM (PHP)
O crescimento
1.300+ colaboradores
400+ desenvolvedores
O crescimento
10.000 clientes
Ato Um:
O começo
Diretoria Desenvolvimento Presidente Conselho
Presidente Acionista
Java
.NET
REST
MQ
Isso
não é
DDD!!!
É sim
1000x
Tenant
por
Coluna
Tenant
por
SchemaVossa
Excelência
Não sabe o que
está dizendo
O nobre
colega ficou
preso ao
passado
0
10
20
30
40
50
60
70
80
90
100
bridge
service
database
Identity server
API Manager
SSO
Portal
RTT
ping+5%
2K
req/seg2K
req/seg
16K
req/seg
2 vCPU
4GB
t2.medium
(U$40/mês)
• Interface
• DTO
• JSON Mock
• Client API
• CRUDL
• Report
• Import/Export
domain/service?wsdl
(wsdl)
/domain/service?swagger
(swagger)
Ato Dois:
Revendo Conceitos
“If you want to change the world, start off by
making your bed.”
William H. McRaven
“Asynchronous messaging architectures have
proven to be the best strategy for enterprise
integration because they allow for a loosely
coupled solution that overcomes the
limitations of remote communication, such as
latency and unreliability.”
Gregor Hohpe
“Database migrations need to be a
part of our software deployment
process. Database migrations are
code, and they must be treated as
such.”
Edson Yanaga
“Antes de tudo, a resposta está dentro de
você.”
1. Se o negócio evolui diferente, serviços diferentes.
2. Se a equipe é diferente, serviços diferentes.
3. Se escala diferente, serviços diferentes.
4. Se não encontrou um motivo, não divida.
Time Arquitetura Senior
Sistemas Cloud Enabled, ou seja,
podem rodar OnPremise, em uma
Cloud Privada ou Cloud Pública
Compartilhada.
Ato 3:
Nova Plataforma
User
widgets
Bridge
HTTP/AMQP
API Manager
Portal
Identity
Service
Conf.
Server
Log
Service
Billing
Service
Platform Services
Business
Services
Obter
mensagem
Identificar
primitiva
Command
Factory
Executar
Command
Finalizar
JPA -
EclipseLink
Multi-schema
JPA -
Hibernate
Service Model:
- Gerado pela SDL
- Utiliza Spring
- @HandlerImpl
- Dependency Injection
Profiles dev, prod,
test
- Apenas Java
Service Persist Model:
- Biblioteca Java
- Conexão ao banco
- Efetua migração de
base
- Chaveamento de
schemas
Servicestarted Event:
- Autorização
- Configuração
- Catálogo metadata
Archetype Maven: Geração e deploy de arquivo jar e imagem Docker.
PDL – Properties Description Language
• Padronização de configurações
• Suporte a herança
• Configurações gerais ou por tenant
• Reutilização de configurações
• Interface centralizada
User Portal
Platform Services
Business
Services
View
Materializada
View Indexada
Foreign Data
Wrapper
OLAP
Memória compartilhada
• Múltiplas Instâncias
• Serializar/Deserializar Banco Dados 
• Performance
• Stateless vs Communication
• Liberação em imagem Docker, com ajustes
nos parâmetros
• API JCache em Java
• Implementamos Wrapper APIs para Delphi
e .NET
Estatísticas Abril/2017
• 200.000+ msgs/dia
• 32.000+ Usuários
• 22 serviços para plataforma
• 26 tenants criados
• 65 containers
• Plataforma: 6 devs inicialmente, atualmente somos em 12
• Negócio: 5 devs inicialmente, atualmente somos em 70 devs, 11
equipes
What´s next
• Liberação Contínua
• Logging Centralizado
• Monitoramento Produção
• Resiliência dos Serviços / Actor Model
• Gestão Serviços
• Versionamento/dependências entre serviços
If you are on the light side of
the force...
...We are
Hiring!!!
GESTÃO DE ACESSO E SEGURANÇAGESTÃO EMPRESARIAL | ERP GESTÃO DE PESSOAS | HCM
PERFORMANCE CORPORATIVAGESTÃO DE LOGÍSTICA | WMS TMSGESTÃO DE RELACIONAMENTO | CRM
senior.com.br
Obrigado.
Carlos Grahl e Giscard Faria
carlos.grahl@senior.com.br
giscard.faria@senior.com.br

Mais conteúdo relacionado

Semelhante a Micro Serviços para Não Startups guia prático de

Negócios e Open Source
Negócios e Open SourceNegócios e Open Source
Negócios e Open SourceOpenBossa
 
Transformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualizaçãoTransformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualizaçãoDarlan Segalin
 
Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformAndré Paulovich
 
MIT - Estudo de Caso utilizando Cloud & DevOps
MIT - Estudo de Caso utilizando Cloud & DevOps  MIT - Estudo de Caso utilizando Cloud & DevOps
MIT - Estudo de Caso utilizando Cloud & DevOps Caio Candido
 
MySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL Brasil
 
Internet das coisas - A revolução já começou
Internet das coisas - A revolução já começouInternet das coisas - A revolução já começou
Internet das coisas - A revolução já começouJose Wilker
 
Workshop soa, microservices e devops
Workshop soa, microservices e devopsWorkshop soa, microservices e devops
Workshop soa, microservices e devopsDiego Pacheco
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHPRangel Javier
 
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on AzureTDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azuretdc-globalcode
 
Escalando infra em ops em um ambiente de hiper crescimento
Escalando infra em ops em um ambiente de hiper crescimentoEscalando infra em ops em um ambiente de hiper crescimento
Escalando infra em ops em um ambiente de hiper crescimentoRenan Capaverde
 
Deal Inovacao e Tecnologia - Big Data, Machine Learning e devops
Deal Inovacao e Tecnologia - Big Data, Machine Learning e devopsDeal Inovacao e Tecnologia - Big Data, Machine Learning e devops
Deal Inovacao e Tecnologia - Big Data, Machine Learning e devopsFernando Nawa
 
Integração Contínua com Hudson
Integração Contínua com HudsonIntegração Contínua com Hudson
Integração Contínua com HudsonLuis Reis
 
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnóstica
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnósticaCase RDStation: Construindo DataLakes com Apache Hadoop em cloud agnóstica
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnósticaAlessandro Binhara
 
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Duro
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho DuroTDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Duro
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Durotdc-globalcode
 
IntroduçãO Ao Desenvolvimento Web 2
IntroduçãO Ao Desenvolvimento Web   2IntroduçãO Ao Desenvolvimento Web   2
IntroduçãO Ao Desenvolvimento Web 2Maurício Linhares
 

Semelhante a Micro Serviços para Não Startups guia prático de (20)

Negócios e Open Source
Negócios e Open SourceNegócios e Open Source
Negócios e Open Source
 
Sua aplicação nas nuvens com open shift
Sua aplicação nas nuvens com open shiftSua aplicação nas nuvens com open shift
Sua aplicação nas nuvens com open shift
 
Transformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualizaçãoTransformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualização
 
Ufs na nuvem gp 2017-2
Ufs na nuvem   gp 2017-2 Ufs na nuvem   gp 2017-2
Ufs na nuvem gp 2017-2
 
Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud Platform
 
MIT - Estudo de Caso utilizando Cloud & DevOps
MIT - Estudo de Caso utilizando Cloud & DevOps  MIT - Estudo de Caso utilizando Cloud & DevOps
MIT - Estudo de Caso utilizando Cloud & DevOps
 
MySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de Produto
 
Apresentação documenta
Apresentação documentaApresentação documenta
Apresentação documenta
 
Internet das coisas - A revolução já começou
Internet das coisas - A revolução já começouInternet das coisas - A revolução já começou
Internet das coisas - A revolução já começou
 
Workshop soa, microservices e devops
Workshop soa, microservices e devopsWorkshop soa, microservices e devops
Workshop soa, microservices e devops
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
 
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on AzureTDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
 
Ufs na nuvem gp 2017-2
Ufs na nuvem   gp 2017-2 Ufs na nuvem   gp 2017-2
Ufs na nuvem gp 2017-2
 
Escalando infra em ops em um ambiente de hiper crescimento
Escalando infra em ops em um ambiente de hiper crescimentoEscalando infra em ops em um ambiente de hiper crescimento
Escalando infra em ops em um ambiente de hiper crescimento
 
Deal Inovacao e Tecnologia - Big Data, Machine Learning e devops
Deal Inovacao e Tecnologia - Big Data, Machine Learning e devopsDeal Inovacao e Tecnologia - Big Data, Machine Learning e devops
Deal Inovacao e Tecnologia - Big Data, Machine Learning e devops
 
Integração Contínua com Hudson
Integração Contínua com HudsonIntegração Contínua com Hudson
Integração Contínua com Hudson
 
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnóstica
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnósticaCase RDStation: Construindo DataLakes com Apache Hadoop em cloud agnóstica
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnóstica
 
Machine Learning Black Boxes
Machine Learning Black BoxesMachine Learning Black Boxes
Machine Learning Black Boxes
 
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Duro
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho DuroTDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Duro
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Duro
 
IntroduçãO Ao Desenvolvimento Web 2
IntroduçãO Ao Desenvolvimento Web   2IntroduçãO Ao Desenvolvimento Web   2
IntroduçãO Ao Desenvolvimento Web 2
 

Micro Serviços para Não Startups guia prático de

Notas do Editor

  1. #startupvsorganization #quikpoll
  2. #creativechaos #commonmanagement #blueocean #redocean #buildinganewworld #survivingrawworld #investment #return #icandoit #wemustdoit
  3. #seniorhistory
  4. #3rdplatform #mobile #cloud #bigdata #social #supportcustomers #crossselling #upselling #lowinvestment #forgetmicroservices #itisaboutmoney
  5. Building MicroServices: Essencial, diria que ele pode ser chamado MicroServiços sem Frescura  Domain-Driven Design: Biblia de como contruir sistemas complexos de forma simples. Essencial? Não. Livro mais abstrato, pode levar a várias interpretações..... Architecture Patterns: Livro pesado, não precisa saber tudo, mas a parte mais moderna dele vai ajudar muito a antecipar problemas. Implementing DDD: Religião da bíblica do Erica Evans, mais prático e direto. Evans para entender o porquê, mas com o do Vernon para ter resultados Integration Patterns: Item obrigatório para quem precisa integrar sistemas ou componentes. Migrating MicroServices Database: KISS, Keep it Simple Stupid. Primeiro grande problema para quem vai do legado para microserviços.
  6. #rememberthebible #toomuchoptions #toomucharguing #whataboutyourcompany? #nothing #samething #polarstar
  7. #codeanalysis #neo4j #metrics #statiscallyspeaking
  8. #havinganstrategy #technological #angulardied #product #learnfromthepast #shithappens
  9. #redhat #wso2apim #rabbitmq #docker #swarm #kubernetes #rancher #cloudenabled
  10. #baseframework #clusteredcomponents
  11. #sdl #productivity #metadata #interfaces
  12. #businessservices
  13. Integração não é algo para ser negligenciado, tecnologicamente tínhamos as decisões, contudo não foi traçada nenhuma estratégia geral com diretrizes e patterns para serem seguidos, e olha que não foi por falta de utilizar os pattern do EIP. Basicamente toda integração a gente conseguia achar a contrapartida no EIP. Contudo o problema não era este, era outro: Quando ocorre um erro quem trata? É possível mandar repetir uma integração que falhou devido a uma inconsistência que já foi arrumada? Carga inicial pode conter GB de dados, vou ter que fazer downtime para conseguir fazer isso? Sincronização de dados é muito importante, qualquer falha pode levar a perdas o que vai requerer uma nova carga inicial, nova carga inicial é sinônimo de perder os dados anteriores Desenvolvemos várias técnicas, fizemos várias conversas mas não fomos felizes, ainda hoje o desenvolvimento está buscando e experimentando novos modelos para buscar aprimoramento. Dicas que gostaríamos de deixar claro: Inconcebível pensar em qualquer modelo de integração que não seja por mensageria, SOAP e REST/JSON são aceitáveis, mas se o volume aumentar um pouco além da conta eles não serão suficientes. Não se pode parar um Sistema porque ele está esperando uma integração ser realizada. Parafraseando o autor do EIP
  14. #interface #infra #licitação #toomuchcustomer
  15. #IdP #sp
  16. OLAP vs OLTP
  17. #contract #frontend #backend #parallel