Backend Architecture:
Porque nem tudo é criar pastas
Alessandro Feitoza
- Bacharel em Sistemas de Informação
- Especialista em Eng. de Software
- Professor de códigos e outras computarias
- Backend Developer (Objective/Ebanx)
Agenda
- Fundamentos
- Engenharia
- Design
- Arquitetura
- Mão na massa
Basicamente isso é o básico
Engenharia
O que faz um engenheiro?
- Projeta
- Desenvolve
- Implementa
- Constroi bugs
Pedreiro de Software
Com isso descobrimos que o papel do arquiteto é?
- Satisfazer as necessidades do cliente
- Fazer o bom uso das estruturas disponiveis
- Criar uma comunicação entre as diferentes partes da coisa toda
Há diferença entre o arquiteto da construção civil e o arquiteto de software?
- SOLID
- KISS
- DRY
- Clean Code
- Object Calisthenics
- DDD
Essas coisas não são Arquitetura.
Isso tudo faz parte do...
Design
Domain Driven Design
- Dominio
- Linguagem Ubiqua/onipresente
- Bounded Context / contextos delimitados
- Context Map / mapeas os contextos
Complexidade Essencial
X
Complexidade Acidental
Arquitetura é sobre intenção, não sobre frameworks
Uncle Bob
Arquitetura é sobre não jogar tudo nos peito da galera da infra
Mão na massa #1
Precisamos desenvolver um projetinho simples:
Encurtador de links
Problema #1
Design: Isolar a camada de acesso aos dados
Arquitetura de Camadas
- Hexagonal
- MVC
- MVP
- BCE
- Onion
- frank
Problema #2
Precisamos criar um app com a mesma funcionalidade
Modelo Arquitetural
- Monolitico
- Microsserviços
Monolitico
Alguma coisa só estará disponivel se tudo estiver disponivel
Microsserviços
Alguma coisa poderá estar disponivel mesmo que tudo não esteja disponivel
Problema #3
Estamos com problema de duplicidade, duas ou mais pessoas encurtando o mesmo link
Implementa o uso de filas
Problema #4
Guarda na memoria pra evitar o consumo do banco
- Redis
- ElasticSearch
- ScaleOut
Valeu o Boi, valeu o Vaqueiro
@alessandro_feitoza
youtube.com/c/AlessandroFeitozaComputaria