0% acharam este documento útil (0 voto)
9 visualizações209 páginas

Criando Uma API REST Conectada Ao Amazon RDS Com Java

O documento apresenta um curso sobre a construção de uma API REST utilizando Java e AWS RDS, abordando conceitos de bancos de dados relacionais e computação em nuvem. O curso é estruturado em aulas que cobrem desde a introdução ao AWS RDS até a implementação de uma API com CRUD e HATEOAS. Juliana Mascarenhas, a instrutora, possui formação em Modelagem Computacional e Engenharia da Computação.

Enviado por

Márcio Adriano
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
9 visualizações209 páginas

Criando Uma API REST Conectada Ao Amazon RDS Com Java

O documento apresenta um curso sobre a construção de uma API REST utilizando Java e AWS RDS, abordando conceitos de bancos de dados relacionais e computação em nuvem. O curso é estruturado em aulas que cobrem desde a introdução ao AWS RDS até a implementação de uma API com CRUD e HATEOAS. Juliana Mascarenhas, a instrutora, possui formação em Modelagem Computacional e Engenharia da Computação.

Enviado por

Márcio Adriano
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 209

Criando uma API REST

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/

● Mestre em Modelagem Computacional – LNCC


● Engenheira da Computação - UCP
● Técnica de Telecomunicações - CEFET-RJ
Mais sobre mim
Mais sobre mim

● CONTATO:
● Linkedin: Juliana Mascarenhas,
https://www.linkedin.com/in/juliana-mascarenhas-00349426/
● Repositório do Github
https://github.com/julianazanelatto/rdswithapirest
Objetivo do curso

Contrução de uma API com estruturação do padrão


REST utilizando o framework Spring. Além disso, os
dados de consulta desta API estaram persistidos em
nuvem com RDS.

Você irá estudar conceitos atrelados as duas


tecnologias foco deste curso, a RDS e Java Spring.
Percurso

Aula 1 Introdução

Aula 2 AWS RDS

Aula 3 Criando um projeto básico com spring boot


Percurso

Aula 4 API REST com CRUD

Aula 5 Construindo uma API REST com RDS AWS

Aula 6 API REST com HATEOAS


Dúvidas
[Nome durante
do curso] o
[Nome
curso? da aula]
> Fórum do curso
> Comunidade online (discord)
[Nome do palestrante]
[Posição]
[Nome do curso]
Aula 1: Introdução
[NomeAPI
da aula]
REST - AWS RDS com
Java Spring
[Nome do palestrante]
[Posição]
Objetivos
1. Banco de Dados relacionais

2. Relembrando SQL

3. O que é Computação em nuvem?

4. AWS - Visão geral


Aula 1| Etapa 1:
[Nome do curso]
Banco de dados
[Nome da
Relacionais aula]
API REST - AWS RDS com Java
Spring
[Nome do palestrante]
[Posição]
Banco de dados
O que são banco de dados?
Banco de dados
O que são banco de dados?

Persistência de dados

Objetivo Estruturação de dados

Retrato fiel da realidade


Banco de dados
O que são banco de dados?

Persistência de dados

Objetivo Contexto do mundo real


Estruturação de dados

Retrato fiel da realidade


Banco de dados
O que são banco de dados?

Aspectos dos dados

Regras para corretude


Acesso controlado
Banco de dados
O que são banco de dados?

Aspectos dos dados


Fatores de influência
Regras para corretude Volume
Acesso controlado
Velocidade

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?

• Controle de acesso BDs


Concorrente ou Bloqueio
Mecanismos de
• Autorização controle
Banco de dados
Representação dos dados e regras do mini-mundo

• Dados
• Regras e Essência dos sistemas
de informação
• Operações
Banco de dados
Por que utilizar banco de dados?

• Padronização com SQL


• Isolamento dos dados (lógico)
• Consistência de estado
• Regras de integridade
• Mecanismos de acesso:
Estrutura, gerenciamento de memória,
processamento ...
Banco de dados
Modelo relacional

• Baseado na teoria de conjuntos


• Tabelas bidimensionais
Snapshot
• Relação entre conjuntos (objetos)
Banco de dados
Modelo relacional

• Baseado na teoria de conjuntos


• Tabelas bidimensionais
Snapshot
• Relação entre conjuntos (objetos)

Linhas Colunas Tabelas


Banco de dados
Benefícios de BDs relacionais

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

Sucesso dos BDs relacionais


SQL

Linguagem padronizada de manipular dados

Standart Query Language


SQL

Dados
Definição
SQL
Consulta

Atualizações
SQL

Visões

SQL

Segurança e autorização
SQL
Comandos SQL

• DDL – Data Definition Language


• DML – Data Manipulation Language
• Base na teoria dos conjuntos
SQL
Comandos básicos SQL

• CREATE TABLE Empregado

• CREATE TABLE EMPRESA.Empregado

Esquema
SQL
Comandos básicos SQL

Tipos de dados

Numérico Boleano

Cadeia de carácteres Data time

Bit Timestamp
SQL
Comandos básicos SQL

DNUMERO INT NOT NULL CHECK (DNUMERO > 0 AND DNUMERO


< 21

Restrições
SQL
Comandos básicos SQL

• DROP TABLE DEPENDENTE CASCADE;

• DROP SCHEMA EMPRESA CASCADE;

Removendo
SQL
Consultas básicas em SQL

SELECT <lista de atributos> FROM


<lista de tabelas> WHERE <condicao>;

Estrutura
SQL
Consultas básicas em SQL

SELECT PNOME, UNOME, ENDEREÇO FROM


EMPREGADO, DEPARTAMENTO
WHERE DNOME='Pesquisa' AND DNUMERO=DNO

Exemplo
SQL
Consultas básicas em SQL

(SELECT DISTINCT PNUMERO FROM PROJETO, DEPARTAMENTO, EMPREGADO


WHERE DNUM=DNUMERO AND GERSSN=SSN AND UNOME='Smith')
UNION
(SELECT DISTINCT PNUMERO FROM PROJETO, TRABALHA_EM,
EMPREGADO WHERE PNUMERO=PNO AND ESSN=SSN AND UNOME='Smith');

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

Responsáveis por Prestador de serviço


manter os serviços de
rede e armazenamento Usuário da nuvem
Cloud
Camadas

Aplicação

Responsáveis por Plataforma


manter os serviços de
rede e armazenamento Infraestrutura
Cloud
Serviços

Instâncias
App completas SaaS

Modelo de serviços PaaS

IaaS
Cloud
Serviços

Instâncias
App completas SaaS
Prove a aplicação

Modelo de serviços PaaS

IaaS
1 ou + dão suporte a PaaS
Cloud

Pública

Privada

Hibrída
[Nome do curso]
Aula 1| Etapa 4:

AWS - Visão Geral


[Nome da aula]
API REST - AWS RDS com Java
Spring
[Nome do palestrante]
[Posição]
AWS
Amazon Web Service

• 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

Rede privada na nuvem

Data Warehouse Armazenamento


EC2
AWS Máquinas virtuais
LAMBDA
Execução de códigos
Amazon Web Service
ELASTIC BEANSTALK SageMaker
Desenvolvimento Machine Learning
• 2006
• Provedorde serviços LEX
• Nuvem RDS
Dev. interfaces
• 175 serviços Banco de dados
VPC
Rede privada na nuvem
REDSHIFT
S3
Data Warehouse Armazenamento
AWS
AWS
Gigantes que usam a AWS
AWS
AWS
AWS
AWS
AWS
AWS
AWS
Principais conceitos
SEGURANÇA

PERFORMANCE

CONFIABILDIADE

EXCELENCIA OPERACIONAL

OTIMIZAÇÃO DE RECURSOS
AWS

SEGURANÇA

PERFORMANCE
RESPONSÁVEIS
Infraestrutura
CONFIABILDIADE

AWS CLIENTE EXCELENCIA OPERACIONAL


Configuração
OTIMIZAÇÃO DE RECURSOS
AWS
CONFIANÇA ZERO
SEGURANÇA

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

INFRA POR CÓDIGO EXCELENCIA OPERACIONAL

OBSERVALIDADE OTIMIZAÇÃO DE RECURSOS


AWS

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

3. Conectando a RDS com @configurationProperties


[Nome do curso]
Aula 2| Etapa 1:

RDS e Aurora
[Nome da aula]
API REST - AWS RDS com Java
Spring
[Nome do palestrante]
[Posição]
RDS
Relational Database Service

• Serviço de BDs em nuvem


• Automatiza operações
• Compatível com BDs tradicionais
• Aurora DB
RDS Provisionamento

Relational Database Service


Detecção de falhas
• Automatiza operações - adminstração
Backup Pacthes
Recuperação

Redimensionamento

Configuração do DB
Reparo
RDS
Relational Database Service

• Compatível com BDs tradicionais


RDS

• Réplicas

O Amazon RDS facilita o uso da replicação para aumentar a


disponibilidade e a confiabilidade de cargas de trabalho de
produção. Com a opção de implantação Multi-AZ, você pode
executar cargas de trabalho de missão crítica com alta
disponibilidade e failover automatizado
RDS

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

Os snapshots de banco de dados são backups de instância


iniciados pelo usuário e armazenados no Amazon S3, mantidos
até que você os exclua explicitamente.
RDS
SSL – Socket Secure Layer
• Segurança

Criptografar com AWS Key Management Service (KMS).

• dados ociosos em armazenamento subjacente;


• backups automáticos;
• as réplicas de leitura
• e os snapshots desses dados.
RDS

• Isolamento
VPC – Virtual Private Cloud

• Permissões

IAM – AWS Identity and Access


Management
RDS
Monitoramento e
métricas
• Capacidade de gerenciamento

Notificações e eventos Governança de configuração


RDS
Monitoramento e
métricas
• Capacidade de gerenciamento

Notificações e eventos Governança de configuração

• Rentabilidade Parar e iniciar

Pague pelo que usar Instância reservada


RDS
Relational Database Service

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

1. O que é Spring, spring boot e initializr?

2. Entendendo as dependências

3. Primeira API com spring boot


Aula 3| Etapa 1:
[Nome do curso]
O que é Spring, spring
[Nome da aula]
boot e initializr?
API REST - AWS RDS com Java
Spring
[Nome do palestrante]
[Posição]
Spring
• Framework - https://spring.io/

funcionalidade

Configuração

estrutura

Pacote de códigos
Spring

Container

• Controle dos métodos atrelado ao sotware


• Controle da execução
• Comum a frameworks

Modelo Imersão de Controle (IoC)


Spring

Baixo Acoplamento

• Definidas pelo container


• Declaração de dependências
• Atrelada a IoC

Injeção de Dependências
Spring

Baixo Acoplamento

• Definidas pelo container


• Declaração de dependências
• Atrelada a IoC

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

Spring Web Spring Web-flux


Spring boot
Módulo

• 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

Spring Boot Mysql Driver

Spring web Spring JPA

Spring Dev Tools Spring HATEOAS


Spring

Configuration processor

Se houver problemas de auto-complete no


@configuration.properties
Spring

Spring Boot

Utilizar a configuração mínima do


spring-boot-starter
Spring

Spring Dev Tools

Métodos que facilitam o desenvolvimento


• Restart do server
Spring

Spring web Spring HATEOAS


Aplicações WEB APIs REST
• APIs • Links
Spring

Spring JPA Mysql Driver


Persitência de dados Driver Mysql
• BDs
[Nome do curso]
Aula 4: API REST com
[Nome
CRUD da aula]
API REST - AWS RDS com
Java Spring
[Nome do palestrante]
[Posição]
Objetivos

1. REST API e CRUD

2. Abstração e modelagem de domínio


[Nome do curso]
Aula 4| Etapa 1:

[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

• Apresentada por Roy Fielding - 2000


https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm

• Boas práticas - regras bem definidas


• Comunição entre sistemas
• Padrão de linguagem
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

• Aumento da escalabilidade Cliente

• Simplifica os componentes dos


Servidor
servidores
Padrão REST
Stateless

• 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

• Reduz latência e interação


Padrão REST
Uniform Interface

• Diferencial
Enfase de uma interface uniforme entre componentes

• Generalidade - princípio de eng. de software


Padrão REST
Uniform Interface

• Arquitetura de multiplas restrições

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.

Ex: métodos HTTPS


GET http://api.project.net/users/1
Padrão REST
Layered System

• Composição hierárquiva de camadas


Encapsulamento
Proteção de dados

• Latência e overhead de dados


Compensado pelo uso de cache
Padrão REST
Code on Demand Optional
constraint

• Funcionalidade de clientes -> applets ou scripts

• Simplificação
redução de features à serem pré-implementadas

Sistema extensível x diminuição de visibilidade


Padrão REST
Por que utilizar?

Padrão comumente adotado


Conversa bem com o protocolo HTTP
Permite criação de APIs mais eficientes
Foco no desenvolvimento
API REST

Como facilitar o entendimento?

Modelo de maturidade de Richardson


API REST

Como facilitar o entendimento?

Modelo de maturidade de Richardson


API REST

Modelo de Maturidade de
Richardson
API REST

Nível 0

Protocolo de comunicação
HTTP
API REST

Nível 1

Definição de recursos por


substântivo no plural
API REST

Nível 1

Definição de recursos por


substântivo no plural
API REST

Nível 2

Correta utilização dos


verbos HTTP
API REST

Nível 3

Hypermedia as the Engine of


Application State
API REST
Métodos HTTP

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

200 OK: request bem sucedida e objeto enviado


301 Moved Permanently: objeto realocado nova URL no campo Location
400 Bad Request: resposta genérica - servidor não entendeu a mensagem
404 Not Found: o documento solicitado inexistente
505 HTTP Version Not
Supported: versão do protocolo não suportada pelo servidor
API REST

Navegação
entre os
recursos
Nível 3

Hypermedia as the Engine of


Application State
API REST

Nível 3

Hypermedia as the Engine of


Application State
O que é CRUD?
CREATE UPDATE

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

Cliente DELETE Servidor


Aula 4| Etapa 2:
[Nome do curso]
Abstração e
[Nome da aula]
modelagem do domínio
API REST - AWS RDS com Java
Spring
[Nome do palestrante]
[Posição]
Modelagem

Vem da necessidade de
compreensão do sistema
Eletrônicos
Desenvolvimento Esquema de circuitos
Protótiopos
Construção
Plantas baixa
Modelagem
Orientação à objeto

Linguagem para especificação, construção,


visualização e documentação

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

Utilização varia de acordo com o


tamanho e complexidade
do projeto
Modelagem

Projeto

Utilização varia de acordo com o


tamanho e complexidade
do projeto

Caso de Interaçã
Classe
uso o
Modelagem
Principais

• Diagrama de Caso de Uso,


• Diagrama de Classe,
• Diagrama de Estado,
• Diagrama de Atividades,
• Diagrama de Sequência.
Modelagem
Narrativa das
funcionalidades do sistema Requisitos do
sistema
• Representação dos casos de
uso
Componentes
• Perspectiva do usuários
• Funcionalidade do sistema
• Centro do projeto
Modelagem
Narrativa das
funcionalidades do sistema Requisitos do
sistema
• Representação dos casos de
uso
• Perspectiva do usuários
• Funcionalidade do sistema
• Centro do projeto
Modelagem

Exemplo de caso de uso


Modelagem

Estático
Mesmo estado no ciclo de vida

Estrutura das classes


• Características Atributos e métodos
• Operações
Representa relacionamentos
Modelagem
Diagrama de classe
Associação

• 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

+ Fraca que a associação


Agregação

As classes existem
sozinhas, mas há Composição
dependência

Especialização/generalização
Modelagem
Diagrama de classe
Associação

• Relacionamentos Dependência

+ Fraca que a associação


Agregação

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

Herança (Orientação Obj.)


Agregação
Classes gerais
Composição
Atributos gerais e próprios

Especialização/generalização
Modelagem
Diagrama de classe
Associação

• Relacionamentos Dependência

Herança (Orientação Obj.)


Agregação
Classes gerais
Composição
Atributos gerais e próprios

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

HATEOAS Modelo de maturidade


• 4° nível de maturidade de Richardson

Objetivo
• Quebrar acoplamento
• Mantendo clientes antigos e
novos API REST
API REST com HATEOAS

Atualizar aplicação Modelo de maturidade


• Método order de Richardson

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?

2. Documentando nossa API


Swagger

Por que documentar


uma API?

Swagger?
Swagger
Características:

• Framework - Spring fox


• Auxilia na criação, documentação e consumo de APIs
• YAML ou JSON
Swagger Editor
Swagger UI
Swagger Codegen
Swagger
Características:

• Framework - Spring fox


• Auxilia na criação, documentação e consumo de APIs
• YAML ou JSON
Swagger Editor
Swagger UI
Swagger Codegen
Swagger

Não!
Importar Springfox como depêndencia

Preciso configurar esse arquivo


na mão?

Swagger Editor
Swagger

Swagger Editor
Swagger
Características:

• Framework - Spring fox


• Auxilia na criação, documentação e consumo de APIs
• YAML ou JSON
Swagger Editor
Swagger UI
Swagger Codegen
Swagger

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

Você também pode gostar