SlideShare a Scribd company logo
1 of 49
Download to read offline
Desenhando a arquitetura
do software!
Isaac Felisberto de Souza
Engenheiro de Software
JOGO RÁPIDO!
RESPONDA APENAS
SE FOR
SIM
➔ Quem já desenha arquitetura do software?
➔ Quem conhece C4 model?
➔ Quem não gosta de desenhar? 😅
ROTEIRO
DE HOJE!
1 A IMPORTÂNCIA DO DESENHO.
2 DESENHO TÉCNICO E O C4 MODEL.
3
DESENHO +
ARQUITETURA DO SOFTWARE.
A IMPORTÂNCIA DO DESENHO
O que as imagens
possuem em
comum?
Quem fez, provavelmente
não desenhou
antes de “implementar”.
Em desenvolvimento de software!
Porque em áreas
técnicas, é importante
desenhar?
Em várias áreas, desenhar antes
de implementar é uma regra!
É um modo de representar de
forma visual algo que está no
nível da imaginação.
Faça um avião!
O Avião esperado
DESENHO TÉCNICO
E O C4 MODEL
Vamos desenhar o
mesmo avião!
Mas agora…
Aplicando uma técnica!
Para fabricar um avião,
é necessário um desenho com mais informações!
Desenho técnico no
desenvolvimento de
software
➔ Diagramas
➔ Notação
UML?
Diagramas
São um aliado para área de software,
pois permitem uma representação visual
estruturada e simplificada de um conceito ou ideia,
mesmo sendo às vezes
apenas um conjunto de “caixas e linhas”.
Notação
Determina a forma com a qual os elementos
devem ser desenhados ou descritos.
Isso inclui formas geométricas, tipos de linhas,
informações auxiliares, dentre outros.
O C4 MODEL
C4 model
c4model.com
Uma notação simples
para modelar
arquitetura de software
➔ Foca em uma forma livre de diagramar.
➔ Sugere boas práticas.
➔ Propõe a criação do “Maps of your code” com vários
níveis de detalhes.
Nível 1:
Contexto
Nível 2:
Containers
Nível 3:
Components
Nível 4:
Code
Diagramas
complementares
➔ System Landscape
➔ Dynamic
➔ Deployment
DESENHO
+
ARQUITETURA DO SOFTWARE.
BENEFÍCIOS EM DESENHAR A
ARQUITETURA DO SOFTWARE
Ajuda a compor
e detalhar ideias.
Permite que outras
pessoas visualizem
melhor a ideia proposta.
Ajuda a validar se a ideia
de fato é boa e viável.
Planejamento Implementação Esclarecimento
Permite um melhor
acompanhamento sobre
a implementação
Pessoas podem verificar
se a implementação está
seguindo o esperado
Permite relembrar
o que e como foi feito
Acelera a compreensão
de novas pessoas no time
Ajuda no planejamento de
novas implementações
O QUE UM DESENHO DE
ARQUITETURA DO SOFTWARE
DEVE TER?
Elementos
Descrições básicas
Relações
Hierarquia ou fluxo
Vamos utilizar o notação C4 model,
nos níveis de container e component.
Uma solução fictícia, chamada Guia Hóspede,
o domínio é: RESERVA DE HOTÉIS.
Diagrama de
Container
Elementos
Descrições
básicas
Relações
Hierarquia ou
fluxo
guia-hospede-web
Guest
guia-hospede-mobile
hoteis-service
Event Bus
Indexed Data
hoteis database
Elementos
Descrições
básicas
Relações
Hierarquia ou
fluxo
➔ Nome
➔ Estereótipo ou
tecnologia utilizada
➔ Descrição curta
guia-hospede-web
Guest
guia-hospede-mobile
hoteis-service
Event Bus
Indexed Data
hoteis database
guia-hospede-web
[Container: JavaScript e React]
Single-Page Application with web
frontend features for Hotels and
Guests
Maria
[persona]
Guests
guia-hospede-mobile
[Container: React Native]
Mobile frontend with
features for and Guests
hoteis-service
[Container: Python e Flask ]
Backend with API’s od stay
context
Event Bus
[Container: Kafka ]
Event bus for pub/sub messages
Indexed Data
[Container: ElasticSearch ]
Indexed data of hosting
domain model
hoteis database
[Container: Postgres ]
Relational model for persistence stays context entities
Elementos
Descrições
básicas
Relações
Hierarquia ou
fluxo
➔ Indicação de
direção/dependência
➔ Motivo da relação
➔ Protocolo utilizado
guia-hospede-web
Guest
guia-hospede-mobile
stays-service
Event Bus
Indexed data of hosting
stays database
guia-hospede-web
[Container: JavaScript e React]
Single-Page Application with web
frontend features for Hotels and
Guests
Maria
[persona]
Guests
guia-hospede-mobile
[Container: React Native]
Mobile frontend with
features for and Guests
hoteis-service
[Container: Python e Flask ]
Backend with API’s od stay
context
Event Bus
[Container: Kafka ]
Event bus for pub/sub messages
Indexed data of hosting
[Container: ElasticSearch ]
Indexed data of hosting
domain model
stays database
[Container: Postgres ]
Relational model for persistence stays context entities
Read index data
of stay booking,
guest and review
[HTTP]
Publish stay
booking, guest
and review events
[JSON/HTTP]
Request data of stay
booking, guest and review
[JSON/GraphQL/HTTP]
Request data of stay
booking, guest and
review
[JSON/GraphQL/HTTP]
Search and book
hotel stays
Search and book
hotel stays
Read/Write
[SQLAlchemy]
Elementos
Descrições
básicas
Relações
Hierarquia ou
fluxo
guia-hospede-web
[Container: JavaScript e React]
Single-Page Application with web
frontend features for Hotels and
Guests
Maria
[persona]
Guests
guia-hospede-mobile
[Container: React Native]
Mobile frontend with
features for and Guests
hoteis-service
[Container: Python e Flask ]
Backend with API’s od stay
context
Event Bus
[Container: Kafka ]
Event bus for pub/sub messages
Indexed data of hosting
[Container: ElasticSearch ]
Indexed data of hosting
domain model
stays database
[Container: Postgres ]
Relational model for persistence stays context entities
Read index data
of stay booking,
guest and review
[HTTP]
Publish stay
booking, guest
and review events
[JSON/HTTP]
Request data of stay
booking, guest and review
[JSON/GraphQL/HTTP]
Request data of stay
booking, guest and
review
[JSON/GraphQL/HTTP]
Search and book
hotel stays
Search and book
hotel stays
Read/Write
[SQLAlchemy]
➔ Ordenação dos
elementos
➔ Cima -> Baixo ou
➔ Esquerda -> Direita
Diagrama de
Component
Diagrama de Component do container hoteis-service
Diagrama de Component do container hoteis-service
Informações que são
apresentadas nestes
desenhos
Container:
➔ Os projetos existentes.
➔ Informações como (nome, tecnologias,
descrição básica).
➔ Relação de dependência entre eles.
➔ Descrição básica da relação.
➔ Protocolo de comunicação.
➔ Estilos/Padrões arquiteturais.
➔ Outros serviços como banco de dados,
Cache, dados indexados.
Component:
➔ Componentes/Classes base do projeto.
E PARA SOLUÇÕES
MAIORES
COMO
ARQUITETURA DE
MICROSERVICES?
➔ Elementos
➔ Descrições Básicas
➔ Relações
➔ Hierarquia / Fluxo
➔ Agrupamentos
Diagrama: System Landscape
+
Diagrama: Compoent
Ampliar
Informações que são
apresentadas neste
desenho
System Landscape + Component :
➔ Visão dos domínios
➔ Organização da arquitetura
➔ Outros padrões arquiteturais
➔ Os serviços externos utilizados
Mas desenhar isso é chato!
O que fazer então
quando:
➔ O time não lembra destas
informações.
➔ Novos(as) integrantes entram no
time.
➔ Outros times desejam entender.
➔ O tempo das pessoas será utilizado
para explicar.
➔ Várias e repetidas vezes.
➔ Pense um time com 5, 10, 100, 1000
pessoas! Quanto esse tempo custa?
E o que acontece quando
quem detém as
informações troca de
time ou empresa?
Pessoa arquiteta de software,
boa,
é a que bota a mão na massa!
SIM!
Deve botar a mão na
massa!
E...
precisa também saber expressar e
apresentar as ideias!
precisa documentar e não apenas
reter informação na memória.
Desenhar a arquitetura
é uma forma de fazer isso!
Tornando
o desenho
interativo
➔ Publicar o desenho através de um URL.
➔ Utilizar em reuniões.
➔ Ter links para:
○ Código fonte
○ Documentação de API’s
○ Acesso aos ambientes publicados
○ Outros detalhamentos
O que não desenhar!
➔ Coisas que sofram muitas mudanças:
○ Diagrama completo de classes.
○ Diagrama de entidades-relacionamento
➔ Não incluir no desenho:
○ Detalhes de API’s
○ Versão de tecnologias utilizadas
○ Descrições detalhadas
Ferramentas
➔ Durante planejamento, Quadro Branco!
➔ Diagrams.net.
➔ Lucid Chart.
➔ Microsoft Visio.
➔ PlantUML.
Outras em c4model.com
Em resumo, considerando:
As informações que um
desenho pode apresentar.
A ajuda no planejamento e
execução.
A economia de tempo das
pessoas que explicam sempre
as mesmas coisas.
O conhecimento compartilhado
com os demais.
Desenhar
a arquitetura do software
se torna um sinal de
maturidade, responsabilidade
e profissionalismo.
OBRIGADO!
Isaac Felisberto de Souza
Engenheiro de Software
isaacsouza@gmail.com
linkedin.com/in/isaacfsouza
Um guia para auxiliar o
Desenvolvimento de Software.
Através de conteúdo para desenvolvedores(as).
www.guia.dev
Guia Dev (linkedin.com/company/guiadev)
@guia_dev
Siga! e compartilhe ;-)

More Related Content

What's hot

Tutorial on Question Answering Systems
Tutorial on Question Answering Systems Tutorial on Question Answering Systems
Tutorial on Question Answering Systems Saeedeh Shekarpour
 
Introduction to Natural Language Processing (NLP)
Introduction to Natural Language Processing (NLP)Introduction to Natural Language Processing (NLP)
Introduction to Natural Language Processing (NLP)VenkateshMurugadas
 
Real-Time Data Flows with Apache NiFi
Real-Time Data Flows with Apache NiFiReal-Time Data Flows with Apache NiFi
Real-Time Data Flows with Apache NiFiManish Gupta
 
Deep learning for NLP and Transformer
 Deep learning for NLP  and Transformer Deep learning for NLP  and Transformer
Deep learning for NLP and TransformerArvind Devaraj
 
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosSistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosCharles Fortes
 
Natural lanaguage processing
Natural lanaguage processingNatural lanaguage processing
Natural lanaguage processinggulshan kumar
 
NiFi Best Practices for the Enterprise
NiFi Best Practices for the EnterpriseNiFi Best Practices for the Enterprise
NiFi Best Practices for the EnterpriseGregory Keys
 
Natural language processing (nlp)
Natural language processing (nlp)Natural language processing (nlp)
Natural language processing (nlp)Kuppusamy P
 
ANTLR4 and its testing
ANTLR4 and its testingANTLR4 and its testing
ANTLR4 and its testingKnoldus Inc.
 
Sistema De GestãO De ClíNica VeterináRia
Sistema De GestãO De ClíNica VeterináRiaSistema De GestãO De ClíNica VeterináRia
Sistema De GestãO De ClíNica VeterináRiaguest4f7dd23
 
Scylla Summit 2022: Stream Processing with ScyllaDB
Scylla Summit 2022: Stream Processing with ScyllaDBScylla Summit 2022: Stream Processing with ScyllaDB
Scylla Summit 2022: Stream Processing with ScyllaDBScyllaDB
 
Natural Language Processing
Natural Language ProcessingNatural Language Processing
Natural Language ProcessingVeenaSKumar2
 
Ian Sommerville, Software Engineering, 9th Edition Ch 4
Ian Sommerville,  Software Engineering, 9th Edition Ch 4Ian Sommerville,  Software Engineering, 9th Edition Ch 4
Ian Sommerville, Software Engineering, 9th Edition Ch 4Mohammed Romi
 
Natural language processing
Natural language processingNatural language processing
Natural language processingAbash shah
 
Natural Language Processing (NLP) & Text Mining Tutorial Using NLTK | NLP Tra...
Natural Language Processing (NLP) & Text Mining Tutorial Using NLTK | NLP Tra...Natural Language Processing (NLP) & Text Mining Tutorial Using NLTK | NLP Tra...
Natural Language Processing (NLP) & Text Mining Tutorial Using NLTK | NLP Tra...Edureka!
 
Explainability for Natural Language Processing
Explainability for Natural Language ProcessingExplainability for Natural Language Processing
Explainability for Natural Language ProcessingYunyao Li
 

What's hot (20)

Tutorial on Question Answering Systems
Tutorial on Question Answering Systems Tutorial on Question Answering Systems
Tutorial on Question Answering Systems
 
Introduction to Natural Language Processing (NLP)
Introduction to Natural Language Processing (NLP)Introduction to Natural Language Processing (NLP)
Introduction to Natural Language Processing (NLP)
 
Real-Time Data Flows with Apache NiFi
Real-Time Data Flows with Apache NiFiReal-Time Data Flows with Apache NiFi
Real-Time Data Flows with Apache NiFi
 
How Not To Hurt: Teaching Trainers About Vicarious Trauma and Interpreter Sel...
How Not To Hurt: Teaching Trainers About Vicarious Trauma and Interpreter Sel...How Not To Hurt: Teaching Trainers About Vicarious Trauma and Interpreter Sel...
How Not To Hurt: Teaching Trainers About Vicarious Trauma and Interpreter Sel...
 
NLP
NLPNLP
NLP
 
Deep learning for NLP and Transformer
 Deep learning for NLP  and Transformer Deep learning for NLP  and Transformer
Deep learning for NLP and Transformer
 
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosSistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
 
Natural lanaguage processing
Natural lanaguage processingNatural lanaguage processing
Natural lanaguage processing
 
NiFi Best Practices for the Enterprise
NiFi Best Practices for the EnterpriseNiFi Best Practices for the Enterprise
NiFi Best Practices for the Enterprise
 
Natural language processing (nlp)
Natural language processing (nlp)Natural language processing (nlp)
Natural language processing (nlp)
 
ANTLR4 and its testing
ANTLR4 and its testingANTLR4 and its testing
ANTLR4 and its testing
 
Nlp
NlpNlp
Nlp
 
Sistema De GestãO De ClíNica VeterináRia
Sistema De GestãO De ClíNica VeterináRiaSistema De GestãO De ClíNica VeterináRia
Sistema De GestãO De ClíNica VeterináRia
 
Scylla Summit 2022: Stream Processing with ScyllaDB
Scylla Summit 2022: Stream Processing with ScyllaDBScylla Summit 2022: Stream Processing with ScyllaDB
Scylla Summit 2022: Stream Processing with ScyllaDB
 
Natural Language Processing
Natural Language ProcessingNatural Language Processing
Natural Language Processing
 
Ian Sommerville, Software Engineering, 9th Edition Ch 4
Ian Sommerville,  Software Engineering, 9th Edition Ch 4Ian Sommerville,  Software Engineering, 9th Edition Ch 4
Ian Sommerville, Software Engineering, 9th Edition Ch 4
 
Natural language processing
Natural language processingNatural language processing
Natural language processing
 
Natural Language Processing (NLP) & Text Mining Tutorial Using NLTK | NLP Tra...
Natural Language Processing (NLP) & Text Mining Tutorial Using NLTK | NLP Tra...Natural Language Processing (NLP) & Text Mining Tutorial Using NLTK | NLP Tra...
Natural Language Processing (NLP) & Text Mining Tutorial Using NLTK | NLP Tra...
 
Explainability for Natural Language Processing
Explainability for Natural Language ProcessingExplainability for Natural Language Processing
Explainability for Natural Language Processing
 
Introduction à la plateforme Anypoint de MuleSoft
Introduction à la plateforme Anypoint de MuleSoftIntroduction à la plateforme Anypoint de MuleSoft
Introduction à la plateforme Anypoint de MuleSoft
 

Similar to Desenhando a arquitetura do software!

Gapand 2017 - Diseñando Arquitecturas Serverless en Azure
Gapand 2017 - Diseñando Arquitecturas Serverless en AzureGapand 2017 - Diseñando Arquitecturas Serverless en Azure
Gapand 2017 - Diseñando Arquitecturas Serverless en AzureAlberto Diaz Martin
 
Join us at Confee
Join us at ConfeeJoin us at Confee
Join us at ConfeeGabor Orosz
 
Software development learning path - board infinity
Software development learning path - board infinitySoftware development learning path - board infinity
Software development learning path - board infinityBoard Infinity
 
Apexand visualforcearchitecture
Apexand visualforcearchitectureApexand visualforcearchitecture
Apexand visualforcearchitectureCMR WORLD TECH
 
Rg apexand visualforcearchitecture
Rg apexand visualforcearchitectureRg apexand visualforcearchitecture
Rg apexand visualforcearchitectureCMR WORLD TECH
 
Kishor resume-
Kishor   resume-Kishor   resume-
Kishor resume-Kishor M
 
User Experience Bootcamp for Developers
User Experience Bootcamp for DevelopersUser Experience Bootcamp for Developers
User Experience Bootcamp for DevelopersCatherine Robson
 
Web designing-training-by-ruchiwebsolutions
Web designing-training-by-ruchiwebsolutionsWeb designing-training-by-ruchiwebsolutions
Web designing-training-by-ruchiwebsolutionsphp2ranjan
 
Brochure - Software Development Learning Path
 Brochure - Software Development Learning Path Brochure - Software Development Learning Path
Brochure - Software Development Learning PathBoard Infinity
 
Kishor resume-
Kishor   resume-Kishor   resume-
Kishor resume-Kishor M
 
Akshay_Paliwal_Lead_Developer
Akshay_Paliwal_Lead_DeveloperAkshay_Paliwal_Lead_Developer
Akshay_Paliwal_Lead_Developerakshaypaliwal23
 
Pat Farrell, Migrating Legacy Documentation to XML and DITA
Pat Farrell, Migrating Legacy Documentation to XML and DITAPat Farrell, Migrating Legacy Documentation to XML and DITA
Pat Farrell, Migrating Legacy Documentation to XML and DITAfarrelldoc
 
Content Strategy and Developer Engagement for DevPortals
Content Strategy and Developer Engagement for DevPortalsContent Strategy and Developer Engagement for DevPortals
Content Strategy and Developer Engagement for DevPortalsAxway
 
WordCamp Asheville 2017 - So You Wanna Dev? Join the Team!
WordCamp Asheville 2017 - So You Wanna Dev? Join the Team!WordCamp Asheville 2017 - So You Wanna Dev? Join the Team!
WordCamp Asheville 2017 - So You Wanna Dev? Join the Team!Evan Mullins
 
Website design workflow
Website design workflowWebsite design workflow
Website design workflowAhmed Bolica
 
Learning subjects for junior level developers at Skitsanos Inc.
Learning subjects for junior level developers at Skitsanos Inc.Learning subjects for junior level developers at Skitsanos Inc.
Learning subjects for junior level developers at Skitsanos Inc.Evgenios Skitsanos
 

Similar to Desenhando a arquitetura do software! (20)

Gapand 2017 - Diseñando Arquitecturas Serverless en Azure
Gapand 2017 - Diseñando Arquitecturas Serverless en AzureGapand 2017 - Diseñando Arquitecturas Serverless en Azure
Gapand 2017 - Diseñando Arquitecturas Serverless en Azure
 
Design system for new O2 CRM and web apps
Design system for new O2 CRM and web appsDesign system for new O2 CRM and web apps
Design system for new O2 CRM and web apps
 
Join us at Confee
Join us at ConfeeJoin us at Confee
Join us at Confee
 
Software development learning path - board infinity
Software development learning path - board infinitySoftware development learning path - board infinity
Software development learning path - board infinity
 
Apexand visualforcearchitecture
Apexand visualforcearchitectureApexand visualforcearchitecture
Apexand visualforcearchitecture
 
Rg apexand visualforcearchitecture
Rg apexand visualforcearchitectureRg apexand visualforcearchitecture
Rg apexand visualforcearchitecture
 
Kishor resume-
Kishor   resume-Kishor   resume-
Kishor resume-
 
User Experience Bootcamp for Developers
User Experience Bootcamp for DevelopersUser Experience Bootcamp for Developers
User Experience Bootcamp for Developers
 
Web designing-training-by-ruchiwebsolutions
Web designing-training-by-ruchiwebsolutionsWeb designing-training-by-ruchiwebsolutions
Web designing-training-by-ruchiwebsolutions
 
Brochure - Software Development Learning Path
 Brochure - Software Development Learning Path Brochure - Software Development Learning Path
Brochure - Software Development Learning Path
 
Kishor resume-
Kishor   resume-Kishor   resume-
Kishor resume-
 
Akshay_Paliwal_Lead_Developer
Akshay_Paliwal_Lead_DeveloperAkshay_Paliwal_Lead_Developer
Akshay_Paliwal_Lead_Developer
 
Resume (1)
Resume (1)Resume (1)
Resume (1)
 
Pat Farrell, Migrating Legacy Documentation to XML and DITA
Pat Farrell, Migrating Legacy Documentation to XML and DITAPat Farrell, Migrating Legacy Documentation to XML and DITA
Pat Farrell, Migrating Legacy Documentation to XML and DITA
 
PHP Developer
PHP DeveloperPHP Developer
PHP Developer
 
Pour Noël, devenez chrome extensioniste!
Pour Noël, devenez chrome extensioniste!Pour Noël, devenez chrome extensioniste!
Pour Noël, devenez chrome extensioniste!
 
Content Strategy and Developer Engagement for DevPortals
Content Strategy and Developer Engagement for DevPortalsContent Strategy and Developer Engagement for DevPortals
Content Strategy and Developer Engagement for DevPortals
 
WordCamp Asheville 2017 - So You Wanna Dev? Join the Team!
WordCamp Asheville 2017 - So You Wanna Dev? Join the Team!WordCamp Asheville 2017 - So You Wanna Dev? Join the Team!
WordCamp Asheville 2017 - So You Wanna Dev? Join the Team!
 
Website design workflow
Website design workflowWebsite design workflow
Website design workflow
 
Learning subjects for junior level developers at Skitsanos Inc.
Learning subjects for junior level developers at Skitsanos Inc.Learning subjects for junior level developers at Skitsanos Inc.
Learning subjects for junior level developers at Skitsanos Inc.
 

More from Isaac de Souza

Sua solução escala? Testes de Stress e APMs podem responder.
Sua solução escala? Testes de Stress e APMs podem responder.Sua solução escala? Testes de Stress e APMs podem responder.
Sua solução escala? Testes de Stress e APMs podem responder.Isaac de Souza
 
Seu código fonte é sustentável?
Seu código fonte é sustentável?Seu código fonte é sustentável?
Seu código fonte é sustentável?Isaac de Souza
 
Compondo uma plataforma de software com microservices.
Compondo uma plataforma de software com microservices.Compondo uma plataforma de software com microservices.
Compondo uma plataforma de software com microservices.Isaac de Souza
 
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...Isaac de Souza
 
Esquenta TDC - Como DDD e principalmente Domain Model contribuem na construçã...
Esquenta TDC - Como DDD e principalmente Domain Model contribuem na construçã...Esquenta TDC - Como DDD e principalmente Domain Model contribuem na construçã...
Esquenta TDC - Como DDD e principalmente Domain Model contribuem na construçã...Isaac de Souza
 
Compondo uma plataforma de software
Compondo uma plataforma de softwareCompondo uma plataforma de software
Compondo uma plataforma de softwareIsaac de Souza
 
A importância de DDD e o Domain Model na construção de APIs!
A importância de DDD e o Domain Model na construção de APIs!A importância de DDD e o Domain Model na construção de APIs!
A importância de DDD e o Domain Model na construção de APIs!Isaac de Souza
 
Como DDD e principalmente Domain Model contribuem na construção de microservi...
Como DDD e principalmente Domain Model contribuem na construção de microservi...Como DDD e principalmente Domain Model contribuem na construção de microservi...
Como DDD e principalmente Domain Model contribuem na construção de microservi...Isaac de Souza
 
Microservices em Python. Como estamos construindo a maior plataforma Agro do ...
Microservices em Python. Como estamos construindo a maior plataforma Agro do ...Microservices em Python. Como estamos construindo a maior plataforma Agro do ...
Microservices em Python. Como estamos construindo a maior plataforma Agro do ...Isaac de Souza
 
A multiplicação dos devs!
A multiplicação dos devs!A multiplicação dos devs!
A multiplicação dos devs!Isaac de Souza
 
Estamos trabalhando melhor com dependências e ambientes usando containers?
Estamos trabalhando melhor  com dependências e ambientes  usando containers?Estamos trabalhando melhor  com dependências e ambientes  usando containers?
Estamos trabalhando melhor com dependências e ambientes usando containers?Isaac de Souza
 
É hora de pensar em soluções portáveis na cloud!
É hora de pensar em soluções portáveis na cloud!É hora de pensar em soluções portáveis na cloud!
É hora de pensar em soluções portáveis na cloud!Isaac de Souza
 
Cloud computing, quais vantagens reais?
Cloud computing, quais vantagens reais?Cloud computing, quais vantagens reais?
Cloud computing, quais vantagens reais?Isaac de Souza
 
Maior performance no seu sistema com o uso adequado de orm em rails
Maior performance no seu sistema com o uso adequado de orm em railsMaior performance no seu sistema com o uso adequado de orm em rails
Maior performance no seu sistema com o uso adequado de orm em railsIsaac de Souza
 

More from Isaac de Souza (14)

Sua solução escala? Testes de Stress e APMs podem responder.
Sua solução escala? Testes de Stress e APMs podem responder.Sua solução escala? Testes de Stress e APMs podem responder.
Sua solução escala? Testes de Stress e APMs podem responder.
 
Seu código fonte é sustentável?
Seu código fonte é sustentável?Seu código fonte é sustentável?
Seu código fonte é sustentável?
 
Compondo uma plataforma de software com microservices.
Compondo uma plataforma de software com microservices.Compondo uma plataforma de software com microservices.
Compondo uma plataforma de software com microservices.
 
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
 
Esquenta TDC - Como DDD e principalmente Domain Model contribuem na construçã...
Esquenta TDC - Como DDD e principalmente Domain Model contribuem na construçã...Esquenta TDC - Como DDD e principalmente Domain Model contribuem na construçã...
Esquenta TDC - Como DDD e principalmente Domain Model contribuem na construçã...
 
Compondo uma plataforma de software
Compondo uma plataforma de softwareCompondo uma plataforma de software
Compondo uma plataforma de software
 
A importância de DDD e o Domain Model na construção de APIs!
A importância de DDD e o Domain Model na construção de APIs!A importância de DDD e o Domain Model na construção de APIs!
A importância de DDD e o Domain Model na construção de APIs!
 
Como DDD e principalmente Domain Model contribuem na construção de microservi...
Como DDD e principalmente Domain Model contribuem na construção de microservi...Como DDD e principalmente Domain Model contribuem na construção de microservi...
Como DDD e principalmente Domain Model contribuem na construção de microservi...
 
Microservices em Python. Como estamos construindo a maior plataforma Agro do ...
Microservices em Python. Como estamos construindo a maior plataforma Agro do ...Microservices em Python. Como estamos construindo a maior plataforma Agro do ...
Microservices em Python. Como estamos construindo a maior plataforma Agro do ...
 
A multiplicação dos devs!
A multiplicação dos devs!A multiplicação dos devs!
A multiplicação dos devs!
 
Estamos trabalhando melhor com dependências e ambientes usando containers?
Estamos trabalhando melhor  com dependências e ambientes  usando containers?Estamos trabalhando melhor  com dependências e ambientes  usando containers?
Estamos trabalhando melhor com dependências e ambientes usando containers?
 
É hora de pensar em soluções portáveis na cloud!
É hora de pensar em soluções portáveis na cloud!É hora de pensar em soluções portáveis na cloud!
É hora de pensar em soluções portáveis na cloud!
 
Cloud computing, quais vantagens reais?
Cloud computing, quais vantagens reais?Cloud computing, quais vantagens reais?
Cloud computing, quais vantagens reais?
 
Maior performance no seu sistema com o uso adequado de orm em rails
Maior performance no seu sistema com o uso adequado de orm em railsMaior performance no seu sistema com o uso adequado de orm em rails
Maior performance no seu sistema com o uso adequado de orm em rails
 

Recently uploaded

Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 

Recently uploaded (20)

Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 

Desenhando a arquitetura do software!

  • 1. Desenhando a arquitetura do software! Isaac Felisberto de Souza Engenheiro de Software
  • 2. JOGO RÁPIDO! RESPONDA APENAS SE FOR SIM ➔ Quem já desenha arquitetura do software? ➔ Quem conhece C4 model? ➔ Quem não gosta de desenhar? 😅
  • 3. ROTEIRO DE HOJE! 1 A IMPORTÂNCIA DO DESENHO. 2 DESENHO TÉCNICO E O C4 MODEL. 3 DESENHO + ARQUITETURA DO SOFTWARE.
  • 5. O que as imagens possuem em comum? Quem fez, provavelmente não desenhou antes de “implementar”.
  • 7. Porque em áreas técnicas, é importante desenhar? Em várias áreas, desenhar antes de implementar é uma regra! É um modo de representar de forma visual algo que está no nível da imaginação.
  • 11. Vamos desenhar o mesmo avião! Mas agora… Aplicando uma técnica!
  • 12. Para fabricar um avião, é necessário um desenho com mais informações!
  • 13. Desenho técnico no desenvolvimento de software ➔ Diagramas ➔ Notação UML?
  • 14. Diagramas São um aliado para área de software, pois permitem uma representação visual estruturada e simplificada de um conceito ou ideia, mesmo sendo às vezes apenas um conjunto de “caixas e linhas”.
  • 15. Notação Determina a forma com a qual os elementos devem ser desenhados ou descritos. Isso inclui formas geométricas, tipos de linhas, informações auxiliares, dentre outros.
  • 17. C4 model c4model.com Uma notação simples para modelar arquitetura de software ➔ Foca em uma forma livre de diagramar. ➔ Sugere boas práticas. ➔ Propõe a criação do “Maps of your code” com vários níveis de detalhes.
  • 24. BENEFÍCIOS EM DESENHAR A ARQUITETURA DO SOFTWARE
  • 25. Ajuda a compor e detalhar ideias. Permite que outras pessoas visualizem melhor a ideia proposta. Ajuda a validar se a ideia de fato é boa e viável. Planejamento Implementação Esclarecimento Permite um melhor acompanhamento sobre a implementação Pessoas podem verificar se a implementação está seguindo o esperado Permite relembrar o que e como foi feito Acelera a compreensão de novas pessoas no time Ajuda no planejamento de novas implementações
  • 26. O QUE UM DESENHO DE ARQUITETURA DO SOFTWARE DEVE TER?
  • 27. Elementos Descrições básicas Relações Hierarquia ou fluxo Vamos utilizar o notação C4 model, nos níveis de container e component. Uma solução fictícia, chamada Guia Hóspede, o domínio é: RESERVA DE HOTÉIS.
  • 30. Elementos Descrições básicas Relações Hierarquia ou fluxo ➔ Nome ➔ Estereótipo ou tecnologia utilizada ➔ Descrição curta guia-hospede-web Guest guia-hospede-mobile hoteis-service Event Bus Indexed Data hoteis database guia-hospede-web [Container: JavaScript e React] Single-Page Application with web frontend features for Hotels and Guests Maria [persona] Guests guia-hospede-mobile [Container: React Native] Mobile frontend with features for and Guests hoteis-service [Container: Python e Flask ] Backend with API’s od stay context Event Bus [Container: Kafka ] Event bus for pub/sub messages Indexed Data [Container: ElasticSearch ] Indexed data of hosting domain model hoteis database [Container: Postgres ] Relational model for persistence stays context entities
  • 31. Elementos Descrições básicas Relações Hierarquia ou fluxo ➔ Indicação de direção/dependência ➔ Motivo da relação ➔ Protocolo utilizado guia-hospede-web Guest guia-hospede-mobile stays-service Event Bus Indexed data of hosting stays database guia-hospede-web [Container: JavaScript e React] Single-Page Application with web frontend features for Hotels and Guests Maria [persona] Guests guia-hospede-mobile [Container: React Native] Mobile frontend with features for and Guests hoteis-service [Container: Python e Flask ] Backend with API’s od stay context Event Bus [Container: Kafka ] Event bus for pub/sub messages Indexed data of hosting [Container: ElasticSearch ] Indexed data of hosting domain model stays database [Container: Postgres ] Relational model for persistence stays context entities Read index data of stay booking, guest and review [HTTP] Publish stay booking, guest and review events [JSON/HTTP] Request data of stay booking, guest and review [JSON/GraphQL/HTTP] Request data of stay booking, guest and review [JSON/GraphQL/HTTP] Search and book hotel stays Search and book hotel stays Read/Write [SQLAlchemy]
  • 32. Elementos Descrições básicas Relações Hierarquia ou fluxo guia-hospede-web [Container: JavaScript e React] Single-Page Application with web frontend features for Hotels and Guests Maria [persona] Guests guia-hospede-mobile [Container: React Native] Mobile frontend with features for and Guests hoteis-service [Container: Python e Flask ] Backend with API’s od stay context Event Bus [Container: Kafka ] Event bus for pub/sub messages Indexed data of hosting [Container: ElasticSearch ] Indexed data of hosting domain model stays database [Container: Postgres ] Relational model for persistence stays context entities Read index data of stay booking, guest and review [HTTP] Publish stay booking, guest and review events [JSON/HTTP] Request data of stay booking, guest and review [JSON/GraphQL/HTTP] Request data of stay booking, guest and review [JSON/GraphQL/HTTP] Search and book hotel stays Search and book hotel stays Read/Write [SQLAlchemy] ➔ Ordenação dos elementos ➔ Cima -> Baixo ou ➔ Esquerda -> Direita
  • 34. Diagrama de Component do container hoteis-service
  • 35. Diagrama de Component do container hoteis-service
  • 36. Informações que são apresentadas nestes desenhos Container: ➔ Os projetos existentes. ➔ Informações como (nome, tecnologias, descrição básica). ➔ Relação de dependência entre eles. ➔ Descrição básica da relação. ➔ Protocolo de comunicação. ➔ Estilos/Padrões arquiteturais. ➔ Outros serviços como banco de dados, Cache, dados indexados. Component: ➔ Componentes/Classes base do projeto.
  • 37. E PARA SOLUÇÕES MAIORES COMO ARQUITETURA DE MICROSERVICES? ➔ Elementos ➔ Descrições Básicas ➔ Relações ➔ Hierarquia / Fluxo ➔ Agrupamentos Diagrama: System Landscape + Diagrama: Compoent
  • 39. Informações que são apresentadas neste desenho System Landscape + Component : ➔ Visão dos domínios ➔ Organização da arquitetura ➔ Outros padrões arquiteturais ➔ Os serviços externos utilizados
  • 40. Mas desenhar isso é chato!
  • 41. O que fazer então quando: ➔ O time não lembra destas informações. ➔ Novos(as) integrantes entram no time. ➔ Outros times desejam entender. ➔ O tempo das pessoas será utilizado para explicar. ➔ Várias e repetidas vezes. ➔ Pense um time com 5, 10, 100, 1000 pessoas! Quanto esse tempo custa? E o que acontece quando quem detém as informações troca de time ou empresa?
  • 42. Pessoa arquiteta de software, boa, é a que bota a mão na massa!
  • 43. SIM! Deve botar a mão na massa! E... precisa também saber expressar e apresentar as ideias! precisa documentar e não apenas reter informação na memória. Desenhar a arquitetura é uma forma de fazer isso!
  • 44. Tornando o desenho interativo ➔ Publicar o desenho através de um URL. ➔ Utilizar em reuniões. ➔ Ter links para: ○ Código fonte ○ Documentação de API’s ○ Acesso aos ambientes publicados ○ Outros detalhamentos
  • 45. O que não desenhar! ➔ Coisas que sofram muitas mudanças: ○ Diagrama completo de classes. ○ Diagrama de entidades-relacionamento ➔ Não incluir no desenho: ○ Detalhes de API’s ○ Versão de tecnologias utilizadas ○ Descrições detalhadas
  • 46. Ferramentas ➔ Durante planejamento, Quadro Branco! ➔ Diagrams.net. ➔ Lucid Chart. ➔ Microsoft Visio. ➔ PlantUML. Outras em c4model.com
  • 47. Em resumo, considerando: As informações que um desenho pode apresentar. A ajuda no planejamento e execução. A economia de tempo das pessoas que explicam sempre as mesmas coisas. O conhecimento compartilhado com os demais. Desenhar a arquitetura do software se torna um sinal de maturidade, responsabilidade e profissionalismo.
  • 49. Isaac Felisberto de Souza Engenheiro de Software isaacsouza@gmail.com linkedin.com/in/isaacfsouza Um guia para auxiliar o Desenvolvimento de Software. Através de conteúdo para desenvolvedores(as). www.guia.dev Guia Dev (linkedin.com/company/guiadev) @guia_dev Siga! e compartilhe ;-)