Como DDD e Strategic Design estão nos ajudando a modernizar um Legado

Luiz  Costa
Luiz CostaSoftware Developer em Beep Saúde
Globalcode	–	Open4education
Como Domain Driven Design e Strategic Design
estão nos ajudando a modernizar um legado
Luiz Costa
gutomcosta@gmail.com / @gutomcosta
twitter.com/gutomcosta
github.com/gutomcosta
www.sagadoprogramador.com.br
medium.com/saga-do-programador
Contexto
Sistema para um empresa de medicina do trabalho
realizar atendimentos de medicina ocupacional por
todo o Brasil e fornecer uma análise inteligente
sobre o perfil dos colaboradores de uma empresa.
Mas como todo projeto, no
início, tudo é muito
simples…
Era só uma "Fila"…
E hoje em dia até envia
email
+ de 5 anos de projeto
+ 10 desenvolvedores passaram no time
Python e Django 1.4
< 50% test coverage
14 servidores = 1 para cada clínica
aberta
Depois de algum tempo em
produção….
•bugs e mais bugs
•altera uma parte, quebra outra
•bug em uma parte, sistema fora do ar
•demora nas entregas
•pressão do cliente para entregar mais
os problemas começaram…
Aplicação Web tradicional
algo assim
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Isso não é uma service layer, é algo
parecido com um TransactionScript
models sendo um
espelho do banco de
dados
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
WTF?
• lógica de domínio espalhada em
Controllers, Models e Services
• models espelhando exatamente o
modelo de dados
• foco no framework e não no domínio
do problema
Como melhorar este projeto?
Domain Driven Design
Domain Model
http://martinfowler.com/eaaCatalog/domainModel.html
the blue and the red book
ENTITIES
REPOSITORIES
VALUE OBJECTS
FACTORIES
SERVICES
Building Blocks
Strategic Design
…modeling and design decisions that
apply to large parts of the system. Such
decisions affect the entire project and
have to be decided at team level.
“Domain Driven Design, Chapter 14 - Maintaining Model Integrity", pág: 335
Eric Evans - Blue Book
Strategic Design
…modeling and design decisions that
apply to large parts of the system. Such
decisions affect the entire project and
have to be decided at team level.
“Domain Driven Design, Chapter 14 - Maintaining Model Integrity", pág: 335
Eric Evans - Blue Book
BOUNDED CONTEXT
CONTEXT MAP
ANTI-CURRUPTION LAYER
SHARED KERNEL
OPEN HOST SERVICE
PUBLISHED LANGUAGE
…
Existe vida além parte 1 do livro azul
Big Domain Model?
Not all of a large system will be
well designed.
Eric Evans on Strategic Design presentations
https://www.infoq.com/presentations/strategic-design-evans
Total unification of the domain
model for a large system will
not feasible or cost-effective
“Domain Driven Design, Chapter 14 - Maintaining Model Integrity", pág: 332
Eric Evans - Blue Book
Como dividir o domínio?
Bounded Context
Bounded Context
…delimits the applicability of a particular
model so that team members have a clear
and shared understanding of what has to
be consistent and how it relates to other
contexts.
“Domain Driven Design, Chapter 14 - Maintaining Model Integrity", pág: 336
Eric Evans - Blue Book
Bounded Context
…delimits the applicability of a particular
model so that team members have a clear
and shared understanding of what has to
be consistent and how it relates to other
contexts.
“Domain Driven Design, Chapter 14 - Maintaining Model Integrity", pág: 336
Eric Evans - Blue Book
Bounded Context
…delimits the applicability of a particular
model so that team members have a clear
and shared understanding of what has to
be consistent and how it relates to other
contexts.
“Domain Driven Design, Chapter 14 - Maintaining Model Integrity", pág: 336
Eric Evans - Blue Book
Repensando as Fronteiras
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Contexto A Contexto B Contexto C
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Mesma entidade modelada
em vários contextos
Paciente
Atendimento
+ qual nome, nascimento…?
+ qual dia do agendamento?
+ qual empresa pertence?
+ qual é a função que exerce?
Paciente
Gestor de Periódicos
+ qual é o proximo exame?
+ quantos dias faltam para vencer?
Paciente
Financeiro
+ qual custo dos exames feitos?
+ alguma condição de desconto?
É responsabilidade de cada
contexto modelar os dados
da melhor maneira, de
acordo com a as suas
responsabilidades.
Como implementamos?
E o que micro-serviços tem com isso?
Anatomia de um
Bounded Context
Bounded Context
Domain LayerApplication Layer
use case
use case
use case
Repository
Entity
Value Object
Infrastructure Layer
Entity
DAO
Logger
Service
Module
Application
Layer
Domain Layer
Atendimento.Fila
Infrastructure Layer
Implementação de um Caso de Uso
o fluxo de execução é simples e limpo
todas as
dependências são
declaradas o
construtor
Foco total no Domain Model
Domain Model != Model
Todas as regras de negócio são
programadas aqui. Normalmente são
objetos python puros, sem relação com
persistência ou infra-estrutura
Expostas
através de
casos de uso
Nossa estratégia para
dominar o legado
Strangler Applicationwww.martinfowler.com/bliki/StranglerApplication.html
…An alternative route is to gradually
create a new system around the edges of
the old, letting it grow slowly over several
years until the old system is strangled.
www.martinfowler.com/bliki/StranglerApplication.html
www.martinfowler.com/bliki/StranglerApplication.html
Legado
Nova
Funcionalidade
Nova
Funcionalidade
Nova
Funcionalidade
O design deve permitir
atrasar decisões
Identificar e evidenciar as
fronteiras através de Libs
Don’t distribute your objects.
http://martinfowler.com/books/eaa.html
O isolamento do legado se dá através de indireções nos objetos da fronteira. Nesta
visão de alto nível, é possível ver como uma funcionalidade é anexada ao código do
Legado. A ideia básica é o novo módulo definir um conjunto de interfaces/conectores
para troca de informações.
Em uma abordagem de lib, estes
conectores se materializam em um
conjunto de interfaces que devem ser
implementadas pela Lib.
fronteira do sistema
Inicialmente, os novos contextos são
projetos novos, que devem funcionar
como Libs. Deve ser possível extrair a lib
para rodar em um runtime diferente
sem muitas dificuldades.
O que fazer quando é
preciso usar dados do
legado no módulo novo?
Dependency Inversion
Principlehttps://en.wikipedia.org/wiki/Dependency_inversion_principle
Um módulo ou contexto novo define um conjunto de interfaces
que serão implementadas diretamente no legado.
interfaces definidas pelo módulo
o contexto “Atendimento” depende de dados
que estão definidos no legado. Neste caso, o
módulo que necessita dos dados, define o
contrato de comunicação e o legado
implementa este contrato, reutilizando
objetos existentes ou escrevendo código
novo. O importante é que a definição das
interfaces é feita de acordo com as
intenções do módulo novo e não com os
detalhes do código legado
O que fazer se o legado
precisar de dados do
módulo novo?
Publish/Subscribe ou
Observershttps://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern
https://en.wikipedia.org/wiki/Observer_pattern
A solução mais comum para este caso é o uso de eventos. O módulo
publica um conjunto de eventos e o legado assina estes eventos.
no lado do Legado, dentro da ACL, são definido
casos de uso que serão estimulados pelos
handlers de tratamento dos eventos.
o caso de uso PatientCheckin, durante
sua execução, publica o eventos
“PatientCheckedIn”. Este evento
contem os dados necessários para
comunicação com o legado,
normalmente serializado em um
JSON ou usando um Hash.
Como juntar isso tudo e
extrair um micro-serviço?
Este exemplo, mostra com a arquitetura permite separar os componentes
em runtimes diferentes, inclusive com banco de dados próprio.
aqui, a lib foi incluída em uma aplicação web e isolada
através de uma Anti-Corruption Layer (ACL). A
vantagem de se usar uma ACL é o isolamento do código
já criado. As alterações necessárias na lib são muito
pequenas e a própria ACL pode tratar os problemas de
comunicação com o legado, logar, lançar exceções, etc.
do lado do legado, a própria api já
funciona como uma ACL.
Normalmente esta api vai ser
implementada com Http puro,
usando formatos simples como
JSON para troca de dados
Chamadas diretas na api do legado ou através de uma
arquitetura event-driven.
Broker de mensagens, por exemplo:
JMS, ActiveMQ, RabbitMQ, etc
conjunto de EventHandlers
interessados nas mensagens
Resumo da nossa
estratégia
1 - Reúna o time com algum
especialista do domínio e
faça um desenho inicial dos
Bounded Contexts
2 - Evidencie as fronteiras
inicialmente através
módulos no código fonte
3 - Extraia os módulos que
compõem um Bounded
Context para uma lib
4 - Se necessário, exponha
a mesma lib como micro-
serviço
Obrigado!
1 de 68

Recomendados

Hexagonal Rails por
Hexagonal RailsHexagonal Rails
Hexagonal RailsLuiz Costa
1.2K visualizações105 slides
Modular Monoliths - Como é possível organizar sua aplicação para habilitar um... por
Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...
Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...Luiz Costa
1.1K visualizações89 slides
AWS 고객이 주로 겪는 운영 이슈에 대한 해법-AWS Summit Seoul 2017 por
AWS 고객이 주로 겪는 운영 이슈에 대한 해법-AWS Summit Seoul 2017AWS 고객이 주로 겪는 운영 이슈에 대한 해법-AWS Summit Seoul 2017
AWS 고객이 주로 겪는 운영 이슈에 대한 해법-AWS Summit Seoul 2017Amazon Web Services Korea
15.9K visualizações49 slides
Infrastructure-as-Code with Pulumi - Better than all the others (like Ansible)? por
Infrastructure-as-Code with Pulumi- Better than all the others (like Ansible)?Infrastructure-as-Code with Pulumi- Better than all the others (like Ansible)?
Infrastructure-as-Code with Pulumi - Better than all the others (like Ansible)?Jonas Hecht
1.8K visualizações65 slides
Docker Container Security por
Docker Container SecurityDocker Container Security
Docker Container SecuritySuraj Khetani
995 visualizações37 slides
Docker swarm introduction por
Docker swarm introductionDocker swarm introduction
Docker swarm introductionEvan Lin
3.4K visualizações49 slides

Mais conteúdo relacionado

Mais procurados

VCS + Terraform Cloud: Azure DevOps, GitLab, GitHub & Bitbucket por
VCS + Terraform Cloud: Azure DevOps, GitLab, GitHub & BitbucketVCS + Terraform Cloud: Azure DevOps, GitLab, GitHub & Bitbucket
VCS + Terraform Cloud: Azure DevOps, GitLab, GitHub & BitbucketMitchell Pronschinske
2K visualizações18 slides
Docker Swarm for Beginner por
Docker Swarm for BeginnerDocker Swarm for Beginner
Docker Swarm for BeginnerShahzad Masud
2.7K visualizações47 slides
Firebase Auth Tutorial por
Firebase Auth TutorialFirebase Auth Tutorial
Firebase Auth TutorialBukhori Aqid
1.6K visualizações25 slides
Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ... por
Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...
Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...Daniel Oh
11.5K visualizações86 slides
Apache Kafka Security por
Apache Kafka Security Apache Kafka Security
Apache Kafka Security DataWorks Summit/Hadoop Summit
6.9K visualizações39 slides
An AWS DMS Replication Journey from Oracle to Aurora MySQL por
An AWS DMS Replication Journey from Oracle to Aurora MySQLAn AWS DMS Replication Journey from Oracle to Aurora MySQL
An AWS DMS Replication Journey from Oracle to Aurora MySQLMaris Elsins
2.2K visualizações69 slides

Mais procurados(20)

VCS + Terraform Cloud: Azure DevOps, GitLab, GitHub & Bitbucket por Mitchell Pronschinske
VCS + Terraform Cloud: Azure DevOps, GitLab, GitHub & BitbucketVCS + Terraform Cloud: Azure DevOps, GitLab, GitHub & Bitbucket
VCS + Terraform Cloud: Azure DevOps, GitLab, GitHub & Bitbucket
Mitchell Pronschinske2K visualizações
Docker Swarm for Beginner por Shahzad Masud
Docker Swarm for BeginnerDocker Swarm for Beginner
Docker Swarm for Beginner
Shahzad Masud2.7K visualizações
Firebase Auth Tutorial por Bukhori Aqid
Firebase Auth TutorialFirebase Auth Tutorial
Firebase Auth Tutorial
Bukhori Aqid1.6K visualizações
Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ... por Daniel Oh
Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...
Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...
Daniel Oh11.5K visualizações
An AWS DMS Replication Journey from Oracle to Aurora MySQL por Maris Elsins
An AWS DMS Replication Journey from Oracle to Aurora MySQLAn AWS DMS Replication Journey from Oracle to Aurora MySQL
An AWS DMS Replication Journey from Oracle to Aurora MySQL
Maris Elsins2.2K visualizações
Event Sourcing & CQRS, Kafka, Rabbit MQ por Araf Karsh Hamid
Event Sourcing & CQRS, Kafka, Rabbit MQEvent Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQ
Araf Karsh Hamid1.3K visualizações
Using new sentinel features in terraform cloud por Mitchell Pronschinske
Using new sentinel features in terraform cloudUsing new sentinel features in terraform cloud
Using new sentinel features in terraform cloud
Mitchell Pronschinske984 visualizações
An introduction to Rust: the modern programming language to develop safe and ... por Claudio Capobianco
An introduction to Rust: the modern programming language to develop safe and ...An introduction to Rust: the modern programming language to develop safe and ...
An introduction to Rust: the modern programming language to develop safe and ...
Claudio Capobianco2.3K visualizações
Quick flask an intro to flask por juzten
Quick flask   an intro to flaskQuick flask   an intro to flask
Quick flask an intro to flask
juzten3.2K visualizações
Docker and the Linux Kernel por Docker, Inc.
Docker and the Linux KernelDocker and the Linux Kernel
Docker and the Linux Kernel
Docker, Inc.16.7K visualizações
Overview of secret management solutions and architecture por Yuechuan (Mike) Chen
Overview of secret management solutions and architectureOverview of secret management solutions and architecture
Overview of secret management solutions and architecture
Yuechuan (Mike) Chen2.3K visualizações
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ... por 문기 박
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
문기 박137 visualizações
Deconstructing Monoliths with Domain Driven Design por VMware Tanzu
Deconstructing Monoliths with Domain Driven DesignDeconstructing Monoliths with Domain Driven Design
Deconstructing Monoliths with Domain Driven Design
VMware Tanzu4.4K visualizações
Domain Driven Design por Araf Karsh Hamid
Domain Driven DesignDomain Driven Design
Domain Driven Design
Araf Karsh Hamid3.6K visualizações
Complex architectures for authentication and authorization on AWS por Boyan Dimitrov
Complex architectures for authentication and authorization on AWSComplex architectures for authentication and authorization on AWS
Complex architectures for authentication and authorization on AWS
Boyan Dimitrov1.1K visualizações
Building RESTful applications using Spring MVC por IndicThreads
Building RESTful applications using Spring MVCBuilding RESTful applications using Spring MVC
Building RESTful applications using Spring MVC
IndicThreads9.6K visualizações
Hashicorp Vault Associate Certification Concepts Part 2 por Adnan Rashid
Hashicorp Vault Associate Certification Concepts Part 2 Hashicorp Vault Associate Certification Concepts Part 2
Hashicorp Vault Associate Certification Concepts Part 2
Adnan Rashid208 visualizações
Brownfield Domain Driven Design por Nicolò Pignatelli
Brownfield Domain Driven DesignBrownfield Domain Driven Design
Brownfield Domain Driven Design
Nicolò Pignatelli3.5K visualizações
Low code with Flowable por Flowable
Low code with FlowableLow code with Flowable
Low code with Flowable
Flowable641 visualizações

Destaque

Sofware Fora de Séria 2016 - Implementando realtime no frontend por
Sofware Fora de Séria 2016 - Implementando realtime no frontendSofware Fora de Séria 2016 - Implementando realtime no frontend
Sofware Fora de Séria 2016 - Implementando realtime no frontendWilliam Seiti Mizuta
626 visualizações73 slides
DDD Basics: Bounded Contexts, Modelling - Kortrijk Edition por
DDD Basics: Bounded Contexts, Modelling - Kortrijk EditionDDD Basics: Bounded Contexts, Modelling - Kortrijk Edition
DDD Basics: Bounded Contexts, Modelling - Kortrijk EditionMathias Verraes
2.8K visualizações38 slides
DDD Modeling Workshop por
DDD Modeling WorkshopDDD Modeling Workshop
DDD Modeling WorkshopDennis Traub
2.9K visualizações47 slides
Strategic Appplication Development with Domain-Driven Design (DDD) por
Strategic Appplication Development with Domain-Driven Design (DDD)Strategic Appplication Development with Domain-Driven Design (DDD)
Strategic Appplication Development with Domain-Driven Design (DDD)Dennis Traub
4K visualizações58 slides
Common ddd pitfalls por
Common ddd pitfallsCommon ddd pitfalls
Common ddd pitfallsTom Janssens
1.6K visualizações72 slides
Strategic design using ddd por
Strategic design using dddStrategic design using ddd
Strategic design using dddPaul Rayner
3.1K visualizações81 slides

Destaque(20)

Sofware Fora de Séria 2016 - Implementando realtime no frontend por William Seiti Mizuta
Sofware Fora de Séria 2016 - Implementando realtime no frontendSofware Fora de Séria 2016 - Implementando realtime no frontend
Sofware Fora de Séria 2016 - Implementando realtime no frontend
William Seiti Mizuta626 visualizações
DDD Basics: Bounded Contexts, Modelling - Kortrijk Edition por Mathias Verraes
DDD Basics: Bounded Contexts, Modelling - Kortrijk EditionDDD Basics: Bounded Contexts, Modelling - Kortrijk Edition
DDD Basics: Bounded Contexts, Modelling - Kortrijk Edition
Mathias Verraes2.8K visualizações
DDD Modeling Workshop por Dennis Traub
DDD Modeling WorkshopDDD Modeling Workshop
DDD Modeling Workshop
Dennis Traub2.9K visualizações
Strategic Appplication Development with Domain-Driven Design (DDD) por Dennis Traub
Strategic Appplication Development with Domain-Driven Design (DDD)Strategic Appplication Development with Domain-Driven Design (DDD)
Strategic Appplication Development with Domain-Driven Design (DDD)
Dennis Traub4K visualizações
Common ddd pitfalls por Tom Janssens
Common ddd pitfallsCommon ddd pitfalls
Common ddd pitfalls
Tom Janssens1.6K visualizações
Strategic design using ddd por Paul Rayner
Strategic design using dddStrategic design using ddd
Strategic design using ddd
Paul Rayner3.1K visualizações
Driven Development - Closing the Loop on Scrum por Adam Englander
Driven Development - Closing the Loop on ScrumDriven Development - Closing the Loop on Scrum
Driven Development - Closing the Loop on Scrum
Adam Englander833 visualizações
Package and distribute your Python code por Sanket Saurav
Package and distribute your Python codePackage and distribute your Python code
Package and distribute your Python code
Sanket Saurav1.1K visualizações
S.O.L.I.D. - Павел Кохан, Python Meetup 26.09.2014 por Python Meetup
S.O.L.I.D. - Павел Кохан, Python Meetup 26.09.2014S.O.L.I.D. - Павел Кохан, Python Meetup 26.09.2014
S.O.L.I.D. - Павел Кохан, Python Meetup 26.09.2014
Python Meetup4.3K visualizações
ZCA: A component architecture for Python por Timo Stollenwerk
ZCA: A component architecture for PythonZCA: A component architecture for Python
ZCA: A component architecture for Python
Timo Stollenwerk2.7K visualizações
Organise a Code Dojo! por Nicholas Tollervey
Organise a Code Dojo!Organise a Code Dojo!
Organise a Code Dojo!
Nicholas Tollervey5.8K visualizações
Hexagonal Design in Django por mvschaik
Hexagonal Design in DjangoHexagonal Design in Django
Hexagonal Design in Django
mvschaik10K visualizações
Postgres performance for humans por Craig Kerstiens
Postgres performance for humansPostgres performance for humans
Postgres performance for humans
Craig Kerstiens6.5K visualizações
Moving from Django Apps to Services por Craig Kerstiens
Moving from Django Apps to ServicesMoving from Django Apps to Services
Moving from Django Apps to Services
Craig Kerstiens3.4K visualizações
Introduction to hexagonal architecture por Manel Sellés
Introduction to hexagonal architectureIntroduction to hexagonal architecture
Introduction to hexagonal architecture
Manel Sellés844 visualizações
DDD session BrownBagLunch (FR) por Cyrille Martraire
DDD session BrownBagLunch (FR)DDD session BrownBagLunch (FR)
DDD session BrownBagLunch (FR)
Cyrille Martraire1.4K visualizações
Developing Software As A Service App with Python & Django por Allan Mangune
Developing Software As A Service App with Python & DjangoDeveloping Software As A Service App with Python & Django
Developing Software As A Service App with Python & Django
Allan Mangune11.5K visualizações
Code & Cannoli - Domain Driven Design por Frank Levering
Code & Cannoli - Domain Driven DesignCode & Cannoli - Domain Driven Design
Code & Cannoli - Domain Driven Design
Frank Levering472 visualizações
Domain-driven design por Knoldus Inc.
Domain-driven designDomain-driven design
Domain-driven design
Knoldus Inc.5.4K visualizações

Similar a Como DDD e Strategic Design estão nos ajudando a modernizar um Legado

TDC2016SP - Trilha Microservices por
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservicestdc-globalcode
663 visualizações67 slides
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi... por
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...tdc-globalcode
280 visualizações89 slides
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure por
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
118 visualizações35 slides
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices por
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de MicroservicesDeep Tech Brasil
226 visualizações50 slides
Clean Architecture por
Clean ArchitectureClean Architecture
Clean ArchitectureRodrigo Branas
760 visualizações70 slides
Transformando a ti com cloud computing e virtualização por
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
777 visualizações64 slides

Similar a Como DDD e Strategic Design estão nos ajudando a modernizar um Legado(20)

TDC2016SP - Trilha Microservices por tdc-globalcode
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservices
tdc-globalcode663 visualizações
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi... por tdc-globalcode
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...
tdc-globalcode280 visualizações
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure por tdc-globalcode
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
tdc-globalcode118 visualizações
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices por Deep Tech Brasil
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
Deep Tech Brasil226 visualizações
Clean Architecture por Rodrigo Branas
Clean ArchitectureClean Architecture
Clean Architecture
Rodrigo Branas760 visualizações
Transformando a ti com cloud computing e virtualização por Darlan Segalin
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
Darlan Segalin777 visualizações
O desafio de sustentar centenas de servicos por Graziella Bonizi
O desafio de sustentar centenas de servicosO desafio de sustentar centenas de servicos
O desafio de sustentar centenas de servicos
Graziella Bonizi190 visualizações
Treinamento ASP.NET 2014 por Eric Gallardo
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
Eric Gallardo636 visualizações
DDD e Microsservicos - do negócio à arquitetura por Graziella Bonizi
DDD e Microsservicos - do negócio à arquiteturaDDD e Microsservicos - do negócio à arquitetura
DDD e Microsservicos - do negócio à arquitetura
Graziella Bonizi807 visualizações
Indo alem do_mvc_node_js por gustavobeavis
Indo alem do_mvc_node_jsIndo alem do_mvc_node_js
Indo alem do_mvc_node_js
gustavobeavis79 visualizações
Oficina cake php por Allan George
Oficina cake phpOficina cake php
Oficina cake php
Allan George498 visualizações
Introdução a arquitetura de sistemas com .NET por Mário Meyrelles
Introdução a arquitetura de sistemas com .NETIntrodução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NET
Mário Meyrelles2.5K visualizações
Arquitetura web para sistemas de negócio por Ralph Rassweiler
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Ralph Rassweiler1K visualizações
Estratégias de Estruturação de Código-fonte e Controlo de Versão por Comunidade NetPonto
Estratégias de Estruturação de Código-fonte e Controlo de VersãoEstratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de Versão
Comunidade NetPonto987 visualizações
Servico ad por fernandao777
Servico adServico ad
Servico ad
fernandao7771.9K visualizações
Entendendo Frameworks web com Python por Luiz Aldabalde
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com Python
Luiz Aldabalde480 visualizações
Entendendo Framework Web com Python por PythOnRio
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com Python
PythOnRio 1.8K visualizações

Último

Considerando os pontos elencados sobre a importância de desenvolver atividade... por
Considerando os pontos elencados sobre a importância de desenvolver atividade...Considerando os pontos elencados sobre a importância de desenvolver atividade...
Considerando os pontos elencados sobre a importância de desenvolver atividade...wapoc40328
14 visualizações5 slides
Diante desta situação, CITE os 12 passos para anotação da responsabilidade té... por
Diante desta situação, CITE os 12 passos para anotação da responsabilidade té...Diante desta situação, CITE os 12 passos para anotação da responsabilidade té...
Diante desta situação, CITE os 12 passos para anotação da responsabilidade té...wefinas787
12 visualizações4 slides
3. Para finalizar a atividade ressaltamos a importância dos estudos sobre con... por
3. Para finalizar a atividade ressaltamos a importância dos estudos sobre con...3. Para finalizar a atividade ressaltamos a importância dos estudos sobre con...
3. Para finalizar a atividade ressaltamos a importância dos estudos sobre con...bexore5034
5 visualizações4 slides
1 – Desenvolver um fluxograma constando o fluxo da cadeia de suprimentos, des... por
1 – Desenvolver um fluxograma constando o fluxo da cadeia de suprimentos, des...1 – Desenvolver um fluxograma constando o fluxo da cadeia de suprimentos, des...
1 – Desenvolver um fluxograma constando o fluxo da cadeia de suprimentos, des...wapoc40328
5 visualizações1 slide
MAPA - ADSIS - LINGUAGEM E TÉCNICAS DE PROGRAMAÇÃO - 542023.pdf por
MAPA - ADSIS - LINGUAGEM E TÉCNICAS DE PROGRAMAÇÃO - 542023.pdfMAPA - ADSIS - LINGUAGEM E TÉCNICAS DE PROGRAMAÇÃO - 542023.pdf
MAPA - ADSIS - LINGUAGEM E TÉCNICAS DE PROGRAMAÇÃO - 542023.pdfwefinas787
5 visualizações4 slides
MAPA - AUTOMAÇÃO INDUSTRIAL - 542023.pdf por
MAPA - AUTOMAÇÃO INDUSTRIAL - 542023.pdfMAPA - AUTOMAÇÃO INDUSTRIAL - 542023.pdf
MAPA - AUTOMAÇÃO INDUSTRIAL - 542023.pdfwogafib965
10 visualizações5 slides

Último(20)

Considerando os pontos elencados sobre a importância de desenvolver atividade... por wapoc40328
Considerando os pontos elencados sobre a importância de desenvolver atividade...Considerando os pontos elencados sobre a importância de desenvolver atividade...
Considerando os pontos elencados sobre a importância de desenvolver atividade...
wapoc4032814 visualizações
Diante desta situação, CITE os 12 passos para anotação da responsabilidade té... por wefinas787
Diante desta situação, CITE os 12 passos para anotação da responsabilidade té...Diante desta situação, CITE os 12 passos para anotação da responsabilidade té...
Diante desta situação, CITE os 12 passos para anotação da responsabilidade té...
wefinas78712 visualizações
3. Para finalizar a atividade ressaltamos a importância dos estudos sobre con... por bexore5034
3. Para finalizar a atividade ressaltamos a importância dos estudos sobre con...3. Para finalizar a atividade ressaltamos a importância dos estudos sobre con...
3. Para finalizar a atividade ressaltamos a importância dos estudos sobre con...
bexore50345 visualizações
1 – Desenvolver um fluxograma constando o fluxo da cadeia de suprimentos, des... por wapoc40328
1 – Desenvolver um fluxograma constando o fluxo da cadeia de suprimentos, des...1 – Desenvolver um fluxograma constando o fluxo da cadeia de suprimentos, des...
1 – Desenvolver um fluxograma constando o fluxo da cadeia de suprimentos, des...
wapoc403285 visualizações
MAPA - ADSIS - LINGUAGEM E TÉCNICAS DE PROGRAMAÇÃO - 542023.pdf por wefinas787
MAPA - ADSIS - LINGUAGEM E TÉCNICAS DE PROGRAMAÇÃO - 542023.pdfMAPA - ADSIS - LINGUAGEM E TÉCNICAS DE PROGRAMAÇÃO - 542023.pdf
MAPA - ADSIS - LINGUAGEM E TÉCNICAS DE PROGRAMAÇÃO - 542023.pdf
wefinas7875 visualizações
MAPA - AUTOMAÇÃO INDUSTRIAL - 542023.pdf por wogafib965
MAPA - AUTOMAÇÃO INDUSTRIAL - 542023.pdfMAPA - AUTOMAÇÃO INDUSTRIAL - 542023.pdf
MAPA - AUTOMAÇÃO INDUSTRIAL - 542023.pdf
wogafib96510 visualizações
MAPA - EDUCAÇÃO, DIREITOS HUMANOS E CIDADANIA 542023 .pdf por wefinas787
MAPA - EDUCAÇÃO, DIREITOS HUMANOS E CIDADANIA 542023 .pdfMAPA - EDUCAÇÃO, DIREITOS HUMANOS E CIDADANIA 542023 .pdf
MAPA - EDUCAÇÃO, DIREITOS HUMANOS E CIDADANIA 542023 .pdf
wefinas78721 visualizações
AE04 - ESTRUTURAS DE CONCRETO I UNICESUMAR 54/2023 por AssessoriaAcademica9
AE04 - ESTRUTURAS DE CONCRETO I UNICESUMAR 54/2023AE04 - ESTRUTURAS DE CONCRETO I UNICESUMAR 54/2023
AE04 - ESTRUTURAS DE CONCRETO I UNICESUMAR 54/2023
AssessoriaAcademica98 visualizações
1) A ponderação qualitativa é uma das formas de avaliar as possíveis localiza... por dofokol632
1) A ponderação qualitativa é uma das formas de avaliar as possíveis localiza...1) A ponderação qualitativa é uma das formas de avaliar as possíveis localiza...
1) A ponderação qualitativa é uma das formas de avaliar as possíveis localiza...
dofokol6325 visualizações
MAPA - EDUCAÇÃO, DIREITOS HUMANOS E CIDADANIA - 542023.pdf por wogafib965
MAPA - EDUCAÇÃO, DIREITOS HUMANOS E CIDADANIA - 542023.pdfMAPA - EDUCAÇÃO, DIREITOS HUMANOS E CIDADANIA - 542023.pdf
MAPA - EDUCAÇÃO, DIREITOS HUMANOS E CIDADANIA - 542023.pdf
wogafib96574 visualizações
MAPA - EDUCAÇÃO, DIREITOS HUMANOS E CIDADANIA - 542023.pdf por bexore5034
MAPA - EDUCAÇÃO, DIREITOS HUMANOS E CIDADANIA - 542023.pdfMAPA - EDUCAÇÃO, DIREITOS HUMANOS E CIDADANIA - 542023.pdf
MAPA - EDUCAÇÃO, DIREITOS HUMANOS E CIDADANIA - 542023.pdf
bexore503420 visualizações
Considere um sistema de controle em malha fechada com realimentação unitária ... por netoje1143
Considere um sistema de controle em malha fechada com realimentação unitária ...Considere um sistema de controle em malha fechada com realimentação unitária ...
Considere um sistema de controle em malha fechada com realimentação unitária ...
netoje11435 visualizações
Olá, estudante! A atividade MAPA da disciplina visa resgatar os conhecimentos... por assedlmoi
Olá, estudante! A atividade MAPA da disciplina visa resgatar os conhecimentos...Olá, estudante! A atividade MAPA da disciplina visa resgatar os conhecimentos...
Olá, estudante! A atividade MAPA da disciplina visa resgatar os conhecimentos...
assedlmoi22 visualizações
MAPA - CIÊNCIAS DOS MATERIAIS - 542023.pdf por wogafib965
MAPA - CIÊNCIAS DOS MATERIAIS - 542023.pdfMAPA - CIÊNCIAS DOS MATERIAIS - 542023.pdf
MAPA - CIÊNCIAS DOS MATERIAIS - 542023.pdf
wogafib9659 visualizações
MAPA - BEDU - LUTAS - 542023.pdf por wogafib965
MAPA - BEDU - LUTAS - 542023.pdfMAPA - BEDU - LUTAS - 542023.pdf
MAPA - BEDU - LUTAS - 542023.pdf
wogafib96517 visualizações
1 ) Descreva como os AINEs não seletivos exercem seu mecanismo de ação, reduz... por bexore5034
1 ) Descreva como os AINEs não seletivos exercem seu mecanismo de ação, reduz...1 ) Descreva como os AINEs não seletivos exercem seu mecanismo de ação, reduz...
1 ) Descreva como os AINEs não seletivos exercem seu mecanismo de ação, reduz...
bexore503410 visualizações
ETAPA 3 Considere as seguintes características da viga V103 - Seção transvers... por wefinas787
ETAPA 3 Considere as seguintes características da viga V103 - Seção transvers...ETAPA 3 Considere as seguintes características da viga V103 - Seção transvers...
ETAPA 3 Considere as seguintes características da viga V103 - Seção transvers...
wefinas7876 visualizações
A proposta do “ Teaching Games for Understanding ”, por exemplo, ilustra a po... por bexore5034
A proposta do “ Teaching Games for Understanding ”, por exemplo, ilustra a po...A proposta do “ Teaching Games for Understanding ”, por exemplo, ilustra a po...
A proposta do “ Teaching Games for Understanding ”, por exemplo, ilustra a po...
bexore50348 visualizações
1. Organizar a criação de uma espada de esgrima utilizando material alternati... por dofokol632
1. Organizar a criação de uma espada de esgrima utilizando material alternati...1. Organizar a criação de uma espada de esgrima utilizando material alternati...
1. Organizar a criação de uma espada de esgrima utilizando material alternati...
dofokol63219 visualizações
MAPA - EDUCAÇÃO, DIREITOS HUMANOS E CIDADANIA 542023 .pdf por wogafib965
MAPA - EDUCAÇÃO, DIREITOS HUMANOS E CIDADANIA 542023 .pdfMAPA - EDUCAÇÃO, DIREITOS HUMANOS E CIDADANIA 542023 .pdf
MAPA - EDUCAÇÃO, DIREITOS HUMANOS E CIDADANIA 542023 .pdf
wogafib96544 visualizações

Como DDD e Strategic Design estão nos ajudando a modernizar um Legado