Escolar Documentos
Profissional Documentos
Cultura Documentos
Aplicação
Aplicação Apresentação
Sessão
Transporte Transporte
Internet Rede
Enlace
Acesso a rede
Física
Modelo TCP/IP Modelo OSI
Aplicação
Aplicação Apresentação
Sessão
Transporte Transporte
Internet Rede
Enlace
Acesso a rede
Física
Camada de Aplicação
Camada de Aplicação
Mas… como é que todas essas
aplicações se comunicam?
Protocolos de Rede
No que se refere às redes, um protocolo é um conjunto de regras para
formatação e processamento de dados. Os protocolos de rede são como uma
linguagem em comum para computadores. Os computadores dentro de uma
rede podem usar softwares e hardwares muito diferentes; entretanto, o uso de
protocolos permite que eles se comuniquem uns com os outros
independentemente dessas diferenças.
Protocolos de Rede
???
Água
Protocolos de Rede
Water
Protocolos de Rede
- HTTP (Hypertext Transfer Protocol)
- UDP (User Datagram Protocol)
- SMTP (Simple Mail Transfer Protocol)
- FTP(File Transfer Protocol)
- SSH (Secure Shell)
- DNS (Domain Name System)
- DHCP (Dynamic Host Configuration Protocol)
- etc…
Exemplo de uma simples Aplicação Web…
http://www.meusite.com.br/aplicacaoJava
IP
Web Server
Exemplo de uma simples Aplicação Web…
Redis
Protocol
MySQL
Client/Server
Protocol
MongoDB
Wire
Protocol
AMQP
Conhecendo o
Nginx é um servidor web e proxy reverso de código aberto, conhecido por sua
alta performance, escalabilidade e baixo consumo de recursos. Ele foi criado por
Igor Sysoev em 2004 e atualmente é mantido pelo Nginx, Inc.
- Alta Performance;
- Proxy Reverso;
- Balanceamento de Carga;
- Cache;
- Redirecionamentos e Rewrite de URLs;
- Suporte a SSL/TLS
- etc…
Conhecendo o
Alta Performance
O Nginx foi projetado desde o início para ser altamente eficiente e escalável. Ele
usa uma arquitetura de eventos assíncronos e não bloqueantes que permite lidar
com um grande número de conexões simultâneas com baixo consumo de
recursos. Isso o torna uma ótima escolha para servir conteúdo estático e
responder a muitas requisições HTTP ao mesmo tempo.
Conhecendo o
Proxy Reverso
Proxy Servidor de
Browser
Server Destino
Proxy Reverso
Servidor de
Browser
Destino
Conhecendo o
Balanceamento de Carga
Pedro Lista
Vanessa Lista
Cache
Conhecendo o
Vanessa Lista
Cache
Conhecendo o
Redirecionamentos e Rewrite de URLs
- http://www.site.com.br?secao=institucional&page=contato
- http://www.site.com.br/contato
- http://www.site.com.br/artigos.php&cat=91824&id=123994
- http://www.site.com.br/artigos/conhecendo-o-nginx
Conhecendo o
Suporte a SSL/TLS
1. Cliente Hello
2. Server hello (Including Certificate)
3. Client certificate request Servidor de
Browser
Destino
4. Client certificate
5. Client send key info
6. Certificate verify
7. Finished message
Finished message
Modelo 1: Aplicação Full Stack Monolítica
Modelo 2: Aplicação SPA + API Monolítica
Modelo 3: Aplicação SPA + API Distribuída
Quais as vantagens do padrão monolítico?
- Facilidade de manutenção do ambiente de desenvolvimento
- Escalabilidade vertical
- Escalabilidade horizontal
- Facilidade de Reuso
C) iFood
<script src="assets/scripts.js"></script>
</body>
</html>
Protocolo HTTP
http://localhost:8080/alunos/?page=2&size=20
Verbos HTTP
GET: Utilizado quando precisamos obter um ou mais recursos
POST: Utilizado quando precisamos criar um novo recurso
PATCH: Utilizado quando precisamos atualizar parcialmente um recurso
PUT: Utilizado quando precisamos atualizar por completo um recurso
DELETE: Utilizado quando precisamos excluir um recurso
Status Code HTTP
1XX: Informational Response
2XX: Successful Response
3XX: Redirection Response
4XX: Cliente Error Response
5XX: Server Error Response
Desenvolvimento com Spring Boot
package br.edu.unime.pauloreis.myapi;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyapiApplication {
}
Hello World com Spring Boot
package br.edu.unime.pauloreis.myapi.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloWorldController {
@GetMapping("/")
public String hello() {
return "Olá mundo!!!";
}
}
Exemplo de uso do Lombok
package br.edu.unime.pauloreis.myapi.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.time.LocalDate;
@Data
@AllArgsConstructor
public class Aluno {
}
package br.edu.unime.pauloreis.myapi.controller;
import br.edu.unime.pauloreis.myapi.entity.Aluno;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDate;
@RestController
public class AlunoController {
@GetMapping("/")
public Aluno index() {
LocalDate localDate = LocalDate.of(1985, 2, 6);
return new Aluno("Michael", "Jackson", localDate);
}
}
Exemplo de gravação no MongoDB
# application.properties
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=api_example
spring.data.mongodb.auditing.enabled=true
package br.edu.unime.api;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.mongodb.config.EnableMongoAuditing;
@SpringBootApplication
@EnableMongoAuditing
public class ApiApplication {
}
package br.edu.unime.pauloreis.myapi.entity;
import ...
@Data
@AllArgsConstructor
public class Aluno {
@CreatedDate
private LocalDateTime dataDeCriacao;
@LastModifiedDate
private LocalDateTime dataDeAtualizacao;
}
Recebendo dados do usuário
@PathVariable
@RequestParam
@RequestBody
@RequestHeader