TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das trincheiras

16
pen4education Trilha – Arquitetura Java Diego de Oliveira Quebrando um monolítico J2EE, uma história de trás das trincheiras

Transcript of TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das trincheiras

Page 1: TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das trincheiras

pen4education

Trilha – Arquitetura JavaDiego de Oliveira

Quebrando um monolítico J2EE, uma história de trás das trincheiras

Page 2: TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das trincheiras

pen4education

Monolítico…?

• Um único grande sistema que contém todas as funcionalidades

• Sistemas monolíticos podem ser modulares(kernel do linux)

• Sistemas monolíticos podem parar de funcionar se houver problemas em um subsistema(kernel do linux)

Page 3: TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das trincheiras

Globalcode – Open4education

Monolítico…?

19801991 2005 ~ 2007

Page 4: TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das trincheiras

Globalcode – Open4education

Quebrar um monolítico

• Redução no time to market• Cabe na sua cabeça• Menos código/mais fácil de testar• Permite usar a melhor solução para o problema

(Cassandra, Go, Java, C++, etc)• Tratamento diferente para componentes com

criticidades diferentes (escala, uptime,etc)

http://philcalcado.com/2015/09/08/how_we_ended_up_with_microservices.html

Page 5: TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das trincheiras

Globalcode – Open4education

Qual o tamanho correto..?

• Não tem resposta exata• Comece com “macro serviços”• Diminua o tamanho conforme for entendendo

melhor os pontos de corteNetflix Twitter

Page 6: TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das trincheiras

Globalcode – Open4education

Limites de contextos

● Visibilidade das áreas de atuação dos objetos de domínio

Page 7: TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das trincheiras

Globalcode – Open4education

Estratégias

Core, infra, etc

Cobrança

Estoque

Envio de Email

e-commerce

Sugestão e reviews

Page 8: TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das trincheiras

Globalcode – Open4education

Estratégia 1

● Prepare e saia de uma vez só○ Crie um novo pacote ou projeto que guardará o novo

sistema○ Mova o código que está sendo modularizado para lá○ Refatore conforme necessário○ Transforme as chamadas locais (RMI/EJB/ETC) em

chamadas de Api○ Separe código de apoio em bibliotecas, use nos dois

projetos○ Mova o projeto de repositório e entregue separado

Page 9: TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das trincheiras

Globalcode – Open4education

Estratégia 1

● Prepare e saia de uma vez só

○ Vantagens■ Não precisa de infra adicional no início■ Não muda muito o stack tecnológico■ Quase não tem código duplicado

○ Desvantagens■ Se o modelo antigo estava ruim o novo continuará ruim■ Será necessário outra rodada para atualização tecnológica

Page 10: TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das trincheiras

Globalcode – Open4education

Estratégia 2

● Comece fora mantendo a basea. Crie um novo serviço que aponte para o mesmo banco

do antigob. Desenvolva o fluxo de escrita, mantendo a estrutura e

regra de banco de dados (camada anticorrupção)c. Coloque um liga e desliga no código velhod. Migre a escrita aos poucos e observe, corrija

problemas caso haja, migre tudo. Se der erro desligue e volte para o antigo até corrigir.

e. Apague o código velhof. Faça a mesma sequencia b, c e d para o fluxo de

leitura

Page 11: TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das trincheiras

Globalcode – Open4education

Estratégia 2

● Comece fora mantendo a base

○ Vantagens■ Permite usar outras tecnologias desde o início■ As entregas podem ser feitas em ritmo diferente do monolítico

○ Desvantagens■ É preciso uma infra inicial■ Pode demorar um pouco mais

Page 12: TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das trincheiras

Globalcode – Open4education

Estratégia 3

● Faça um sistema do zeroa. Desenvolva normalmenteb. Elabore um plano de migração de dados incrementalc. Adeque o sistema antigo para chamar o novo, deixe

desligadod. Confira se está tudo certoe. Ligue a utilização do novo

Page 13: TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das trincheiras

Globalcode – Open4education

Estratégia 3

● Faça um sistema do zero

○ Vantagens■ Liberdade total de modelagem

○ Desvantagens■ Talvez seja necessário replicar desenvolvimento no sistema

velho e no novo até ele ser todo desenvolvido

Page 14: TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das trincheiras

Globalcode – Open4education

Como escolher o módulo

● Pondere ganho real vs ganho visível● Comece pelo menos crítico e mais fácil

○ Irá gerar infraestrutura de apoio● Escolha módulos de maior criticidade ● Escolha módulos de maior dificuldade

○ Pode ser que o que sobra nem valha a pena ser modularizado

Page 15: TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das trincheiras

Globalcode – Open4education

Desafios

● JTA● Contexto transacional● Processamento síncrono● Uptime● Cascateamento de falhas

Page 16: TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das trincheiras

Globalcode – Open4education

Outras preocupações

● Monitoração● Tracking de problemas e falhas● Degradação de funcionalidade● Cuidado com as surpresas● Desenvolver/monitorar 1 / 10 / 100 sistemas são

desafios diferentes● Coisas irão falhar(servidor, NFS, rede, memória,

etc)