Backend Architecture:

Porque nem tudo é criar pastas
Quem sou eu?

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

Introdução

Engenharia

O que faz um engenheiro?

  • Projeta
  • Desenvolve
  • Implementa
  • Constroi bugs

Pedreiro de Software

E o que faz o Arquiteto?

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?

82% das moradias do país são feitas sem arquitetos ou engenheiros


Pesquisa Datafolha 2022
  • SOLID
  • KISS
  • DRY
  • Clean Code
  • Object Calisthenics
  • DDD

Essas coisas não são Arquitetura.

Isso tudo faz parte do... Design

E o que é DESIGN?

Domain Driven Design

  • Dominio
  • Linguagem Ubiqua/onipresente
  • Bounded Context / contextos delimitados
  • Context Map / mapeas os contextos

Arquitetura não é Design

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

Tecnologias de API

  • SOAP
  • REST

Problema #3


Estamos com problema de duplicidade, duas ou mais pessoas encurtando o mesmo link

Implementa o uso de filas

  • RabbitMQ
  • Apache Kafka

Problema #4


Guarda na memoria pra evitar o consumo do banco

  • Redis
  • ElasticSearch
  • ScaleOut
E mais...
Valeu o Boi, valeu o Vaqueiro


@alessandro_feitoza
youtube.com/c/AlessandroFeitozaComputaria

Referências