Criando Uma API REST Conectada Ao Amazon RDS Com Java
Criando Uma API REST Conectada Ao Amazon RDS Com Java
conectada a Amazon
RDS com Java
Juliana Mascarenhas
Me. Modelagem Computacional
Mais sobre mim
● FORMAÇÃO
● Criadora de conteúdo - Simplificando Redes
https://www.simplificandoredes.com/
● CONTATO:
● Linkedin: Juliana Mascarenhas,
https://www.linkedin.com/in/juliana-mascarenhas-00349426/
● Repositório do Github
https://github.com/julianazanelatto/rdswithapirest
Objetivo do curso
Aula 1 Introdução
2. Relembrando SQL
Persistência de dados
Persistência de dados
Heterogeniedade
Banco de dados
Qual objetivo?
Dados "espalhados"
Banco de dados
Qual objetivo?
Classificação criteriosa
Banco de dados
Mini-mundo
Qual objetivo?
Classificação criteriosa
Contexto
Banco de dados
Acesso aos dados?
• Dados
• Regras e Essência dos sistemas
de informação
• Operações
Banco de dados
Por que utilizar banco de dados?
Snapshot
Banco de dados
Benefícios de BDs relacionais
• Simplicidade na consulta
• Vasta utilização
Snaphot
• Dados estruturados
• Consistência dos dados
Banco de dados
Benefícios de BDs relacionais
• Simplicidade na consulta
• Vasta utilização
Snaphot
• Dados estruturados
• Consistência dos dados
Ex: Depósito em conta
[Nome do curso]
Aula 1| Etapa 2:
Relembrando SQL
[Nome da aula]
API REST - AWS RDS com Java
Spring
[Nome do palestrante]
[Posição]
SQL
Dados
Definição
SQL
Consulta
Atualizações
SQL
Visões
SQL
Segurança e autorização
SQL
Comandos SQL
Esquema
SQL
Comandos básicos SQL
Tipos de dados
Numérico Boleano
Bit Timestamp
SQL
Comandos básicos SQL
Restrições
SQL
Comandos básicos SQL
Removendo
SQL
Consultas básicas em SQL
Estrutura
SQL
Consultas básicas em SQL
Exemplo
SQL
Consultas básicas em SQL
União
Aula 1| Etapa 3:
[Nome do curso]
O que é Computação
[Nome da
em nuvem? aula]
API REST - AWS RDS com Java
Spring
[Nome do palestrante]
[Posição]
Cloud
Servidores
Dados
Aplicações
Cloud
Virtualização
Sistemas distribuídos
Pay-per-use
MODELO
Escalabilidade
Recursos sob demanda
Deslocamento da infra local
Cloud
Data centers
Modelo de serviços
Camada conceitual
Cloud
Cloud
Aspectos da computação em nuvem
• Recursos "infinitos"
• Baixo custo inicial
• Escalabilidade
• Transparência/Abstração
• Pagar pelo que usa
Cloud
Arquitetura
Prestador de infraestrutura
Utiliza os serviços da
nuvem Prestador de serviço
Usuário da nuvem
Cloud
Arquitetura
Desenvolvem e
Prestador de infraestrutura
disponibilizam os
serviços
Prestador de serviço
Usuário da nuvem
Cloud
Arquitetura
Prestador de infraestrutura
Aplicação
Instâncias
App completas SaaS
IaaS
Cloud
Serviços
Instâncias
App completas SaaS
Prove a aplicação
IaaS
1 ou + dão suporte a PaaS
Cloud
Pública
Privada
Hibrída
[Nome do curso]
Aula 1| Etapa 4:
• 2006
• Provedor de serviços
• Nuvem
• 175 serviços
AWS Máquinas virtuais
Execução de códigos
Amazon Web Service
Desenvolvimento Machine Learning
• 2006
• Provedorde serviços
• Nuvem Dev. interfaces
• 175 serviços Banco de dados
PERFORMANCE
CONFIABILDIADE
EXCELENCIA OPERACIONAL
OTIMIZAÇÃO DE RECURSOS
AWS
SEGURANÇA
PERFORMANCE
RESPONSÁVEIS
Infraestrutura
CONFIABILDIADE
PERFORMANCE
CONFIABILDIADE
EXCELENCIA OPERACIONAL
OTIMIZAÇÃO DE RECURSOS
AWS
CONFIANÇA ZERO
SEGURANÇA
• Identity and Access
PERFORMANCE
Management (IAM)
• Segurança da rede CONFIABILDIADE
• Criptografia
EXCELENCIA OPERACIONAL
OTIMIZAÇÃO DE RECURSOS
AWS
CONFIANÇAGerenciamento
ZERO de
acesso SEGURANÇA
• Identity and Access
PERFORMANCE
Management (IAM)
• Segurança da rede CONFIABILDIADE
• Criptografia
EXCELENCIA OPERACIONAL
OTIMIZAÇÃO DE RECURSOS
AWS
CONFIANÇA ZERO
SEGURANÇA
• Identity and Access
VPCs
PERFORMANCE
Management (IAM)
• Segurança da rede CONFIABILDIADE
• Criptografia
EXCELENCIA OPERACIONAL
OTIMIZAÇÃO DE RECURSOS
AWS
CONFIANÇA ZERO
SEGURANÇA
• Identity and Access
Dados em trânsito e PERFORMANCE
Management (IAM)
• Segurança darepouso
rede CONFIABILDIADE
• Criptografia
EXCELENCIA OPERACIONAL
OTIMIZAÇÃO DE RECURSOS
AWS
SERVIDORES GADO
SEGURANÇA
• Escalabilidade fornecida
PERFORMANCE
pela nuvem
CONFIABILDIADE
Configuração
• Considerar a escala EXCELENCIA OPERACIONAL
SELEÇÃO
OTIMIZAÇÃO DE RECURSOS
DIMENSIONAMENTO
AWS
SERVIDORES GADO
SEGURANÇA
• TIPO
Escalabilidade
DE SERVIÇO;
fornecida
PERFORMANCE
pela nuvem
GERENCIAMENTO;
CONFIGURAÇÃO. CONFIABILDIADE
Configuração
• Considerar a escala EXCELENCIA OPERACIONAL
SELEÇÃO
OTIMIZAÇÃO DE RECURSOS
DIMENSIONAMENTO
AWS
SERVIDORES GADO
SEGURANÇA
• Escalabilidade fornecida
PERFORMANCE
pela nuvem
VERTICAL E
HORIZONTAL. CONFIABILDIADE
Configuração
• Considerar a escala EXCELENCIA OPERACIONAL
SELEÇÃO
OTIMIZAÇÃO DE RECURSOS
DIMENSIONAMENTO
AWS
Resiliência SEGURANÇA
• Infra
PERFORMANCE
• Serviços
CONFIABILDIADE
RAIO DE ALCANCE
EXCELENCIA OPERACIONAL
OTIMIZAÇÃO DE RECURSOS
AWS
Resiliência SEGURANÇA
• Infra
PERFORMANCE
• Serviços
CONFIABILDIADE
RAIO DE ALCANCE
EXCELENCIA OPERACIONAL
ISOLAMENTO LIMITE/
DE FALHAS RESTRIÇÕES OTIMIZAÇÃO DE RECURSOS
AWS
SEGURANÇA
Constante aprimoramento
PERFORMANCE
AUTOMAÇÃO
CONFIABILDIADE
SEGURANÇA
Modelo de compra
PERFORMANCE
OPEX CONFIABILDIADE
CAOPX EXCELENCIA OPERACIONAL
OTIMIZAÇÃO DE RECURSOS
[Nome do curso]
Aula 2: AWS RDS
[NomeAPI
da aula]
REST - AWS RDS com
Java Spring
[Nome do palestrante]
[Posição]
Objetivos
1. RDS e Aurora
2. Instanciando um BD na RDS
RDS e Aurora
[Nome da aula]
API REST - AWS RDS com Java
Spring
[Nome do palestrante]
[Posição]
RDS
Relational Database Service
Redimensionamento
Configuração do DB
Reparo
RDS
Relational Database Service
• Réplicas
MODOS DE USO
• Interface
• Linha de comando
• API
RDS
Atualização/correção
MODOS DE USO automática
• Interface
Escalabilidade fácil de
• Linha de comando
aplicar
• API
32 vCPUS 244 GIB RAM Uso de SSDs
Réplicas de leitura
RDS
• Snapshots
• Isolamento
VPC – Virtual Private Cloud
• Permissões
Aurora DB
3x
• Compatível com Mysql e Postegresql
• Mais rápido 5x
• Custo 1/10
• Gerenciado pelo RDS
RDS
Relational Database Service
Aurora DB
128 TB
• Escalável
• 15 Réplicas 3 zonas
• Backup contínuo S3
• Failover 30 Seg
RDS
Relational Database Service
Migração
RDS
Gigantes que usam Aurora
Aulado
[Nome 3:curso]
Criando um
projeto básico
[Nome da aula] com
Spring Boot
API REST - AWS RDS com
Java
[Nome do palestrante]
[Posição]
Spring
Objetivos
2. Entendendo as dependências
funcionalidade
Configuração
estrutura
Pacote de códigos
Spring
Container
Baixo Acoplamento
Injeção de Dependências
Spring
Baixo Acoplamento
Injeção de Dependências
Spring
Auto-wiring
• Configuração XML
• Inferências do framework
Instânciando classes
Spring
Auto-wiring
• Configuração XML
• Inferências do framework
Uso de annotations
Instânciando classes
Spring
Spring
• Framework
Spring Data
https://spring.io/projects/spring-framework
Spring JPA
Spring Boot
Spring H2
• Stand-alone
• Grade de produção
• "Just run"
Spring-boot-starter
Configuração mínima
Spring initializr
Aula 3| Etapa 2:
[Nome do curso]
Entendendo as
[Nome da aula]
dependências
API REST - AWS RDS com Java
Spring
[Nome do palestrante]
[Posição]
Spring
Dependências
Configuration processor
Configuration processor
Spring Boot
[Nome
REST API da aula]
E CRUD
API REST - AWS RDS com Java
Spring
[Nome do palestrante]
[Posição]
API REST
O que é API?
API REST
Cliente
Chefe
O que é API?
Garçon
Padrão REST
• HTTP:
Comunicação entre API e Sistema
• Regras:
Arquitetura REST
GET/POST/
PUT/DELETE
{ ... }
RESPONSE
Restfull API
Cliente Database
Padrão REST
REpresentational State Transfer – REST
• Vantagens da padronização:
Maior compreenção
Redução do esforço Eficiência
Ganho em agilidade e Migração de sistemas
Padrão REST
REpresentational State Transfer – REST
• Vantagem - Postgresql
Independência da aplicação
SqlServer
API
Aplicação
MySql
Padrão REST
Modelo
• Client-server
• Stateless
• Cache
Constrains
• Uniform Interface
• Layered System
• Code on Demand (Opcional)
Padrão REST
Client-server
• Front x Back
Princípio da separação
Menos complexidade
Cliente
Organização dos Devs
Servidor
Padrão REST
Client-server
Cliente Servidor
Padrão REST
Client-server
Cliente Servidor
Padrão REST
Client-server
• Portabilidade Interface do
usuário
• Request
Fornecer completo entendimento para o servidor
• Visibilidade
• Confiabilidade
• Escalabilidade
Padrão REST
Stateless
• Escolha – Tradeoff
Repetição de dados
Per-interaction overhead
Performance da rede x propriedades do REST
Padrão REST
Cache
• Objetivo
aumentar eficiência da rede
• Label Requests
Cacheable or non-cacheable
• Diferencial
Enfase de uma interface uniforme entre componentes
Identificação de recursos
Manipulação de recursos
representações - ex: verbos HTTP
Auto-descrição
Processamento da informação
Padrão REST
Uniform Interface
HATEOAS
Hypermedia As The Engine Of Application State.
• Simplificação
redução de features à serem pré-implementadas
Modelo de Maturidade de
Richardson
API REST
Nível 0
Protocolo de comunicação
HTTP
API REST
Nível 1
Nível 1
Nível 2
Nível 3
Request
GET solicita um recurso do servidor
HEAD GET sem corpo de resposta
POST submete uma entidade a um recurso
PUT substituição de recursos pelos dados da requisição
DELETE remoção de um recurso
TRACE chamada de loop-back a um determinado recurso
OPTION opções de comunicação com recurso
CONNECT tunelamento identificado pelo recurso
PATCH modificação parcial
API REST
Status code
Response
Navegação
entre os
recursos
Nível 3
Nível 3
CRUD
READ
DELETE
O que é CRUD?
• Operações básicas
• Persistência de dados
• Implementação:
BD, lista, arquivos ...
O que é CRUD?
• Operações básicas
Ambiente propício
• Persistência de dados
• Implementação:
BD, lista, arquivos ...
API REST
O que é CRUD?
GET
POST
PUT
Vem da necessidade de
compreensão do sistema
Eletrônicos
Desenvolvimento Esquema de circuitos
Protótiopos
Construção
Plantas baixa
Modelagem
Orientação à objeto
Compreensão facilitada
Liberdade para o desenvolvedor
Modelagem
Perspectiva
Interpretada
Realidades
Solução
Construída
Modelagem
Diagramas
Visões Representada por Modelos
• Diferentes pontos
de vista
• Aspectos
particulares da
aplicação
Modelagem
Diagramas
Visões Representada por Modelos
• Diferentes pontos
de vista
• Aspectos
particulares da
aplicação
Modelagem
Projeto
Projeto
Caso de Interaçã
Classe
uso o
Modelagem
Principais
Estático
Mesmo estado no ciclo de vida
• Relacionamentos Dependência
Agregação
Composição
Especialização/generalização
Modelagem
Diagrama de classe
Associação
• Relacionamentos Dependência
Forte
Agregação
Referência ao longo do
tempo Composição
Relacionamentos N-ários
Especialização/generalização
Modelagem
Diagrama de classe
Associação
• Relacionamentos Dependência
Forte
Agregação
Referência ao longo do
tempo Composição
Relacionamentos N-ários
Especialização/generalização
Modelagem
Diagrama de classe
Associação
• Relacionamentos Dependência
As classes existem
sozinhas, mas há Composição
dependência
Especialização/generalização
Modelagem
Diagrama de classe
Associação
• Relacionamentos Dependência
As classes existem
sozinhas, mas há Composição
dependência
Especialização/generalização
Modelagem
Diagrama de classe
Associação
• Relacionamentos Dependência
Coleção/container
Agregação
Não há dependência
Composição
Pertencimento
Especialização/generalização
Modelagem
Diagrama de classe
Associação
• Relacionamentos Dependência
Coleção/container
Agregação
Não há dependência
Composição
Pertencimento
Especialização/generalização
Modelagem
Diagrama de classe
Associação
• Relacionamentos Dependência
Variação da agregação
Agregação
Dependência
Composição
Pertencimento
Especialização/generalização
Modelagem
Diagrama de classe
Associação
• Relacionamentos Dependência
Variação da agregação
Agregação
Dependência
Composição
Pertencimento
Especialização/generalização
Modelagem
Diagrama de classe
Associação
• Relacionamentos Dependência
Especialização/generalização
Modelagem
Diagrama de classe
Associação
• Relacionamentos Dependência
Especialização/generalização
Modelagem
Diagrama de classe
Associação
• Relacionamentos Dependência
Multiplicidade dos
relacionamentos Agregação
Composição
Especialização/generalização
Modelagem
Diagrama de classe
Multiplicidade dos
relacionamentos
Colegiado Professor
Modelagem
Diagrama de classe
1 professor
1 colegiado
Multiplicidade dos
relacionamentos
Colegiado Professor
1 colegiado
N professores
Modelagem
Diagrama de classe
1 professor
1 colegiado
Multiplicidade dos
relacionamentos
Colegiado Professor
1 colegiado
N professores
Modelagem
Diagrama de classe
1 professor
Classe 1 colegiado
Relacionamento
Multiplicidade dos
relacionamentos
Colegiado Professor
1 colegiado Características
N professores e operações
Modelagem
Diagrama de classe
• Exemplo
Modelagem
Diagrama de classe
• Exemplo
Classe
Relacionamento
Multiplicidade
[Nome do curso]
Aula 6: API REST com
[Nome
HATEOAS da aula]
API REST - AWS RDS com
Java Spring
[Nome do palestrante]
[Posição]
API REST com HATEOAS
Objetivo
• Quebrar acoplamento
• Mantendo clientes antigos e
novos API REST
API REST com HATEOAS
HATEOAS
• Inserir links
API REST
[Nome do curso]
Aula 7: Documentando
[Nome da aula]
nossa API com Swagger
API REST - AWS RDS com
Java Spring
[Nome do palestrante]
[Posição]
[Nome do curso]
Aula 6| Etapa 1:
[Nome
O que é da aula]
Swagger?
API REST - AWS RDS com Java
Spring
[Nome do palestrante]
[Posição]
Objetivos
1. O que é Swagger?
Swagger?
Swagger
Características:
Não!
Importar Springfox como depêndencia
Swagger Editor
Swagger
Swagger Editor
Swagger
Características:
Swagger UI
[Nome do curso]
Continua
[Nome da ... aula]
API REST - AWS RDS com Java
Spring
[Nome do palestrante]
[Posição]
[Nome do curso]
Dúvidas?
[Nome da aula]
> Fórum do curso
> Comunidade online (discord)
[Nome do palestrante]
[Posição]
[Nome do curso]
Referências
[Nome da aula]
Bibliográficas
API REST - AWS RDS com Java
Spring
[Nome do palestrante]
[Posição]
Referência Bibliográfica
• Computação em nuvem
https://www.gta.ufrj.br/ensino/eel879/trabalhos_vf_2009_2/se
abra/introducao.html
https://www.gta.ufrj.br/ensino/eel879/trabalhos_vf_2009_2/se
abra/arquitetura.html
Referência Bibliográfica
• Banco de dados
Livro - Ramez_Elmasri_e_Shamkant_B._Navathe-
Sistemas_de_Banco_de_Dados__-Addison_Wesley(2005)
https://www.oracle.com/br/database/what-is-a-relational-
database/
• Conectando ao BD
https://docs.spring.io/spring-
boot/docs/1.3.0.M2/reference/html/boot-features-sql.html
Referência Bibliográfica
• AWS
https://aws.amazon.com/pt/getting-started/fundamentals-
core-concepts/?e=gs2020&p=gsrc
https://aws.amazon.com/pt/rds/features/
Referência Bibliográfica
• CRUD
https://mmarcosab.medium.com/crud-em-api-rest-com-spring-
boot-h2-maven-e-jpa-hibernate-e-
documenta%C3%A7%C3%A3o-com-swagger-parte-1-
1040e2aae0ed
Referência Bibliográfica
• REST
https://martinfowler.com/articles/richardsonMaturityModel.ht
ml
https://www.thoughtworks.com/pt-br/insights/blog/rest-api-
design-resource-modeling
Referência Bibliográfica
• Spring tutoriais
https://spring.io/guides/gs/rest-service/
https://spring.io/guides/gs/accessing-data-rest/
https://spring.io/guides/gs/accessing-data-mysql/
https://spring.io/guides/tutorials/rest/
Referência Bibliográfica
• Spring
https://www.ibm.com/cloud/learn/java-spring-boot
https://spring.io/guides#topical-guides