Você está na página 1de 37

Transformando sua arquitetura

com Clean Architecture


Quem sou eu?
● Engenheiro de Software na CI&T há 2 anos.

● Atuei junto ao maior E-commerce de artigos esportivos do Brasil durante


mais de um ano.

● Ampla experiência com integrações de sistemas, passando por empresas do


setor de logística e de telecomunicações.

● Apaixonado por código!


Contatos:
● Gamer e aspirante a fotógrafo nas horas vagas
E-mail: henriqueoelze@gmail.com
Facebook: https://www.facebook.com/henriqueoelze
Linkedn: https://www.linkedin.com/in/henriqueoelze
Mas então, vamos ao que interessa!
CLEAN ARCHITECTURE!
Uncle Tio Bob:
A pergunta de um milhão de
Reais:

Como é a arquitetura do
Sistema que você trabalha?
A arquitetura do meu sistema é:
Da fonte mais confável do mundo Wikipédia
A arquitetura (AO 1945: arquitectura), (AO 1990: arquitetura) (do grego αρχή
[arkhé] signifcando "primeiro" ou "principal" e τέχνη [tékhton] signifcando
"construção") refere-se tanto ao processo quanto ao produto de projetar e edifcar
o ambiente habitado pelo ser humano. Neste sentido, a arquitetura trata
destacadamente da organização do espaço e de seus elementos: em última
instância, a arquitetura lidaria com qualquer problema de agenciamento,
organização, estética e ordenamento de componentes em qualquer situação de
arranjo espacial.
A figura ao lado,
demonstra a arquitetura
clássica de um tipo de
local.

Conseguem identificar
o que é mesmo sem
olhar “dentro” dos
locais?
Então porque não consigo entender olhando por
“fora” do seu projeto?
Alguns princípios do Clean
● Arquitetura FOCADA nas regras de negócio:
○ Suas regras não devem conhecer o “mundo lá fora” (Frameworks, Ferramentas, Tecnologias,
etc).

● Logo, inversão de dependências:


○ Por exemplo, seu banco de dados deve depender das suas regras, e não suas regras do seu
banco. Sua UI? Mesma coisa!

● A melhor decisão é a que você pode tomar depois?


○ Isso não é preguiça, é arquitetura incremental.

● Regras de negócio se tornam 100% TESTÁVEIS e INDEPENDENTES!


○ Vamos chegar lá, calma :D
Lindo <3! Mas se meus Use Cases não vêem
meus Gateways, como eu salvo meus dados
após a execução (por exemplo)?
Tchanãããããã!!!!
E esses pacotes aí fazendo de-para com a
imagem da arquitetura?
LEGAL!!!

Mas e o restante?
Cara, mas de onde o tio tirou isso?
Transformação REAL!
Transformação REAL!
Mas só o clean fez isso????
… Mas ele foi o caminho para chegar lá

https://martinfowler.com/articles/microservice-testing/
Mas calma, nem tudo são fores...
1)Alguns “amigos” antigos vão aparecer
Um “mesmo” código
pode aparecer no seu
gateway de banco de
dados, no seu gateway
de Rest Api e no seu
domínio.

Favorece o
desacoplamento sobre o
DRY.
2) Até se acostumarem, pessoas pensarão de
forma diferente. Nas primeiras semanas do projeto
paramos diversas vezes com a
seguinte pergunta no ar: “Onde
esse código deveria estar?”

Foi necessário centralizar o Code


Review para formar todo o time ao
longo do tempo.
4) E nós roubamos....
Nossos Use Cases não ficaram
tããããããããão Clean assim...
E teve mais…

Comentário sobre a linha de código acima...


Minha dica é:
Dúvidas?
Referências:
1. https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html

2. https://github.com/mattia-battiston/clean-architecture-example

3. https://martinfowler.com/articles/microservice-testing/

4. https://www.youtube.com/watch?v=Nsjsiz2A9mg

5. http://blog.cleancoder.com/uncle-bob/2016/01/04/ALittleArchitecture.html
Muito Obrigado!

Você também pode gostar