Você está na página 1de 44

Daniel Brito Fernandes

Projeto de aplicação em cloud computing

Natal – RN
Setembro de 2021
Daniel Brito Fernandes

Projeto de aplicação em cloud computing

Trabalho de Conclusão de Curso de Engenha-


ria de Computação da Universidade Federal
do Rio Grande do Norte, apresentado como
requisito parcial para a obtenção do grau de
Bacharel em Engenharia de Computação

Orientador: Luiz Affonso Henderson


Guedes de Oliveira

Universidade Federal do Rio Grande do Norte – UFRN


Departamento de Engenharia de Computação e Automação – DCA
Curso de Engenharia de Computação

Natal – RN
Setembro de 2021
Daniel Brito Fernandes

Projeto de aplicação em cloud computing

Trabalho de Conclusão de Curso de Engenha-


ria de Computação da Universidade Federal
do Rio Grande do Norte, apresentado como
requisito parcial para a obtenção do grau de
Bacharel em Engenharia de Computação

Orientador: Luiz Affonso Henderson


Guedes de Oliveira

Trabalho aprovado. Natal – RN, 10 de Setembro de 2021:

Prof. Dr. Luiz Affonso Henderson Guedes de Olivera - Orientador


UFRN

Prof. Dr. Ivanovitch Medeiros Dantas da Silva


UFRN

Prof. Dr. Gustavo Bezerra Paz Leitão


UFRN

Natal – RN
Setembro de 2021
AGRADECIMENTOS

A Deus por ter me dado uma grande família e pelo dom da vida.
A meu Pai Luiz Fernandes e minha mãe Josefa Brito, ao qual devo toda a minha
educação e o incentivo ao estudo, apesar de todas as circunstâncias sempre estiveram ao
meu lado. Muito obrigado por tudo.
Aos meus irmãos Danieli Brito e Danilo Brito.
A UFRN por passar grandes conhecimentos, por meio de grandes professores.
Ao professor Luiz Affonso pela oportunidade e incentivo para elaboração deste
trabalho.
“O trabalho duro ganha
do talento sempre que
o talento não trabalha duro."
(Kevin Durant)
RESUMO
Este trabalho tem como propósito demonstrar os conceitos da cloud computing, área
que está ganhando grande destaque na área da tecnologia da informação, e com esse
grande crescimento a demanda por mão-de-obra especializada está muito difícil e tem
como tendência de crescimento. Ao final desse projeto o leitor terá conhecimentos teóricos
sobre o tema, e por fim vai conseguir colocar uma aplicação em nuvem utilizando os
serviços da aws, onde o custo do serviço é cobrado apenas pelos recursos computacionais
utilizados. Nosso caso de uso demonstrar um sistema onde podemos cadastrar atividades
que devemos cumprir durante os dias, o mesmo é desenvolvido em react no frontend e em
node.js no backend, as informações inseridas são armazenados em um banco de dados não
relacional, para uma melhor performance a aplicação foi adicionada em imagens docker
e armazenada em um repositório da AWS, onde para gerenciamento dessas imagens que
estão em container foi utilizado o AWS fargate.

Palavras-chaves: AWS. container. fargate. nuvem.


ABSTRACT
This paper aims to demonstrate Cloud Computing concepts, afield that is getting a great
emphasis in the technology information area. And withthis great increase of demand for
this specialized labor that now is hard toconquer because of its growth. At the end of
this paper, the reader will havetheoretical concepts about the subjects and after he will
put an applicationon the cloud using ‘aws’ services, where the services costs are charged
Only throughcomputational resources used. We intend to show a system, where we can
registeractivities which we could accomplish during the days. And this system isdeveloped
in react no frontend and in nodejs no backend. The insert informationis stored in a non
relational data bank and for better performance, theapplication was added in docker
images and stored in a repository from ‘aws’, wherewe managed these images in containers
using aws fargate.

Keywords: AWS. container. fargate. cloud.


LISTA DE ILUSTRAÇÕES

Figura 1 – M odelos de serviços IaaS, Paas, SaaS . . . . . . . . . . . . . . . . . . . 16


Figura 2 – Dockerfile do código do backend . . . . . . . . . . . . . . . . . . . . . . 21
Figura 3 – Dockerfile do código do frontend . . . . . . . . . . . . . . . . . . . . . 22
Figura 4 – T ela de login na AWS . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Figura 5 – C riação de repositório no ECR . . . . . . . . . . . . . . . . . . . . . . 24
Figura 6 – C onsole do ECR com repositório criado . . . . . . . . . . . . . . . . . 25
Figura 7 – C omando para autenticação na AWS . . . . . . . . . . . . . . . . . . . 25
Figura 8 – I dentificação com tag do container do backend . . . . . . . . . . . . . . 25
Figura 9 – I dentificação com tag do container do frontend . . . . . . . . . . . . . 25
Figura 10 – C omando para envio da imagem do backend . . . . . . . . . . . . . . . 25
Figura 11 – C omando para envio da imagem do frontend . . . . . . . . . . . . . . . 25
Figura 12 – Repositório ECR com imagens . . . . . . . . . . . . . . . . . . . . . . 26
Figura 13 – F uncionamento do ECS fargate . . . . . . . . . . . . . . . . . . . . . . 27
Figura 14 – C riação de Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Figura 15 – Opção de template do Cluster . . . . . . . . . . . . . . . . . . . . . . . 28
Figura 16 – C onfiguração do Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Figura 17 – Escolha de serviço para criação da task definition . . . . . . . . . . . . 29
Figura 18 – C onfiguração nome da task definition . . . . . . . . . . . . . . . . . . . 29
Figura 19 – C onfiguração computacional . . . . . . . . . . . . . . . . . . . . . . . . 30
Figura 20 – Adicionando imagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Figura 21 – tipo de destino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Figura 22 – N ome para o target group . . . . . . . . . . . . . . . . . . . . . . . . . 31
Figura 23 – Especifica protocolo e porta . . . . . . . . . . . . . . . . . . . . . . . . 32
Figura 24 – Especifica rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Figura 25 – T arget group criados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Figura 26 – T ipos de load balancer . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Figura 27 – C onfigurção de trágego . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Figura 28 – Z onas de disponibilidade . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Figura 29 – Dados do load balancing . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Figura 30 – C riação do service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Figura 31 – C onfiguração da network do service . . . . . . . . . . . . . . . . . . . . 36
Figura 32 – Associação do load balancer ao service . . . . . . . . . . . . . . . . . . 37
Figura 33 – C onfiguração do Auto Scaling . . . . . . . . . . . . . . . . . . . . . . . 38
Figura 34 – H abilitação de recusos da VPC . . . . . . . . . . . . . . . . . . . . . . 39
Figura 35 – Peering entre VPCs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Figura 36 – S elecionando nuvem da aws . . . . . . . . . . . . . . . . . . . . . . . . 40
Figura 37 – Preenchimento de dados do peering . . . . . . . . . . . . . . . . . . . . 40
Figura 38 – T ela de tarefas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Figura 39 – T ela de criação de nova tarefa . . . . . . . . . . . . . . . . . . . . . . . 41
LISTA DE ABREVIATURAS E SIGLAS

AWS Amazon Web Service

ECR Elastic Container Registry

ECS Elastic Container Service

EKS Elastic Kubernetes Service

IP Internet Protocol

RDS Relational Database Service

TI Tecnologia da Informação

VPS Virtual Private Cloud


SUMÁRIO

1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.1 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3 Estrutura do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2 CLOUD COMPUTING . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.1 CARACTERÍSTICAS DO USO DA NUVEM . . . . . . . . . . . . . . 14
2.1.1 Acesso a serviços . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.1.2 Elasticidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.1.3 Escalabilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.1.4 Serviços sob demanda . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2 MODELOS DE SERVIÇOS . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.1 Iaas - Infrastructure as a Service . . . . . . . . . . . . . . . . . . . . . . . 16
2.2.2 PaaS - Platform as a Service . . . . . . . . . . . . . . . . . . . . . . . . 16
2.2.3 SaaS - Software as a Service . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3 IMPLEMENTAÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3.1 Nuvem pública . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3.2 Nuvem privada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3.3 Nuvem híbrida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3.4 Nuvem comunidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3 AMAZON WEB SERVICE - (AWS) . . . . . . . . . . . . . . . . . . 19


3.1 Serviços AWS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.1.1 Elastic Container Registry - ECR . . . . . . . . . . . . . . . . . . . . . . . 19
3.1.2 Elastic Container Service - ECS . . . . . . . . . . . . . . . . . . . . . . . 20

4 CASO DE USO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.1 Criação de container com docker . . . . . . . . . . . . . . . . . . . . 21
4.2 Acesso a AWS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.3 ECR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.4 ECS Fargate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.4.1 Criação do cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.4.2 Criação da task defnition . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.4.3 Target group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.4.4 Load Balancing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.4.5 Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.5 Conexão peering de rede . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.6 Aplicação no ar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

5 CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
13

1 INTRODUÇÃO

O termo cloud computing está em grande destaque no mundo da tecnologia hoje


em dia, isso ocorre devido ao grande uso da internet pelos mais variados tipos de usuários
e com isso gerando uma grande quantidade de dados, com isso essa nova tecnologia, que
vem se destacando mais a cada dia devido a sua abrangente forma de utilização de seus
serviços, trazendo muitas vantagens para as nossas rotinas e hoje pode ser chamada por
alguns especialista em tecnologia da informação como a tecnologia do futuro.

1.1 Motivação
Com o crescimento do uso da computação em nuvem, criou-se a necessidade de
pessoas especializadas para trabalhar nessa área, pois se tornou um desafio para as empresas
abrir mão de utilizar seus próprios recursos computacionais locais, ao qual as mesmas
eram responsáveis por toda manutenção para ocorrer um excelente funcionamento.
A partir da utilização de serviços em nuvem pelas empresas, há demanda por
profissionais que sejam especialistas em migrar e gerenciar as aplicações que utilizam a
nuvem. Assim com o rápido crescimento desse novo modo de infraestrutura da TI criou-se
a busca por profissionais.

1.2 Objetivos
Este trabalho propõe um estudo sobre computação em nuvem, no qual o objetivo
é descrever a estrutura conceitual da nuvem, serviços ofertados e outras características.
Por fim, através dos conhecimentos passados vai ser possível colocar uma aplicação em
ambiente de produção utilizando os recursos oferecidos pela nuvem , essa aplicação tem
como função criar uma agenda de tarefas.

1.3 Estrutura do Trabalho


Este trabalho possui a seguinte estrutura: o segundo capítulo traz os conhecimentos
sobre as características básicas de computação em nuvem, relatando também os modelos
de serviços e os modos de implementação. O terceiro capítulo vem demonstrar a AWS
e alguns de seus serviços ofertados. O quarto capítulo nos passa o conhecimento como
implementar um sistema web utilizando recursos da nuvem e o quinto capítulo é destinado
às conclusões.
14

2 CONCEITOS

Hoje em dia, não se chegou ao termo específico para a definição do conceito de


cloud computing, assim podemos encontrar várias definições para o termo em artigos e
livros.
Cloud computing é substituir ativos de tecnologia da informação (TI) que precisam
ser gerenciados internamente por funcionalidades e serviços do tipo pague-conforme-crescer
a preços de mercado. Essas funcionalidades e serviços são desenvolvidos utilizando novas
tecnologias como a virtualização, arquiteturas de aplicação e infraestrutura orientadas a
serviço e tecnologias e protocolos baseados em internet como meio de reduzir os custos de
hardware e software usados para processamento, armazenamento e rede. (VERAS, 2012)
O nome computação em nuvem é uma metáfora da Internet. A principal função do
uso da nuvem é cortar custos operacionais e permitir que os responsáveis da TI tenham seu
foco principal no pensamento estratégico para os mais variados tipos de aplicações, assim
não precisando mais ter que ficar preocupado com o funcionamento do datacenter.(VELTE,
2011)
A idéia da cloud computing é que qualquer aplicação possa ser utilizada através
da internet, em qualquer lugar, com a mesma facilidade que se tivéssemos instalado em
nosso computador pessoal. Cada parte dessa infraestrutura representa um serviço e esses
serviços são compartilhados. (SOUSA, 2009)
Também podemos considerar que a computação em nuvem é o fornecimento de
recursos de TI sob demanda por meio da Internet, com preços pré-pagos. Não há necessidade
de comprar, possuir e manter data centers e servidores físicos, você pode usar provedores de
nuvem para acessar serviços técnicos conforme necessário, como capacidade de computação,
armazenamento e bancos de dados, utilizando um provedor. (AWS, 2021)

2.1 CARACTERÍSTICAS DO USO DA NUVEM


Sobre as características essenciais sobre a utilização dos serviços de nuvem, em
janeiro de 2011, o National Institute of Standards and Technology (NIST) apresentou
características ao qual informa as vantagens do uso dos recursos do cloud computing e é
demonstrada nos próximos itens.
Capítulo 2. ClOUD COMPUTING 15

2.1.1 Acesso a serviços


Todos os serviços devem estar disponíveis para qualquer dispositivo móvel e portátil,
desde que os mesmos estejam conectados à rede mundial de internet.

2.1.2 Elasticidade
O usuário do recurso deve ter a impressão de que possui recursos ilimitados e pode
adquirir qualquer número de recursos a qualquer momento.

2.1.3 Escalabilidade
O serviço deve estar disponível durante sete dias da semana e 24 horas por dia, visto
que existem vários sistemas que não podem ter falhas ao acesso. Além da escalabilidade
do aplicativo e de seus dados, essa escalabilidade deve ser alcançada rapidamente, ou
seja, não demora muito para que o aplicativo responda aos requisitos de recursos. Essa
particularidade é fundamental, pois na computação em nuvem é utilizado um modelo de pay-
per-use, por isso é importante evitar que os usuários desperdicem dinheiro.(ARMBRUST,
2009)

2.1.4 Serviços sob demanda


O usuário pode, conforme sua necessidade, requerer maior ou menor quantidade de
recursos computacionais, tais como, tempo de processamento, armazenamento ou largura
de banda, esses recursos devem ser disponibilizados de forma automática, sem a necessidade
de interação humana, com o provedor de cada serviço.

2.2 MODELOS DE SERVIÇOS


O modo conceitual que está nas literaturas demonstra a distribuição de três camadas,
cada camada propõe solução para vários casos a Figura 1 demonstra as camadas e exemplo
para cada uma.
Capítulo 2. ClOUD COMPUTING 16

Figura 1 – M odelos de serviços IaaS, Paas, SaaS

2.2.1 Iaas - Infrastructure as a Service


Infraestrutura como um serviço é a capacidade que o provedor tem de oferecer
uma infraestrutura de processamento e armazenamento de forma transparente para o
cliente. Os usuários da organização não têm o controle da infraestrutura física, mas,
através de mecanismos de virtualização, possuem controle sobre as máquinas virtuais,
armazenamento, aplicativos instalados e possivelmente um controle limitado dos recursos
de rede. Infraestrutura como Serviço é basicamente deixar de adquirir hardware e software
básico e passar a desenvolver a aplicação em uma infraestrutura virtual baseada na Internet
e adquirida e paga na forma de serviço.(VERAS, 2012)
A Computação de Alto Desempenho pode se beneficiar consideravelmente com
as nuvens que provêem IaaS, uma vez que esse tipo de computação exige uma grande
capacidade de processamento de dados devido a sua infraestrutura. A paralelização dos
dados, por exemplo, pode ser implementada com base na virtualização: as execuções e/ou
os dados podem ser distribuídos através de múltiplas máquinas virtuais.(SUN, 2009)

2.2.2 PaaS - Platform as a Service


O conceito de PaaS está vinculado ao uso de ferramentas de desenvolvimento de
software oferecidas por provedores de serviços, onde os desenvolvedores criam as aplicações
e as desenvolvem utilizando a Internet como meio de acesso. Nesse caso, o provedor oferta
a plataforma de desenvolvimento.(VERAS, 2012)
Capítulo 2. ClOUD COMPUTING 17

Os prestadores de serviços que usarão essa plataforma vêem-na como uma Ap-
plication Programming Interface (API). Eles irão interagir com a plataforma através da
API sem ter a preocupação de gerenciar e escalar os recursos, o que torna o processo de
desenvolvimento de aplicações mais rápido e simples. Por outro lado, esses prestadores de
serviços ficam limitados pelas capacidades que a plataforma pode oferecer.(SUN, 2009)

2.2.3 SaaS - Software as a Service


Software como um serviço é uma modalidade de serviços de nuvem onde os aplica-
tivos de interesse para uma grande quantidade de usuários passam a ser hospedados na
nuvem como uma alternativa ao processamento e armazenamento local. Os aplicativos são
oferecidos como serviços por provedores e acessados pelos clientes por aplicações como
o browser. Todo o controle e gerenciamento da rede, sistemas operacionais, servidores e
armazenamento é feito pelo provedor de serviço.
Atualmente, espera-se que os aplicativos SaaS aproveite os benefícios da centra-
lização através de uma arquitetura de instância única, para vários inquilinos, e para
oferecer uma experiência rica em recursos, que compete com os aplicativos on-premise de
mesmo tipo. Aplicativos SaaS típicos são oferecidos diretamente pelo fornecedor, ou por
intermediários, que reúnem ofertas SaaS de vários fornecedores, oferecendo-as como parte
de uma plataforma de aplicativos unificada.(VERAS, 2012)

2.3 IMPLEMENTAÇÃO
Nesta seção iremos abordar os diferentes tipos de infraestrutura de computação em
nuvem, que são: nuvem pública, nuvem privada, nuvem híbrida e nuvem comunidade.

2.3.1 Nuvem pública


As nuvens públicas são aquelas que são sempre utilizadas pelo usuário final, as
aplicações de diversos usuários ficam misturadas nos sistemas de armazenamento. Porém,
se a implementação de uma nuvem pública considera questões fundamentais, como desem-
penho e segurança, a existência de outras aplicações sendo executadas na mesma nuvem
permanece transparente tanto para os prestadores de serviços como para os usuários.

2.3.2 Nuvem privada


Nuvem privada compreende uma infraestrutura de cloud computing operada e quase
sempre gerenciada pela organização cliente. Os serviços são oferecidos para serem utilizados
pela própria organização, podendo ter vários usuários.
Capítulo 2. ClOUD COMPUTING 18

A característica que diferencia as nuvens privadas é o fato da restrição de acesso,


pois a mesma se encontra atrás do firewall da empresa, sendo uma forma de aderir à
tecnologia, beneficiando-se das suas vantagens, porém mantendo o controle do nível de
serviço e aderência às regras de segurança da instituição.[Taurion, 2009]

2.3.3 Nuvem híbrida


A infraestrutura é uma composição de duas ou mais nuvens que continuam a ser en-
tidades únicas,porém, conectadas através de tecnologias proprietárias ou padronizadas que
propiciam a portabilidade de dados e aplicações. A nuvem híbrida impõe uma coordenação
adicional a ser realizada para uso das nuvens privadas e públicas.(VERAS, 2012)

2.3.4 Nuvem comunidade


Neste tipo de infraestrutura a nuvem é compartilhada por diversas organizações e
suporta uma comunidade que possui interesses comuns. A nuvem comunitária pode ser
administrada pelas organizações que fazem parte da comunidade ou por terceiros e pode
existir tanto fora como dentro das organizações.(VERAS, 2012)
19

3 AMAZON WEB SERVICE - (AWS)

A AWS vem desenvolvendo serviços de nuvem desde 2016, ela aproveitou a expe-
riencia na plataforma e-commerce e criou a AWS. Os serviços ofertados pela empresa
permitem acesso de armazenamento, banco de dados, recursos computacionais e outros
serviços, onde o cliente pagará apenas pelos recursos utilizados. Sua atuação é focado no
serviço de IaaS.(AWS, 2021)
A AWS fornece às empresas e desenvolvedores de software muitas ferramentas
e soluções diferentes que podem ser usadas em data center de vários países. Agências
governamentais, instituições educacionais, organizações sem fins lucrativos e organizações
privadas podem se tornar cliente utilizando os serviços da AWS.
A Amazon oferece boa flexibilidade para o desenvolvimento de aplicativos, porque
a empresa pode continuar a usar o modelo de programação, sistema operacional, banco de
dados e arquitetura com os quais já está familiarizado. As empresas podem até mesmo
combinar arquiteturas para atender os diferentes modelos de negócios. Com a AWS, as
organizações podem reduzir e aumentar os recursos em seus aplicativos para atender às
necessidades do cliente e aos custos de gerenciamento. De acordo com a Amazon, o serviço
tradicional de data center quando comparado ao serviço de nuvem , é pouco eficaz, levando
em conta que o uso e a capacidade dos recursos estão otimizados no modelo AWS.(VERAS,
2009)

3.1 Serviços AWS


A plataforma AWS possui diversos serviços de computação em nuvem com alta
disponibilidade e vários recursos oferecidos, como serviço de armazenamento, backup,
servidores virtuais e outros. Neste momento iremos abordar especificamente os serviços
de repositório de imagens e orquestração de container, que estão mais associados a este
trabalho.

3.1.1 Elastic Container Registry - ECR


O Amazon ECR é um registro de container totalmente gerenciado que pode
facilmente armazenar, gerenciar, compartilhar e implantar imagens e artefatos de container
em qualquer lugar. O Amazon ECR não precisa operar seu próprio repositório de container,
nem precisa se preocupar com a escalabilidade da infraestrutura subjacente. O Amazon
ECR hospeda suas imagens em uma arquitetura altamente disponível e de alto desempenho,
permitindo que você implante imagens de maneira confiável em seus aplicativos de container.
Capítulo 3. Amazon Web Service - (AWS) 20

Você pode compartilhar o software de container de maneira privada com toda a organização
ou pode compartilhar publicamente o software de container em todo o mundo para que
qualquer pessoa descubra e faça download. O Amazon ECR funciona com o Amazon Elastic
Kubernetes Service (EKS), o Amazon Elastic Container Service (ECS) e o AWS Lambda
para simplificar o fluxo de trabalho do desenvolvimento à produção, bem como com o
AWS Fargate.

3.1.2 Elastic Container Service - ECS


O ECS é um serviço de orquestração de container totalmente gerenciado que ajuda a
implantar, gerenciar e dimensionar aplicativos em containers com facilidade. É totalmente
integrado com o resto da plataforma AWS para fornecer uma solução segura e fácil de usar
para executar cargas de trabalho de container na nuvem. O Amazon ECS aproveita a
tecnologia sem servidor da AWS Fargate para fornecer operações de container autônomas,
reduzindo assim o tempo gasto em configuração, patching e segurança. Não há necessidade
de se preocupar com o gerenciamento de planos de controle, o Amazon ECS permite que
você crie aplicativos rapidamente e expanda seus negócios.
21

4 CASO DE USO

Este capítulo tem como intuito demonstrar como podemos utiliza os serviços da
AWS para colocar uma aplicação em produção, a aplicação contém o seu código do frontend
programado react ao qual é uma biblioteca javascript o backend em node.js e o mesmo é
comunicado a um banco de dados não relacional.

4.1 Criação de container com docker


Docker é uma plataforma de software que permite criar, testar e implantar aplicati-
vos rapidamente. O Docker cria pacotes de software em unidade padronizada chamada
container, que contêm tudo o que é necessário para a execução do software, incluindo
bibliotecas, ferramentas de sistema, código e tempo de execução. Ao usar o Docker, você
pode implantar e dimensionar aplicativos rapidamente em qualquer ambiente e ter certeza
de que seu código será executado.
O dockerfile é o arquivo onde vão ser definidas as instruções para criar as nossas
imagens do nosso backend e frontend, segue a Figura 2 e Fugura 3 com as instruções para
criação das imagens.

Figura 2 – Dockerfile do código do backend.


Capítulo 4. Caso de uso 22

Figura 3 – Dockerfile do código do frontend.

Em ambos os códigos as linhas tem as mesma funcionalidade:

• linha 1: realiza o download da imagem do node, na versão alpine;

• linha 3: é definido o local onde o app, vai ficar dentro do container;

• linha 5: copia tudo que inicia com packge e termina com .json para dentro da pasta
onde vai ficar o app;

• linha 7: executa o npm install para instalação das dependências;

• linha 9: copia tudo que está no diretório onde o arquivo Dockerfile está para dentro
da pasta definida no comando workdir;

• linha 11: portas onde os container tem acesso para comunicação.

• linha 13: comando npm start é executado para iniciar o script que está no package.json

Para criar o container é necessário executar um build, nesse caso executamos os


seguintes comandos:
docker build -t daniel/backend .
docker build -t daniel/frontend .
Abaixo é descrito a função de casa comando:

• docker build: cria uma imagem a partir do dockerfile;

• -t: tag para a imagem;


Capítulo 4. Caso de uso 23

• daniel/backend e daniel/frontend: nome escolhido para a imagem;

• . indica onde está localizado o arquivo dockerfile

Ao fim do comando ser executado, é lançada uma mensagem de sucesso.

4.2 Acesso a AWS


Para utilizar os serviços da AWS é preciso ter uma conta, para criação do mesmo
se faz necessário acessar o site da empresa e preencher os dados solicitados e possui um
cartão de crédito, para ser debitado o valor referente aos serviços utilizados. A empresa
disponibiliza alguns serviços gratuitos pelo período de 12 meses, para o usuário ganhar
experiência. A Figura 4 demostrar a console para acesso aos serviços da AWS.

Figura 4 – T ela de login na AWS.

4.3 ECR
Para o armazenamento das nossas imagens vamos utilizar o Elastic Container
Registry (ECR) da AWS, serviço que vai facilitar a implantação do nosso aplicativo, para
acesso ao ECR, vamos utilizar o AWS Command Line Interface (CLI) é uma ferramenta
unificada para gerenciar seus serviços AWS. Basta baixar e configurar a ferramenta, e
você pode controlar vários serviços AWS a partir da linha de comando, nos dias atuais o
Capítulo 4. Caso de uso 24

sistema esta na v2, o mesmo tem várias versões disponíveis (linux, windows e MacOS). O
download é feito no próprio site da AWS e nele é indicado o modo para instalação.
Na console da AWS, deve ir na aba de pesquisa e pesquisa por ECR, assim vamos
ter acesso ao repositório de imagens da AWS, nesse local vamos em criar um repositório,
nessa tela não devemos realizar muitas alterações a principal é criar uma nomenclatura
para o repositório e indicar a visualização dele, sendo público ou privado, nesse caso
utilizamos da rede privada, a tela de criação de um novo repositório está na Figura 5.

Figura 5 – C riação de repositório no ECR.

Após a criação do repositório podemos visualizar nosso repositórios no ECR, como


demonstrado na Figura 6.
Capítulo 4. Caso de uso 25

Figura 6 – C onsole do ECR com repositório criado.

Acessando o repositório criado para adicionar as imagens, basta seguir o passo a


passo dos comandos no CLI da AWS, para inserir as imagens.

• 1°Passo: autenticação na AWS, como demonstrado no comando da Figura 7.

Figura 7 – C omando para autenticação na AWS.

• 2° Passo: como já temos a imagem criada em nosso computador, usamos o comando


da Figura 8 e Figura 9 para marcar a imagem que desejamos enviar para o ECR.

Figura 8 – I dentificação com tag do container do backend.

Figura 9 – I dentificação com tag do container do frontend.

• 3° Passo: agora utilizando o comando da Figura 10 e Figura 11 para enviamos a


imagem para o ECR

Figura 10 – C omando para envio da imagem do backend.

Figura 11 – C omando para envio da imagem do frontend.


Capítulo 4. Caso de uso 26

Com as imagens docker criadas, basta acessar nosso repositório make no ECR e
visualizar as imagens inseridas, nesse caso temos a Figura 12 apresentando nosso repositório.

Figura 12 – Repositório ECR com imagens.

4.4 ECS Fargate


Vamos utilizar o serviço AWS Fargate é um mecanismo de computação sem servidor
para container que pode ser usado com o Amazon Elastic Container Service (ECS) e
o Amazon Elastic Kubernetes Service (EKS). O fargate permite que você se concentre
facilmente no desenvolvimento de aplicativos. O fargate elimina a necessidade de configurar
e gerenciar servidores, permitindo que você especifique e pague por recursos por aplicativo
e aprimore a segurança ao projetar aplicativos isolados.
Composição do ECS:

• Cluster: conjunto de máquinas logicamente agrupadas e local onde os container vão


rodar.;

• Task definition: é uma especificação de como uma tarefa deverá ser executada,
portanto indica quais containers serão utilizados, recursos computacionais, volumes
e outras configurações;

• Task: definida uma task definition, um task é criado quando ela é instanciada, assim
iniciando o uso de um container;

• Service: é um gerenciador de tarefas, a partir dele podemos definir quantas tarefas


deverão ser executadas simultaneamente.
Capítulo 4. Caso de uso 27

Fargate aloca a quantidade apropriada de cálculo sem a necessidade de selecionar


instâncias e expandir a capacidade do cluster. Você paga apenas pelos recursos necessários
para executar o conteiner, portanto, não provisiona em excesso ou paga por servidores
adicionais. Fargate executa cada tarefa no núcleo do serviço, fornecendo ambientes de
computação independentes para tarefas. Isso permite que os aplicativos sejam projetados
para fornecer isolamento da carga de trabalho e segurança otimizada. A Figura 13 representa
o funcionamento do fargate.

Figura 13 – F uncionamento do ECS fargate.

4.4.1 Criação do cluster


Na console da AWS, pesquisa-se por ECS e vamos encontrar a opção de cluster,
para iniciar um novo cluster devemos clicar em “create cluster”, Figura 14.

Figura 14 – C riação de Cluster.

Para prosseguir na criação do cluster, devemos selecionar a opção de qual serviço


vai ser utilizado no caso da nossa aplicação optamos pela opção “fargate", Figura 15.
Capítulo 4. Caso de uso 28

Figura 15 – Opção de template do Cluster.

Concluindo a última etapa, definimos um nome para nosso cluster e deixamos em


branco a opção da Virtual Private Cloud (VPC), assim utilizando uma rede padrão da
AWS, Figura 16. Apos as cnfigurações inseridas é gerada uma mensagem de sucesso da
criação do cluster.

Figura 16 – C onfiguração do Cluster.

4.4.2 Criação da task defnition


Na criação da nossa task definition vamos especificar parâmetros para nossas tarefas,
sendo o recurso computacional, as imagens em container, tipos de inicialização e outros.
Em primeiro passo para a criação selecionamos qual serviço será utilizado, nesse caso
optamos pelo “fargate”, esse passo é demostrado na Figura 17.
Capítulo 4. Caso de uso 29

Figura 17 – Escolha de serviço para criação da task definition.

Neste primeiro momento algumas configurações utilizadas vão ser padrão da AWS,
então nos campos demonstrados na Figura 18, o campo a ser preenchido é o nome desejado
para a nossa task definition.

Figura 18 – C onfiguração nome da task definition.

Um grande ponto a definir é o tamanho da nossa task, sendo assim selecionamos a


quantidade de memória e vCPU, em projeto definimos 1GB de memória e 0.5Vcpu, Figura
19.
Capítulo 4. Caso de uso 30

Figura 19 – C onfiguração computacional.

Nossa task necessita de uma imagem, em nosso caso é utilizado imagens que está no
ECR, assim ao clicar em “Add container” é aberta uma nova aba, como demonstrada na
Figura 20, onde é dado um nome ao container, inserido a URL da imgem que é informada
no ECR e a porta de comunicação, nesse caso o protocolo TCP e a porta 80.

Figura 20 – Adicionando imagem.


Capítulo 4. Caso de uso 31

O passo a passo detalhado acima vai ser executado para a criação de uma task
definition específica para a task do frontend e uma para o backend.

4.4.3 Target group


O target group são configurações ao qual o load balancing vai utilizar, sendo assim
é usado para encaminhar as solicitações e enviar para o destino específico, nas Figuras 21,
22, 23 e 24 é demonstrado o passo a passo para elaboração do target group do frontend e
backend:

• 1° Passo: especificação do tipo de destino em nossa aplicação nosso destino é um IP.

Figura 21 – tipo de IP.

• 2° Passo: definição de nome para nosso target group.

Figura 22 – N ome para o target group.

• 3° Passo: protocolo e porta.


Capítulo 4. Caso de uso 32

Figura 23 – Especifica protocolo e porta.

• 4°Passo: especificação da rede, nesse caso sempre utilizando a rede padrão AWS.

Figura 24 – Especifica rede.

Todos os passos devem ser realizados para a criação da task definition do frontend
e do backend, pois se tratam de diferentes serviços.
Figura 25 ilustra o painel do resultado dos passos a passos que foram demonstrados
para a criação dos target group.

Figura 25 – T arget group criados.

4.4.4 Load Balancing


O load balancing distribui automaticamente o tráfego de entrada de aplicações entre
diversos destinos, o serviço pode lidar com a variação da carga de tráfego das aplicações
em uma única zona de disponibilidade ou em diversas zonas de disponibilidade. As Figuras
26, 27 e 28 é demostrado o passo a passo da criação do load balancing:
Capítulo 4. Caso de uso 33

• 1° Passo: definição do tipo do load balancer, no nosso projeto a escolha foi pelo
application load balancer, sendo adequado ao balanceamento de carga de tráfego
HTTP e HTTPS e oferece roteamento avançado para trabalhar com arquiteturas de
containers.

Figura 26 – T ipos de load balancer.

• 2° Passo: indicamos um nome para o nosso load balancer, deixamos ele voltado com
tráfego para a Internet, e seu endereço do tipo IPv4.

Figura 27 – C onfigurção de trágego.

• 3° Passo: Zonas de disponibilidade, indica em quais locais este load balancing vai ficar
disponível, isso é muito importante selecionar mais de uma zona, pois caso ocorra
Capítulo 4. Caso de uso 34

algum problema nossa aplicação não vai ficar fora do ar, em no caso selecionamos e
zonas.

Figura 28 – Z onas de disponibilidade.

A Figura 29 mostra as configurações do load balancing após a sua criação, algo muito
importante mostrado é o nome do DNS, sendo a partir dele que vamos ter o acesso
ao nosso sistema.
Capítulo 4. Caso de uso 35

Figura 29 – Dados do load balancing.

4.4.5 Service
O passo a passo para a criação dos services é ilustrado nas Figuras 30, 31, 32 e 33.

• 1° Passo: configuração do service, nesse momento os campos a serem informados é o


tipo que nesse caso é fargate, a task definition, o cluster onde o serviço vai roda no
nosso caso cluster-tcc, o nome do serviço que está sendo criado e o número de task a
serem criadas.
Capítulo 4. Caso de uso 36

Figura 30 – C riação do service.

• 2° Passo: configuração da VPC do cluster, nesse caso selecionamos a VPC padrão e


as zonas de disponibilidade onde nosso serviço vai ser provisionado.

Figura 31 – C onfiguração da network do service.

• 3° Passo: Load Balancer


Capítulo 4. Caso de uso 37

Figura 32 – Associação do load balancer ao service.

• 4° No auto scaling são tratadas os agrupamentos para fins de escalabilidade, assim


dependendo da nossa demanda de trabalho o tamanho de taks pode ser ajustado
manualmente ou então de maneira automática. Utilizando a maneira automática
é possível usar políticas de escalabilidade, esse modo estando habilitado, o auto
scaling ajusta a capacidade desejada do grupo, entre os valores mínimo e máximo
especificado.
Capítulo 4. Caso de uso 38

Figura 33 – C onfiguração do Auto Scaling.

Para nossa aplicação foi criada dois services um chamado backend e outro frontend,
o auto scaling foi implementado apenas no service frontend.

4.5 Conexão peering de rede


A aplicação utiliza um banco de dados não relacional mongoDB. A AWS existe vários
serviços de banco de dados como o Amazon Relational Databases (RDS), DynamoBD,
Amazon DocumentBD, todos os serviços possuem segurança, escalonável e econômicos.
Para nossa aplicação foi utilizado o MongoBD Atlas, esse serviço de banco de dados em
nuvem é bastante utilizado para desenvolvimento de aplicações que utilizam o MongoDB.
A comunicação entre a AWS e MongoBD atlas foi realizada por uma conexão de peering
de VPC, onde essa conexão conecta dois VPCs por meio de tráfego de endereços IPV4
privados.
O passo a passo a seguir indica como foi feito o processo:

• 1° Passo: na conta da AWS, acessamos o painel de lista de recursos VPC, seleciona


a VPC a qual deseja fazer o peering e habilita os nomes de host DNS e a resolução
do DNS, Figura 34;
Capítulo 4. Caso de uso 39

Figura 34 – H abilitação de recusos da VPC.

• 2° Passo: no atlas devemos selecionar o projeto desejado no menu Projetos da barra


de navegação, selecionamos acesso a rede e na guia peering, clicamos em adicionar
conexão de peering, Figura 35;

Figura 35 – Peering entre VPCs.

• 3° Passo: Selecionamos a AWS e preenchemos as informações solicitadas, desmotrado


na Figura 36 e 37;
Capítulo 4. Caso de uso 40

Figura 36 – S elecionando nuvem da aws.

Figura 37 – Preenchimento de dados do peering.

• 4° Passo: Na AWS, devemos atualizar a tabela de rotas da VPC.


Capítulo 4. Caso de uso 41

4.6 Aplicação no ar
Realizando todos os passos, é obtido o resultado de deixar uma aplicação utilizando
os recursos da nuvem, o acesso à nossa aplicação e por meio do DNS name do nosso
load balancing. Em nossa aplicação possui duas telas, Figuras 38 e 39 uma demostra as
informações sobre nossas tarefas e outra tela para criação de uma nova tarefa.

Figura 38 – T ela de tarefas.

Figura 39 – T ela de criação de nova tarefa.


42

5 CONCLUSÃO

A cloud computing hoje está em grande aceitação no mercado seja por grandes
e pequenas empresas sendo as formas mais variadas de uso de serviços, suas vantagens
trazem grandes benefícios quando comparado ao modelo tradicional de infraestrutura de
TI.
O trabalho apresentou as principais características e modelos de serviços que a
utilização da nuvem pode proporcionar ao usuário. A gama de serviços oferecidos pelos
provedores é enorme, onde possuir conhecimento se torna um grande diferencial no mercado
de trabalho onde a quantidade de vagas disponíveis é enorme.
Com o caso de uso desenvolvido foi possível passar um overview do provedor de
nuvem AWS, hoje em dia líder de mercado no segmento de nuvem. Utilizamos serviços onde
os mesmos necessitam de estudo para o seu domínio e utilização, com a dedicação para
adquirir conhecimentos sobre os serviços foi possível grandes benefícios como demonstrado
quando utilizamos o serviço do EKS para trabalhar com containers.
A utilização de um banco de dados em nossa aplicação veio a contribuir bastante,
nesse caso foi apresentado o mongoDB atlas. Como solução para o desafio de fazer a
comunicação com o banco de dados utilizamos o peering entre redes VPC, ponto onde
necessitou de maior estudo em nosso projeto.
O resultado final do trabalho foi muito satisfatório pois demonstra o domínio
e conhecimento de tecnologias atuais no mercado, e deixa como desafio colocar novas
aplicações na web utilizando os serviços oferecidos pela nuvem.
43

REFERÊNCIAS

ARMBRUST, M.; FOX, A.; GRIFFITH, R.; JOSEPH, A.; KATZ, R; KONWINSKI,
A.; LEE, G.; PATTERSON, D.; RABKIN, A.; STOICA, I.; ZAHARIA, M. Above the
clouds: A Berkeley View of Cloud Computing. EECS Department, University of California,
Berkeley, fevereiro 2009.
AWS. Serviços da nuvem. Página inicial. Disponível em: <https://aws.amazon.com/pt/>.
Acesso em: 01 de setembro de 2021.
AWS. Amazon ECR. Página inicial. Disponível em: <https://aws.amazon.com/pt/ecr>.
Acesso em: 01 de setembro de 2021.
AWS. Amazon ECS. Página inicial. Disponível em: <https://aws.amazon.com/pt/ecs>.
Acesso em: 02 de setembro de 2021.
SOUSA, F., MOREIRA, L., MACHADO, J. Computação em Nuvem: Conceitos,
Tecnologias, Aplicações e Desafios. In: Antônio Costa de Oliveira; Raimundo Santos Moura;
Francisco Vieira de Souza. (Org.). III Escola Regional de Computação Ceará, Maranhão e
Piauí (ERCEMAPI). 1 ed. Teresina, 2009.
SUN MICROSYSTEMS, INC. Introduction to Cloud Computing Architecture. White
paper, junho 2009.
TAURION, C. Computação em Nuvem: Transformando o mundo da tecnologia da
informação. Rio de Janeiro: Brasport, 2009.
VAQUERO, L. M.; MERINO-RODERO, L; CACERES, J.; LINDNER, M. A Break
in the Clouds: Towards a Cloud Definition. ACM SIGCOMM Computer Communication
Review, 39(1):50-55, Janeiro 2009.
VERAS, Manoel. Cloud Computing: Nova Arquitetura da TI. Rio de janeiro,Brasport,
2012.
VELTE, Anthony T.; VELTE, Toby J.; ELSENPETER, Robert. Computação em
Nuvem: Uma Abordagem Prática. Rio de Janeiro, Alta Books, 2011.

Você também pode gostar