Buscar

Arquitetura de Aplicações Web

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 139 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 139 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 139 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Arquitetura 
de aplicações web
Fábio Santiago
Fábio Santiago
Arquitetura 
de aplicações web
Santiago, Fábio
Arquitetura de aplicações web. Sorocaba/SP, 2020. 70 f. Ed. 1.
Validador: Raphael Engel.
Instituto Cultural Newton Paiva Ferreira Ltda. | ED+ Content Hub, 2020.
Assuntos:
1. Arquitetura;
2. Web;
3. Testes;
4. Hospedagem.
Formato: digital.
Recurso: PDF e HTML.
Requisitos do sistema operacional:
• Windows 8.1 ou superior;
• Mac OSX 10.6 ou superior;
• Linux - ChromeOS.
Configurações técnicas:
• 2GB de memória RAM;
• 2.5GHz de processador;
• 10GB de espaço em disco.
Navegadores:
• Google Chrome – Versão mais atualizada;
• Mozilla Firefox – Versão mais atualizada.
Dispositivos móveis:
• iOS 10 ou superior;
• Android 5 ou superior.
Modo de acesso: área restrita - Ambiente Virtual de Aprendizagem.
Todos os direitos desta edição são reservados ao Centro Universitário Facens.
Rodovia Senador José Ermírio de Moraes, 1425, km 1,5 – Sorocaba/SP
CEP: 18.085-784 | tel.: 55 15 3238 1188
Nenhuma parte desta publicação poderá ser reproduzida por qualquer meio ou forma sem autorização.
A violação dos direitos autorais é crime estabelecido pela Lei n.º 9.610/98 e punido pelo artigo 184 do Código Penal.
Todas as imagens, vetores e ilustrações são creditados ao Shutterstock Inc., salvo quando indicada a referência.
Conteúdo
Unidade 1
Arquitetura de microsserviço ........................................................... 6
Unidade 2
Construção de serviços web ............................................................ 25
Unidade 3
Persistência de dados ....................................................................... 48
Unidade 4
Testes de resiliência dos serviços ................................................... 66
Unidade 5
Segurança .......................................................................................... 78
Unidade 6
Diagrama da arquitetura .................................................................. 94
Unidade 7
Monitoramento ............................................................................... 110
Unidade 8
Hospedagem de aplicações web ................................................... 124
Arquitetura de aplicações web | Unidade 1 - Arquitetura de microsserviço
5
PALAVRAS DO AUTOR
Ao olharmos ao nosso redor, é fácil observar que uma parcela significativa das pessoas está conectada 
à internet por meio de diferentes tipos de dispositivos. Nesse sentido, esse mundo conectado mudou 
e vem mudando a forma como as pessoas se relacionam, pedem comida, leem livros, ouvem músicas, 
entre tantas outras coisas. De fato, o mundo analógico deixou de existir para muitos e a internet se 
tornou o meio pelo qual as coisas acontecem.
No entanto, para que todo esse universo de aplicações funcione, é necessário um amplo conhecimento 
em diferentes áreas, sendo que uma parte dele está reunido na disciplina de Arquitetura de aplicações 
web, que traz em seus objetos de estudo temas como microsserviços, construções de serviços web, 
persistência de dados, testes de resiliências, segurança na web, entre outros.
Os conhecimentos adquiridos por você nesta disciplina irá possibilitá-lo a atuar como desenvolvedor de 
inúmeros serviços web, colocando-o em destaque diante do mercado de trabalho que, cada vez mais, 
tem a necessidade de profissionais aptos a desenvolverem microsserviços capazes de garantir a segu-
rança das informações, a qualidade de código, publicar serviços em uma plataforma de nuvem, entre 
outras competências.
Espero que esses conhecimentos sejam significativos para você.
Seja bem-vindo e bons estudos!
Arquitetura de aplicações web | Unidade 1 - Arquitetura de microsserviço
6
Unidade 1 Arquitetura de microsserviço 
Objetivos de aprendizagem:
Esta unidade tem como objetivo apresentar os conceitos fundamentais acerca dos microsserviços e 
de sua aplicação nos dias atuais. Além disso, essa unidade visa realizar uma pequena introdução à 
linguagem Python, dada a sua vasta utilização em aplicações web e em machine learning. E, por fim, será 
apresentada a arquitetura REST.
Tópicos de estudo:
• Arquitetura de microsserviços;
• Introdução à programação em Python;
• Modelo de arquitetura REST;
• Princípios e boas práticas de serviços REST.
Iniciando os estudos:
Navegar na internet é para muitos, sem dúvida, algo intuitivo e fácil. Seja para buscar por informações 
sobre um determinado conteúdo ou realizar compras. No entanto, apesar da aparente obviedade dessas 
tarefas, por trás de cada página há inúmeros algoritmos responsáveis por fazer tudo isso acontecer.
Nesse sentido, a implementação desses algoritmos requer inúmeras estratégias a fim de torná-los 
eficientes, tolerantes a falhas e de fácil execução. Uma das estratégias a ser empregada é a de olhar 
para uma aplicação como sendo um conjunto de pequenos serviços. Também se faz necessário escolher 
uma determinada linguagem de programação, além de uma arquitetura, de modo a manter tudo isso 
funcionando de forma coesa.
Interessante tudo isso, não? Pois bem, é dentro desse contexto que esta unidade se insere, assim, seja 
bem-vindo e bons estudos!
Arquitetura de aplicações web | Unidade 1 - Arquitetura de microsserviço
7
1 ARQUITETURA DE MICROSSERVIÇOS
Em um mundo onde as pessoas passam parte do seu tempo utilizando a internet, é comum muitas 
das compras serem feitas por meio dela. Nesse sentido, quando você acessa um site de uma loja e, a 
fim de encontrar o produto que você procura, utiliza a barra de busca, na verdade está fazendo uso 
de um microsserviço.
Enquanto você navega pelo site do varejista, é comum se deparar com recomendações de produtos 
relacionados ao que está buscando, o que também é um microsserviço. Quando você adiciona um 
produto ao carrinho de compras e vai fazer o checkout, você também está fazendo uso de uma estru-
tura de microsserviços.
Essencialmente, os microsserviços compõem uma arquitetura para a criação de aplicações. E a sua dife-
rença para as arquiteturas monolíticas tradicionais consiste no fato de ela decompor a aplicação em 
funções básicas.
Em uma arquitetura de microsserviço, cada função define um serviço e é criada e implementada de 
modo independente. Essa característica implica no fato de que cada serviço, de forma individual, pode 
funcionar ou apresentar falha sem comprometer os demais.
Figura 1 - Exemplo de estruturas de microsserviços em um site.
Fonte: adaptado de https://amzn.to/2YBqUDU Acesso em: 29 jun. 2020.
https://amzn.to/2YBqUDU
Arquitetura de aplicações web | Unidade 1 - Arquitetura de microsserviço
8
A figura 2 detalha as diferenças entre uma arquitetura de microsserviços e uma arquitetura monolítica:
Portanto, é fácil compreender que um microsserviço é uma função fundamental ao funcionamento de 
uma aplicação, sendo executado de forma independente dos demais serviços.
No entanto, a arquitetura de microsserviços não pode ser entendida apenas como um simples acopla-
mento flexível de funções essenciais de uma determinada aplicação. Segundo a Red Hat (2020), a utili-
zação de microsserviços na construção de uma aplicação requer a reestruturação das equipes de desen-
volvimento e da comunicação entre os diferentes serviços, a fim de preparar a aplicação para: as falhas 
que são inevitáveis, a escalabilidade futura e a integração de funcionalidades.
Figura 2 - Diferenças entre uma arquitetura de 
microsserviço e uma monolítica.
Fonte: adaptado de https://red.ht/32eYJwH.
ED
+ 
Co
nt
en
t H
ub
 ©
 2
02
0
https://red.ht/32eYJwH
Arquitetura de aplicações web | Unidade 1 - Arquitetura de microsserviço
9
Reflita
Como as grandes corporações entendem os microsserviços? Segundo a Amazon Web 
Services (2020), os microsserviços consistem em uma abordagem arquitetônica e 
organizacional de desenvolvimento de software, na qual o software é entendido como 
pequenos serviços independentes que se comunicam usando APIs bem definidas. Além 
disso, esses serviços pertencem a pequenas equipes autossuficientes.Neste ponto, você já compreendeu os conceitos fundamentais sobre os microsserviços, mas quais 
seriam os benefícios de sua utilização? Veja abaixo.
• Agilidade: os microsserviços organizam as equipes de desenvolvimento em tamanhos 
pequenos e independentes, sendo que cada uma delas é proprietária do seu serviço. Nesse 
sentido, cada equipe atua em um pequeno contexto de fácil compreensão, tendo autonomia 
para trabalhar de modo independente e rápido, o que ocasiona maior velocidade nos ciclos de 
desenvolvimento.
• Escalabilidade flexível: a arquitetura de microsserviços possibilita que cada serviço seja esca-
lado de modo independente, a fim de atender à demanda de recurso de aplicativo, disponibi-
lizada por esse serviço.
• Fácil implementação: os microsserviços possibilitam a integração e as entregas contínuas, 
pois facilitam a realização de testes de novas ideias e a sua revisão, caso algo não funcione 
como o esperado. Além disso, os baixos custos associados às falhas permitem a rápida atua-
lização do código, assim, é reduzido o tempo de introdução de novos serviços no mercado.
• Resiliência: em uma arquitetura de microsserviços, cada um dos serviços é independente, o 
que ocasiona um aumento da resistência a falhas. Pois, em uma arquitetura do tipo monolí-
tica, a falha de um único componente pode ocasionar a falha de todo o aplicativo, enquanto os 
microsserviços lidam com a falha total do serviço degradando a funcionalidade, sem que ele 
interrompa o aplicativo como um todo.
Agora, você já conhece as principais características e as vantagens de utilização dos microsserviços. Para 
que você amplie ainda mais os seus conhecimentos, separei o seguinte vídeo:
Aprofunde-se
Título: Microservices
Acesso em: 22/06/2020.
Disponível em: https://youtu.be/_2bDOCTnbKc
https://youtu.be/_2bDOCTnbKc
Arquitetura de aplicações web | Unidade 1 - Arquitetura de microsserviço
10
Como você pôde perceber, os microsserviços são de grande importância para as equipes de desenvol-
vimento. No entanto, quais seriam os desafios a serem superados por uma organização a fim de migrar 
para uma arquitetura de microsserviços? Esses desafios são abordados no vídeo a seguir.
Assista
Acesse na plataforma o vídeo: As organizações e os microsserviços
2 INTRODUÇÃO À PROGRAMAÇÃO PYTHON
A ideia de se implementar a linguagem Python ocorreu em 1982, por Guido van Rossum, matemático e 
programador holandês, integrante do CWI (Centrum Wiskunde & Informatica) em Amsterdã, o labora-
tório responsável por ter desenvolvido a linguagem Algol 68.
Guido van Rossum foi um dos pesquisadores envolvidos no desenvolvimento da linguagem ABC, cuja 
finalização ocorreu em 1987. A partir desse momento, ele passou a fazer parte do grupo de trabalho 
Amoeba, o qual era responsável por desenvolver um sistema operacional microkernel que tinha como 
líder de pesquisa Andrew Tanenbaum.
É durante esse período que o referido pesquisador percebeu a necessidade de uma linguagem para 
escrever programas que fosse algo entre a linguagem C e o shell script. De modo a preencher esta 
lacuna, Guido van Rossum concebeu a linguagem Python, levada a público no ano de 1991. Uma de suas 
principais características é a possibilidade de escrever um mesmo requisito com um menor número de 
linhas de código quando comparada a outras linguagens de programação.
Além disso, a Python é uma linguagem interpretada, fracamente tipada – isso quer dizer que você não 
precisa declarar uma variável antes de usá-la. Também é uma linguagem de propósito geral, empregada 
para solucionar qualquer tipo de problema, podendo ser atendida por um desktop web ou mobile.
A figura a seguir mostra o logotipo de inicialização da linguagem Python.
Arquitetura de aplicações web | Unidade 1 - Arquitetura de microsserviço
11
Atualmente, a Python vem sendo amplamente utilizada na construção de soluções web, como também 
empregada em aplicações envolvendo processamento de texto, machine learning e recomendação de 
conteúdo, os quais são áreas do conhecimento que não param de crescer.
A fim de motivar você a estudar essa linguagem de programação, separei o vídeo a seguir, que responde 
à questão: para que serve a Python?
Aprofunde-se
Título: Para que serve a Python?
Acesso em: 22/06/2020
Disponível em: https://youtu.be/Mp0vhMDI7fA
Figura 3 - Linguagem de programação: inscrição 
Python com código do computador de fundo.
https://youtu.be/Mp0vhMDI7fA
Arquitetura de aplicações web | Unidade 1 - Arquitetura de microsserviço
12
2.1 ESCOLHENDO UMA IDE
A fim de você realizar as suas implementações como desenvolvedor, é necessário escolher uma IDE 
(acrônimo de Integrated Development Environment, que em tradução livre é Ambiente de Desenvolvi-
mento Integrado). Essencialmente, uma IDE é um software que traz ferramentas de desenvolvimento 
combinadas com uma interface gráfica. Segundo a Red Hat (2020), ela é caracterizada por possuir:
• Editor de código-fonte: consiste em um editor de código-fonte que auxilia na criação dos 
códigos computacionais por meio de diferentes tipos de funcionalidades, tais como o destaque 
da sintaxe, os recursos de preenchimento automático, a verificação de bugs, entre outras.
• Automação de compilação local: consiste em utilitários que têm como função automatizar 
tarefas simples e repetitivas durante uma compilação local do software utilizado pelo desen-
volvedor.
• Debugger: é um programa empregado para testar outros programas e indicar graficamente a 
localização do bug (erro) no código-fonte. 
Ao longo deste material, as implementações dos projetos serão realizadas por intermédio da IDE Repl.it, 
que consiste em uma IDE online que permite aos seus usuários desenvolverem códigos e construírem 
aplicações e sites por meio do navegador.
2.2 CONCEITOS BÁSICOS
Neste ponto, você já foi contextualizado sobre o período histórico em que a linguagem Python foi desen-
volvida, bem como a necessidade que ela objetivava sanar e a quais aplicações ela vem se prestando. No 
entanto, até o momento, não foi abordado nenhum conceito sobre a sua sintaxe de programação, a qual 
será objeto de estudo desta seção.
A fim de você aprender sobre a linguagem Python com mais detalhes, separei o link a seguir, que contém 
a documentação passo a passo da linguagem Python.
Aprofunde-se
Título: Learn Python programming step by step
Acesso em: 15/07/2020.
Disponível em: https://www.techbeamers.com/python-tutorial-step-by-step/
https://www.techbeamers.com/python-tutorial-step-by-step/
Arquitetura de aplicações web | Unidade 1 - Arquitetura de microsserviço
13
Como é feito em todo curso de introdução à programação, inicialmente você irá aprender a imprimir 
em tela, utilizando a linguagem Python, a clássica frase “Hello, world!” e, em seguida, como ler uma 
expressão a partir do teclado.
Utilizando a ferramenta online Repl.it, foi implementado o primeiro programa em linguagem Python. 
Como você pode observar abaixo, o comando print é usado para imprimir informações em tela, ao 
passo que o input é utilizado para ler informações a partir do teclado.
print(‘Meu primeiro programa em Python’)
print(‘Hello, world!’)
a =input(‘Digite um número’)
print(a)
Como toda linguagem de programação, a Python tem suas palavras reservadas, as quais não podem ser 
empregadas para definirem variáveis, funções, entre outras estruturas. Essas palavras reservadas foram 
organizadas para você no quadro 1.
and del from none true
as elif global nonlocal try
assert else if not while
break except import or with
continue finally is raise def
for lambda return yield
Quadro 1 - Palavras-chave em Python.
Fonte: Soubhia (2019, p. 22).
Figura 4 - Meu primeiro programa em Python.
Fonte: elaborado pelo autor.
Arquitetura de aplicações web | Unidade 1 - Arquitetura de microsserviço
14
Outro conceito bastante importante ao se estudar uma linguagem de programação consiste na mani-
pulação dos operadores matemáticos lógicos, relacionais e bitwise. Como em toda linguagem, os opera-dores +, -, *, / e % executam, respectivamente, adição; subtração; multiplicação; divisão de dois números; 
e retorno do valor do resto da divisão entre dois números.
and Retorna um valor verdadeiro se, e somente se, receber duas expressões verdadeiras.
or Retorna um valor falso se, e somente se, receber duas expressões falsas.
not Retorna verdadeiro se receber uma expressão falsa e vice-versa.
is Retorna verdadeiro se, e somente se, receber duas expressões cujos valores são iguais.
in Retorna verdadeiro se, e somente se, receber um valor contido numa lista, numa tupla, num dicionário etc.
X « Y Retorna X com os bits deslocados à esquerda por Y lugares.
X » Y R Retorna X com os bits deslocados à direita por Y lugares.
X Retorna o complemento de X. É equivalente a: - X - 1.
X == Y Retorna verdadeiro se, e somente se, X for igual a Y.
X != Y Retorna verdadeiro se, e somente se, X for diferente de Y.
X > Y Retorna verdadeiro se, e somente se, X for maior que Y.
X < Y R Retorna verdadeiro se, e somente se, X for menor que Y.
=> ou => Retorna verdadeiro se, e somente se, X for maior ou igual a Y.
<= ou <= Retorna verdadeiro se, e somente se, X for menor ou igual a Y.
O desenvolvimento de um código computacional em linguagem Python requer do programador o 
domínio da construção de algoritmos. Nesse sentido, o infográfico a seguir irá auxiliá-lo na construção 
de seus próximos algoritmos.
Tabela 1 - Operadores lógicos, relacionais e bitwise.
Fonte: Soubhia (2019, p. 25).
Arquitetura de aplicações web | Unidade 1 - Arquitetura de microsserviço
15
Agora que você já conhece os conceitos básicos de Python e do desenvolvimento de algoritmos, que tal 
aprender a fazer o seu um primeiro programa por meio do vídeo a seguir?
Assista
Acesse na plataforma o vídeo: Implementando um primeiro programa em linguagem Python
ED+ Content Hub © 2020
Infográfico 1 - Desenvolvimento de software.
Fonte: elaborado pelo autor.
Arquitetura de aplicações web | Unidade 1 - Arquitetura de microsserviço
16
3 MODELO DE ARQUITETURA REST
O desenvolvimento de sistemas distribuídos consiste em uma atividade de alta complexidade, a qual 
demanda esforços de toda a equipe de desenvolvimento, pois esse tipo de sistema envolve o atendi-
mento de requisitos de negócios e da aplicação, tais como gerenciamento de translações distribuídas, 
protocolos de comunicação, entre outros.
No entanto, as boas práticas de programação, somadas a uma arquitetura simples e robusta, podem 
reduzir substancialmente o tempo de implementação de sistemas distribuídos. Nesse sentido, a arquite-
tura REST (Representational State Transfer) se mostra como uma poderosa ferramenta capaz de atender 
aos inúmeros requisitos de um sistema complexo e a sua integração.
3.1 O QUE É A ARQUITETURA REST?
O termo REST, acrônimo de Representational State Transfer, foi definido por Roy Fielding em sua 
tese de doutorado no ano de 2000. Essencialmente, consiste em um design de arquitetura desenvol-
vido para aplicações em rede. Segundo Plansky (2020), a aplicação mais comum de uma arquitetura 
REST é a World Wide Web, a qual empregou a REST como fundamento para a criação do HTTP 1.1.
Fundamentalmente, o emprego de uma arquitetura REST permite a comunicação entre diferentes apli-
cações. Por exemplo, quando você abre o navegador, ele estabelece inicialmente uma conexão TCP/IP 
com o servidor de destino e, em seguida, envia para uma requisição GET HTTP, com o endereço buscado. 
No momento seguinte, o servidor interpreta a requisição a fim de retornar uma resposta HTTP ao nave-
gador. Essa resposta pode ser completa, com representação em formato HTML ou, no caso de erro, 
afirmar que o determinado recurso não foi encontrado.
A figura 5, a seguir, ilustra os procedimentos descritos anteriormente.
Arquitetura de aplicações web | Unidade 1 - Arquitetura de microsserviço
17
O processo descrito até aqui é, então, repetido diversas vezes ao longo do período de navegação, em 
que, a cada nova URL aberta, todas as etapas anteriores são novamente realizadas. Nesse sentido, esses 
elementos são responsáveis pela criação de aplicações web, desenhando, assim, o modo como nave-
gamos pela internet.
O material a seguir irá ajudá-lo a ampliar os seus conhecimentos sobre a arquitetura REST.
Aprofunde-se
Título: O que é REST?
Acesso em: 22/06/2020.
Disponível em: https://youtu.be/weQ8ssA6iBU
Figura 5 - REST é uma maneira simples de organizar 
iterações entre sistemas.
Fonte: adaptado de https://bit.ly/396daF3.
ED
+ 
Co
nt
en
t H
ub
 ©
 2
02
0
https://youtu.be/weQ8ssA6iBU
https://bit.ly/396daF3
Arquitetura de aplicações web | Unidade 1 - Arquitetura de microsserviço
18
Segundo a TOTVS (2020), os Web services que optam pela REST são mais leves e perfeitos para o desen-
volvimento da metodologia ágil. Além disso, outro diferencial consiste na escolha do formato que melhor 
se encaixa para as mensagens do sistema. Nesse sentido, os mais utilizados são, além do texto puro, o 
JSON e o XML, a depender da necessidade de cada momento.
Agora que você já conhece as características fundamentais de uma arquitetura REST, veja o vídeo a seguir.
Aprofunde-se
Título: Arquitetura REST
Acesso em: 22/06/2020.
Disponível em: https://youtu.be/S7MduKwvVGk
É comum a confusão quanto aos termos REST e RESTful. Entretanto, ambos representam os mesmos 
princípios. Para encerrar este tópico, o vídeo a seguir irá apresentar a você o conceito de RESTful.
Assista
Acesse na plataforma o vídeo: RESTful: o que é?
4 PRINCÍPIOS E BOAS PRÁTICAS DE SERVIÇOS REST
Agora, você irá aprofundar os seus conhecimentos em arquitetura REST, assim como conhecer algumas 
das boas práticas envolvendo-a. Nesse sentido, um importante conceito dentro desta literatura é o de 
visões, o qual, em uma arquitetura, é utilizado para descrever os elementos arquiteturais de modo a 
formar uma arquitetura.
Neste tópico, serão abordadas três visões dentro do conceito de arquitetura REST: visão de processos, 
visão de conectores e visão de dados.
https://youtu.be/S7MduKwvVGk
Arquitetura de aplicações web | Unidade 1 - Arquitetura de microsserviço
19
Figura 6 - Três visões em uma arquitetura REST.
Fonte: elaborado pelo autor.
4.1 VISÕES DE PROCESSO
De acordo com Fielding (2000), uma visão de processos em uma arquitetura é fundamentalmente útil 
para se obter as relações e as interações entre cada um dos componentes mostrando, assim, o caminho 
dos dados como um fluxo por meio do sistema.
No entanto, quando se considera um sistema real, ele envolve muitos componentes, o que resulta em 
uma visão geral complexa. Segundo Rodrigues (2009), a separação de responsabilidades da arquitetura 
REST entre cliente e servidor torna a implementação de componentes mais simples. Assim, é reduzida a 
complexidade semântica dos conectores, o que acaba por melhorar o desempenho e aumentar a esca-
labilidade de componentes.
Ao se considerar sistemas em camadas que permitem intermediários, como proxies, gateways e firewalls, 
eles podem ser inseridos em diferentes pontos da comunicação sem que a interface entre os compo-
nentes seja alterada. Isso permite que os componentes participem da comunicação e o seu desempenho 
possa ser melhorado por meio da cache.
Arquitetura de aplicações web | Unidade 1 - Arquitetura de microsserviço
20
As características naturais da arquitetura REST – sem estado – possibilitam olhar para cada iteração 
como sendo independente uma da outra. Além de permitirem que os componentes desempenhem 
um papel determinado dinamicamente em conformidade com o foco de cada requisição.
De acordo com Rodrigues (2009), cada um dos conectores deve ter conhecimento de outros apenas 
durante o escopo da comunicação, embora eles possam fazer uso da cache para armazenar informa-
ções acerca de outros componentes de modo a terem maior desempenho.
4.2 VISÃO DOS CONECTORES
Em uma arquitetura, a visão dos conectores tem foco nos mecanismos de comunicação entre os compo-
nentes. Na arquitetura REST, os interesses estãovoltados apenas para as características que definem 
uma interface genérica de recurso. Nesse sentido, conectores do tipo cliente consideram a identificação 
de recurso de modo a escolher o mecanismo de comunicação mais conveniente para cada uma das 
requisições.
A fim de ilustrar os conceitos aqui explanados, Fielding (2000) apresenta um exemplo: um cliente pode 
ser configurado a fim de se conectar a um específico componente de proxy somente no caso em que o 
identificador indicar que ele é um recurso local. E um cliente pode ser configurado para rejeitar as requi-
sições de um determinado subconjunto de identificadores.
4.3 VISÃO DOS DADOS
Quando se considera a visão de dados em uma arquitetura, ela revela o estado de uma determinada 
aplicação como sendo um fluxo de informações por meio de seus componentes. Uma vez que o foco da 
arquitetura REST é em sistemas distribuídos, a sua visão de dados é uma estrutura coesa de informações 
e alternativas de controle, pelas quais um determinado usuário pode realizar suas tarefas.
Segundo Rodrigues (2009), os estados de uma determinada aplicação são controlados e armazenados 
por um determinado agente usuário e podem ser decompostos em representação de vários servidores. 
Nesse sentido, um dado usuário pode manipular diretamente o estado como, por exemplo, o histórico 
de um Web browser. Além disso, esse usuário pode antecipar a mudança de um estado e pular de qual-
quer aplicação para outra como, por exemplo, os bookmarks.
Agora que é de seu conhecimento os três tipos de visões em uma arquitetura REST, convido você a apli-
cá-los, por meio do material em vídeo a seguir.
Arquitetura de aplicações web | Unidade 1 - Arquitetura de microsserviço
21
Aprofunde-se
Título: Boas práticas REST
Acesso em: 26/06/2020.
Disponível em: https://youtu.be/Z_UMRUn5EhM
Até aqui, você já aprendeu muito sobre a arquitetura REST. Assim, aprofunde ainda mais o seu conheci-
mento por meio do vídeo a seguir, que irá apresentar os elementos dessa arquitetura.
Assista
Acesse na plataforma o vídeo: Elementos arquiteturais REST
https://youtu.be/Z_UMRUn5EhM
Arquitetura de aplicações web | Unidade 1 - Arquitetura de microsserviço
22
CONSIDERAÇÕES FINAIS
Nesta unidade, você aprendeu alguns dos principais fundamentos da arquitetura REST, bem como 
algumas de suas boas práticas. O conhecimento adquirido irá lhe auxiliar em seus estudos. Há muito 
ainda a ser aprendido, mas você já deu os primeiros passos.
Arquitetura de aplicações web | Unidade 1 - Arquitetura de microsserviço
23
GLOSSÁRIO
Arquitetura: como um sistema deve ser organizado e qual a sua estrutura geral.
Escalabilidade: é uma característica recomendável de um sistema computacional, que indica a sua 
capacidade de manipular com uma porção crescente de trabalho ou estar preparado para crescer.
Resiliência: é a capacidade da aplicação em manter níveis aceitáveis de operação frente a anomalias, 
como sobrecarga operacional ou outros tipos de problemas.
Sistemas distribuídos: uma coleção de dispositivos autônomos conectados por uma rede de comu-
nicação que é percebida pelos usuários como um único dispositivo provendo serviços ou resolvendo 
algum problema.
Arquitetura de aplicações web | Unidade 1 - Arquitetura de microsserviço
24
REFERÊNCIAS
AMAZON WEB SERVICES. Microsserviços. Disponível em: https://go.aws/2Z1nTvF Acesso em: 23 jun. 2020.
DEVMEDIA.  Conhecendo o modelo arquitetural REST. Disponível em: https://www.devmedia.com.br/
conhecendo-o-modelo-arquitetural-rest/28052 Acesso em: 24 jun. 2020.
FIELDING, Roy Thomas. Representational State Transfer (REST), 2000. Disponível em: https://www.ics.
uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm Acesso em: 8 jul. 2020.
PLANSKY, Ricardo. Definição, restrições e benefícios do modelo de arquitetura REST. Disponível em: 
https://bit.ly/2Z8k6wq Acesso em: 24 jun. 2020.
RED HAT. O que são os microsserviços? Disponível em: https://www.redhat.com/pt-br/topics/microser-
vices/what-are-microservices Acesso em: 8 jul. 2020.
RODRIGUES, L. C. R. Arquitetura REST. 2009. 77 f. Monografia (Bacharelado em Ciência da Computação) 
– Universidade Federal de Juiz de Fora, Juiz de Fora.
SEVERANCE, Charles. Python para Informática, 2015. Disponível em: http://destacom.sites.ufms.br/
files/2015/05/apostila.pdf Acesso em: 22 jun. 2020.
SOUBHIA, Ana Luisa et al. Python 101, 2019. Disponível em: https://www.ufsm.br/laboratorios/lumac/
wp-content/uploads/sites/679/2019/08/Apostila_Python_v_1.pdf Acesso em: 8 jul. 2020.
TOTVS. Arquitetura REST: saiba o que é e seus diferenciais. Disponível em: https://www.totvs.com/blog/
developers/rest/ Acesso em: 24 jun. 2020.
https://go.aws/2Z1nTvF
https://www.devmedia.com.br/conhecendo-o-modelo-arquitetural-rest/28052
https://www.devmedia.com.br/conhecendo-o-modelo-arquitetural-rest/28052
https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
https://bit.ly/2Z8k6wq
https://www.redhat.com/pt-br/topics/microservices/what-are-microservices
https://www.redhat.com/pt-br/topics/microservices/what-are-microservices
http://destacom.sites.ufms.br/files/2015/05/apostila.pdf
http://destacom.sites.ufms.br/files/2015/05/apostila.pdf
https://www.ufsm.br/laboratorios/lumac/wp-content/uploads/sites/679/2019/08/Apostila_Python_v_1.pdf
https://www.ufsm.br/laboratorios/lumac/wp-content/uploads/sites/679/2019/08/Apostila_Python_v_1.pdf
https://www.totvs.com/blog/developers/rest/
https://www.totvs.com/blog/developers/rest/
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web
25
Unidade 2 Construção de serviços web 
Objetivo de aprendizagem:
Esta unidade tem como objetivo apresentar técnicas de programação que ensinam a desenvolver 
serviços web.
Tópicos de estudo:
• Principais frameworks;
• Versionamento de código;
• Organização das rotas;
• Depuração.
Iniciando os estudos:
O desenvolvimento de serviços web envolvem um amplo conhecimento de técnicas e ferramentas 
computacionais. Nesse sentido, torna-se indispensável o conhecimento dos principais frameworks 
voltados ao desenvolvimento de serviços que fazem uso da arquitetura REST, pois esses trazem maior 
agilidade no desenvolvimento do projeto e maior confiabilidade das implementações.
No entanto, os frameworks não são as únicas ferramentas que auxiliam os desenvolvedores. Ferra-
mentas como o git auxiliam as equipes com o versionamento dos códigos que estão sendo desenvol-
vidos, bem como favorecem também o trabalho colaborativo.
Em todo desenvolvimento de software é comum, ao longo de um projeto, as equipes empenharem 
esforços a fim de depurar códigos que estão em produção ou que já foram produzidos e não estão apre-
sentando os comportamentos esperados. Nesse sentido, é essencial um amplo conhecimento de cada 
um dos tipos de erros que um programa pode apresentar. Também fazem parte dos conhecimentos de 
um desenvolvedor a organização das rotas em programação com serviços REST, a qual também será 
estudada nesta unidade.
Seja bem-vindo e bons estudos.
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web
26
1 PRINCIPAIS FRAMEWORKS
Cada vez mais a arquitetura REST vem sendo empregada para a construção de serviços web. Dessa 
forma, diferentes frameworks foram desenvolvidos e dão aos programadores modos mais simples de 
implementação de aplicações em conformidade com a arquitetura REST.
Nesse tópico, você irá conhecer alguns dos principais frameworks que se destinam à implementação de 
serviços REST e fazem uso das linguagens Python, Java e Ruby. Os frameworks aqui apresentados serão: 
Django REST Framework, Flask RESTful, Restlet, Spark e Sinatra, mas antes separei para você um vídeo 
que apresenta os principais conceitos que envolvem um framework.
Aprofunde-se
Título: Frameworks
Acesso em: 28/06/2020.
Disponível em: https://bit.ly/3eHVJMG
1.1 DJANGO REST FRAMEWORK
O Django REST Framework é considerado pelos desenvolvedores uma ferramentapoderosa, sofisticada 
e de fácil utilização, podendo ser utilizada em conjunto com o framework de desenvolvimento de apli-
cações web Django que, ao ser integrado no desenvolvimento de um back-end específico, possibilita a 
implementação de serviços REST.
Figura 1 - Django REST Framework.
https://bit.ly/3eHVJMG
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web
27
Segundo Sousa (2015), esse framework tem como um de seus principais pontos fortes sua capaci-
dade de construção dos serviços por meio de vistas baseadas em classes, o que permite construir, 
de um modo praticamente automático, uma API por meio de modelos de recursos disponíveis, não 
sendo necessária a lógica de cada um dos endpoints disponibilizados.
Aprofunde-se
Neste material, você irá encontrar uma completa documentação do Django, esse que é 
um dos mais robustos frameworks.
Título do artigo: Documentação do Django 
Link: https://docs.djangoproject.com/en/3.0/
Dada a robustez desse framework e sua importância nos diferentes ambientes de desenvolvimento, 
separei para você a documentação completa dessa ferramenta.
Agora que você possui um substancial conhecimento acerca do Django framework, o vídeo a seguir irá 
fazer uso desta na construção de um blog passo a passo.
Aprofunde-se
Título: Django: Construindo um Blog em Minutos
Acesso em: 15/07/2020.
Disponível em: https://youtu.be/eK2sfDWQUXc
https://docs.djangoproject.com/en/3.0/
https://youtu.be/eK2sfDWQUXc
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web
28
1.2 FLASK RESTFUL
Simples e de fácil utilização, sendo voltado para o desenvolvimento de aplicações simples, o Flask RESTful 
é uma extensão para microframework Flask, cujo principal objetivo é oferecer aos desenvolvedores um 
ponto de partida extensível para implantação de suas APIs.
De acordo com Sousa (2015), o Flask RESTful permite abstrair as tarefas relacionais com o protocolo 
HTTP, sendo completamente independente da lógica de negócio da aplicação, o que permite aos desen-
volvedores implementar serviços tendo em conta suas necessidades e preferências.
Segundo o site Flask RESTful (2020), o Flask RESTful é uma extensão do Flask que adiciona suporte para a 
criação rápida de APIs REST. Nele você encontra a completa documentação deste framework que pode 
auxiliá-lo em seus futuros trabalhos.
Munido de um conhecimento acerca do Flask RESTful, o vídeo a seguir irá ensinar você a construir uma 
API fazendo uso desse framework.
Aprofunde-se
Título: Building Web APIs - Using Flask RESTful
Acesso em: 05/07/2020.
Disponível em: https://youtu.be/bc3j7L_1YQU
Figura 2 - Flask RESTful.
Fonte: adaptado do desenvolvedor oficial do Flask-RESTful (2020).
https://flask-restful.readthedocs.io/en/latest/
https://youtu.be/bc3j7L_1YQU
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web
29
1.3 RESTLET
O Restlet é um framework open source voltado para o desenvolvimento de APIs REST em linguagem Java, 
tanto do lado do servidor quanto do lado do cliente em uma mesma API, o que reduz a curva de apren-
dizagem dos diferentes componentes do sistema.
Segundo Sousa (2015), ao fazer uso do framework, a distribuição do serviço torna-se flexível, possibi-
litando incluir o módulo relativo à interface REST numa aplicação Java já existente ou disponibilizá-lo 
apenas como uma aplicação de servidor que pode ser integrada a um servidor HTTP.
Dada a robustez do framework Restlet, o site Restlet Talend (2020) traz uma completa documentação do 
Restlet Framework.
Agora que você já conhece o Restlet Framework, o vídeo a seguir irá ensiná-lo a trabalhar com esta ferra-
menta passo a passo.
Aprofunde-se
Título: Introduction to the Restlet Framework
Acesso em: 15/07/2020.
Disponível em: https://youtu.be/t8kn5UaO8FU
Figura 3 - O Restlet Framework é o código-fonte aberto 
mais usado como solução para desenvolvedores Java 
que desejam criar e usar APIs.
Fonte: adaptado do site oficial do Restlet (2020).
https://restlet.talend.com/documentation/tutorials/2.4/
https://youtu.be/t8kn5UaO8FU
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web
30
1.4 SPARK
O Spark é um microframework voltado para o desenvolvimento de serviços REST em linguagem Java 
que tem como principal objetivo proporcionar às equipes de desenvolvimento agilidade e velocidade na 
implementação de serviços web.
Segundo Sousa (2015), o Spark é um microframework bastante minimalista e que oferece o suporte 
necessário ao desenvolvimento de serviços como gestão de diferentes rotas, manipulação de pedidos 
de HTTP e suas respectivas respostas, gestão de dados de sessão, além de oferecer a renderização de 
templates de Java Server Pages (JSP).
O microframework Spark é uma ferramenta bastante ampla. Desse modo, a fim de que você possa conhecer 
com mais detalhes, o site Spark Java (2020) possui uma documentação completa para sua consulta.
Agora que você teve seu primeiro contato com o framework Spark, o vídeo a seguir irá apresentar 
alguns exemplos práticos deste framework.
Figura 4 - Spark é um microframework voltado para o 
desenvolvimento de serviços REST em linguagem Java.
Fonte: adaptado do site oficial do Spark (2020).
http://sparkjava.com/documentation#getting-started
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web
31
Aprofunde-se
Título: Quick introduction to Apache Spark
Acesso em: 15/07/2020.
Disponível em: https://bit.ly/3euVsMu
1.5 SINATRA
O framework Sinatra é uma ferramenta gratuita e open source desenvolvida na linguagem de progra-
mação Ruby. De acordo com Sousa (2015), esse framework tem como objetivo permitir a implementação 
de serviços REST de forma rápida e acessível, sendo ao mesmo tempo elegante, leve e minimalista.
Diferentemente do que ocorre com outros frameworks, o Sinatra não faz uso do padrão do Model-View-
-Controller, pois ele tem como objetivo ser o mais simples e flexível possível, proporcionando aos desen-
volvedores uma forma de implementação dos serviços empenhando o menor esforço possível. 
A fim de aprofundar seus conhecimentos sobre esse framework, você pode consultar a documentação 
oficial por meio do material a seguir:
Aprofunde-se
Este artigo traz a documentação completa do framework Sinatra.
Título do artigo: Documentação do Sinatra
Link: http://sinatrarb.com/documentation.html
Após você estudar alguns dos diferentes tipos de frameworks voltados ao desenvolvimento com uso da 
arquitetura REST, seria possível compará-los? O que uma possível comparação seria capaz de revelar? A 
fim de responder a essa pergunta, separei para você o seguinte material em vídeo e em tabela:
Assista
Acesse na plataforma o vídeo: Comparação de frameworks
https://bit.ly/3euVsMu
http://sinatrarb.com/documentation.html
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web
32
A tabela faz um comparativo detalhado de cada um dos frameworks aqui apresentados.
 Linguagem Baseada em 
recursos
Serialização Autenticação Cache
Django REST 
Framework
Python Sim XML, JSON, 
YAML, HTML
Básica, Token, Sessão, OAuth, OAuth2.0 e 
outros
Sim
Flask RESTful Python Sim JSON Não Não
Restlet Java Sim JSON, XML, 
CSV, YAML
Básica, Digest, Amazon S3, OAuth2.0 Não
Spark Java Não Não Não Não
Sinatra Ruby Não Não Por meio de middleware Rack Sim
2 VERSIONAMENTO DE CÓDIGO
O processo de desenvolvimento de software envolve a produção de inúmeros arquivos de códigos 
computacionais executados pelo sistema operacional ou por algum compilador. Além disso, é comum 
o processo de desenvolvimento envolver inúmeras entregas de pequenas partes do software, uma vez 
que cada uma dessas versões constitui uma versão do software.
Não é uma tarefa fácil gerenciar milhares de linhas e arquivos de códigos referentes à implementação 
de um projeto, tanto que o uso inadequado de uma determinada versão pode ocasionar um compor-
tamento inesperado do software, implicando em diferentes tipos de perdas, sejam elas financeiras, de 
disponibilidadedo serviço, entre tantas outras.
Uma vez que o controle manual do versionamento dos arquivos referentes ao desenvolvimento de um 
software se mostra excessivamente trabalhoso e ineficiente, se faz necessário o uso de tecnologias para 
esse fim. Nesse sentido, diferentes ferramentas de controle de versões foram desenvolvidas, sendo a 
mais utilizada atualmente a git, devido a sua robustez.
Tabela 1 - Comparativo dos frameworks.
Fonte: adaptado de Sousa (2015).
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web
33
2.1 O QUE É GIT?
Essencialmente, o git consiste em um sistema de gerenciamento de versão desenvolvido em código 
aberto e gratuito, sendo empregado no controle de versões desde projetos pequenos até projetos de 
grande porte.
De acordo com o Zup (2019), a principal funcionalidade que faz com que o git seja amplamente 
empregado em projetos de desenvolvimento de software consiste na capacidade dele de realizar o 
controle de versões de modo colaborativo.
O vídeo a seguir faz uma explanação inicial sobre o git e sua importância na rotina dos desenvolvedores:
Aprofunde-se
Título: Git - sistema de controle de versões distribuído
Acesso em: 28/06/2020.
Disponível em: https://bit.ly/3idcKAz
Ao fazer uso do git e seu modo colaborativo, dois desenvolvedores trabalham em um mesmo arquivo 
sem que ocorra a sobrescrita de código. Portanto, os desenvolvedores podem estar implementando 
funcionalidades distintas, ou corrigindo bugs, e ao mesmo tempo mesclarem os arquivos que não terão 
qualquer tipo de problema.
Conforme o Zup (2019), o git faz uso do conceito de ramificação (branch) em que cada ramificação 
consiste em uma linha do tempo dotada de marcos (commits), e em cada um dos branchs os arquivos 
podem ser alterados pelo desenvolvedor sem causar impactos nas outras ramificações.
A figura a seguir mostra quatro ramos sendo atualizados em paralelo por diferentes desenvolvedores 
ao longo do tempo por meio de marcos (commits) e, posteriormente, o branch feature por meio do 
processo de merge sendo mesclado no branch develop.
https://bit.ly/3idcKAz
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web
34
Talvez alguns termos do parágrafo anterior tenham lhe chamado a atenção, tais como commits e branch. 
Assim, preparei o vídeo a seguir de modo a explicar em detalhes cada um deles:
Assista
Acesse na plataforma o vídeo: Entendendo o versionamento
Até este ponto, você aprendeu os conceitos iniciais sobre a ferramenta git. A fim de você aprofundar seus 
conhecimentos, recomendo os estudos da documentação dessa ferramenta, por meio da seguinte referência:
Aprofunde-se
Neste link, você encontra toda a documentação do git que irá auxiliá-lo em seus projetos 
em pdf.
Título do artigo: Git
Link: https://git-scm.com/book/en/v2
Figura 5 - Ramos sendo atualizados com o uso do git.
Fonte: elaborado pelo autor (2020).
ED+ Content Hub © 2020
https://git-scm.com/book/en/v2
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web
35
Como estudado por você, o git tem como função realizar o controle de versões de um software, no 
entanto, para que isso ocorra, deve-se ter um repositório a ser gerenciado. É nesse ponto que entra o 
GitHub e o GitLab, que consistem em plataformas para hospedagem de repositórios baseadas em git.
Mas o que git tem a ver a ver com GitHub ou GitLab? Segundo o Zup (2019), essencialmente, o GitHub e 
o GitLab são plataformas de hospedagem de código-fonte que possibilitam os desenvolvedores contri-
buírem em projetos open source ou privados.
Tanto o GitHub quanto o GitLab oferecem recursos de hospedagem de código-fonte, revisão de código 
inline, fork, clone de repositórios e integração com ferramenta de terceiros.
No entanto, essas ferramentas apresentam diferenças que ficam por conta de suas funcionalidades. 
Enquanto o GitHub tem como foco a integração de ferramentas de DevOps, o GitLab oferece de forma 
nativa ferramentas de integração e entregas contínuas, além de métricas que visam a qualidade de 
software, teste de usabilidade e performance.
No ambiente de desenvolvimento, se faz necessário agilidade e eficiência a fim de se aperfeiçoar 
produtos, neste sentido, é indispensável o conhecimento do conceito de DevOps, o qual é explanado no 
artigo a seguir.
Aprofunde-se
O DevOps consiste na combinação de filosofias culturais, práticas e ferramentas que 
incrementam a capacidade de uma empresa de distribuir aplicativos e serviços em alta 
velocidade, desta forma, otimizando e aperfeiçoando produtos de uma forma mais ágil.
Título do artigo: O que é o DevOps?
Link: https://aws.amazon.com/pt/devops/what-is-devops/
Figura 6 - Ilustrar o conceito de rotas.
Fonte: Disponível em: https://tableless.com.br/github_vs_
gitlab/ Acesso em: 27 jul. 2020. 
https://aws.amazon.com/pt/devops/what-is-devops/
https://tableless.com.br/github_vs_gitlab/
https://tableless.com.br/github_vs_gitlab/
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web
36
3 ORGANIZAÇÃO DAS ROTAS
Neste tópico, você irá estudar o conceito de rotas em arquitetura REST por meio do framework CakePHP. 
Segundo a documentação oficial desse framework, o modo mais rápido de utilizar REST em uma aplicação 
consiste em adicionar algumas linhas em seu arquivo routes.php, que é encontrado em app/config.
O objeto Router contém um método específico chamado mapResources() cuja função permite configurar 
algumas rotas padrões, as quais permitem o acesso REST em suas classes de controles (controllers). Por 
exemplo, caso você queira permitir o acesso REST a um banco de dados de receitas, a implementação 
seria algo como a seguir, adaptado de CakePHP (2020):
//Em app/config/routes.php...
Router::mapResources(‘recipes’);
Router::parseExtensions();
Figura 7 - Rotas.
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web
37
Na primeira linha do código mostrado, é criada, de forma simples, uma série de rotas para acesso REST, 
sendo essas rotas sensíveis ao método HTTP solicitado. A tabela a seguir, adaptada de CakePHP (2020), 
descreve as rotas criadas:
Método HTTP URL Ação de controle invocada
GET /recipes RecipesController::index()
GET /recipes/123 RecipesController::view(123)
POST /recipes RecipesController::add()
PUT /recipes/123 RecipesController::edit(123)
DELETE /recipes/123 RecipesController::delete(123)
POST /recipes/123 RecipesController::edit(123)
De acordo com a documentação do CakePHP, a classe de rotas faz uso de diferentes indicadores para 
detectar o método PHP utilizado. A seguir é mostrada a ordem de avaliação desses indicadores.
A classe de rotas do CakePHP utiliza diferentes indicadores para detectar o método HTTP utilizado. 
Abaixo é demonstrada a ordem de avaliação desses indicadores:
1. A variável _method é enviada junto ao POST;
2. O X_HTTP-Method-Override
3. O cabeçalho REQUEST_METHOD
A variável do POST_method tem sua devida importância ao fazer uso do navegador como um cliente 
REST. Tendo as rotas prontas é fácil mapear as ações de um determinado controle. Uma classe de 
controle básica é similar à mostrada a seguir, adaptada do CakePHP (2020):
// controllers/recipes_controller.php
class RecipesController extends AppController {
 var $components = array(‘RequestHandler’);
 function index() {
 $recipes = $this->Recipe->find(‘all’);
 $this->set(compact(‘recipes’));
 }
 function view($id) {
 $recipe = $this->Recipe->findById($id);
Tabela 2 - Métodos HTTP e ações invocadas.
Fonte: adaptado de CakePHP (2020).
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web
38
 $this->set(compact(‘recipe’));
 }
 function edit($id) {
 $this->Recipe->id = $id;
 if ($this->Recipe->save($this->data)) {
 $message = ‘Saved’;
 } else {
 $message = ‘Error’;
 }
 $this->set(compact(“message”));
 }
 function delete($id) {
 if($this->Recipe->delete($id)){
 $message = ‘Deleted’;
 } else {
 $message = ‘Error’;
 }
 $this->set(compact(“message”));
 }
}
De acordo com a documentação do CakePHP, com a adição do método Router::parseExtensions(), as 
rotas do CakePHP estão habilitadas para servir diferentes tipos de requisições. Nesse sentido, como 
se está considerando um contexto baseado em REST, as visões são do tipo XML.
A fim de você compreender de um modo prático a constituição de rotas, separei para você o material 
em vídeo a seguir:
Aprofunde-se
Título: Implementando rotas
Acesso em: 06/07/2020.
Disponível em: https://youtu.be/VuGOWDZWSTQ
https://youtu.be/VuGOWDZWSTQ
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web
39
Para finalizar este tópico, o material em vídeo a seguir irá explanar o conceito de roteamento REST 
personalizado.
Assista
Acesse na plataforma o vídeo: Roteamento REST personalizado
4 DEPURAÇÃO
Ao desenvolver um código computacional, é comum que ele não fique pronto em sua primeira versão, 
sendo necessário ajustes a fim de corrigir os erros que serão encontrados.
Esta etapa de identificar o tipo de erro que está ocorrendo no código computacional e aplicar as corre-
ções necessárias de modo a se obter os resultados esperados recebe o nome de debug.
Certamente você já teve a experiência de realizar a depuração de seus programas, mesmo sem conhecer 
os conceitos deste tema e a importância dele para o ambiente de desenvolvimento de software.
A fim de realizar uma pequena apresentação a você sobre o tema debug, separei o conteúdo em vídeo 
a seguir:
Aprofunde-se
Título: Debug (Depuração)
Acesso em: 28/06/2020.
Disponível em: https://youtu.be/Wnb02kzc0Cw
O processo de depuração de um programa pode envolver a correção de diferentes tipos de erros. 
Desse modo, é indispensável que você saiba diferenciar cada um deles, de forma a tornar essa etapa de 
correção mais ágil.
Essencialmente, a depuração de um código computacional envolve a correção de três tipos de erros, a 
saber: erros de sintaxe, erros de execução e erros de semântica. A seguir você irá estudar cada um deles.
Ao longo deste texto, foi feita uma abordagem utilizando a linguagem Python, mas os conceitos aqui 
apresentados podem ser naturalmente estendidos para qualquer outra linguagem.
https://youtu.be/Wnb02kzc0Cw
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web
40
4.1 ERROS DE SINTAXE
Como o próprio nome sugere, os erros de sintaxe (sintax errors) apontam que, ao desenvolver o código 
computacional, você escreveu algo sintaticamente de forma incorreta. Segundo Miller et al. (2011), esse 
tipo de erro ocorre quando a linguagem Python está traduzindo o código-fonte em código executável, 
ou seja, byte code. A figura a seguir exemplifica um erro de sintaxe em um programa escrito em Python.
Em geral, os erros de sintaxe são simples de serem corrigidos, desde que você conheça o problema, o 
que pode não ser tão simples caso você não tenha tanta experiência com a implementação de códigos 
computacionais, pois as mensagens mais comuns dos compiladores são: SyntaxError: invalid syntax e 
SyntaxError: invalid, o que não ajuda muito.
Figura 8 - Erro de sintaxe em Python.
Fonte: elaborado pelo autor.
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web
41
Reflita
Uma vez que as informações fornecidas pelo compilador não nos dizem muito sobre o 
erro de sintaxe, uma questão natural seria se há uma estratégia a ser adotada a fim de 
evitar que os erros de sintaxe ocorram. A resposta é dada por Miller et al. (2011), que 
elenca os seguintes pontos a serem verificados:
• Se não está utilizando uma palavra reservada do Python como nome de variável;
• Se as aspas ou apóstrofos de qualquer string no código estão emparelhados;
• Se há dois pontos (:) no final de cabeçalho de cada comando (compound 
statement), incluindo aqui os laços de repetição (for, while) assim como as 
estruturas de seleção if e if else;
• Se é consistente o número de parênteses, chaves ou colchetes abertos e fechados;
• Verificar se há apenas um “=” ao invés de “==” em uma condição;
• Se a tabulação é consistente.
As dicas apresentadas por Miller et al. (2011) são de grande utilidade para a correção dos erros de 
sintaxe, porém a depuração de um código computacional envolve outros tipos de erros que serão expla-
nados a seguir.
4.2 ERROS DE EXECUÇÃO
Os erros de execução são conhecidos como runtime errors e, como o próprio nome indica, eles ocorrem 
durante a execução do programa. Esse tipo de erro indica geralmente que, ao desenvolver o código 
computacional, você cometeu algum tipo de erro de lógica de programação.
Ao reportar um erro de execução, os compiladores indicam em que ponto do programa o erro ocorreu 
e quais eram as funções que estavam em execução naquele momento.
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web
42
Segundo Miller et al. (2011), um erro de execução é a recursão infinita que causa o erro maximum recur-
sion depth exceeded, como observa o referido autor. Apesar do erro ter se manifestado em um ponto 
específico durante a execução do programa, o erro de lógica que o ocasiona pode estar em um trecho 
de código distante desse ponto.
De modo a evitar que esse tipo de erro ocorra, uma das técnicas que você pode adotar é a depuração 
do fluxo de execução (flow of execution). Assim, você deve verificar se o que você espera que ocorra 
está acontecendo de fato em cada um dos trechos do código. Como exemplo, você pode incluir alguns 
comandos do tipo print no interior de alguma função a fim de verificar se ela está sendo executada 
corretamente.
Os erros de execução requerem para sua correção um profundo conhecimento do fluxo de execução do 
programa e da lógica utilizada em sua construção. Sendo assim, esse tipo de erro requer pleno conheci-
mento do que está sendo desenvolvido.
Figura 9 - Runtime error em uma aplicação.
Fonte: Disponível em: https://stackoverflow.com/questions/12459977/
runtime-error-in-web-config Acesso em: 27 jul. 2020.
https://stackoverflow.com/questions/12459977/runtime-error-in-web-config
https://stackoverflow.com/questions/12459977/runtime-error-in-web-config
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web
43
4.3 ERROS DE SEMÂNTICA
Durante o processo de desenvolvimento de um código computacional, pode ocorrer do programa ser 
executado normalmente, não apresentando nenhum tipo de erro de sintaxe ou de execução, entre-
tanto, mesmo assim, ele apresenta resultados que você não espera. Nesse momento, você acabou de se 
deparar com um erro de semântica.
Os erros de semântica estão estritamente relacionados à lógica utilizada durante o desenvolvimento 
do código. Um exemplo simples desse tipo de erro é a execução de uma expressão matemática pelo 
compilador.
Como exemplo, considere que você deseja avaliar o resultado da expressão matemática a / (b * c), mas 
durante o desenvolvimento do código computacional você dá a essa expressão matemática a seguinte 
implementação: a / b * c. Certamente não irá obter o resultado esperado, pois devido a procedência dos 
operadores matemáticos, a expressão é executada da seguinte forma: (a / b) * c.
O tema da depuração de um código computacional envolve a experiência do desenvolvedor, bem como 
profundos conhecimentos do produto que está sendo desenvolvido e das ferramentas utilizadas durante 
esse desenvolvimento. Nesse sentido, separei para você a seguinte referência:
Aprofunde-se
Título do livro: Problem solving with 
algorithms and data structures using 
Python
Autores: Bradley N. Miller e David L. 
Ranum
Local: Portland, EUA.
Editora: Franklin, Beedle & Associates.
Data de Publicação: 2011.
ISBN: 1590282574.
Agora que você está munido do conhecimento teórico sobre os erros envolvidos durante o desenvolvi-
mento de um programa, separei o seguinte material em vídeo mostrando a depuração de um programa:
Assista
Acesse naplataforma o vídeo: Depurar um programa
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web
44
Por fim, o infográfico a seguir irá ajudar você indicando alguns pontos a serem observados ao se realizar 
a depuração de um código.
ED
+ 
Co
nt
en
t H
ub
 ©
 2
02
0
Infográfico 1 - Depuração de código.
Fonte: elaborado pelo autor.
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web
45
CONSIDERAÇÕES FINAIS
Nesta unidade, você aprendeu importantes conceitos sobre temas como frameworks, REST, rotas, 
versionamento de códigos e depuração de programas. Todo esse conhecimento lhe permitirá construir 
aplicações web cada vez mais sofisticadas e adequadas às demandas de mercado.
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web
46
GLOSSÁRIO
Depuração: consiste no processo de buscar, encontrar e reduzir defeitos de implementações em códigos 
computacionais ou até mesmo em hardware.
Framework: no contexto de desenvolvimento de software, consiste em uma abstração que reúne dife-
rentes tipos de códigos que são comuns entre diferentes projetos de software.
Implementação: é a etapa do ciclo de vida de um software que consiste na elaboração e desenvolvi-
mento dos módulos necessários à sua execução.
Semântica: consiste na área da Ciência da Computação que tem como objetivo especificar o significado 
(ou comportamento) de programas e partes de hardware.
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web
47
REFERÊNCIAS
ALVES, P. W. Desenvolvimento e Design de Sites. Disponível em: https://integrada.minhabiblioteca.com.
br/#/books/9788536519012/ Acesso em: 09 jul. 2020.
BREITMAN, Koogan K. Web semântica - A internet do futuro. Disponível em: https://integrada.minhabi-
blioteca.com.br/#/books/978-85-216-1958-1/ Acesso em: 09 jul. 2020.
CAKEPHP. Configuração Simples. Disponível em: https://book.cakephp.org/1.3/pt/The-Manual/Common-
-Tasks-With-CakePHP/REST.html Acesso em: 6 jul. 2020.
FLANAGAN, David. JavaScript: o guia definitivo. Disponível em: https://integrada.minhabiblioteca.com.
br/#/books/9788565837484/ Acesso em: 09 jul. 2020.
FLASK RESTFUL. Flask RESTful. Disponível em: https://flask-restful.readthedocs.io/en/latest/ Acesso em: 15 
jul. 2020.
HAROLD, R., E. Refatorando HTML. Disponível em: https://integrada.minhabiblioteca.com.br/#/
books/9788577806706/ Acesso em: 09 ju. 2020.
MILETTO, Manara E.; BERTAGNOLLI, Castro, S. D. Desenvolvimento de Software II: Introdução ao 
Desenvolvimento Web com HTML, CSS, JavaScript e PHP. Disponível em: de https://integrada.minhabi-
blioteca.com.br/#/books/9788582601969/ Acesso em: 09 jul. 2020.
MILLER, Bradley N. et al. Problem solving with algorithms and data structures using Python. 2. ed. 
EUA: Franklin, Beedle & Associates, 2011. ISBN 1590282574.
RESTLET TALEND. Restlet Talend. Disponível em: https://restlet.talend.com/documentation/tutorials/2.4/ 
Acesso em: 15 jul. 2020.
SOUSA, Filipe Perdigão de. Criação de framework REST/HATEOAS open source para desenvolvi-
mento de apis em node.js, 2015. 125 p. Dissertação (Mestrado Integrado em Engenharia Informática e 
Computação) - Faculdade de engenharia do Porto, Porto, Portugal. Disponível em: https://referenciabiblio-
grafica.net/a/pt-br/ref/abnt/?example=dissertation-1 Acesso em: 10 jul. 2020.
SPARK JAVA. Spark java. Disponível em: http://sparkjava.com/documentation#getting-started Acesso em: 
15 jul. 2020.
ZUP. Git, Github e Gitlab: o que são e principais diferenças, 2019. Disponível em: https://www.zup.com.
br/blog/git-github-e-gitlab Acesso em: 1 jul. 2020.
https://integrada.minhabiblioteca.com.br/#/books/9788536519012/
https://integrada.minhabiblioteca.com.br/#/books/9788536519012/
https://integrada.minhabiblioteca.com.br/#/books/978-85-216-1958-1/
https://integrada.minhabiblioteca.com.br/#/books/978-85-216-1958-1/
https://book.cakephp.org/1.3/pt/The-Manual/Common-Tasks-With-CakePHP/REST.html
https://book.cakephp.org/1.3/pt/The-Manual/Common-Tasks-With-CakePHP/REST.html
https://integrada.minhabiblioteca.com.br/#/books/9788565837484/
https://integrada.minhabiblioteca.com.br/#/books/9788565837484/
https://flask-restful.readthedocs.io/en/latest/
https://integrada.minhabiblioteca.com.br/#/books/9788577806706/
https://integrada.minhabiblioteca.com.br/#/books/9788577806706/
https://integrada.minhabiblioteca.com.br/#/books/9788582601969/
https://integrada.minhabiblioteca.com.br/#/books/9788582601969/
https://restlet.talend.com/documentation/tutorials/2.4/
https://referenciabibliografica.net/a/pt-br/ref/abnt/?example=dissertation-1
https://referenciabibliografica.net/a/pt-br/ref/abnt/?example=dissertation-1
http://sparkjava.com/documentation#getting-started
https://www.zup.com.br/blog/git-github-e-gitlab
https://www.zup.com.br/blog/git-github-e-gitlab
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
48
Unidade 3 Persistência de dados 
Objetivo de aprendizagem:
Esta unidade tem como objetivo ensinar os mecanismos de armazenamento e recuperação de dados 
com ênfase na utilização de bancos de dados NoSQL.
Tópicos de estudo:
• Bancos de dados NoSQL;
• Gravação e listagem de dados;
• Atualização e exclusão de dados.
Iniciando os estudos:
Atualmente, são inúmeras as redes sociais disponíveis aos usuários da internet, sejam elas para fins 
profissionais, de compartilhamento de fotos, de amizades, para relacionamentos, entre tantas outras 
funções. Cada uma delas armazena inúmeras informações de seus usuários, tais como o nome, a idade, 
a profissão, os locais onde já esteve, os amigos que contam em seu perfil, entre outras.
As informações fornecidas pelos usuários, seja em uma rede social ou em um serviço bancário, precisam 
ser constantemente atualizadas, bem como estarem disponíveis para serem excluídas. Essas operações 
e o seu correto armazenamento são o tema de estudo da persistência de dados. Assim, nesta unidade, 
você irá estudar os bancos de dados NoSQL. Seja bem-vindo ou bem-vinda e bons estudos.
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
49
1 BANCO DE DADOS NOSQL
O advento da Web 2.0 trouxe o aumento massivo da produção de dados. Nesse sentido, passou-se a 
existir uma demanda cada vez maior para o desenvolvimento de tecnologias capazes de processar e 
armazenar a imensa quantidade de dados que surgiu.
Além do aumento no volume de dados criados, a Web 2.0 se caracterizou fundamentalmente por dispo-
nibilizar plataformas que permitiam às pessoas terem interações sociais, compartilharem informações, 
entre outras funcionalidades. Segundo Farias (2014), o Facebook consiste em um dos principais símbolos 
da Web 2.0, uma vez que essa rede social permite aos seus usuários publicarem textos e fotos, fazerem 
uso do sistema de geolocalização e da linha do tempo, entre outras possibilidades.
As funcionalidades trazidas pela Web 2.0 geraram imensas quantidades de dados, que passaram a ter 
a necessidade de serem gerenciadas adequadamente. Nesse sentido, ocorreu o desenvolvimento de 
avançadas tecnologias a fim de se gerenciar esses dados, o que originou uma nova categoria de banco 
de dados denominada NoSQL, uma abreviação de Not Only SQL.
Reflita
Qual a origem do termo NoSQL? Segundo Farias (2014), o termo Not Only SQL (NoSQL) foi 
utilizado pela primeira vez no ano de 1998 por Carlos Strozzi ao se referir ao seu Sistema 
de Gerenciamento de Banco de Dados baseado no modelo relacional, no entanto, sem 
Structured Query Language (SQL).
Continuando com a contextualização histórica dos bancos de dados do tipo NoSQL, no ano de 2004, o 
Google fez o lançamento do Bigtable, que consistia num banco de dados de alto desempenho cujo obje-
tivo era oferecer escalabilidade e disponibilidade às aplicações, sendo essa a primeira implementação da 
tecnologia não relacional a receber destaque.
Conhecido o contexto no qual surgiram os bancos de dados NoSQL, o vídeo a seguir irá apresentar os 
conceitos iniciais sobre esse tipo de tecnologia.
Aprofunde-se
Título: Bancode dados NoSQL
Acesso em: 10/06/2020.
Disponível em: https://youtu.be/1B64oqE8PLs
https://youtu.be/1B64oqE8PLs
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
50
Segundo Farias (2014), no ano de 2007, a Amazon realizou a apresentação do Dynamo, que essencial-
mente consiste em um banco de dados não relacional que possui uma elevada disponibilidade e é 
empregado nos serviços web da empresa. Quatro anos mais tarde, o Facebook desenvolveu o banco de 
dados distribuídos Cassandra, que tem a capacidade de manipular imensas quantidades de dados, além 
de possuir uma elevada disponibilidade.
Segundo Diana e Gerosa (2020), atualmente, há quatro principais categorias de banco de dados NoSQL, 
a saber: aqueles que são um banco de dados orientado a documentos, entre os principais represen-
tantes dessa categoria está o MongoDB; outra categoria é a de armazenamento de chave-valor, tendo 
como um de seus principais representantes o Redis; outra classe é o banco de dados de famílias de 
colunas, cujos maiores expoentes são o Cassandra e o HBase; e, por fim, a última categoria é a do banco 
de dados de grafos, cujo principal representante é o Neo4j.
Conhecidas as principais categorias de banco de dados do tipo NoSQL, o material em vídeo a seguir irá 
abordar a temática das propriedades desse tipo de banco de dados.
Assista
Acesse na plataforma o vídeo: Propriedades do NoSQL
Conhecidas as propriedades dos bancos de dados NoSQL, agora é fácil você compreender como são 
vastas as ampliações dessa tecnologia e porque inúmeras empresas vêm se dedicando ao desenvolvi-
mento desse tipo de banco de dados.
De modo a organizar as principais opções desse tipo de tecnologia disponível no mercado, o infográfico 
a seguir elenca as cinco opções amplamente utilizadas nos dias atuais.
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
51
ED
+ 
Co
nt
en
t H
ub
 ©
 2
02
0
Infográfico 1 - Principais bancos de dados NoSQL 
disponíveis atualmente no mercado.
Fonte: adaptado de FARIAS, Fred Augusto de Melo. Avaliação 
de Desempenho entre Bancos de Dados Relacionais e NoSQL.
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
52
Agora que você já conhece os principais bancos de dados do tipo NoSQL, as suas características e as 
diferenças, recomendo o material a seguir, que é um estudo detalhado desse banco de dados.
Aprofunde-se
Este trabalho traz um amplo estudo sobre os bancos de dados NoSQL, sendo essencial a 
leitura para a ampliação de seus conhecimentos.
Título: Avaliação de Desempenho entre Bancos de Dados Relacionais e NoSQL
Link: https://si.dcx.ufpb.br/wp-content/uploads/2015/12/Fred-Augusto-de-Melo-Farias.pdf
De posse de todo o referencial teórico que você obteve acerca dos bancos de dados NoSQL neste tópico, 
torna-se conveniente realizar a sua comparação com os bancos de dados do tipo relacional. Nesse 
sentido, a análise comparativa a seguir será feita a partir do Teorema CAP, acrônimo de Consistency, 
Availability e Partition tolerance, que em uma tradução literal significa Consistência, Disponibilidade e 
Tolerância ao particionamento.
Segundo Farias (2014), as três características elencadas pelo Teorema são esperadas por um sistema 
computacional distribuído, no entanto, de acordo com o próprio, no mundo real só é possível garantir 
apenas duas delas simultaneamente.
Conforme Farias (2014), os bancos de dados relacionais são uma tecnologia que se destina ao armaze-
namento de grandes quantidades de dados dentro de uma estrutura rígida, o que reduz a sua escalabi-
lidade. Essa tecnologia nasceu na década de 1970, quando as aplicações em bases de dados se caracte-
rizavam por possuir uma estrutura fixa e bem definida.
Já os bancos de dados NoSQL, de acordo com Delgado (2011), trazem um novo modelo de organização 
de dados a fim de permitir aplicações com uma estrutura mais flexível, assim, possibilitando que esse 
tipo de banco de dados seja altamente escalável.
https://si.dcx.ufpb.br/wp-content/uploads/2015/12/Fred-Augusto-de-Melo-Farias.pdf
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
53
Modelo relacionalModelo relacional NoSQLNoSQL
EscalabilidadeEscalabilidade Possível, mas complexa. Devido à natureza Possível, mas complexa. Devido à natureza 
estruturada do modelo, a adição de forma di-estruturada do modelo, a adição de forma di-
nâmica e transparente de novos nâmica e transparente de novos nósnós no grid no grid 
não é realizada de modo natural.não é realizada de modo natural.
Por não possuir nenhum esquema predefini-Por não possuir nenhum esquema predefini-
do, este tipo de banco de dados tem maior do, este tipo de banco de dados tem maior 
flexibilidade, o que favorece a inclusão trans-flexibilidade, o que favorece a inclusão trans-
parente de outros elementos. Dessa forma, parente de outros elementos. Dessa forma, 
a escalabilidade é uma das principais vanta-a escalabilidade é uma das principais vanta-
gens do modelo.gens do modelo.
 Consistência Consistência Ponto mais forte do modelo relacional. As re-Ponto mais forte do modelo relacional. As re-
gras de consistência presentes propiciam um gras de consistência presentes propiciam um 
maior grau de rigor quanto à consistência maior grau de rigor quanto à consistência 
das informações.das informações.
Realizada de modo eventual no modelo, só Realizada de modo eventual no modelo, só 
garante que se nenhuma atualização for rea-garante que se nenhuma atualização for rea-
lizada sobre o item de dados, todos os aces-lizada sobre o item de dados, todos os aces-
sos a ele devolverão o último valor atualizado.sos a ele devolverão o último valor atualizado.
DisponibilidadeDisponibilidade Dada a dificuldade de se conseguir trabalhar Dada a dificuldade de se conseguir trabalhar 
de forma eficiente com a distribuição dos da-de forma eficiente com a distribuição dos da-
dos, esse modelo pode não suportar a deman-dos, esse modelo pode não suportar a deman-
da muito grande de informações do banco.da muito grande de informações do banco.
O alto grau de distribuição dos dados propi-O alto grau de distribuição dos dados propi-
cia que um maior número de solicitações aos cia que um maior número de solicitações aos 
dados seja atendido por parte do sistema, o dados seja atendido por parte do sistema, o 
qual fica menos tempo não disponível.qual fica menos tempo não disponível.
O vídeo a seguir irá a ensinar a você quando usar cada um destes bancos de dados, considerando-se as 
características de cada um deles.
Aprofunde-se
Título: Relacional ou NoSQL - Qual é a melhor opção?
Acesso em: 21/07/2020.
Disponível em: https://youtu.be/yLlkDda6EFw
Tabela 1 - Análise comparativa do modelo relacional com o NoSQL.
Fonte: Farias (2014, p. 20).
https://youtu.be/yLlkDda6EFw
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
54
2 GRAVAÇÃO E LISTAGEM DE DADOS
No tópico anterior, você aprendeu os principais conceitos referentes aos bancos de dados do tipo NoSQL 
(Not Only SQL), que apesar de sua nomenclatura indicar a ausência do SQL, as diferenças entre essas 
tecnologias não se resumem apenas a isso. No entanto, devido a sua popularização, a nomenclatura é 
amplamente aceita entre os desenvolvedores.
Após essa consideração inicial, que visa fornecer uma maior compreensão das diferenças entre as tecno-
logias, esta seção irá se dedicar às operações de manipulação em banco de dados NoSQL. Nesse sentido, 
elenquei aqui, para o desenvolvimento das operações e exemplos, o banco de dados MongoDB.
O banco de dados MongoDB é orientado a documentos, portanto, ele trabalha com documentos e não 
com registros, como no modelo relacional, em que se faz presente a abordagem bidimensional por meio 
de tabelas com linhas e colunas.
Aprofunde-se
Título: Instalando e configurando o MongoDB
Acesso em: 11/07/2020.
Disponível em: https://youtu.be/skK5xj-CK-Q
Além disso, o banco de dados MongoDB tem como característica fundamental ser de código aberto. Ele 
é licenciadopor meio da GNU AGPL, sendo um banco de dados de alto desempenho, multiplataforma 
e formado por um conjunto de aplicativos JSON. Dada a sua robustez, o MongoDB vem sendo adotado 
por inúmeras empresas, dentre as quais se destacam o SourceForge, o Foursquare, o LinkedIn, a SAP, a 
MTV, a Pearson Education, entre outras.
Figura 1 - Logotipo do MongoDB.
Fonte: disponível em: https://www.luiztools.com.br/post/tutorial-
mongodb-para-iniciantes-em-nosql/ Acesso em 23 jul. 2020.
https://youtu.be/skK5xj-CK-Q
https://www.luiztools.com.br/post/tutorial-mongodb-para-iniciantes-em-nosql/
https://www.luiztools.com.br/post/tutorial-mongodb-para-iniciantes-em-nosql/
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
55
Reflita
Neste ponto, você deve estar pensando quais são as operações que podem ser executadas 
sobre um banco de dados. Essencialmente, são quatro operações que se aplicam aos 
bancos de dados e elas são definidas pelo acrônimo CRUD, que designa Create, Read, 
Update e Delete. No MongoDB, essas funcionalidades são:
• Create: insert()
• Read: find()
• Update: update()
• Delete: remove()
Após essa pequena introdução sobre o MongoDB, a seguir, será o início dos estudos das operações de 
consulta e inserção nesse banco de dados.
Para que você compreenda mais detalhes do CRUD no banco de dados MongoDB, separei os materiais 
a seguir, em que há mais explicações sobre como instalar este banco de dados, bem como realizar as 
operações CRUD neste.
Aprofunde-se
Título: Operações CRUD do MongoDB
Acesso em: 11/07/2020.
Link: https://docs.mongodb.com/manual/crud/
https://docs.mongodb.com/manual/crud/
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
56
2.1 INSERÇÃO
Como visto anteriormente, os bancos de dados são operacionalizados fundamentalmente por quatro 
operações, as quais são definidas pelo CRUD. Este subtópico será sobre a operação Create (insert ()) 
e fará uso da documentação oficial do banco de dados MongoDB. De acordo com a documentação, as 
operações de criação ou inserção têm como objetivo adicionar novos documentos a uma determinada 
coleção, no caso de a coleção não existir, a operação de inserção irá criá-la.
Fundamentalmente, o MongoDB oferece dois métodos para documentos em uma coleção, a saber:
• db.collection.insertOne ()
• db.collection.insertMany()
As operações de inserção visam uma única coleção. Além disso, as operações de gravação são realizadas 
ao nível atômico de um único documento. Considere a sintaxe a seguir:
 db.users.insertOne(
 {
 nome: "Daniel Silva e Silva",
 idade: 20,
 pais: "Brasil",
 estado: "SP",
 cidade: "São Paulo"
 }
Na sintaxe anterior, a inserção se dá pelo método insertOne(), na coleção users, do documento 
composto pelos campos nome, idade, país, estado e cidade no banco de dados previamente configurado 
db, que neste caso é o MongoDB. Após a inserção, o método insertOne() retorna um documento que 
inclui o ID valor do campo recém-inserido.
A sintaxe anterior exemplifica a inserção de um único documento, no entanto, o MongoDB é robusto o sufi-
ciente para suportar a inserção de vários documentos simultaneamente. Para isso, basta utilizar o método 
insertMany(). A fim de que você possa compreender o seu funcionamento, considere o seguinte exemplo:
 db . inventário . insertMany ([
 { item : "journal", qty: 25, tags : [ "blank", "red" ]), tamanho : { h : 14, w : 21, uom : "cm" } },
 { item : "mat ", qty: 85, tags: [ "grey "], tamanho : { h : 27.9, w: 35.5, uom : "cm" } },
 { item : "mousepad" , qty : 25, tags : [ "gel" , "blue" ], tamanho : { h : 19, w : 22,85, uom : "cm" }
 }
 ])
No exemplo apresentado, são inseridos três novos documentos na coleção inventory por meio do 
método insertMany() no banco de dados db, nesse caso o MongoDB. Caso não seja especificado um ID 
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
57
campo, o MongoDB adicionará um como um valor Objetoid a cada documento. Além disso, o método 
insertMany() retorna um documento que inclui os _idvalores do campo de documentos recém-inseridos.
Agora que você conhece os métodos básicos de inserção no MongoDB, você pode ampliar os seus 
conhecimentos por meio do material a seguir, que traz uma explanação detalhada acerca desse método.
Aprofunde-se
Título: Insert Documents
Acesso em: 11/07/2020.
Link: https://docs.mongodb.com/manual/tutorial/insert-documents/
2.2 CONSULTAR DOCUMENTOS
A operação de inserção em um banco de dados tem como função alimentar esse repositório. No entanto, 
ele não servirá se, posteriormente, as informações não puderem ser manejadas (atualizadas, consul-
tadas e apagadas), o que o tornará inútil.
Neste subtópico, você irá aprender a consultar as informações no MongoDB. Também haverá um tópico 
específico para as operações de atualização e exclusão de dados.
Para que um banco de dados seja consultado, é necessário que ele tenha sido previamente alimentado 
com dados. Nesse sentido, considere que, inicialmente, o banco de dados foi alimentado por meio do 
método insertMany() com os documentos mostrados a seguir:
 db.inventory.insertMany([
 { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
 { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
 { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
 { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
 { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
 ]);
Considerando a inserção realizada, o banco de dados conta com vários documentos. Caso você queira 
selecionar todos os documentos da coleção inventory, basta passar um documento vazio para o método 
find(), o qual é responsável por realizar a consulta. Onde db é o banco de dados, inventory é a coleção 
e find é o método de consulta. A sintaxe é dada por:
db.inventory.find( {} )
https://docs.mongodb.com/manual/tutorial/insert-documents/
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
58
No entanto, você pode ter interesse em documentos específicos. Nesse caso, pouca utilidade tem de 
retornar todos os elementos de uma coleção, que podem ser milhares ou milhões. Assim, é necessário 
realizar buscas mais assertivas.
A sintaxe a seguir, ao ser executada considerando os documentos inseridos no início desta seção, irá 
retornar todos os documentos que têm status igual a “D”:
db . inventory . find ({status: “D”})
Enquanto que a sintaxe a seguir irá retornar todos os documentos da coleção inventory que têm status 
igual a “A” ou a “D”:
db.inventory.find ( { status: { $ in : [ “A” , “D” ] } } ))
E, se você quiser retornar todos os documentos do inventory que possuem status igual a “A” e que 
sejam menores do que 30, a sintaxe é: 
db.inventory. find ({status: “A”, qty: {$ lt: 30}})
O método find é muito robusto e oferece inúmeras outras formas de se realizar consultas. Explanar 
sobre todas tornaria este tópico demasiadamente extenso, nesse sentido, recomendo a você consultar 
todas as opções no material a seguir.
Aprofunde-se
Título: Query Documents
Acesso em: 11/07/2020.
Link: https://docs.mongodb.com/manual/tutorial/query-documents/
Neste ponto, você aprendeu conceitualmente como realizar inserções e consultas no banco de dados 
MongoDB. A fim de você ver como tudo isso funciona na prática, o material em vídeo a seguir irá realizar 
essas operações.
Assista
Acesse na plataforma o vídeo: Inserindo e consultando dados no MongoDB
https://docs.mongodb.com/manual/tutorial/query-documents/
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
59
3 ATUALIZAÇÃO E EXCLUSÃO DE DADOS
Como você aprendeu, os bancos de dados são manipulados pelas operações definidas pelo acrônimo 
CRUD. Até este momento, você já estudou as operações de inserção, que se relacionam ao Creat, e as 
operações de consulta, relacionadas ao Read. Nesse sentido, ainda falta serem estudadas as operações

Outros materiais