"Os aplicativos corporativos tratam da exibição, manipulação e armazenamento de grandes quantidades de dados muitas vezes complexos e do suporte ou automação de processos de negócios com esses dados." - Martin Fowler
Arquitetura em camadas
Alguns recursos são implementados em intercamadas
- Validações - HTTP Codes - Controller REST
Validações para entidades e records garantindo integridade dos dados.
Bean Validation fornece uma forma comum de validação por meio de declaração de restrição e metadados para aplicativos Java
Definição correta dos códigos de estado do HTTP
O código status 206 indica que a solicitação foi bem-sucedida e o corpo contém os intervalos de dados solicitados.
Definição de uma interface de comunicação padronizada e centrada em Recursos
REST rapidamente se tornou o padrão a construção de serviços web na web porque eles são fáceis de construir e consumir
- Data Transfer Objects - Mappers
- Models/Entities
- Repositories
Definir corretamente objetos para a transferência de dados entre cliente e servidor.
"DTOs mantêm lógica fora do resto do código e também fornecem um ponto claro para alterar a serialização, caso deseje" - Martin Fowler
Mapeamento de objetos para objetos
"Às vezes você precisa configurar comunicações entre dois subsistemas que ainda precisam permanecer ignorantes um do outro." - Martin Fowler
Modelagem dos objetos que serão centro da aplicação, contendo todos os dados necessários para o funcionamento
Interface da aplicação com persistência de dados
O Repositorio fornece funcionalidade CRUD sofisticada para a classe de entidade que está sendo gerenciada.
- Autenticação - Autorização
- Docker - Database (PostgreSQL) - Implantação (Deploy) - Testes Unitários * - Documentação *
Autenticação e Autorização
"O elo mais fraco em uma cadeira de segurança é o elemento humano." - Kevin Mitnick
Processo de reconhecimento de um cliente/usuário identificado.
Processo de autorização de acesso à um usuário/cliente já autenticado
Encapsulamento de bibliotecas e ambientes em containers padronizados
Com o Docker, os aplicativos e seus ambientes são virtualizados e isolados uns dos outros em um sistema operacional compartilhado do computador host.
Gerenciadores de dados persistentes.
Um banco de dados é uma coleção organizada de informações estruturadas, ou dados, armazenados em um computador.
Disponibilização a um público (ambiente de produção). Requer a configuração de infraestruturas específicas.
Teste de funções usando JUnit.
Uma das principais vantagens da injeção de dependência é que ela deve facilitar o teste de unidade do seu código. Você pode usar objetos simulados em vez de dependências reais.
A padronização da API ajuda na sua auto-documentação. Porém podemos utilizar de ferramentas para aprimorar a documentação dos detalhes da API