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

1_3APIs

O documento aborda a programação e integração de sistemas, com foco em APIs, seus tipos, design e importância na comunicação entre diferentes plataformas. Ele explora conceitos fundamentais, desenvolvimento de APIs RESTful, autenticação, segurança, e a relevância das APIs na economia digital. A unidade também destaca a necessidade de habilidades em integração de sistemas para atender à demanda crescente na indústria de tecnologia.

Enviado por

marcos.vieira
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)
0 visualizações62 páginas

1_3APIs

O documento aborda a programação e integração de sistemas, com foco em APIs, seus tipos, design e importância na comunicação entre diferentes plataformas. Ele explora conceitos fundamentais, desenvolvimento de APIs RESTful, autenticação, segurança, e a relevância das APIs na economia digital. A unidade também destaca a necessidade de habilidades em integração de sistemas para atender à demanda crescente na indústria de tecnologia.

Enviado por

marcos.vieira
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

PROGRAMAÇÃO E

INTEGRAÇÃO DE
SISTEMAS
Unidade 3
API de integração
de sistemas
CEO

DAVID LIRA STEPHEN BARROS

Diretora Editorial
ALESSANDRA FERREIRA

Gerente Editorial

LAURA KRISTINA FRANCO DOS SANTOS

Projeto Gráfico

TIAGO DA ROCHA

Autoria

GISELLE AZEVEDO PINTO


Giselle Azevedo Pinto
AUTORIA

Olá. Sou Mestra em Engenharia de Produção, Pós-


graduada em Produção e Sistemas e Cybersegurança. Graduada
em Sistema de Informação. Instrutora NetAcad-Cisco. Sou
apaixonada pelo que faço e adoro transmitir minha experiência
de vida àqueles que estão iniciando em suas profissões. Por isso,
fui convidada pela Editora Telesapiens para integrar seu elenco
de autores independentes. Estou muito feliz em poder ajudar
você nesta fase de muito estudo e trabalho. Conte comigo!
Unidade 3

4 PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS


Esses ícones aparecerão em sua trilha de aprendizagem nos seguintes casos:

ÍCONES
No início do Caso haja a
desenvolvimento necessidade de
de uma nova apresentar um novo
OBJETIVO competência. DEFINIÇÃO conceito.

Quando são
Se as observações
necessárias
escritas tiverem que
observações ou
ser priorizadas.
NOTA complementações. IMPORTANTE

Se existirem
Se algo precisar ser curiosidades e

Unidade 3
melhor explicado ou indagações lúdicas
EXPLICANDO detalhado. sobre o tema em
MELHOR VOCÊ SABIA?
estudo.

Existência de Se for preciso acessar


textos, referências sites para fazer
bibliográficas e links downloads, assistir
para aprofundar seu vídeos, ler textos ou
SAIBA MAIS ACESSE
conhecimento. ouvir podcasts.

Se houver a
necessidade de Quando for preciso
chamar a atenção fazer um resumo
sobre algo a cumulativo das últimas
REFLITA ser refletido ou RESUMINDO abordagens.
discutido.

Quando alguma Quando uma


atividade de competência é
autoaprendizagem concluída e questões
ATIVIDADES for aplicada. TESTANDO são explicadas.

PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS 5


Fundamentos sobre API............................................................. 9
SUMÁRIO

O que são APIs e como funcionam................................................................... 9

Tipos de APIs......................................................................................... 11

Princípios do design de APIs............................................................................. 13

Importância das APIs na integração de sistemas......................................... 19

Desenvolvimento de API RESTful............................................ 22


Princípios do REST.............................................................................................. 22

Entendendo os métodos HTTP.......................................................... 24

Design e modelagem de APIs RESTful............................................................. 26

Teste e documentação de APIs RESTful........................................... 29


Unidade 3

Implementação e documentação de API....................................................... 31

Autenticação e segurança em API.......................................... 36


Princípios de autenticação e autorização...................................................... 36

Métodos de autenticação.................................................................................. 40

Certificados SSL/TLS........................................................................................... 43

Gerenciamento de vulnerabilidades e ataques comuns.............. 45

Microsserviços e arquiteturas distribuídas........................... 49


Princípios básicos de microsserviços e arquitetura distribuída................ 49

Comunicação e integração entre microsserviços......................................... 53

Padrões de integração........................................................................ 56

Gerenciamento de microsserviços.................................................................. 58

6 PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS


Você sabia que a área de integração de sistemas é uma
das mais demandadas na indústria de tecnologia? Isso mes-

APRESENTAÇÃO
mo! A área de APIs, elemento central na cadeia de integração
de sistemas de uma empresa, tem uma responsabilidade críti-
ca: possibilitar a comunicação eficaz entre diferentes sistemas
e plataformas, assegurando a interoperabilidade e a eficiência
operacional. Por meio da criação, gestão e manutenção de inter-
faces de programação de aplicações (APIs), os desenvolvedores
são capazes de construir sistemas mais robustos, seguros e es-
caláveis, permitindo a inovação contínua e adaptação às mudan-
ças rápidas do mercado. Com a ascensão da economia digital, a
importância das APIs na integração de sistemas se tornou ainda
mais evidente, abrindo portas para novas oportunidades de ne-
gócios, aprimoramento da experiência do usuário e otimização

Unidade 3
dos processos internos. Ao longo da unidade letiva, você vai mer-
gulhar nesse universo, explorando desde os fundamentos sobre
APIs até as práticas avançadas em arquiteturas distribuídas e
microsserviços. Prepare-se para desvendar os segredos por trás
da integração eficiente de sistemas e como essa habilidade se
tornou indispensável no cenário tecnológico atual.

PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS 7


Olá. Seja muito bem-vindo à Unidade 3. Nosso objetivo
é auxiliar você no desenvolvimento das seguintes competências
OBJETIVOS

profissionais até o término desta etapa de estudos:

1. Compreender os princípios fundamentais das APIs


- Application Programming Interface (interface de
programação de aplicações) e sua importância na
integração de sistemas;

2. Desenvolver APIs RESTful para comunicação entre


diferentes plataformas de software;

3. Implementar mecanismos de autenticação e segurança


em APIs;

4. Projetar e desenvolver arquiteturas baseadas em


Unidade 3

microsserviços, promovendo a modularidade e a


escalabilidade.

8 PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS


Fundamentos sobre API
Ao término do capítulo, você será capaz de enten-
der o que são as APIs, como elas funcionam e os
princípios fundamentais de seu design. Esta com-
preensão é fundamental para o exercício de sua
OBJETIVO
profissão, pois as APIs são a espinha dorsal da inte-
gração de sistemas modernos, possibilitando que
programas distintos se comuniquem de maneira
eficaz. E então? Motivado para desenvolver esta
competência? Vamos lá!

O que são APIs e como funcionam


Uma API, ou interface de programação de aplicações, é

Unidade 3
um conjunto de regras, protocolos e ferramentas para construir
software e aplicações. Essencialmente, uma API atua como uma
ponte entre diferentes sistemas de software, permitindo que eles
comuniquem entre si, sem a necessidade de saber como cada
um é construído internamente. Este conceito é importante no
desenvolvimento moderno de software, pois permite a integração
e a interoperabilidade entre diferentes sistemas e dispositivos de
uma maneira segura e eficiente.

O principal objetivo de uma API é fornecer uma interface


abstrata, por meio da qual as interações entre diferentes sistemas
de software podem ocorrer. Isso significa que, ao invés de sistemas
completos precisarem ser integrados de maneira complexa e
muitas vezes inviável, suas APIs podem simplesmente “conversar”
entre si. Isso simplifica o processo de integração, reduzindo o
tempo de desenvolvimento, os custos e aumentando a eficiência
operacional (Webber; Parastatidis; Robinson, 2010).

PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS 9


Imagem 3.1 – API
Unidade 3

Fonte: Freepik.

Quando você usa um aplicativo em seu smartphone para


verificar o clima, esse app utiliza uma API para se comunicar com
um servidor remoto, que fornece informações meteorológicas
atualizadas. O aplicativo não precisa saber como as informações
são coletadas ou como o servidor funciona internamente. Tudo o
que ele precisa saber é como solicitar essas informações por meio
da API. Isso ilustra a beleza das APIs: elas permitem que serviços
distintos e complexos sejam utilizados de maneira simples e direta.

Além de facilitar a comunicação entre diferentes


sistemas, as APIs também desempenham um
papel crucial na segurança. Elas podem controlar
o acesso aos recursos do sistema, garantindo que
IMPORTANTE
apenas solicitações autorizadas sejam atendidas.
Isso é conseguido por meio de mecanismos de
autenticação e autorização, como tokens de acesso
e chaves de API, que verificam a identidade do
solicitante antes de permitir o acesso aos dados ou
funcionalidades.

10 PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS


A eficiência é outro benefício chave das APIs. Ao permitir
que sistemas compartilhem dados e funcionalidades sem a neces-
sidade de duplicar recursos, as APIs reduzem significativamente a
quantidade de código que precisa ser escrita e mantida. Isso não
só economiza tempo e recursos, mas também minimiza o poten-
cial para erros e inconsistências.

No mundo do desenvolvimento de software, as APIs são


onipresentes. Elas são usadas não apenas na integração de
sistemas internos, mas também para permitir que aplicativos
acessem serviços e dados de terceiros. Por exemplo, redes sociais,
sistemas de pagamento on-line e aplicativos de mapeamento
oferecem APIs públicas, que desenvolvedores externos podem
usar para integrar esses serviços em seus próprios aplicativos

Unidade 3
(Fielding, 2000).

A importância das APIs na integração de sistemas é imen-


sa. Elas permitem que empresas de todos os tamanhos e setores
ampliem suas capacidades rapidamente, integrando-se a ecossis-
temas digitais mais amplos. Isso é especialmente relevante na era
da economia digital, em que a capacidade de se conectar e operar
conjuntamente com parceiros, fornecedores e clientes é crítica.

Tipos de APIs
As APIs (application programming interfaces) são essenciais
para a comunicação e integração entre diferentes sistemas de
software, permitindo que eles compartilhem dados e executem
funções entre si de maneira eficiente. Existem diversos tipos de
APIs, cada uma com características e usos específicos. Os princi-
pais tipos são: públicas, privadas, internas e parceiras. Vamos ex-
plorar cada um deles em detalhe.

PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS 11


1. APIs públicas:

As APIs públicas, também conhecidas como APIs externas


ou abertas, são disponibilizadas por organizações para serem uti-
lizadas por desenvolvedores externos. Essas APIs são projetadas
para ampliar o alcance dos serviços de uma empresa, permitindo
a criação de aplicações que podem interagir com seus dados ou
funcionalidades.

APIs públicas são frequentemente disponibilizadas por re-


des sociais, serviços de mapas e plataformas de pagamento para
permitir a integração de suas funcionalidades em outros aplica-
tivos e serviços. Elas são essenciais para o desenvolvimento de
ecossistemas digitais e fomentar a inovação, pois permitem que
terceiros criem soluções que agregam valor tanto para os usuários
Unidade 3

quanto para as empresas que as oferecem.


2. APIs privadas:

As APIs privadas, ou internas, são utilizadas internamen-


te dentro de uma organização. Elas são projetadas para melhorar
a eficiência e a comunicação entre diferentes sistemas e equipes
dentro da mesma empresa. Ao contrário das APIs públicas, elas
não são acessíveis por terceiros e servem para otimizar processos
internos, integração de sistemas internos e automação de tarefas.
Uma empresa pode usar uma API privada para conectar seu siste-
ma de gestão de recursos humanos com seu software de contabili-
dade, facilitando o compartilhamento automático de informações
relevantes entre esses sistemas.
3. APIs internas:

Embora às vezes o termo “API interna” seja usado como si-


nônimo de “API privada”, pode-se considerar uma nuance, na qual
as APIs internas são especificamente focadas em casos de uso den-
tro de uma organização. Isso inclui a integração de sistemas inter-
nos, facilitação da comunicação entre diferentes departamentos e
a criação de uma base para a digitalização de processos internos.

12 PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS


Elas são fundamentais para empresas que buscam uma transfor-
mação digital, pois permitem a criação de uma infraestrutura de
software coesa que suporta eficiência operacional e inovação.

4. APIs de parceiros:

As APIs de parceiros são um tipo intermediário entre


as APIs públicas e privadas. Elas são disponibilizadas para
um número restrito de parceiros externos, sob um acordo
específico. Esse tipo de API é utilizado para facilitar a integração
e a colaboração entre empresas e seus parceiros, permitindo o
acesso a dados ou funcionalidades específicas que não estão
disponíveis ao público geral.

Uma empresa de e-commerce pode oferecer uma API de

Unidade 3
parceiros para empresas de logística para facilitar o processo
de envio e rastreamento de pedidos, permitindo, assim, que as
empresas trabalhem juntas de maneira mais eficaz, criando
serviços integrados que beneficiam ambas as partes;

A escolha entre os tipos de APIs depende dos objetivos de


negócios, da estratégia de integração e da necessidade de com-
partilhamento de dados ou funcionalidades. As APIs públicas são
fundamentais para expandir o alcance dos serviços, enquanto as
APIs privadas e internas são cruciais para otimizar operações in-
ternas. As APIs de parceiros, por sua vez, permitem colaborações
estratégicas que podem abrir novos caminhos para inovação e
crescimento.

Princípios do design de APIs


Os padrões de design de API desempenham um papel
crucial no desenvolvimento de aplicações modernas, facilitando
a comunicação e integração entre diferentes sistemas. Entre os

PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS 13


mais comuns estão REST, GraphQL e SOAP. Cada um possui ca-
racterísticas únicas, com suas vantagens e desvantagens, adap-
tando-se a diferentes necessidades de projetos.

1. REST (representational state transfer):

REST é um estilo arquitetônico que utiliza os métodos


HTTP para operações CRUD (criar, ler, atualizar, deletar). As APIs
RESTful são stateless, ou seja, cada requisição deve conter todas
as informações necessárias para ser compreendida pelo servidor,
sem que este guarde qualquer estado do cliente.

Vantagens:

• Simplicidade e facilidade de uso: utiliza métodos HTTP


bem conhecidos (GET, POST, PUT, DELETE);
Unidade 3

• Flexibilidade: pode retornar dados em vários formatos,


como JSON, XML, YAML;

• Escalabilidade: devido sua natureza ser stateless, é mais


fácil de escalar.

Desvantagens:

• Gerenciamento de estado: como é stateless, pode não


ser ideal para aplicações que requerem um gerencia-
mento de estado contínuo;

• Padronização: apesar de existirem melhores práticas,


não há uma padronização estrita, podendo levar a
inconsistências entre diferentes APIs RESTful.

EXEMPLO: uma API REST para um blog pode permitir que


você busque posts com um GET para `/posts`, crie um
novo post com POST para `/posts`, atualize um post com
PUT para `/posts/{id}` e delete um post com DELETE para
`/posts/{id}`.

14 PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS


2. GraphQL:

Desenvolvido pelo Facebook, GraphQL permite que os


clientes definam a estrutura dos dados requeridos, e o servidor
retorna apenas os dados especificados, em uma única requisição.

Vantagens:

• Eficiência de dados - reduz o over-fetching e under-


fetching, pois permite que os clientes solicitem
exatamente o que precisam;

• Desenvolvimento rápido de front-end - como os front-


ends podem solicitar dados específicos, isso pode
acelerar o desenvolvimento;

Unidade 3
• Introspecção - suporta a introspecção, permitindo que
as ferramentas gerem consultas automaticamente.

Desvantagens:

• Complexidade de implementação - pode ser mais


complexo para implementar no lado do servidor;

• Performance em consultas complexas - consultas


muito aninhadas ou complexas podem impactar a
performance;

Em uma API GraphQL para um serviço de música, um


cliente pode solicitar detalhes específicos de uma música, como
nome e artista, em uma única requisição, sem receber informações
desnecessárias sobre o álbum ou a gravadora.

3. SOAP (simple object access protocol)

SOAP é um protocolo baseado em XML para troca de


informações entre computadores. É independente de linguagem
e plataforma, e pode ser usado com qualquer protocolo de
transporte, como HTTP, SMTP, TCP etc.

PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS 15


Vantagens:

• Segurança - suporta recursos avançados de segurança


por meio de WS-Security;

• Padronização - é um protocolo padrão com


especificações rigorosas;

• Extensibilidade - pode ser estendido para atender a


requisitos específicos.

Desvantagens:

• Verbosidade - mensagens SOAP podem ser grandes e


pesadas, devido ao uso do XML;

• Complexidade - mais complexo de desenvolver e con-


Unidade 3

sumir em comparação com REST e GraphQL.

Um serviço de verificação de crédito pode usar SOAP


para permitir que instituições financeiras enviem solicitações
de verificação de crédito, incluindo informações detalhadas
do solicitante em um formato XML rigorosamente definido, e
receberem respostas com os detalhes da verificação de crédito.
Imagem 3.2 – Boas práticas de desenvolvimento de APIs

Fonte: Freepik.

16 PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS


As boas práticas no desenvolvimento de APIs são essen-
ciais para garantir que estas sejam fáceis de usar, manter e esca-
lar. Uma API bem projetada pode significativamente melhorar a
experiência do desenvolvedor (DX) e facilitar a integração entre
sistemas. Entre as práticas mais recomendadas estão a docu-
mentação clara, o versionamento cuidadoso e a adesão a prin-
cípios de design, como os do RESTful design, para criar interfaces
consistentes e intuitivas.

Uma documentação clara e detalhada é, possivelmente,


o aspecto mais crítico de uma API bem-sucedida. Ela deve ser
fácil de entender e fornecer exemplos de código que ajudem os
desenvolvedores a começar rapidamente. A documentação deve
incluir:

Unidade 3
• Uma visão geral da API - o que ela faz e quais problemas
resolve;

• Detalhes de endpoints - métodos HTTP suportados,


parâmetros de requisição, formatos de resposta, códigos
de status HTTP esperados e mensagens de erro;

• Guias de início rápido e tutoriais - passo a passo para


realizar tarefas comuns;

• Exemplos de código - preferencialmente, em várias


linguagens de programação;

Ferramentas como Swagger (OpenAPI) podem automa-


tizar a criação de documentação interativa, permitindo que os
desenvolvedores testem a API diretamente da interface da docu-
mentação.

O versionamento de API é crucial para evitar a quebra de


aplicações existentes quando são feitas mudanças na API. Existem
várias abordagens para versionar uma API, incluindo:

PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS 17


• Versionamento no URL - inserir a versão da API no
caminho do URL, como `/api/v1/resource`.

• Versionamento nos cabeçalhos HTTP - usar cabeçalhos


customizados para controlar a versão.

• Versionamento no corpo da requisição/resposta -


especificar a versão dentro do corpo da requisição ou
resposta em JSON ou XML.

Independentemente do método escolhido, é importante


comunicar claramente as políticas de versionamento, e garantir
que as mudanças sejam compatíveis com versões anteriores
sempre que possível.

Adotar princípios RESTful no design de API ajuda a criar


Unidade 3

interfaces consistentes e intuitivas. Alguns desses princípios


incluem:

• Uso adequado dos métodos HTTP - GET para buscar


dados, POST para criar, PUT para atualizar, e DELETE
para remover;

• Recursos como substantivos - usar substantivos para


identificar recursos, e não verbos;

• Representações stateless de recursos - cada requisição


deve conter todas as informações necessárias para ser
compreendida por si só;

• Uso de códigos de resposta HTTP apropriados - para


comunicar o sucesso ou falha de uma requisição de
forma padronizada;

• HATEOAS (hypertext as the engine of application state) -


incluir links nas respostas da API para guiar o cliente
para outros recursos relacionados.

18 PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS


Além dessas práticas, é importante considerar a segu-
rança desde o início do desenvolvimento da API, implementando
autenticação, autorização, limitação de taxa e outras medidas de
segurança, conforme necessário.

Importância das APIs na


integração de sistemas
As APIs são componentes críticos na integração de siste-
mas distintos, atuando como pontes que facilitam a comunica-
ção e o compartilhamento de dados entre programas diferentes.
Elas desempenham um papel fundamental na criação de ecos-
sistemas digitais complexos, em que aplicativos e sistemas po-
dem interagir uns com os outros de maneira eficiente, segura e

Unidade 3
escalável.

A importância das APIs na integração de sistemas se


manifesta em vários aspectos. Primeiramente, elas permitem
que diferentes sistemas troquem dados e funcionalidades sem
a necessidade de reescrever ou modificar profundamente o
código existente. Isso significa que uma aplicação de e-commerce,
por exemplo, pode integrar-se facilmente com um sistema de
pagamento externo ou um serviço de logística, sem a necessidade
de compreender ou acessar diretamente o código-fonte desses
serviços. As APIs fornecem uma camada de abstração que simplifica
essa interação, permitindo que os sistemas se comuniquem por
meio de chamadas de API bem definidas.

Além disso, as APIs facilitam o compartilhamento de


dados em tempo real, o que é essencial, em um mundo que a
velocidade e a atualidade da informação são críticas.

PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS 19


EXEMPLO: APIs de redes sociais permitem que aplicativos
de terceiros acessem dados de usuário (com a permissão
apropriada), possibilitando a criação de experiências
personalizadas e integradas. Da mesma forma, APIs
financeiras permitem a troca segura de informações de
conta e transações entre bancos e aplicativos de fintech,
promovendo a inovação e a concorrência no setor
financeiro.

A construção de ecossistemas digitais complexos é outro


aspecto importante facilitado pelas APIs, pois elas permitem que
diferentes componentes de software, seja internamente dentro de
uma organização ou entre parceiros comerciais, governos e con-
sumidores, se conectem e colaborem de maneira harmoniosa.
Unidade 3

Isso é evidente no conceito de economia de API, em que empresas


constroem e expõem APIs para permitir que serviços externos ex-
pandam suas funcionalidades ou criem novos produtos e serviços.
Uma API de geolocalização pode ser usada por diferentes aplicati-
vos para fornecer informações de localização em tempo real, en-
quanto uma API de machine learning pode ser oferecida para que
desenvolvedores incorporem capacidades de inteligência artificial
em suas aplicações.

20 PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS


E então? Gostou do que lhe mostramos? Aprendeu
mesmo tudinho? Agora, só para termos certeza de
que você realmente entendeu o tema de estudo
RESUMINDO deste capítulo, vamos resumir tudo o que vimos.
Você deve ter aprendido que as APIs, ou interfa-
ces de programação de aplicações, são essenciais
para a comunicação entre diferentes sistemas de
software, atuando como intermediárias que permi-
tem essa interação de maneira segura e eficiente.
Abordamos como elas funcionam, destacando sua
capacidade de simplificar e padronizar a troca de
informações entre sistemas, o que é fundamental
em um cenário tecnológico cada vez mais integra-
do. Discutimos, também, os princípios do design
de APIs, incluindo a importância de seguir padrões

Unidade 3
e boas práticas para criar interfaces claras, con-
sistentes e fáceis de usar. Por fim, ressaltamos a
importância das APIs na integração de sistemas,
enfatizando como elas são indispensáveis na cons-
trução de ecossistemas digitais complexos. Graças
às APIs, é possível que programas distintos com-
partilhem dados e funcionalidades sem a necessi-
dade de desenvolver soluções personalizadas para
cada nova integração, promovendo inovação e efi-
ciência operacional.

PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS 21


Desenvolvimento de API
RESTful
Ao término do capítulo, você será capaz de en-
tender como funciona o desenvolvimento de APIs
RESTful, uma competência crucial para a comuni-
cação entre diferentes plataformas de software.
OBJETIVO
Isto será fundamental para o exercício de sua pro-
fissão, pois as APIs RESTful são a espinha dorsal de
muitas aplicações modernas na web e em disposi-
tivos móveis. E então? Motivado para desenvolver
esta competência? Vamos lá!

Princípios do REST
Unidade 3

Os princípios do REST, ou transferência de estado repre-


sentacional (representational state transfer), são fundamentais para
o desenvolvimento de APIs na web. REST é um estilo arquitetônico,
definido por Roy Fielding, em sua dissertação de doutorado em
2000, que estabelece um conjunto de constraints para criar servi-
ços web eficientes, escaláveis e fáceis de usar. Vamos explorar os
princípios-chave que compõem a arquitetura REST:

1. Interface Uniforme

A interface uniforme é a espinha dorsal do REST, garan-


tindo que a comunicação entre cliente e servidor siga um padrão
consistente. Esse princípio é composto por quatro diretrizes:

• Identificação de recursos: cada recurso deve ser iden-


tificável de forma única por meio de URIs. Isso significa
que cada item ou entidade no sistema é acessado e ma-
nipulado usando um endpoint específico;

22 PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS


• Representações de recursos: os recursos podem ter
várias representações (como JSON, XML, HTML), e o
cliente e o servidor negociam para determinar a melhor
forma de representar os dados durante a comunicação;

• Mensagens autoexplicativas: as mensagens de requi-


sição e resposta devem conter todas as informações
necessárias para compreender a mensagem, incluindo
metadados sobre a representação dos dados e infor-
mações de controle como cache;

• HATEOAS (hypermedia as the engine of application state):


Os clientes interagem com a API por meio de hiperlinks,
fornecidos dinamicamente, para descobrir ações dispo-
níveis e navegar entre estados da aplicação sem conhe-

Unidade 3
cimento prévio da estrutura da API.

2. Cliente-Servidor

Este princípio enfatiza a separação de preocupações


entre a interface do usuário (cliente) e o armazenamento de
dados (servidor), o que melhora a portabilidade da interface do
usuário em várias plataformas e a escalabilidade ao simplificar os
componentes do servidor.

3. Stateless

Cada requisição do cliente ao servidor deve conter todas as


informações necessárias para entender e completar a requisição.
O servidor não armazena nenhum estado de sessão sobre o
cliente entre as requisições. Isso aumenta a confiabilidade e a
visibilidade, mas requer que os dados de cliente sejam enviados
a cada requisição.

PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS 23


4. Cacheável

As respostas às requisições devem ser explicitamente


marcadas como cacheáveis ou não, permitindo que clientes e
intermediários armazenem respostas anteriormente obtidas para
aumentar a eficiência e reduzir a latência.

5. Sistema em camadas

O cliente não precisa saber se está se comunicando direta-


mente com o servidor final ou com um intermediário. Isso permi-
te uma arquitetura em camadas que facilita o balanceamento de
carga, a implementação de gateways de segurança e a adição de
camadas de abstração.

6. Código sob demanda (opcional)


Unidade 3

Os servidores podem temporariamente estender ou


personalizar a funcionalidade de um cliente, transferindo código
executável (por exemplo, scripts). Este é o único princípio opcional
e, quando usado, pode tornar a aplicação mais flexível e adaptável.

A adesão de princípios do REST permite o desenvolvimento


de APIs web, que são intuitivas e fáceis de usar, promovendo a
interoperabilidade entre sistemas e facilitando a evolução do
sistema ao longo do tempo.

Entendendo os métodos HTTP


No desenvolvimento de APIs RESTful, compreender os
métodos HTTP é fundamental, pois eles definem a natureza da
operação que está sendo solicitada ao servidor. Cada método
tem um propósito específico, alinhado com as operações CRUD
(CREATE, READ, UPDATE, DELETE), essenciais para a manipulação
de dados. Vamos explorar a importância e o uso de cada um
destes métodos HTTP.

24 PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS


• GET

O método GET é usado para solicitar a representação


de um recurso específico. Ele é utilizado para ler ou recuperar
dados, sem causar efeito colateral (ou seja, não altera o estado
do recurso). Em termos de operações CRUD, o GET corresponde à
operação READ. Por exemplo, ao acessar a URL de uma API para
obter detalhes de um usuário, como `GET /api/users/123`, você
está solicitando os dados do usuário com o ID 123, sem modificar
esses dados.

• POST

O método POST é utilizado para criar um novo recurso


no servidor. Ele é empregado quando você deseja adicionar um

Unidade 3
novo elemento à sua base de dados ou sistema. Em termos CRUD,
corresponde à operação CREATE. Por exemplo, ao enviar dados
de um novo usuário para `POST /api/users`, você está instruindo
a API a criar um novo usuário com os dados fornecidos no corpo
da requisição.

• PUT

O método PUT é usado para atualizar um recurso existente


ou criar um novo se o especificado não existir. Diferentemente do
POST, que é usado para criar um novo recurso sem especificar
o ID, o PUT geralmente é utilizado para atualizar um recurso
completo com base em seu identificador. Em termos CRUD, o PUT
corresponde à operação UPDATE. Por exemplo, ao enviar uma
requisição `PUT /api/users/123` com os dados atualizados do
usuário, você está solicitando a substituição dos dados do usuário
com ID 123 pelos novos dados fornecidos.

• DELETE

O método DELETE é utilizado para remover um recurso


especificado. Ele corresponde à operação delete no modelo CRUD.

PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS 25


Quando você envia uma requisição `DELETE /api/users/123`, está
instruindo a API a remover o usuário com o ID 123 da base de
dados.

• PATCH

O método PATCH é usado para aplicar atualizações


parciais a um recurso. Diferentemente do PUT, que substitui o
recurso inteiro, o PATCH modifica apenas as partes do recurso
especificadas na requisição. Isso é útil para atualizações que
afetam apenas alguns campos do recurso. Em termos CRUD, o
PATCH também corresponde à operação UPDATE, mas de uma
forma mais granular. Por exemplo, se você deseja atualizar apenas
o endereço de e-mail de um usuário sem alterar outros detalhes,
enviaria uma requisição `PATCH /api/users/123` com o novo
Unidade 3

endereço de e-mail no corpo da requisição.

Cada um dos métodos HTTP desempenha um papel vital


na arquitetura RESTful, permitindo que desenvolvedores criem
interfaces de programação claras e eficientes para a manipulação
de dados. Ao usar corretamente os métodos, é possível
desenvolver APIs que não apenas seguem os padrões da web, mas
também oferecem uma experiência consistente e intuitiva para os
desenvolvedores que as consomem.

Design e modelagem de APIs


RESTful
No design e modelagem de APIs RESTful, a definição
correta de recursos é um dos passos mais críticos e fundamentais.
Recursos são os principais conceitos ou entidades com os quais
a API interage. Na arquitetura REST, tudo é considerado um
recurso – seja um documento, uma imagem, uma coleção de
outros recursos – ou até mesmo um serviço transacional. Cada
recurso é identificado unicamente por meio de um URI (uniform

26 PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS


resource identifier). Identificar corretamente os recursos em uma
API RESTful e modelá-los utilizando URIs permite que a API seja
intuitiva, escalável, e fácil de usar, tanto para desenvolvedores
quanto para os clientes da API.
Imagem 3.3 – Recursos e API

Unidade 3
Fonte: Freepik.

A identificação correta dos recursos é crucial por várias


razões:
• Intuitividade - uma boa identificação de recursos torna
a API mais compreensível. Usuários da API podem facil-
mente inferir o que um determinado URI representa e
como interagir com ele;
• Organização - recursos bem definidos ajudam na
organização lógica da API, facilitando a manutenção e
a expansão futura;
• Escalabilidade - uma API com recursos claramente iden-
tificados pode ser mais facilmente escalada, permitindo
que novos recursos sejam adicionados ou modificados
sem afetar os existentes;

PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS 27


• Interoperabilidade - recursos bem modelados promo-
vem uma maior interoperabilidade entre diferentes
sistemas, pois seguem um padrão reconhecível e con-
sistente.

Modelar recursos utilizando URIs envolve várias práticas


recomendadas:

• Use substantivos plurais para coleções - represente


coleções de recursos com substantivos no plural. Por
exemplo, use `/users` para representar todos os
usuários e `/products` para todos os produtos;

• Utilize substantivos singulares ou plurais para recursos


específicos - quando se refere a um recurso específico,
Unidade 3

você pode usar o singular ou o plural, dependendo do


que parece mais lógico para sua API, mas mantenha a
consistência. Por exemplo, `/users/123` para acessar
informações do usuário com ID 123;

• Hierarquia de recursos - estruture os URIs para refletir


a hierarquia dos recursos. Por exemplo, `/users/123/
posts` pode representar todos os posts do usuário com
ID 123. Essa estrutura hierárquica ajuda a entender as
relações entre recursos;

• Use query parameters para filtragem - para operações que


buscam filtrar recursos ou modificar a representação
de um recurso, utilize parâmetros de consulta. Por
exemplo, `/products?category=books` para filtrar
produtos pela categoria de livros;

• Evite usar verbos nos URIs - a ação sobre os recursos


deve ser indicada pelo método HTTP (GET, POST, PUT,
DELETE) e não pelo URI. Portanto, evite URIs como `/
getUser` ou `/deleteProduct`.

28 PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS


Identificar e modelar recursos corretamente em uma API
RESTful não é apenas sobre seguir convenções. Trata-se de criar
uma interface clara e eficiente para a comunicação entre diferentes
sistemas de software. Ao dedicar uma atenção cuidadosa para a
definição de recursos e na modelagem de URIs, desenvolvedores
podem garantir que suas APIs sejam robustas, flexíveis e fáceis de
utilizar.

Teste e documentação de APIs RESTful


No desenvolvimento de APIs RESTful, testar a funcionali-
dade e a conformidade com os requisitos é essencial para garan-
tir a qualidade e a confiabilidade da interface de programação.
Ferramentas de teste de APIs, como Postman e Swagger (agora

Unidade 3
conhecido como OpenAPI), desempenham um papel fundamen-
tal nesse processo, oferecendo um ambiente rico para testar, va-
lidar e documentar APIs. Vamos explorar como tais ferramentas
são utilizadas no contexto de testes de APIs RESTful.

1. Postman

Postman é uma das ferramentas mais populares e versá-


teis para o desenvolvimento e teste de APIs RESTful. Ela permite
aos desenvolvedores criar, compartilhar, testar e documentar
APIs de forma eficiente. O Postman oferece uma interface de
usuário gráfica intuitiva que facilita a criação de requisições, a
definição de parâmetros, cabeçalhos e corpos de mensagem,
além de visualizar as respostas da API.

• Como utilizar:

- Criação de coleções - o Postman permite organizar


requisições em coleções, facilitando o gerenciamento de múltiplos
endpoints de uma API;

PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS 29


- Testes automatizados - os usuários podem escrever
scripts de teste em JavaScript para validar a resposta das requisi-
ções, verificando status de respostas, validade dos dados retorna-
dos e tempos de resposta, entre outros;

- Variáveis de ambiente - facilita a troca entre diferentes


ambientes de desenvolvimento, teste e produção, ajustando URLs
base e tokens de autenticação, por exemplo;

- Documentação e compartilhamento - o Postman permite


gerar e compartilhar documentação de APIs de forma automatiza-
da, facilitando a colaboração entre equipes.

2. Swagger (OpenAPI)

Swagger é uma especificação para arquivos de definição


Unidade 3

de APIs RESTful, permitindo que desenvolvedores descrevam a


estrutura de suas APIs de forma que possam ser compreendidas
por humanos e máquinas. A partir de um arquivo Swagger, é
possível gerar documentação interativa, clientes de API em várias
linguagens e até mesmo simular uma implementação da API para
fins de teste.

• Como Utilizar:

- Design first - com o Swagger, é possível adotar a


abordagem de design first, modelando a API no Swagger Editor
antes de escrever qualquer código. Isso ajuda a garantir que a API
atenda aos requisitos e às expectativas dos consumidores;

- Swagger UI - uma vez que a API é definida com Swagger,


o Swagger UI pode ser utilizado para gerar uma documentação
interativa da API. Essa documentação permite que desenvolvedo-
res e testadores interajam com a API diretamente por meio do
navegador, facilitando a compreensão e o teste de seus endpoints;

30 PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS


- Validação e conformidade - o Swagger oferece ferramen-
tas como o Swagger Validator, que podem ser usadas para veri-
ficar se a implementação da API está em conformidade com sua
definição Swagger.

Ambas as ferramentas, Postman e Swagger, são comple-


mentares no ciclo de desenvolvimento de APIs RESTful. Enquan-
to o Postman é excelente para testes manuais e automatizados,
oferecendo um ambiente rico para experimentação e validação
rápida, o Swagger se destaca na modelagem inicial da API, docu-
mentação e validação de conformidade.

Implementação e documentação
de API

Unidade 3
A escolha das tecnologias adequadas para o desenvolvi-
mento de uma API é um passo crucial, que pode determinar o
sucesso ou o fracasso do seu projeto. A decisão deve levar em
conta uma série de fatores, incluindo a facilidade de uso, a co-
munidade e o suporte disponíveis, a performance, a segurança e
a capacidade de integração com outras ferramentas e sistemas.
Vamos explorar esses critérios e apresentar exemplos práticos
de tecnologias frequentemente escolhidas para o desenvolvi-
mento de APIs.

A curva de aprendizado e a facilidade de uso são


importantes, especialmente se a equipe tiver prazos apertados.
Ferramentas e frameworks (Hardt, 2012) que oferecem uma
inicialização rápida de projetos, por meio de scaffolding ou
geradores de código, podem ser muito valiosos.

EXEMPLO: [Link]: Um framework minimalista e flexível


para [Link] que facilita a construção de APIs RESTful com
JavaScript.

PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS 31


Flask: Um micro-framework para Python que é leve e fácil
de aprender, ideal para pequenos e médios projetos de
API.

Uma comunidade ativa pode ser uma fonte valiosa


de suporte e recursos. Frameworks e linguagens com grandes
comunidades geralmente têm uma ampla gama de tutoriais,
fóruns, e plugins/extensões disponíveis.

EXEMPLO: Spring Boot: para aplicações Java, o Spring Boot


oferece um vasto ecossistema, extensa documentação e
uma comunidade muito ativa.

Django REST Framework: para desenvolvedores Python


Unidade 3

trabalhando em projetos mais complexos, o Django REST


Framework oferece uma poderosa abstração para criar
APIs, com uma grande comunidade e muitos recursos.

Performance

A performance é crucial para APIs que esperam alto tráfego


ou requerem tempos de resposta rápidos. A escolha da linguagem
e do framework podem impactar significativamente a performance.

EXEMPLO: Go (Golang): conhecido por sua eficiência e


performance, Go é uma excelente escolha para APIs que
precisam de alta performance e escalabilidade.

FastAPI: um framework moderno e rápido (baseado em


Starlette) para construção de APIs com Python, oferecendo
performance comparável a NodeJS e Go.

A documentação é um componente essencial no desen-


volvimento de APIs RESTful, agindo como o principal ponto de co-
municação entre a API e seus consumidores. Uma documentação

32 PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS


clara, concisa e completa não apenas facilita a compreensão e o
uso da API por desenvolvedores terceiros, mas também acelera a
integração, reduz a curva de aprendizado e minimiza o potencial
de uso incorreto. Além disso, uma boa documentação pode sig-
nificativamente reduzir o número de solicitações de suporte, per-
mitindo que os desenvolvedores encontrem respostas para suas
perguntas sem precisar de assistência direta.

Uma documentação bem elaborada deve incluir:

• Uma visão geral da API - uma introdução sobre o que a


API faz, casos de uso e qualquer informação relevante
que os desenvolvedores precisem saber antes de
começar;

Unidade 3
• Autenticação e autorização - explicação clara dos méto-
dos de autenticação e autorização, incluindo exemplos
de como obter e usar tokens de acesso, se aplicável;

• Endpoints e métodos - uma lista detalhada de todos os


endpoints, incluindo os métodos HTTP suportados (GET,
POST, PUT, DELETE, PATCH) e os parâmetros esperados
para cada um;

• Exemplos de requisições e respostas - exemplos


concretos de como realizar requisições e as respostas
esperadas, incluindo códigos de status HTTP;

• Erros - uma descrição dos possíveis erros que podem


ser retornados pela API, incluindo códigos de erro e sua
significância;

• Limites de uso - informações sobre quaisquer


limitações de uso, como limites de taxa de requisições
(rate limiting).

PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS 33


Para facilitar a criação e a manutenção da documentação
de APIs, várias ferramentas estão disponíveis. Elas podem auto-
matizar parte do processo de documentação, garantindo que a
documentação permaneça atualizada com as alterações na API.

• Swagger (OpenAPI) - uma das ferramentas de


documentação de API mais populares, o Swagger
permite aos desenvolvedores definir a estrutura da
API usando o padrão OpenAPI, que é um formato de
descrição de API para APIs REST.

• Postman - inicialmente, sendo uma ferramenta para


testar APIs, o Postman cresceu para se tornar uma
solução abrangente para desenvolvimento de API,
incluindo recursos para documentação.
Unidade 3

• Redoc - uma ferramenta de código aberto que gera


documentação de API a partir de especificações
OpenAPI, oferecendo uma interface limpa e responsiva.

A adoção de ferramentas de documentação como Swagger


ou OpenAPI não apenas melhora a qualidade da documentação,
mas também integra a documentação no ciclo de vida do desen-
volvimento da API, garantindo que qualquer atualização na API
seja refletida automaticamente na documentação. Isso contribui
para uma experiência de desenvolvedor mais fluida e eficiente,
promovendo a adoção e o uso correto da API.

34 PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS


E então? Gostou do que lhe mostramos? Aprendeu
mesmo tudinho? Agora, só para termos certeza de
que você realmente entendeu o tema de estudo
RESUMINDO deste capítulo, vamos resumir tudo o que vimos.
Você deve ter aprendido que o desenvolvimento
de APIs RESTful é um processo crítico e sofisticado,
que desempenha um papel fundamental na comu-
nicação entre diferentes plataformas de software,
permitindo que sistemas distintos compartilhem
dados e funcionalidades de maneira eficiente e se-
gura. Exploramos os fundamentos que regem a ar-
quitetura RESTful, incluindo a importância de uma
interface uniforme, a comunicação stateless entre
cliente e servidor, o uso de representações padro-
nizadas para trocar dados, e a navegação entre

Unidade 3
recursos por meio de hiperlinks (HATEOAS). Discu-
timos como identificar e modelar corretamente os
recursos da sua API, utilizando URIs para represen-
tá-los de forma lógica e hierárquica. Enfatizamos a
importância de adotar convenções de nomencla-
tura consistentes, usar substantivos para nomear
recursos, e aplicar métodos HTTP apropriadamen-
te, para refletir as ações que podem ser realizadas
sobre esses recursos. Por fim, abordamos a imple-
mentação prática de APIs RESTful, destacando a
importância de escolher as tecnologias e framewor-
ks apropriados que suportem os princípios REST.

PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS 35


Autenticação e segurança em
API
Ao término do capítulo, você será capaz de
entender como funciona a implementação de
mecanismos de autenticação e segurança em
APIs. Isto será fundamental para o exercício de sua
OBJETIVO
profissão. As pessoas que tentam desenvolver ou
integrar APIs sem a devida instrução em segurança
podem ter problemas ao expor dados sensíveis e
sofrer ataques que comprometem a integridade
dos sistemas. E então? Motivado para desenvolver
esta competência? Vamos lá!

Princípios de autenticação e
Unidade 3

autorização
A autenticação e a autorização são dois conceitos funda-
mentais na segurança de sistemas e APIs, mas servem a propó-
sitos distintos. A autenticação é o processo de verificar a iden-
tidade de um usuário, dispositivo ou qualquer outra entidade
tentando acessar um sistema, confirmando se são quem dizem
ser. Isso geralmente é feito por meio de credenciais, como nome
de usuário e senha, tokens de acesso, métodos de autenticação
biométrica, entre outros. Uma vez que a identidade é verificada,
o usuário está autenticado (Stallings; Brown, 2018).

Por outro lado, a autorização ocorre após a autenticação


ser bem-sucedida, determinando o que um usuário autenticado
está permitido fazer dentro do sistema. Isso envolve verificar
as permissões do usuário para acessar recursos específicos ou
realizar certas ações. A autorização define o nível de acesso ou
as operações que podem ser realizadas por um usuário, grupo

36 PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS


de usuários ou entidade, baseando-se em políticas de controle
de acesso, como listas de controle de acesso (ACLs), modelos
baseados em funções (RBAC) ou modelos baseados em atributos
(ABAC).
Imagem 3.4 – Autenticação e autorização

Unidade 3
Fonte: Freepik.

A autenticação serve como a primeira linha de defesa em


sistemas de segurança, assegurando que apenas usuários, dis-
positivos ou entidades verificadas tenham acesso. Esse processo
não apenas verifica a identidade com base em credenciais forne-
cidas, mas também pode envolver múltiplos fatores para aumen-
tar a segurança. Estes, podem incluir algo que o usuário sabe
(senha ou PIN), algo que o usuário possui (um token de segurança
ou aplicativo de autenticação no smartphone), ou algo que é ine-
rente ao usuário (biometria, como impressões digitais ou reco-
nhecimento facial). A implementação de múltiplos fatores de au-
tenticação (MFA) é uma prática recomendada, que adiciona uma
camada adicional de segurança, dificultando significativamente o
acesso não autorizado.

PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS 37


Uma vez que a autenticação seja concluída com suces-
so, a autorização determina o escopo de acesso do usuário ou
entidade autenticada. Trata-se de um processo crucial para ga-
rantir que os usuários tenham acesso apenas aos recursos e da-
dos apropriados para seu papel ou função dentro do sistema.
A autorização pode ser dinâmica e context-dependente, varian-
do de acordo com várias condições, como o nível de segurança
dos dados solicitados, a localização do usuário, ou até mesmo o
horário da solicitação. Políticas de autorização bem definidas e
implementadas são essenciais para proteger dados sensíveis e
recursos críticos do sistema contra acessos indevidos ou abusos.

Enquanto a autenticação estabelece a identidade


de um usuário, a autorização define o que esse
Unidade 3

usuário pode fazer. Uma analogia simples é com-


parar a autenticação a entrar em um prédio usan-
IMPORTANTE
do um crachá (prova de identidade), enquanto a
autorização seria como ter chaves para diferentes
salas dentro do prédio (acesso para recursos es-
pecíficos).

Essa distinção é fundamental na concepção de sistemas


seguros, pois ajuda implementar o princípio de menor privilégio,
garantindo que os usuários tenham apenas o nível de acesso
estritamente necessário para realizar suas tarefas.

A compreensão profunda desses processos não apenas


fortalece a segurança dos sistemas, mas também suporta a
conformidade com regulamentos de privacidade de dados e
padrões de segurança, como GDPR, HIPAA, e PCI DSS, que exigem
um controle rigoroso sobre quem pode acessar informações
sensíveis e como essas informações podem ser utilizadas.

Entender a distinção entre autenticação e autorização, é


fundamental para a construção de sistemas de informação segu-
ros e eficazes, abrangendo APIs, aplicações web e infraestruturas

38 PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS


de TI. Esta compreensão não apenas reforça a base de segurança
de um sistema, mas também direciona o desenvolvimento de po-
líticas e procedimentos destinados a mitigar uma ampla gama de
ameaças de segurança.

A autenticação e a autorização são essenciais para uma


estratégia de segurança em múltiplas camadas, servindo como
as camadas fundamentais que regulam o acesso aos recursos do
sistema. Uma clara compreensão desses processos é vital para
estabelecer uma fundação segura, em que se podem construir
camadas adicionais de proteção, como a criptografia de dados, o
monitoramento de segurança e a gestão de incidentes.

A diferenciação entre autenticação e autorização também


permite a personalização das políticas de segurança para atender

Unidade 3
às necessidades específicas de cada sistema ou aplicação. Sistemas
que manipulam dados altamente sensíveis podem necessitar de
métodos de autenticação mais estritos e políticas de autorização
mais detalhadas, enquanto sistemas menos críticos podem adotar
abordagens mais flexíveis. É uma personalização chave para
prevenir violações de dados, garantindo que apenas usuários
autorizados tenham acesso a informações sensíveis e possam
realizar operações críticas. Políticas de autorização bem definidas
limitam o dano potencial se uma conta for comprometida,
aplicando o princípio do menor privilégio.

PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS 39


Para entender mais sobre os princípios de
autenticação e autorização, indicamos assistir ao
vídeo: “entendendo os conceitos de autenticação e
autorização”. Acesse pelo QR Code.
SAIBA MAIS

Um entendimento sólido de autenticação e autorização


facilita a criação de serviços seguros, que ao mesmo tempo, são
amigáveis ao usuário. Sistemas modernos de autenticação, que
Unidade 3

incluem funcionalidades como o login único (SSO) e a autentica-


ção multifatorial (MFA), não apenas reforçam a segurança mas
também melhoram a experiência do usuário.

Métodos de autenticação
A escolha do método de autenticação apropriado é crucial
para garantir a segurança de uma aplicação, pois diferentes mé-
todos oferecem níveis variados de proteção e usabilidade. Vamos
discutir detalhadamente alguns dos métodos de autenticação mais
comuns, incluindo autenticação básica, tokens de acesso (com ên-
fase em OAuth2 e JWT) e autenticação de dois fatores (2FA), desta-
cando a importância de selecionar o método adequado com base
nas necessidades específicas de segurança da aplicação.

1. Autenticação Básica

A autenticação básica é um dos métodos mais simples, em


que um usuário fornece um nome de usuário e uma senha que
são codificados e enviados no cabeçalho de solicitação HTTP. Ape-
sar de sua simplicidade, a autenticação básica requer uma cone-

40 PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS


xão HTTPS, para garantir que as credenciais sejam transmitidas de
forma segura. É um método frequentemente usado para cenários
simples e para controle de acesso inicial a APIs ou serviços web.

EXEMPLO: ideal para aplicações internas ou protótipos


rápidos, em que a facilidade de implementação é uma
prioridade e o ambiente pode ser controlado para garantir
segurança na transmissão de credenciais.

2. Tokens de acesso

Tokens de acesso são uma forma mais segura e flexível de


autenticação, com OAuth2 e JWT sendo dois dos métodos mais
populares;

Unidade 3
• OAuth2: Um framework de autorização, que permite
aplicações obterem acesso limitado a contas de usuário
em um serviço HTTP, como Facebook, Google ou GitHub.
Ele funciona redirecionando usuários para o serviço de
autenticação para login e, em seguida, usando um token
de acesso para realizar chamadas API em nome do
usuário. OAuth2 é especialmente útil para aplicações
que necessitam acessar serviços de terceiros em nome
do usuário.

EXEMPLO: uma aplicação que permite aos usuários


fazer login usando sua conta do Google e acessar seus
calendários.

• JWT (JSON Web Tokens): um método compacto e


independente para transmitir informações entre
partes como um objeto JSON de forma segura. Essas
informações podem ser verificadas e confiáveis porque
são digitalmente assinadas. JWTs podem ser assinados
usando um segredo (com o algoritmo HMAC) ou um par

PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS 41


de chaves pública/privada usando RSA ou ECDSA. Um
exemplo seria uma aplicação de SaaS (software como
serviço) que utiliza JWT para autenticar e autorizar
usuários em diferentes componentes da plataforma
sem necessitar de múltiplos logins (Jones, 2015).

3. Autenticação de Dois Fatores (2FA)

A autenticação de dois fatores adiciona uma camada extra


de segurança ao processo de login, requerendo não apenas algo
que o usuário sabe (como uma senha), mas também algo que
o usuário tem (como um smartphone para receber um código
de verificação) ou algo que é inerente ao usuário (como uma
impressão digital). Este método é amplamente recomendado,
para proteger contra o roubo de credenciais, pois mesmo que a
Unidade 3

senha seja comprometida, ainda será preciso do segundo fator


para ganhar acesso.

EXEMPLO: bancos on-line e serviços financeiros usam 2FA


para proteger as contas dos usuários, exigindo uma senha
e um código gerado por um aplicativo de autenticação ou
enviado via SMS ao tentar realizar transações ou acessar
informações sensíveis.

A seleção do método de autenticação apropriado depende


de vários fatores, incluindo o nível de segurança necessário, a
experiência do usuário desejada, e a infraestrutura existente.
Para aplicações que lidam com dados altamente sensíveis, como
informações financeiras ou pessoais, métodos mais seguros
como 2FA ou JWT podem ser necessários. Porém, para cenários
menos críticos ou para uso interno, que a conveniência é uma
prioridade, a autenticação básica pode ser suficiente, desde que
as transmissões sejam protegidas via HTTPS.

42 PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS


Certificados SSL/TLS
A implementação de certificados SSL/TLS é uma prática
essencial para garantir a segurança e a integridade das comunica-
ções on-line, especialmente quando se trata do desenvolvimento
e da operação de APIs. Estes certificados atuam como uma cama-
da de segurança, que criptografa os dados transmitidos entre o
cliente e o servidor, assegurando que as informações sensíveis,
como credenciais de login, detalhes de cartão de crédito e dados
pessoais, sejam mantidas privadas e seguras durante a transmis-
são pela internet. A importância da utilização de certificados SSL/
TLS em qualquer aplicação web ou API não pode ser subestimada,
visto que eles não apenas protegem contra-ataques de intercep-

Unidade 3
tação, como também ajudam a construir a confiança dos usuários
ao garantir que estão interagindo com um site autêntico e seguro.
Imagem 4.5 – Certificados SSL

Fonte: Freepik.

Os certificados SSL/TLS funcionam com base em um mo-


delo de chave pública/chave privada, em que a chave pública é
usada para criptografar os dados, que só podem ser descriptogra-
fados pela chave privada correspondente. Quando um usuário se

PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS 43


conecta a um site ou serviço que utiliza SSL/TLS, o servidor apre-
senta seu certificado como uma forma de identificação. O certifi-
cado contém a chave pública do servidor, além de informações
sobre a identidade do servidor e da entidade que emitiu o certifi-
cado. O navegador ou cliente verifica a validade do certificado com
a autoridade certificadora (CA) que o emitiu, confirmando que o
certificado é válido e que o servidor é realmente quem afirma ser.
Esta troca inicial estabelece um canal seguro, em que os dados
podem ser trocados criptograficamente, protegendo-os contra
ouvintes não autorizados.

Implementar SSL/TLS em uma API é um processo que co-


meça com a geração de um pedido de assinatura de certificado
(CSR) pelo servidor que hospeda a API. Este pedido inclui infor-
Unidade 3

mações sobre a organização e o domínio para o qual o certificado


está sendo solicitado. Uma vez gerado, o CSR é enviado a uma au-
toridade certificadora para validação. Após a validação, a CA emite
um certificado para o domínio, que é então instalado no servidor.
Esta instalação permite que o servidor estabeleça conexões segu-
ras usando SSL/TLS, garantindo que todos os dados transmitidos
entre a API e seus consumidores sejam criptografados e seguros.

A escolha de uma autoridade certificadora confiá-


vel é um aspecto importante na implementação
de certificados SSL/TLS. Uma CA confiável é aquela
que é amplamente reconhecida, e tem suas raízes
IMPORTANTE
incluídas nos principais navegadores e sistemas
operacionais.

Isso assegura que os certificados emitidos por estas CAs


serão automaticamente confiáveis para a maioria dos usuários
finais, eliminando alertas de segurança que podem dissuadir os
usuários de acessar um site ou utilizar uma API. CAs confiáveis
também seguem rigorosos procedimentos de validação para
garantir que apenas entidades legítimas recebam certificados
para os domínios que de fato possuem ou controlam.

44 PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS


Para aprender mais sobre certificações SSL/
TLS, indicamos a leitura do artigo “O que é um
certificado SSL/TLS?”. Acesse pelo QR Code.

SAIBA MAIS

A implementação de SSL/TLS e a escolha de uma CA


confiável são passos fundamentais para a segurança on-line,
não apenas protegendo os dados transmitidos, mas também
reforçando a confiança dos usuários no serviço. Em um mundo

Unidade 3
que as preocupações com a privacidade e a segurança dos
dados estão cada vez mais presentes, a capacidade de oferecer
uma conexão segura é indispensável para qualquer aplicação
ou API que lida com dados do usuário. A adoção de SSL/TLS é
uma prática recomendada, que reflete o compromisso de uma
organização com a segurança e a privacidade, aspectos cada vez
mais valorizados tanto por consumidores quanto por reguladores.

Gerenciamento de vulnerabilidades e
ataques comuns
A identificação e mitigação de vulnerabilidades em APIs
são etapas cruciais para garantir a segurança de sistemas de in-
formação. À medida que as APIs se tornam o padrão para a inte-
gração de sistemas e a exposição de serviços, sua segurança passa
a ser uma preocupação central. Vulnerabilidades não detectadas
em APIs podem servir como pontos de entrada para ataques ci-
bernéticos, resultando em perdas financeiras significativas, danos
à reputação e violações de dados pessoais. Portanto, a implemen-

PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS 45


tação de testes de segurança, como testes de penetração, é essen-
cial. Estes testes simulam ataques cibernéticos em um ambiente
controlado, permitindo aos desenvolvedores e equipes de segu-
rança identificar e corrigir vulnerabilidades antes que possam ser
exploradas por atacantes.

Os testes de penetração devem ser realizados regularmen-


te, não apenas como parte do desenvolvimento inicial da API, mas
também como um processo contínuo de avaliação de segurança.
Isso é importante, porque novas vulnerabilidades podem ser in-
troduzidas com cada atualização ou mudança na API. A mitigação
de vulnerabilidades identificadas frequentemente envolve a atua-
lização do código da API, o fortalecimento dos controles de acesso
e a implementação de camadas adicionais de segurança, como a
Unidade 3

criptografia de dados em trânsito e em repouso.


Imagem 4.6 – Gerenciamento de ataques

Fonte: Freepik.

Além disso, é fundamental adotar estratégias de preven-


ção contra-ataques comuns a APIs, como injeção de SQL, cross-site
scripting (XSS) e falsificação de solicitação entre sites (CSRF). Esses

46 PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS


ataques exploram vulnerabilidades específicas, que podem ser
mitigadas por meio da implementação de práticas recomendadas
de segurança.

• Prevenção de injeção de SQL: a injeção de SQL ocorre


quando atacantes inserem ou “injetam” uma consulta
SQL maliciosa por meio da entrada de dados de uma
aplicação, manipulando o backend do banco de dados.
Para prevenir os ataques, as APIs devem usar consultas
parametrizadas, também conhecidas como instruções
preparadas, que garantem que os dados enviados pelo
usuário sejam tratados como parâmetros, não como
parte da consulta SQL.

• Prevenção de cross-site scripting (XSS): XSS permite

Unidade 3
que atacantes injetem scripts maliciosos em páginas
vistas por outros usuários, explorando a confiança do
usuário em um determinado site. A prevenção passa
pela validação e por um saneamento rigoroso dos
dados de entrada e saída, garantindo que caracteres
potencialmente perigosos sejam devidamente
escapados ou removidos.

• Prevenção de falsificação de solicitação entre sites


(CSRF): CSRF engana um usuário on-line para executar
ações indesejadas em uma aplicação web onde ele está
autenticado atualmente. Estratégias para mitigar CSRF
incluem o uso de tokens anti-CSRF, que asseguram que
cada solicitação feita à API seja acompanhada de um
token único, verificado no lado do servidor.

Implementar essas e outras práticas recomendadas de


segurança, como a autenticação e autorização robustas, o uso de
HTTPS e o monitoramento contínuo de segurança, pode proteger
significativamente as APIs contra uma ampla gama de ataques.

PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS 47


Ao adotar uma abordagem proativa para a segurança das APIs, as
organizações podem não apenas proteger seus dados e sistemas,
mas também fortalecer a confiança dos usuários e clientes em
seus serviços digitais.

E então? Gostou do que lhe mostramos? Aprendeu


mesmo tudinho? Agora, só para termos certeza
de que você realmente entendeu o tema de
RESUMINDO estudo deste capítulo, vamos resumir tudo o que
vimos. Você deve ter aprendido que a segurança
e a autenticação em APIs são fundamentais
para garantir não apenas a proteção dos dados,
mas também a confiabilidade e a integridade
dos sistemas que utilizamos diariamente.
Primeiramente, exploramos os princípios de
Unidade 3

autenticação e autorização, destacando a


importância de entender a diferença entre os dois
conceitos. A autenticação se refere ao processo
de verificar a identidade de um usuário, enquanto
a autorização determina o que este usuário
autenticado está permitido a fazer. Essa distinção
é crucial para implementar controles de acesso
eficazes e garantir que os usuários tenham apenas
o acesso necessário para realizar suas funções.
Em seguida, mergulhamos nos métodos de
autenticação, em que discutimos várias estratégias
utilizadas para verificar a identidade dos usuários.
Falamos sobre a autenticação básica, tokens de
acesso, como OAuth2 e JWT (JSON web tokens), e a
importância da autenticação de dois fatores (2FA)
como uma camada adicional de segurança. Por fim,
abordamos a importância dos Certificados SSL/
TLS na proteção das comunicações entre cliente
e servidor. Explicamos como esses certificados
criptografam os dados transmitidos, garantindo
que as informações sensíveis sejam mantidas
seguras contra interceptações.

48 PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS


Microsserviços e arquiteturas
distribuídas
Ao término deste capítulo, você será capaz de
entender como funcionam os microsserviços e
as arquiteturas distribuídas. Esta compreensão
é fundamental para o exercício de sua profissão,
OBJETIVO
permitindo-lhe projetar e desenvolver sistemas
que são, ao mesmo tempo flexíveis, escaláveis e
capazes de responder rapidamente às mudanças
de requisitos ou de carga de trabalho. Vamos lá!

Princípios básicos de
microsserviços e arquitetura

Unidade 3
distribuída
Microsserviços representam uma abordagem arquitetu-
ral para o desenvolvimento de aplicações de software como uma
coleção de serviços pequenos, autônomos e modularizados.
Cada serviço é desenvolvido, implantado e escalado de forma in-
dependente, permitindo uma maior flexibilidade e agilidade no
processo de desenvolvimento de software. Essa abordagem con-
trasta com a arquitetura monolítica tradicional, na qual os com-
ponentes de uma aplicação são interdependentes e compilados
como uma única unidade indissociável.

A modularidade é uma das características definidoras dos


microsserviços, permitindo que cada serviço funcione de forma
independente com sua própria base de dados e lógica de negó-
cios. Esta independência facilita o desenvolvimento paralelo por
diferentes equipes, cada uma responsável por um conjunto es-
pecífico de serviços, melhorando significativamente a eficiência
e a produtividade no desenvolvimento de aplicações complexas
(Newman, 2015).

PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS 49


Imagem 4.7 – Microsserviços

Fonte: Freepik.
Unidade 3

Outra característica fundamental é a capacidade de serem


desenvolvidos, implantados e escalados de forma independente.
Isso significa que cada serviço pode ser atualizado, substituído
ou escalado, sem afetar o funcionamento dos outros serviços da
aplicação. Tal flexibilidade é particularmente valiosa em ambien-
tes de cloud computing, em que os recursos podem ser ajustados
dinamicamente para atender às demandas flutuantes.

A adoção de uma arquitetura de microsserviços oferece


várias vantagens, incluindo a flexibilidade no uso de diferentes
tecnologias e frameworks para cada serviço, conforme apropria-
do para suas necessidades específicas. Isso permite que as equi-
pes escolham a melhor tecnologia para resolver cada problema
específico, ao invés de serem limitadas por uma escolha tecnoló-
gica única adotada no início do projeto.

A agilidade é outra vantagem significativa, uma vez que


os ciclos de desenvolvimento podem ser mais curtos e mais fre-
quentes, com cada serviço evoluindo de forma independente. Isso
facilita a implementação de mudanças e a adição de novas funcio-

50 PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS


nalidades, sem a necessidade de redesenhar ou reimplantar toda
a aplicação, permitindo uma resposta mais rápida às mudanças
nas necessidades do negócio ou do mercado.

No entanto, a arquitetura de microsserviços não está


isenta de desafios. A complexidade na gestão e na comunicação
entre serviços é uma preocupação significativa. Cada serviço
interage com outros por meio de chamadas de rede, o que pode
introduzir latência e pontos de falha. A gestão dessas interações e
a garantia de uma comunicação eficiente e segura entre serviços,
requerem uma cuidadosa orquestração e monitoramento
(Richardson, 2018).

Além disso, a consistência de dados e as transações distri-


buídas representam desafios adicionais, pois cada serviço pode

Unidade 3
ter sua própria base de dados. Manter a consistência de dados
em um ambiente distribuído requer estratégias específicas, como
a eventual consistência ou o uso de padrões de design como saga
para gerenciar transações que abrangem múltiplos serviços.

Apesar dos desafios, a arquitetura de microsserviços tem


se mostrado uma abordagem poderosa para o desenvolvimento
de aplicações escaláveis e resilientes, especialmente em ambientes
de cloud computing. A capacidade de escalar serviços de forma
independente permite que as aplicações se adaptem de forma
mais eficiente às variações de carga, melhorando o desempenho
e a disponibilidade.

A escolha entre adotar uma arquitetura de microsserviços


ou continuar com uma abordagem monolítica depende de vários
fatores, como o tamanho e a complexidade da aplicação, a capaci-
dade da equipe e as necessidades específicas do negócio. Para or-
ganizações que buscam maior agilidade, escalabilidade e capaci-
dade de utilizar diversas tecnologias, os microsserviços oferecem
vantagens significativas.

PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS 51


A arquitetura distribuída nos microsserviços é um padrão
de desenvolvimento de software, que organiza uma aplicação
como uma coleção de serviços pequenos e independentes,
executados em processos separados, que comunicam entre si
usando chamadas de rede, frequentemente HTTP ou mensagens
assíncronas em sistemas de filas. Cada serviço é focado em
realizar uma função específica (por exemplo, gerenciamento de
pedidos, gerenciamento de clientes etc.), e pode ser desenvolvido,
implantado, operado e escalado de forma independente pelos
diferentes membros de uma equipe de desenvolvimento.

Principais características:

Desacoplamento - os serviços em uma arquitetura de


microsserviços são independentes e podem ser desenvolvidos,
Unidade 3

implantados e escalados de forma independente. Isso facilita a


manutenção e a atualização de partes específicas da aplicação
sem afetar o sistema como um todo;

Heterogeneidade tecnológica - uma arquitetura de micros-


serviços permite o uso de diferentes tecnologias, linguagens de
programação e bancos de dados dentro da mesma aplicação. Isso
permite que as equipes escolham as melhores ferramentas para
cada serviço específico;

Resiliência - ao isolar os serviços, falhas em um serviço


específico geralmente não afetam os outros serviços, tornando o
sistema mais resiliente a falhas e erros;

Escalabilidade - os microsserviços podem ser escalados de


forma independente, permitindo que a aplicação responda de ma-
neira mais eficaz a diferentes demandas de carga em diferentes
partes do sistema;

Implantação contínua - a independência dos microsservi-


ços facilita a implantação contínua e entrega contínua, permitindo
que novas funcionalidades e correções sejam rapidamente imple-
mentadas e disponibilizadas.

52 PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS


A arquitetura distribuída nos microsserviços é uma
abordagem poderosa para o desenvolvimento de aplicações
modernas, oferecendo flexibilidade, escalabilidade e resiliência.
No entanto, também apresenta desafios significativos, que devem
ser cuidadosamente gerenciados para garantir o sucesso da
implementação.

Comunicação e integração entre


microsserviços
A comunicação e integração entre microsserviços são
componentes críticos no design e na operação eficazes de arquite-
turas baseadas em microsserviços. Devido à natureza distribuída
e descentralizada desses sistemas, é fundamental escolher me-

Unidade 3
canismos de comunicação adequados que promovam eficiência,
confiabilidade e escalabilidade. Os principais mecanismos utiliza-
dos incluem chamadas de API RESTful, mensageria assíncrona e
sistemas baseados em eventos, cada um atendendo diferentes
necessidades e cenários de uso.

1. Chamadas de API RESTful

As chamadas de API RESTful são um dos mecanismos


mais comuns para a comunicação entre microsserviços. Este
modelo de comunicação é baseado no protocolo HTTP e utiliza
métodos padrão (como GET, POST, PUT, DELETE) para realizar
operações CRUD (CREATE, READ, UPDATE, DELETE) sobre recur-
sos. A simplicidade, a padronização e a facilidade de uso do REST
o tornam ideal para muitos casos de uso, especialmente quando
é necessária uma comunicação síncrona e direta entre serviços.

O REST é particularmente adequado para operações que


exigem uma resposta imediata, como solicitações de dados por
parte dos usuários finais. No entanto, essa abordagem síncrona
pode introduzir acoplamentos e dependências entre serviços,

PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS 53


potencialmente afetando a escalabilidade e a resiliência do
sistema. Para mitigar esses riscos, é crucial projetar APIs RESTful
com princípios como a idempotência e o uso eficiente de códigos
de status HTTP para garantir comunicações claras e efetivas.

2. Mensageria assíncrona

A mensageria assíncrona, por outro lado, permite que os


microsserviços se comuniquem de forma indireta, por meio do
envio de mensagens para filas ou tópicos, sem esperar por uma
resposta imediata. Este modelo promove um acoplamento fraco
entre serviços, melhorando a resiliência e a escalabilidade do
sistema, pois os serviços não são diretamente dependentes uns
dos outros para realizar suas operações.
Unidade 3

Sistemas de mensagens, como RabbitMQ, Apache Kafka


e Amazon SQS, são amplamente utilizados para implementar a
mensageria assíncrona em arquiteturas de microsserviços. Eles
suportam padrões de comunicação complexos, como publicação/
assinatura e filas de mensagens, facilitando a distribuição eficiente
de tarefas e o processamento de eventos em larga escala. A
mensageria assíncrona é ideal para tarefas de processamento em
lote, operações demoradas e comunicações entre serviços que
podem tolerar atrasos na entrega de mensagens.

3. Sistemas baseados em eventos

Os sistemas baseados em eventos levam a comunicação


assíncrona um passo adiante, centrando a arquitetura em torno
da geração, detecção e reação a eventos. Neste modelo, os mi-
crosserviços emitem eventos que representam mudanças de esta-
do ou ações importantes, que são capturados por outros serviços
interessados, desencadeando processamentos específicos. Este
paradigma promove um alto grau de desacoplamento, sendo par-
ticularmente útil para criar sistemas reativos e adaptáveis.

54 PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS


Arquiteturas orientadas a eventos, muitas vezes imple-
mentadas com plataformas como apache kafka, permitem uma
comunicação eficaz em sistemas complexos e distribuídos, em que
a reação a mudanças em tempo real é crucial. Essa abordagem é
adequada para cenários que requerem escalabilidade extrema,
processamento de fluxos de dados em tempo real e a capacida-
de de evoluir independentemente os serviços ao adicionar novos
ouvintes de eventos sem interromper os produtores existentes.
Imagem 4.8 – Sistemas baseados em eventos

Fonte: Freepik. Unidade 3


A escolha entre chamadas de API RESTful, mensageria
assíncrona e sistemas baseados em eventos depende das ne-
cessidades específicas da aplicação, considerando fatores como
a natureza das tarefas realizadas pelos microsserviços, requisi-
tos de latência, escalabilidade e complexidade do sistema. Uma
abordagem pragmática, frequentemente, envolve combinar esses
mecanismos para aproveitar os pontos fortes de cada um, crian-
do assim uma arquitetura robusta, escalável e resiliente, capaz de
suportar as demandas de aplicações modernas e distribuídas.

PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS 55


Padrões de integração
Na arquitetura de microsserviços, garantir uma comunica-
ção e integração eficientes entre os serviços é fundamental para
a criação de sistemas escaláveis e confiáveis. Nesse contexto, os
padrões de integração desempenham um papel crucial, ao forne-
cer soluções comprovadas para desafios comuns relacionados à
comunicação de serviços. Entre esses padrões, o API Gateway e o
broker de mensagens são particularmente importantes, oferecen-
do abordagens distintas para facilitar a interação entre os micros-
serviços.

1. API Gateway
Unidade 3

O padrão API Gateway atua como um ponto de entrada


único para todas as solicitações externas destinadas aos micros-
serviços de uma aplicação. Este padrão simplifica a interação do
cliente com a aplicação, encaminhando as solicitações para os ser-
viços apropriados e, em seguida, agregando os resultados para
enviar uma resposta unificada ao cliente. Além disso, o API Gate-
way pode assumir responsabilidades adicionais, como autentica-
ção, autorização, monitoramento, e limitação de taxa, aliviando os
serviços individuais dessas tarefas e promovendo a reutilização de
código.

A implementação de um API Gateway proporciona uma


série de benefícios, incluindo a simplificação da comunicação
cliente-serviço, a centralização de preocupações comuns e a ca-
pacidade de modificar ou substituir microsserviços internos, sem
afetar os consumidores da API. No entanto, a utilização de um API
Gateway também introduz um ponto único de falha potencial, o
que exige atenção cuidadosa com respeito à sua implementação e
operação, garantindo alta disponibilidade e desempenho.

56 PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS


2. Broker de mensagens

O broker de mensagens é um componente fundamental


para padrões de comunicação assíncrona em arquiteturas de mi-
crosserviços. Funcionando como um intermediário para a troca
de mensagens, o broker permite que os microsserviços publiquem
mensagens sem conhecer a identidade ou o número de consumi-
dores. Os serviços interessados em determinados tipos de men-
sagens podem se inscrever no broker para receber essas mensa-
gens, facilitando um modelo de comunicação publicar-assinar ou
de fila de mensagens.

Essa abordagem de comunicação assíncrona proporciona


desacoplamento significativo entre os serviços, permitindo que
operem e evoluam de forma independente. Além disso, o uso de

Unidade 3
um broker de mensagens pode melhorar a resiliência do sistema,
pois as mensagens podem ser armazenadas temporariamente
no broker, garantindo que não sejam perdidas em caso de falhas
temporárias em serviços consumidores. O broker de mensagens
também suporta escalabilidade, permitindo o balanceamento de
carga entre várias instâncias de um serviço consumidor e a capaci-
dade de lidar com picos de tráfego por meio da regulação do fluxo
de mensagens.

A escolha entre utilizar um API Gateway, um broker de


mensagens, ou uma combinação de ambos, depende das neces-
sidades específicas de comunicação e integração da aplicação.
Enquanto o API Gateway é ideal para gerenciar solicitações síncro-
nas e fornecer um ponto de entrada unificado para a aplicação, o
broker de mensagens se destaca na facilitação de comunicações
assíncronas e no desacoplamento de serviços. Em muitas arqui-
teturas de microsserviços modernas, a combinação de padrões
oferece uma solução abrangente, abordando uma ampla gama de
requisitos de comunicação e integrando serviços de maneira efi-
caz, confiável e escalável.

PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS 57


Gerenciamento de microsserviços
Em um ecossistema de microsserviços, o gerenciamento
eficaz torna-se um pilar fundamental para assegurar a saúde, a
performance e a resiliência do sistema distribuído. A complexida-
de inerente à arquitetura de microsserviços, com seus múltiplos
componentes independentes operando em conjunto, exige uma
abordagem sofisticada para o gerenciamento. Ferramentas e
práticas específicas, como a orquestração de contêineres e o mo-
nitoramento de serviços, desempenham um papel crucial neste
contexto, facilitando a automação, a observação e o controle em
ambientes altamente dinâmicos e escaláveis.

A orquestração de contêineres, exemplificada pelo kuber-


Unidade 3

netes, é uma das ferramentas mais influentes no gerenciamento


de microsserviços. Kubernetes não apenas automatiza a implanta-
ção, o escalonamento e a operação de aplicações em contêineres,
mas também oferece funcionalidades avançadas, como gerencia-
mento de configuração, serviço de descoberta e balanceamento
de carga. Essas características são essenciais para gerenciar a
complexidade e assegurar a eficiência em ambientes de micros-
serviços, permitindo que as equipes se concentrem mais na entre-
ga de valor do que na manutenção da infraestrutura.

Além da orquestração, o monitoramento contínuo dos


serviços é outra prática essencial. O monitoramento não apenas
ajuda a detectar e resolver problemas rapidamente, mas também
fornece insights valiosos sobre o desempenho e a utilização dos
recursos, fundamentais para o planejamento da capacidade
e a otimização do sistema. Ferramentas de monitoramento
como Prometheus e Grafana são amplamente utilizadas para
coletar métricas e logs dos microsserviços, permitindo uma visão
abrangente do estado do sistema.

58 PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS


A complexidade do gerenciamento de microsserviços
não se limita apenas à tecnologia; se estende aos processos e
à cultura da equipe de desenvolvimento. Práticas de DevOps,
integração contínua (CI) e entrega contínua (CD) são essenciais
para manter o ritmo rápido de desenvolvimento e implantação
que os microsserviços permitem. A adoção dessas práticas facilita
a colaboração entre as equipes de desenvolvimento e operações,
melhorando a qualidade do software e acelerando o tempo de
colocação no mercado.

É importante destacar a segurança em relação


ao gerenciamento de microsserviços. Em um
ambiente distribuído, cada microsserviço pode ser
visto como um ponto potencial de entrada para
IMPORTANTE
ataques. Portanto, a implementação de políticas de

Unidade 3
segurança rigorosas, autenticação e autorização de
serviço a serviço, e o uso de redes virtuais privadas
(VPNs) e listas de controle de acesso (ACLs) tornam-
se indispensáveis para proteger o sistema.

A resiliência é mais um fator crítico. Estratégias como a


implementação de circuit breakers, retries, timeouts e fallbacks
ajudam a construir sistemas que podem tolerar falhas e conti-
nuar operando, garantindo a disponibilidade e a confiabilidade
do serviço. Essas estratégias, combinadas com uma cultura de
tolerância às falhas e ao aprendizado contínuo, permitem que as
organizações se adaptem e evoluam seus sistemas de microsser-
viços de forma eficaz.

E então? Gostou do que lhe mostramos? Aprendeu


mesmo tudinho? Agora, só para termos certeza
de que você realmente entendeu o tema de
RESUMINDO estudo deste capítulo, vamos resumir tudo o que
vimos. Você deve ter aprendido que a arquitetura
de microsserviços representa uma poderosa
abordagem para o desenvolvimento e operação de

PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS 59


sistemas de software complexos, oferecendo uma
alternativa modular e escalável à arquitetura mo-
nolítica tradicional. Nos princípios básicos de mi-
crosserviços, discutimos como a abordagem des-
compõe uma aplicação em pequenos serviços
autônomos que executam processos únicos e se
comunicam por meio de interfaces bem definidas.
Você deve ter captado a importância da modula-
ridade, independência e capacidade de desenvol-
vimento, implantação e escalabilidade indepen-
dentes que os microsserviços proporcionam. Estes
princípios não só facilitam a manutenção e a atua-
lização das aplicações, mas também permitem que
equipes de desenvolvimento trabalhem de forma
mais ágil e focada. Quanto à comunicação e inte-
gração entre microsserviços, exploramos os dife-
rentes mecanismos que permitem aos microsservi-
Unidade 3

ços interagir uns com os outros de maneira eficaz.


Aprendemos sobre a importância das chamadas
de API RESTful para comunicações síncronas, bem
como o uso de mensageria assíncrona e sistemas
baseados em eventos, para desacoplar serviços e
permitir comunicações escaláveis e resilientes. A
escolha do mecanismo de comunicação apropria-
do é crucial para garantir que o sistema como um
todo opere de maneira coesa e eficiente. Por fim,
em gerenciamento de microsserviços, destacamos
a importância de adotar ferramentas e práticas de
gerenciamento adequadas para manter a saúde
e o desempenho do sistema distribuído. Falamos
sobre como a orquestração de contêineres, exem-
plificada pelo kubernetes, facilita a automação de
implantações, escalonamento e operações de mi-
crosserviços, enquanto práticas de monitoramen-
to contínuo, como o uso de prometheus e grafana,
permitem que as equipes acompanhem a saúde
do sistema e respondam rapidamente a quaisquer
problemas; ainda, ressaltamos a importância de
práticas de DevOps, segurança e resiliência como
fundamentais para o sucesso de arquiteturas ba-
seadas em microsserviços.

60 PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS


FIELDING, R. T. Estilos arquitetônicos e o projeto de arquiteturas

REFERÊNCIAS
de software baseadas em rede. 2000. Tese. (Doutorado em
Informação e Ciência da Computação) - Universidade da Califórnia,
Irvine, 2000.
HARDT, D. The OAuth 2.0 authorization framework: token usage.
bearer. New York: RFC, 2012.
JONES, M., BRADLEY, J., SAKIMURA, N. JSON Web Token (JWT). New
York: RFC, 2015.
NEWMAN, S. Building microservices: designing fine-grained systems.
New York: O’Reilly, 2015.
O QUE é um certificado SSL/TLS?. Disponível em: [Link]
[Link]/pt/what-is/ssl-certificate/. Acesso em: 20 fev. 2024.
RICHARDSON, C. Microservice patterns: with examples in Java.

Unidade 3
Manning Publications, 2018.
STALLINGS, W; BROWN, L. Computer security: principles and
practice. 4. ed. New York: Pearson, 2018.
WEBBER, J.; PARASTATIDIS, S.; ROBINSON, I. REST na prática:
arquitetura de sistemas e hipermídia. New York: O’Reilly Media,
2010.

PROGRAMAÇÃO E INTEGRAÇÃO DE SISTEMAS 61

Você também pode gostar