Escolar Documentos
Profissional Documentos
Cultura Documentos
Natal – RN
Setembro de 2021
Daniel Brito Fernandes
Natal – RN
Setembro de 2021
Daniel Brito Fernandes
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.
IP Internet Protocol
TI Tecnologia da Informação
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
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
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.
2 CONCEITOS
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)
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.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.
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)
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.
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.
• linha 5: copia tudo que inicia com packge e termina com .json para dentro da pasta
onde vai ficar o app;
• linha 9: copia tudo que está no diretório onde o arquivo Dockerfile está para dentro
da pasta definida no comando workdir;
• linha 13: comando npm start é executado para iniciar o script que está no package.json
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.
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.
• 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;
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.
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.
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°Passo: especificação da rede, nesse caso sempre utilizando a rede padrão AWS.
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.
• 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.
• 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.
• 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.
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
4.4.5 Service
O passo a passo para a criação dos services é ilustrado nas Figuras 30, 31, 32 e 33.
Para nossa aplicação foi criada dois services um chamado backend e outro frontend,
o auto scaling foi implementado apenas no service frontend.
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.
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.