Você está na página 1de 239

Fundamentos ao

Cloud Computing e
Deploy na Nuvem
Prof. Airan Arinê Possamai
Prof. Marcio Poffo
Prof. Nader Ghoddosi
Prof.ª Neli Miglioli Sabadin
Prof. Pedro Sidnei Zanchett
Prof.ª Simone Erbs da Costa

Indaial – 2020
1a Edição
Copyright © UNIASSELVI 2020

Elaboração:
Prof. Airan Arinê Possamai
Prof. Marcio Poffo
Prof. Nader Ghoddosi
Prof.ª Neli Miglioli Sabadin
Prof. Pedro Sidnei Zanchett
Prof.ª Simone Erbs da Costa

Revisão, Diagramação e Produção:


Centro Universitário Leonardo da Vinci – UNIASSELVI

Ficha catalográfica elaborada na fonte pela Biblioteca Dante Alighieri


UNIASSELVI – Indaial.

P856f

Possamai, Airan Arinê

Fundamentos ao cloud computing e deploy na nuvem. / Airan Arinê


Possamai et.al. – Indaial: UNIASSELVI, 2020.

227 p.; il.

ISBN 978-65-5663-329-9
ISBN Digital 978-65-5663-330-5

1. Computação em nuvem. – Brasil. I. Possamai, Airan Arinê. II. Poffo,


Marcio. III. Ghoddosi, Nader. IV. Zanchett, Pedro Sidnei. V. Costa, Simone Erbs da.
VI. Sabadin, Neli Miglioli. VII. Centro Universitário Leonardo Da Vinci.

CDD 006.78

Impresso por:
Apresentação
Atualmente, a computação em nuvem está sendo cada vez mais
utilizada, sobretudo na prática conhecida como “sob demanda”, isto é, o
pagamento pelo uso de recursos é realizado somente para a quantidade de
recursos utilizada. Os serviços fornecidos, as APIs e os aplicativos que podem
ser hospedados por estes provedores de nuvem substituíram a utilização de
servidores locais, podendo ser citados os provedores comerciais Amazon e
Google, dentro outros.

Neste sentido, existem três modelos de serviços baseados em nuvem,


sendo um deles o Software as a Service (SaaS), em que o consumidor utiliza
um aplicativo sem controle do sistema, hardware e infraestrutura de rede.
Outro modelo é a Plataforma como Serviço (PaaS), no qual os usuários
controlam os aplicativos, mas não controlam sistema operacional, hardware
e infraestrutura de rede. E por fim, existe o modelo de Infraestrutura como
Serviço (IaaS), em que o usuário acessa recursos de computação fundamentais,
como CPU, memória, middleware e armazenamento, mas o consumidor não
controla a infraestrutura de nuvem abaixo deles.

Existe também o conceito de nuvem chamado BaaS (Back-end as


Service), o qual é ideal para abstrair algumas das tarefas repetitivas em
aplicações, mobile ou web, como login e storage de arquivos, por exemplo,
não se preocupando com a infraestrutura envolvida. Além disso, com
a utilização deste modelo de serviço, se reduz os custos e se obtém a
escalabilidade elástica.

Um dos conceitos de computação em nuvem é o serverless computing,


ou computação sem servidores, também conhecida por Function as a Service
(FaaS), em que o provedor de nuvem possui o gerenciamento completo do
contêiner onde as funções são executadas, para atendimento às solicitações, e,
com isso, a necessidade de executar sistemas pode ser extinguida, passando
a execução baseada em eventos, aumentando a possibilidade de criação de
aplicações escalonáveis.

Lembrando que estes tipos de serviços em nuvem são baseados na


banda que um usuário possui de Internet e, portanto, bandas ruins significam
que a utilização de recursos baseados em nuvem não é viável. Além disso,
existe a questão de que usuários e organizações não se sentem confortáveis​​
com o armazenamento de seus dados e aplicativos em uma infraestrutura
que eles não controlam, sendo que a migração para uma infraestrutura
compartilhada pode aumentar o potencial risco de acesso não autorizado,
além de exposição de dados confidenciais. Neste sentido, sistemas
baseados em nuvem precisam ser consistentes com relação à autenticação,
o gerenciamento de identidade, conformidade e tecnologias relacionadas ao
acesso, sendo estas imprescindíveis.
A computação em nuvem possui uma das vantagens em diminuir
o gasto de capital com compra de hardware e software, instalações e
configurações em datacenters locais, eletricidade, além de especialistas de
TI para o gerenciamento da infraestrutura. Além disso, dependendo modelo
utilizado, normalmente o desenvolvedor não precisará se preocupar e ocupar
seu tempo com configuração de infraestrutura para executar suas aplicações,
reservando seu tempo unicamente com seu trabalho de desenvolvimento,
melhorando com isso a produtividade. Outro benefício da computação
em nuvem é a possibilidade de disponibilização de grandes quantidades
de recursos de computação em minutos, muitas vezes com apenas alguns
cliques, fornecendo flexibilidade e aliviando a pressão do planejamento de
capacidade.

Neste sentido, existem vários modelos de serviços, cada um com


suas características, vantagens e desvantagens, se tornando mais ou menos
produtiva ou barata para uma determinada organização ou equipe.

Este livro fornece uma exploração de conceitos de computação em


nuvem, como ela funciona, quais os tipos de serviços e plataformas, além
do conceito serverless, containers e versionamento de deploy de aplicações
para aprofundamento e entendimento de como se utilizar a computação em
nuvem.

Bons estudos!

Prof. Airan Arinê Possamai.


Prof. Marcio Poffo.
Prof. Nader Ghoddosi.
Prof. Pedro Sidnei Zanchett.
Prof.ª Simone Erbs da Costa.
NOTA

Você já me conhece das outras disciplinas? Não? É calouro? Enfim, tanto para
você que está chegando agora à UNIASSELVI quanto para você que já é veterano, há novi-
dades em nosso material.

Na Educação a Distância, o livro impresso, entregue a todos os acadêmicos desde 2005, é


o material base da disciplina. A partir de 2017, nossos livros estão de visual novo, com um
formato mais prático, que cabe na bolsa e facilita a leitura.

O conteúdo continua na íntegra, mas a estrutura interna foi aperfeiçoada com nova diagra-
mação no texto, aproveitando ao máximo o espaço da página, o que também contribui
para diminuir a extração de árvores para produção de folhas de papel, por exemplo.

Assim, a UNIASSELVI, preocupando-se com o impacto de nossas ações sobre o ambiente,


apresenta também este livro no formato digital. Assim, você, acadêmico, tem a possibilida-
de de estudá-lo com versatilidade nas telas do celular, tablet ou computador.

Eu mesmo, UNI, ganhei um novo layout, você me verá frequentemente e surgirei para
apresentar dicas de vídeos e outras fontes de conhecimento que complementam o assun-
to em questão.

Todos esses ajustes foram pensados a partir de relatos que recebemos nas pesquisas
institucionais sobre os materiais impressos, para que você, nossa maior prioridade, possa
continuar seus estudos com um material de qualidade.

Aproveito o momento para convidá-lo para um bate-papo sobre o Exame Nacional de


Desempenho de Estudantes – ENADE.

Bons estudos!
LEMBRETE

Olá, acadêmico! Iniciamos agora mais uma disciplina e com ela


um novo conhecimento.

Com o objetivo de enriquecer seu conhecimento, construímos, além do livro


que está em suas mãos, uma rica trilha de aprendizagem, por meio dela você
terá contato com o vídeo da disciplina, o objeto de aprendizagem, materiais complemen-
tares, entre outros, todos pensados e construídos na intenção de auxiliar seu crescimento.

Acesse o QR Code, que levará ao AVA, e veja as novidades que preparamos para seu estudo.

Conte conosco, estaremos juntos nesta caminhada!


Sumário
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING..................................................... 1

TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO.......................... 3


1 INTRODUÇÃO..................................................................................................................................... 3
2 CONCEITOS DE CLOUD COMPUTING....................................................................................... 4
2.1 ELASTICIDADE............................................................................................................................... 7
2.2 DISPONIBILIDADE........................................................................................................................ 7
2.3 ESCALABILIDADE......................................................................................................................... 7
3 A NUVEM E O COTIDIANO............................................................................................................. 8
3.1 SERVIÇOS DE ARMAZENAMENTO.......................................................................................... 9
3.2 SERVIÇOS DE COMUNICAÇÃO............................................................................................... 10
3.2.1 Plataforma como um serviço (PaaS)................................................................................... 12
3.2.1 Software como um serviço (SaaS)...................................................................................... 12
3.3 SERVIÇOS DE TRANSMISSÃO AO VIVO................................................................................ 13
3.4 DEMAIS EXEMPLOS NO COTIDIANO.................................................................................... 15
4 A NUVEM E BIG DATA.................................................................................................................... 16
5 INFRAESTRUTURA COMO UM SERVIÇO (IAAS).................................................................. 18
5.1 PLATAFORMAS DE IAAS........................................................................................................... 20
5.1.1 DigitalOcean.......................................................................................................................... 20
5.1.2 Linode..................................................................................................................................... 21
5.1.3 Rackspace............................................................................................................................... 22
5.1.4 Amazon Web Services (AWS)............................................................................................. 22
5.1.5 Cisco Metapod...................................................................................................................... 23
5.1.6 Microsoft Azure.................................................................................................................... 24
5.1.7 Google Compute Engine (GCE)......................................................................................... 25
RESUMO DO TÓPICO 1..................................................................................................................... 26
AUTOATIVIDADE............................................................................................................................... 27

TÓPICO 2 — SOFTWARE COMO SERVIÇO - SAAS................................................................... 29


1 INTRODUÇÃO................................................................................................................................... 29
2 CONCEITO DE SAAS....................................................................................................................... 30
3 CARACTERÍSTICAS DO SAAS..................................................................................................... 33
4 APLICAÇÕES SAAS EM CENÁRIOS DE BIG DATA................................................................ 35
5 PLATAFORMAS DE SAAS.............................................................................................................. 37
5.1 GOOGLE APPS.............................................................................................................................. 37
5.2 ONEDRIVE..................................................................................................................................... 38
5.3 DROPBOX....................................................................................................................................... 39
5.4 SALESFORCE................................................................................................................................. 40
5.5 CISCO WEBEX............................................................................................................................... 40
5.6 CONCUR........................................................................................................................................ 41
5.7 GOTOMEETING............................................................................................................................ 41
5.8 GOOGLE BIGQUERY .................................................................................................................. 42
5.9 O GOOGLE DRIVE ...................................................................................................................... 43
RESUMO DO TÓPICO 2..................................................................................................................... 44
AUTOATIVIDADE............................................................................................................................... 46

TÓPICO 3 — PLATAFORMA COMO SERVIÇO PAAS................................................................ 47


1 INTRODUÇÃO................................................................................................................................... 47
2 CONCEITOS DE PAAS..................................................................................................................... 47
4 VANTAGENS E DESVANTAGENS DO USO DE PAAS........................................................... 54
5 APLICAÇÕES PAAS EM CENÁRIOS DE BIG DATA................................................................ 55
6 PLATAFORMAS DE PAAS............................................................................................................... 57
6.1 AWS ELASTIC BEANSTALK............................................................................................... 57
6.2 WINDOWS AZURE PLATFORM (WAP)................................................................................... 58
6.3 HEROKU......................................................................................................................................... 60
6.4 FORCE.COM.................................................................................................................................. 61
6.5 GOOGLE APP ENGINE............................................................................................................... 62
6.6 APACHE STRATOS....................................................................................................................... 63
6.7 OPENSHIFT.................................................................................................................................... 64
6.7.1 Red Hat OpenShift............................................................................................................... 65
6.8 IBM................................................................................................................................................... 66
6.9 JELASTIC........................................................................................................................................ 67
LEITURA COMPLEMENTAR............................................................................................................. 68
RESUMO DO TÓPICO 3..................................................................................................................... 72
AUTOATIVIDADE............................................................................................................................... 74
REFERÊNCIAS....................................................................................................................................... 76

UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO


SERVIÇO (FAAS)................................................................................................................................... 83

TÓPICO 1 — SERVERLESS.................................................................................................................. 85
1 INTRODUÇÃO................................................................................................................................... 85
2 CONCEITOS DE SERVERLESS....................................................................................................... 86
2.1 SERVERLESS COMO COMPUTAÇÃO ORIENTADA A EVENTOS..................................... 87
2.2 ESTRUTURA DA ARQUITETURA SERVERLESS.................................................................... 88
2.3 SERVERLESS: FUNÇÃO COMO UM SERVIÇO ..................................................................... 90
3 FUNÇÕES E OBJETIVOS................................................................................................................. 90
4 SERVERLESS E CLOUD COMPUTING.......................................................................................... 92
4.1 PRINCIPAIS DIFERENÇAS ENTRE COMPUTAÇÃO SERVERLESS E CONSTRUIR A
INFRAESTRUTURA DO ZERO................................................................................................... 93
4.1.1 Desenvolvimento de aplicações......................................................................................... 93
4.1.2 Processos independentes..................................................................................................... 94
5 POR QUE USAR SERVERLESS........................................................................................................ 97
5.1 DESENVOLVIMENTO E IMPLANTAÇÃO RÁPIDA............................................................. 97
5.2 BAIXO CUSTO............................................................................................................................... 98
5.3 ESCALONABILIDADE SOB DEMANDA................................................................................. 98
5.4 REDUZIR O TEMPO DE ATIVAÇÃO DA APLICAÇÃO........................................................ 99
5.5 ALTA DISPONIBILIDADE DA APLICAÇÃO.......................................................................... 99
5.6 SEPARAÇÃO DE PREOCUPAÇÕES POR COMPONENTES................................................ 99
RESUMO DO TÓPICO 1................................................................................................................... 100
AUTOATIVIDADE............................................................................................................................. 102

TÓPICO 2 — BACK-END AS SERVICE - BAAS............................................................................ 105


1 INTRODUÇÃO................................................................................................................................. 105
2 APLICAÇÕES.................................................................................................................................... 106
3 CONCEITOS DE BACK-END AS A SERVICE - BAAS.............................................................. 106
4 ARQUITETURA DE BAAS............................................................................................................. 108
5 DIFERENÇA ENTRE FRONT-END E BACK-END..................................................................... 108
6 RAZÕES PARA USAR BAAS......................................................................................................... 110
6.1 RAZÕES COMERCIAIS.............................................................................................................. 110
6.2 RAZÕES TÉCNICAS . ................................................................................................................ 111
7 QUANDO UTILIZAR UM BAAS?................................................................................................ 111
7.1 VANTAGENS DE UM BAAS..................................................................................................... 112
7.2 DESVANTAGENS DE UM BAAS............................................................................................. 112
8 BAAS E SEUS RECURSOS............................................................................................................. 113
8.1 IAAS X PAAS X BAAS................................................................................................................ 113
8.1.1 Azure Mobile Apps............................................................................................................ 115
8.1.2 Back4App............................................................................................................................. 115
8.1.3 Firebase................................................................................................................................ 116
8.1.4 Parse...................................................................................................................................... 116
8.1.5 CloudKit............................................................................................................................... 117
8.1.6 Kinvey.................................................................................................................................. 117
8.1.7 AWS Ampify........................................................................................................................ 118
8.1.8 Kii.......................................................................................................................................... 118
8.1.9 Kumulos............................................................................................................................... 118
9 MERCADO......................................................................................................................................... 119
RESUMO DO TÓPICO 2................................................................................................................... 120
AUTOATIVIDADE............................................................................................................................. 121

TÓPICO 3 — FUNÇÃO COMO SERVIÇO (FAAS)...................................................................... 123


1 INTRODUÇÃO................................................................................................................................. 123
2 CONCEITOS...................................................................................................................................... 124
3 FUNÇÕES COMO SERVIÇO......................................................................................................... 126
4 ESCALABILIDADE.......................................................................................................................... 128
5 SEGURANÇA.................................................................................................................................... 128
6 CUSTOS RELACIONADOS.......................................................................................................... 128
7 CASOS DE APLICAÇÕES.............................................................................................................. 129
8 APLICAÇÕES EM CENÁRIOS DE BIG DATA.......................................................................... 130
9 DESVANTAGENS............................................................................................................................ 131
10 PLATAFORMAS DE FAAS........................................................................................................... 131
10.1 AWS LAMBDA........................................................................................................................... 131
10.2 GOOGLE CLOUD FUNCTIONS.............................................................................................. 136
10.3 MICROSOFT AZURE FUNCTIONS....................................................................................... 140
10.4 IBM CLOUD FUNCTIONS....................................................................................................... 142
LEITURA COMPLEMENTAR........................................................................................................... 145
RESUMO DO TÓPICO 3................................................................................................................... 147
AUTOATIVIDADE............................................................................................................................. 149
REFERÊNCIAS..................................................................................................................................... 151

UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO................. 153

TÓPICO 1 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO..................... 155


1 INTRODUÇÃO................................................................................................................................. 155
2 CONCEITOS...................................................................................................................................... 155
2.1 INTRODUÇÃO AOS CONTÊINERES..................................................................................... 156
2.2 QUANDO USAR DOCKER....................................................................................................... 158
3 TRABALHANDO COM OS CONTÊINERES............................................................................. 159
RESUMO DO TÓPICO 1................................................................................................................... 172
AUTOATIVIDADE............................................................................................................................. 173

TÓPICO 2 — CONTÊINER COMO SERVIÇO (CAAS).............................................................. 175


1 INTRODUÇÃO ................................................................................................................................ 175
2 CONCEITOS ..................................................................................................................................... 175
3 CASOS DE APLICAÇÕES ............................................................................................................. 178
4 O FUNCIONAMENTO .................................................................................................................. 178
5 DESVANTAGENS ........................................................................................................................... 180
6 PLATAFORMAS DE CAAS ........................................................................................................... 180
6.1 AMAZON EC2 CONTAINER SERVICE (ECS) ...................................................................... 181
6.2 GOOGLE CONTÊINER ENGINE (GKE)  ............................................................................... 191
6.3 SERVIÇO DE CONTÊINER DO AZURE (ACS) . ................................................................... 192
RESUMO DO TÓPICO 2................................................................................................................... 195
AUTOATIVIDADE............................................................................................................................. 196

TÓPICO 3 — VERSIONAMENTO E DEPLOY EM NUVEM..................................................... 197


1 INTRODUÇÃO................................................................................................................................. 197
2 CONCEITOS DE VERSIONAMENTO........................................................................................ 197
2.1 O SISTEMA DISTRIBUÍDO GIT................................................................................................ 202
2.2 FERRAMENTAS.......................................................................................................................... 206
3 CONCEITOS DE DEPLOY............................................................................................................. 210
4 AUTOMAÇÃO DO DEPLOY EM NUVEM................................................................................ 212
LEITURA COMPLEMENTAR........................................................................................................... 214
RESUMO DO TÓPICO 3................................................................................................................... 222
AUTOATIVIDADE............................................................................................................................. 223
REFERÊNCIAS..................................................................................................................................... 224
UNIDADE 1 —

FUNDAMENTOS DE CLOUD
COMPUTING

OBJETIVOS DE APRENDIZAGEM
A partir do estudo desta unidade, você deverá ser capaz de:

• conhecer os fundamentos de cloud computing;


• compreender e introduzir a computação em nuvem;
• conhecer exemplos de computação em nuvem no cotidiano;
• conhecer quais os principais recursos disponibilizados em nuvem;
• conhecer os três grandes modelos de serviços em nuvem.

PLANO DE ESTUDOS
Esta unidade está dividida em três tópicos. No decorrer da unidade,
você encontrará autoatividades com o objetivo de reforçar o conteúdo
apresentado.

TÓPICO 1 - INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO

TÓPICO 2 - SOFTWARE COMO SERVIÇO – SAAS

TÓPICO 3 - PLATAFORMA COMO SERVIÇO – PAAS

CHAMADA

Preparado para ampliar seus conhecimentos? Respire e vamos


em frente! Procure um ambiente que facilite a concentração, assim absorverá
melhor as informações.

1
2
TÓPICO 1 —
UNIDADE 1

INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO

1 INTRODUÇÃO
Você que é profissional ou estudante de Tecnologia da Informação (TI)
sabe que muitos termos da área foram muito instigados, sendo um deles o cloud
computing, muito utilizado no mundo das corporações. Neste sentido, muitas
empresas utilizam esta tecnologia, as quais percebem as vantagens que ela retorna.

Em agosto de 1962, foi publicado o artigo, um dos mais famosos, chamado


On-line ManC-Computer Communication, no qual foi escrito um dos conceitos
iniciais do futuro da internet, sendo descrito como pessoas podem interagir
com computador para desenvolvimento de diversas tarefas (BAI, 2015). Ainda
segundo Bai (2015), neste artigo foi descrito como compartilhar o armazenamento
de dados e também como os computadores podem auxiliar as pessoas para o
desenvolvimento de tarefas complicadas através de colaboração on-line.

O termo cloud computing está sendo analisado por executivos de


Tecnologia de Informação, para que se tenha uma investigação desta tecnologia e
de seus benefícios, dentre os quais a utilização de recursos ociosos de computadores
sem a preocupação com investimentos em hardware (TAURION, 2009). Ainda
segundo Taurion (2009), esta tecnologia está sendo estudada em vários artigos
científicos, além de publicações e eventos da área, o que induz ser uma inovação
com vantagens para as empresas.

Durante muitos anos, equipes de desenvolvimento de software, assim


como administradores de redes de computadores, têm usado uma abstração de
nuvem para representar detalhes a comunicação de mensagens enviadas entre
computadores na internet (JAMSA, 2013). Esta abstração de nuvem foi expandida
através da inclusão de utilização tanto física quanto virtual de processadores,
discos rígidos, serviços de software e aplicações mobiles (JAMSA, 2013).

Aplicações baseadas em nuvem possuem novos recursos, os quais se pode


pagar por uso de determinada velocidade de processador, quantidade de disco
ou de memória RAM por exemplo, mas por outro lado, com recursos em nuvem,
muitos são os desafios para a questão de segurança (JAMSA, 2013). Existem
muitas definições diferentes para a computação em nuvem, sendo que muitas
das definições não são claras, ressaltando que o termo nuvem se originou da área
de telefonia (TAURION, 2009).

3
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

Neste sentido, o termo computação em nuvem surgiu da indústria de


TI, na qual vários fornecedores de TI começaram a disponibilizar recursos de
computação, como armazenamento e serviço de hospedagem de aplicações com
alcance em todo o mundo (BUYYA; BROBERG; GOSCINSKI, 2011). Este tipo de
computação em nuvem teve sua evolução com os data centers, nos quais eram
disponibilizados serviços pela rede ou pela internet, cujos clientes poderiam
pagar pela sua utilização, ou seja, a alocação de recurso é baseada na utilização do
cliente (BUYYA; BROBERG; GOSCINSKI, 2011). Com isso, se um cliente precisar
de 1 GB de armazenamento de dados, é o valor referente a este espaço que ele
paga, ou se precisar de um servidor de hospedagem para um site, será pago ao
data center apenas os recursos necessários que sejam suficientes para manter o
site funcional.

Com a evolução destes serviços, a interoperabilidade e a usabilidade


foi aumentando, e consequentemente o custo da computação em nuvem foi
diminuindo (BUYYA; BROBERG; GOSCINSKI, 2011). Desenvolvedores mais
avançados, fornecedores de recursos de TI e pesquisadores estão trabalhando para
disseminar informações e conhecimentos a respeito das vantagens da utilização
de recursos em nuvem (BUYYA; BROBERG; GOSCINSKI, 2011).

2 CONCEITOS DE CLOUD COMPUTING


Cloud computing, ou computação em nuvem, pode ser compreendido
pelo armazenamento de dados, assim como seu acesso, além de permitir a
disponibilização de serviços pela Internet a partir de um computador remoto,
em vez do disco rígido de um computador local (CHANDRASEKARAN,
2015). Segundo Chandrasekaran (2015), dentre as vantagens destes serviços
remotos, podem ser citadas a escalabilidade e a elasticidade, por exemplo,
sendo diferentes de uma simples máquina remota, e o termo nuvem, conforme
entendido anteriormente, é uma metáfora utilizada na internet. Ainda segundo
Chandrasekaran (2015), o armazenamento de dados em um disco rígido de um
computador local é chamado de armazenamento local, assim como a execução de
alguma aplicação, seja um programa ou um serviço, rodando em um computador
local, o qual é denominado de computação local.

4
TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO

FIGURA 1 – EXEMPLO DE COMPUTAÇÃO EM NUVEM

FONTE: Chandrasekaran (2015, p. 11)

Com estas definições, é fácil compreender a diferença com a computação em


nuvem, em que neste caso, é necessário acessar os dados ou executar uma aplicação
ou serviço pela Internet, conforme ilustrado na Figura 1 (CHANDRASEKARAN,
2015).

Ainda segundo Chandrasekaran (2015), o termo computação em nuvem


foi originado do Instituto Nacional de Padrões e Tecnologia (NIST), que designa
computação em nuvem como um modelo sob demanda para uso de recursos
de computação configuráveis. Esta disponibilização de recursos computacionais,
como servidores, armazenamento de dados, aplicações e serviços, podem ser
rápida e facilmente liberados para os clientes, com pequeno esforço do provedor
de serviços (CHANDRASEKARAN, 2015).

Computação em nuvem se refere a aplicações desenvolvidas e


disponibilizadas como serviços por provedores em data centers, oferecendo
diferentes modelos de serviços para usuários finais (PATHAN; MONOWAR;
FADLULLAH, 2013). A computação em nuvem, por possuir uma infraestrutura
expansível, isto é, se precisar de mais recursos, basta adicionar novos, permite
a disponibilização de serviços de streaming de vídeo, podendo oferecer
programações ao vivo (PATHAN; MONOWAR; FADLULLAH, 2013).

5
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

Segundo Taurion (2009, p. 2), cloud computing, ou computação em


nuvem, pode ser definido como “um conjunto de recursos como capacidade
de processamento, armazenamento, conectividade, plataformas, aplicações e
serviços disponibilizados na internet”. Neste sentido, computação em nuvem
pode ser descrita como sendo a virtualização de um data center, pois os recursos
de servidores são disponibilizados através da internet para os clientes (TAURION,
2009).

Computação em nuvem foi criado para descrever a sofisticada


tecnologia de serviços e recursos de computação sob demanda, os quais foram
disponibilizados inicialmente por provedores comerciais como Microsoft, Google
e Amazon (BUYYA; BROBERG; GOSCINSKI, 2011). Estes provedores comerciais,
assim como muitos outros, possuem parques computacionais com milhares de
máquinas, assim como vários data centers espalhados pelo mundo (TAURION,
2009).

Segundo Taurion (2009), algumas das características principais da


computação em nuvem são:

• a computação em nuvem pode criar ilusão de que os recursos em nuvem sejam


infinitos;
• com a computação em nuvem, não é necessário adquirir recursos
antecipadamente;
• a computação em nuvem permite que empresas usem apenas a quantidade de
recursos necessários, podendo aumentar ou diminuir a quantidade;
• a computação em nuvem permite que se pague os serviços utilizados pelo que
se utiliza.

De certa forma, pode ser considerado o retorno da centralização, pois


computadores pessoais, neste cenário, podem ser utilizados apenas como
forma de acesso a aplicações, serviços ou armazenamento de dados que rodam
em servidores remotos (TAURION, 2009). Ainda segundo Taurion (2009), com
a computação em nuvem, usuários que utilizam computadores pessoais com
poucos recursos, podem ter acesso a ilimitados espaços de armazenamentos,
em servidores remotos, ou ainda executar aplicações em servidores remotos que
requisitam grande capacidade de processamento.

Serviços que rodam em nuvem podem ser chamados de Cloud Services,


podendo pertencer a duas categorias: computação em nuvem (cloud computing)
e armazenamento em nuvem (cloud storage) (BAI, 2015). Ainda segundo Bai (2015),
a computação em nuvem possui algumas vantagens em relação à arquitetura
local, as quais são: elasticidade, disponibilidade e escalabilidade.

6
TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO

2.1 ELASTICIDADE
A elasticidade significa o cliente de um serviço poder aumentar ou
diminuir a demanda por um serviço, isto é, o cliente de um serviço pode, por
exemplo, solicitar o aumento do espaço de armazenamento em nuvem, ou
diminuir a capacidade de armazenamento (BAI, 2015).

Outro exemplo para a elasticidade é um site que está hospedado em um


servidor na nuvem, por um determinado período de tempo precisar rodar em
mais servidores do que a quantidade normal, como por exemplo durante o Black
Friday, para suportar a quantidade de usuários, mantendo uma resposta aceitável
(BAI, 2015). Em um data center tradicional, esta característica de elasticidade é
mais difícil, pois normalmente depende de aprovação, aquisição, instalação e
testes de novos equipamentos de hardware, para permitir atender a demanda,
havendo, normalmente, demora ou impossibilidade (BAI, 2015).

2.2 DISPONIBILIDADE
A característica disponibilidade é a possibilidade de usuários poderem
acessar serviços hospedados na nuvem em qualquer momento (dia, hora) e de
qualquer lugar do mundo, e estando os serviços disponíveis, significa que estes
estão funcionando perfeitamente (BAI, 2015). Normalmente, serviços na nuvem
possuem redundância de servidores além de backups, garantindo que se um
servidor cair, outro pode assumir no lugar para manter os serviços em perfeito
funcionamento (BAI, 2015).

2.3 ESCALABILIDADE
O termo escalabilidade pode ser compreendido em como um sistema
suporta o aumento do número de usuários, mantendo a sua qualidade e eficiência,
sendo que, neste caso, o aumento da capacidade de trabalho é o número que
indica a quantidade (BAI, 2015). Em data centers tradicionais, a escalabilidade
é alcançada melhorando os equipamentos de hardware, e uma situação para
exemplificar, é um banco de dados estar com o uso de memória RAM no limite, e
para resolver, basta adicionar mais memória, sendo conhecido por escalabilidade
vertical (BAI, 2015). Escalabilidade vertical não possui limites, ao não ser alguns
servidores físicos que possuem limites de memória RAM ou processadores, por
exemplo, assim como máquinas virtuais também possuírem algumas limitações,
mas geralmente, os provedores de servidores em nuvem disponibilizam vários
tamanhos ou configurações diferentes para que os clientes possam optar pelo
mais adequado para seu uso (BAI, 2015).

7
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

Se a escalabilidade vertical não resolver alguma determinada demanda


para um cliente, é possível aplicar outro tipo de escalabilidade, a horizontal (BAI,
2015). A escalabilidade horizontal não altera as configurações dos servidores, mas
ajusta a capacidade do sistema para permitir aumentar ou diminuir o número
de servidores (BAI, 2015). Ainda segundo Bai (2015), a escalabilidade horizontal
possui a vantagem de não limitar o espaço em disco de um servidor ou máquina
virtual.

3 A NUVEM E O COTIDIANO
Além da Amazon e Google, as quais possuem vários data centers pelo
mundo, disponibilizando inúmeros recursos computacionais, assim como a IBM,
a qual também entra nessa lista de provedores de serviços em nuvem, sendo um
exemplo o seu portal de inovação chamado de Technology Adoption Program (TAP)
(TAURION, 2009). Este portal permite que softwares experimentais desenvolvidos
pela IBM sejam analisados e testados por seus próprios funcionários, quanto ao
quesito de qualidade, funcionalidade e desempenho, e, para que estes testes fossem
possíveis rodando em computadores locais, seria necessário a implementação de
uma infraestrutura para cada funcionário (TAURION, 2009). Neste sentido, com
a computação em nuvem, a equipe responsável pelo software apenas configura os
recursos necessários no servidor e, disponibiliza facilmente e em poucos minutos
para os funcionários testarem (TAURION, 2009).

Outro exemplo de computação em nuvem foi uma incubadora de software


criada na cidade de Wuxi, na China, tendo em vista que empresas incubadas não
possuem muitos recursos financeiros, foi criada uma estrutura em nuvem para
alocação de recursos conforme a necessidade (TAURION, 2009). Neste sentido, a
computação em nuvem permite que se ocorrer uma alta demanda por recursos
computacionais, basta alocar mais recursos, e, se a demanda diminuir, basta
liberar estes recursos ociosos (TAURION, 2009).

Ao invés de uma empresa perder tempo e recursos para montar um


data center físico, ou ampliar seus recursos, como incluir mais espaço de
armazenamento, por exemplo, com a computação em nuvem basta acessar o site
de um provedor de serviços em nuvem e pagar pela ampliação dos recursos, o que
pode estar disponível em poucos minutos (TAURION, 2009). Com isso, segundo
Taurion (2009), a empresa não precisa alocar funcionários para a montagem de
hardware, instalação de software, além de pagar por estes três recursos, fora a
economia em energia elétrica.

Outra vantagem da computação em nuvem é a questão das evoluções


tecnológicas, em que equipamentos que são deteriorados com o tempo e precisam
ser substituídos, ou mesmo uma nova necessidade em que se necessite de um
determinado hardware mais moderno, em que neste modelo, a organização ou
empresa não permanece refém dos equipamentos que possui no data center
físico, podendo apenas alocar o recurso desejado (TAURION, 2009).

8
TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO

3.1 SERVIÇOS DE ARMAZENAMENTO


Um dos tipos de virtualização é a utilizada para armazenamento de
dados, na qual inúmeros discos rígidos físicos podem ser combinados, formando
um único sistema de armazenamento virtualizado, podendo aumentar a
capacidade ou até a velocidade de gravação (CHANDRASEKARAN, 2015).
Este tipo de virtualização, chamado de armazenamento em nuvem, pode ser
concebido pelo armazenamento privado, disponibilizado o serviço por uma
empresa, ou ainda por armazenamento público, como o DropBox, por exemplo,
em que o armazenamento ocorre fora da empresa, mas também pode ser uma
abordagem mista, isto é, privado e público (CHANDRASEKARAN, 2015).
Ainda segundo Chandrasekaran (2015), na virtualização de armazenamento, os
discos utilizados no armazenamento físico são considerados como uma única
mídia de armazenamento virtual, sendo que este conceito de virtualização de
armazenamento é preparado com técnicas de armazenamento como Storage Area
Network (SAN) e Network Attached Storage (NAS).

NOTA

O termo SAN (Storage Area Network) pode ser melhor compreendido em


http://www.infortrendbrasil.com.br/storage-san/ e em http://www.infortrendbrasil.com.
br/dicas/diferencas-entre-nas-das-e-san/, assim como o termo NAS (Network Attached
Storage).

A virtualização de data centers permite um caminho para reduzir o uso


ineficiente de recursos de computação, assim como a redução de energia elétrica,
sabendo que um data center físico de uma organização atende a somente esta, e um
data center virtual pode atender a várias organizações ou clientes (FAYNBERG;
LU; SKULER, 2016). É possível que uma organização tenha um data center
virtual, terceirizado e um outro data center físico, sendo os dois unidos por uma
rede virtual privada (FAYNBERG; LU; SKULER, 2016).

Uma das principais necessidades de um data center é o uso para


armazenamento de dados, sendo que o tráfego na rede deve ter um bom
desempenho para evitar que sistemas se tornem lentos (FAYNBERG; LU;
SKULER, 2016).

Com máquinas virtuais é possível realizar a alocação e desalocação fácil e


rápida, o que permite alocação eficiente de recursos de computação, mas muitos
processamentos executados nestes servidores podem gerar dados, os quais devem
ser armazenados (SULLIVAN, 2010). Gerar dados localmente em um servidor
que realizou o processamento pode ser útil quando os dados são temporários,

9
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

porém se o servidor for desalocado, estes dados serão perdidos, e é por este
motivo que o armazenamento em nuvem é útil (SULLIVAN, 2010). Através do
armazenamento em nuvem, os dados antigos, assim como os novos, gerados
recentemente, são armazenados de forma que possam ser disponibilizados em
qualquer servidor em nuvem, levando em consideração restrições de controle
de acesso (SULLIVAN, 2010). Com o provisionamento rápido de hardware e a
utilização de armazenamento em nuvem, consequentemente é desencadeada a
escalabilidade massiva (SULLIVAN, 2010).

Com o acesso à internet disponibilizado cada vez para mais pessoas, o


número de usuários e dispositivos conectados na grande rede está crescendo e,
consequentemente, a quantidade de dados trafegada e armazenada também está
aumentando (FAYNBERG; LU; SKULER, 2016). Segundo Faynberg, Lu e Skuler
(2016), diariamente são trafegados mais de 1 exabyte de dados e, em 2011, mais
de 1.8 exabyte de dados foram criados no mundo, e como a quantidade de dados
está crescendo rapidamente, o armazenamento em nuvem deve avançar para
suprir estas necessidades.

3.2 SERVIÇOS DE COMUNICAÇÃO


A Web 2.0 permitiu que simples usuários da internet realizassem
publicações sem a utilização de HTML, diretamente, sendo que ferramentas ou
aplicações permitiram esta funcionalidade (JAMSA, 2013).

FIGURA 2 – FERRAMENTAS DA WEB 2.0

FONTE: Jamsa (2013, p. 4)

10
TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO

A Figura 2 apresenta algumas das ferramentas que permitem usuários


publicarem diretamente os conteúdos em nuvem, as quais estão descritas a
seguir, conforme Jamsa (2013):

• Blog: permite usuário publicar conteúdo na web.


• Wiki: aplicação web que permite usuários colaborarem com o compartilhamento
de documentos e assuntos.
• Twitter: um mini blog que permite usuários enviarem mensagens para os seus
seguidores.
• Facebook: rede social que permite usuários postarem textos, fotos, vídeos.
• Youtube: site que permite usuários realizarem upload de vídeos, sendo
compartilhados com outros usuários da rede.

As aplicações baseadas em nuvem disponibilizam aos usuários uma


variedade de soluções, sendo que para análise e descrição destas aplicações,
normalmente são utilizadas referências pelo seu modelo de implantação e
modelos de serviço, conforme Figura 3 (JAMSA, 2013).

FIGURA 3 – MODELOS DE IMPLANTAÇÃO E SERVIÇOS DA NUVEM

FONTE: Buyya, Broberg e Goscinski (2011, p. 14)

Um modelo de implementação define como serviços são compartilhados


em nuvem, e a interação de clientes (usuários e sistemas) pode ocorrer por
diversas formas diferentes, como pelas chamadas de serviços, por exemplo
(JAMSA, 2013). Conforme Jamsa (2013), os serviços da web podem ser divididos
em até três grandes modelos ou tipos, sendo:

• Software as a Service (SaaS): plataforma de aplicação com interface para o


usuário, como redes sociais, por exemplo.

11
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

• Platform as a Service (PaaS): plataforma com a qual desenvolvedores podem


implementar suas aplicações, como linguagens de programação, hardware
(servidores, discos), sistema operacional, ferramentas de desenvolvimento etc.
• Infraesrtucture as a Service (IaaS): fornecimento de computadores servidores,
armazenamento de dados, Firewall, recursos de internet, entre outros.

Os modelos SaaS e PaaS são brevemente introduzidos nos dois subtópicos


a seguir, cujo estudo é mais aprofundado nos tópicos seguintes deste livro. O
modelo IaaS está descrito na seção 5 deste tópico.

3.2.1 Software como um serviço (SaaS)


Normalmente, o SaaS (Software as a Service) é baseado em uma aplicação
para a qual o usuário terá acesso, e é necessária a utilização de um navegador
de internet, sendo que a aplicação é hospedada em nuvem (JAMSA, 2013).
Neste modelo, a vantagem é o usuário necessitar apenas de um dispositivo com
acesso à internet e um navegador de internet (browser), porém, a desvantagem
é a percepção do usuário quanto a segurança, pois os dados da empresa são
armazenados em nuvem (JAMSA, 2013).

FIGURA 4 – EXEMPLO DO MODELO SAAS

FONTE: Jamsa (2013, p. 7)

3.2.2 Plataforma como um serviço (PaaS)


O modelo de plataforma como serviço, ou PaaS (Platform as a Service),
fornece recursos de hardware, podendo ser servidor físico ou virtual (VMs),
sistemas operacionais, ferramentas para bancos de dados, assim como
ferramentas de desenvolvimento e recursos de internet, tudo para permitir que
desenvolvedores implantem suas soluções (JAMSA, 2013). Ainda segundo Jamsa
(2013), estes recursos do PaaS, são gerenciados pelo provedor da plataforma,
e desenvolvedores não precisam se preocupar com estes recursos, como

12
TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO

atualizações do sistema operacional, por exemplo, mas sim, focar no seu trabalho
de desenvolvimento. A Figura 5 apresenta um exemplo do PaaS, na qual é possível
analisar dois computadores usuários acessando serviços em nuvem.

FIGURA 5 – EXEMPLO DO MODELO PAAS

FONTE: Jamsa (2013, p. 7)

3.3 SERVIÇOS DE TRANSMISSÃO AO VIVO


Streaming pode ser compreendido por ser um modo de transmissão de
vídeo contínuo, enviando dados do provedor (fonte) diretamente para o receptor,
assistindo o vídeo em tempo de execução, porém, a ação de um cliente baixar
(download) um arquivo de vídeo para depois assistir, não é streaming, sendo
conhecida por mídia não streaming (KANNAN et al., 2016). Neste sentido, televisão
ou rádio pertencem a categoria streaming e Compact Discs (CDs) pertencem à
categoria mídia não streaming ou non-streaming (KANNAN et al., 2016). No início
dos anos 1990, o streaming existia, porém, era muito lento devido ao buffer, isto
é, o vídeo iniciava e então logo parava para carregar mais uma parte do vídeo
(buffering), tornando monótono para o cliente (KANNAN et al., 2016). Todavia,
com o passar dos anos, e principalmente nos dias atuais, com a evolução dos
equipamentos de hardware, com recursos cada vez melhores, além da banda
de internet e com o aumento da capacidade de armazenamento, inclusive em
nuvem, o streaming se tornou muito utilizado (KANNAN et al., 2016).

O conceito de streaming é velho e pode ser exemplificado quando uma


pessoa fala algo e o som é transportado até o ouvido de outra pessoa, e a partir
daqui o cérebro decodifica a mensagem para ser compreendida (KANNAN et al.,
2016). Este exemplo é parecido com o que ocorre com televisão ou rádio, situação
em que o sinal é enviado por cabo, antena ou satélite para o receptor, o qual
decodifica os sinais elétricos em pixels de imagens ou ondas sonoras, conforme
ilustrado na Figura 6 (KANNAN et al., 2016).

13
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

FIGURA 6 – ARQUITETURA DE STREAMING DO SERVIDOR PARA O CLIENTE

FONTE: Kannan et al. (2016, p. 75)

Vídeo pode ser compreendido por uma fita de imagens fixas que são
apresentadas uma após a outra e FPS (Frame Per Second), sendo a quantidade de
frames que um reprodutor de vídeo possui de capacidade para apresentar um após
o outro (KANNAN et al., 2016). Neste sentido, com FPS mais baixo, a quantidade
de dados necessária para rodar um vídeo é menor, mas o vídeo terá uma qualidade
menor, sendo que um projeto utiliza entre 24 até 48 FPS para exibição de filmes
em cinemas (KANNAN et al., 2016). Existe o software conhecido por codec,
utilizado para comprimir o tamanho de vídeos, isto é, diminui a resolução de um
vídeo, evitando dados desnecessários reduzindo consequentemente o tráfego de
vídeos pela rede (KANNAN et al., 2016). A transferência de dados por streaming
necessita que dados sejam rapidamente enviados e na ordem correta, sendo que
protocolos especiais como o RTSP (Real-Time Streaming Protocol), RTP (Real-Time
Transfer Protocol) e o RTCP (Real-Time Transport Control Protocol) (KANNAN et
al., 2016). Ainda segundo Kannan et al. (2016), estes três protocolos trabalham em
conjunto com TCP/IP, o qual converte os grandes arquivos de dados em pacotes
enviando-os para rotas da rede (KANNAN et al., 2016).

A arquitetura Peer-to-Peer (P2P) streaming tem sido muito utilizada para


distribuir conteúdo multimídia ao vivo para inúmeros usuários da internet,
permitindo a visualização a qualquer momento (KANNAN et al., 2016). Alguns
serviços de streaming de vídeo integram os benefícios da tecnologia P2P e
de computação em nuvem (PATHAN; MONOWAR; FADLULLAH, 2013). A
arquitetura cloud-P2P pode ser analisada na Figura 6, pela qual pode ser notada
uma nuvem que possui servidores que disponibilizam streaming de vídeo como
multimídia, em que os clientes são identificados por C1, C2, C3 e C4, sendo o
primeiro nível (PATHAN; MONOWAR; FADLULLAH, 2013). O alto nível de
clientes é composto pelos identificadores HP11, HP12, HP21, HP31, HP32 e HP41,
os quais podem ter contato com o primeiro ou com o alto nível de clientes, mas
não conseguem contato diretamente com o provedor de streaming (PATHAN;
MONOWAR; FADLULLAH, 2013). Os primeiros níveis de clientes escolhem
um dos três serviços de pacotes disponibilizados, sendo que cada um possui um
preço, atribuído dependendo da banda de velocidade por exemplo (PATHAN;
MONOWAR; FADLULLAH, 2013). Os clientes de alto nível que quiserem oferecer
seus serviços grátis, podem se conectar através dos pontos (P111, P112, P121,

14
TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO

P122, P212 etc.). Resumindo, a rede de streaming em nuvem é organizada em


uma estrutura de camadas, em que o provedor de serviço possui o gerenciamento
centralizado do contrato de políticas de uso dos serviços (PATHAN; MONOWAR;
FADLULLAH, 2013).

FIGURA 6 – ARQUITETURA CLOUD-P2P

FONTE: Pathan, Monowar e Fadlullah (2013, p. 83)

Existe também o serviço chamado de OTT (Over-The-Top), outro tipo


de transmissão ao vivo, no qual emissoras de televisão utilizam o serviço de
transmissão de seus programas ao vivo pela internet, (FONSECA; BOUTABA,
2015). Este serviço de compartilhamento de dados de imagens de televisão
possibilita atingir uma grande parcela da população que utiliza mais a internet
para uma infinidade de atividades, incluindo assistir jornais, filmes, séries, entre
outros (FONSECA; BOUTABA, 2015). Uma consequência do serviço de OTT TV
é qualquer pessoa pode se tornar um provedor de televisão pela internet, isto é,
usuários de internet podem se tornar grandes fontes de informação, e uma das
ferramentas que possibilitam isso é o Youtube (FONSECA; BOUTABA, 2015).

3.4 DEMAIS EXEMPLOS NO COTIDIANO


Máquina virtual pode ser compreendida por ser um programa que
permite rodar outro sistema operacional dentro dele e, este programa roda dentro
do sistema operacional principal do computador, isto é, dentro de um software
específico de virtualização é possível instalar um outro sistema operacional
(KANNAN et al., 2016). Isso pode ser útil na situação em que se necessite instalar
um software incompatível com o sistema operacional instalado no computador.
Por exemplo, o sistema operacional principal do computador ser Linux e houver
a necessidade de utilizar o Microsoft Office, situação na qual pode ser instalado o
sistema operacional Windows na máquina virtual para então instalar o Microsoft
15
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

Office (KANNAN et al., 2016). Ainda segundo Kannan et al. (2016), com máquina
virtual, os recursos de hardware são compartilhados entre o sistema operacional
do computador e com o sistema operacional da máquina virtual.

Na computação em nuvem, uma das principais tecnologias emergindo


é a virtualização, a qual auxilia na criação de um ambiente em nuvem, onde os
recursos são otimizados através do compartilhamento (CHANDRASEKARAN,
2015). Neste sentido, a virtualização permite que a infraestrutura física de um
servidor (provedor de serviços) seja compartilhada entre diferentes clientes,
evitando ociosidade e ampliando o uso de recursos, o que retorna com mais
eficiência os investimentos realizados (ROI) (CHANDRASEKARAN, 2015).
No entanto, como nem todo sistema seja infalível, a virtualização possui a
desvantagem de ter um ponto de falha do software, o que pode atingir toda
a virtualização e, consequentemente, afetando aos clientes, isto é, se uma
virtualização disponibiliza algum serviço para vários clientes, e nesta máquina
ocorrer falha, afetará a todos (CHANDRASEKARAN, 2015).

Um exemplo para a nuvem é o Microsoft Azure, mais detalhado ainda


neste tópico, o qual pode ser descrito como um ambiente de desenvolvimento e
também servidor de hospedagem para soluções SaaS, sendo confiável e flexível,
sendo que este ambiente possui três níveis: IaaS, PaaS e o SaaS (BAI, 2015).

Outro exemplo é o Google Cloud Platform, o qual permite que


desenvolvedores implementem aplicativos em sua infraestrutura escalável e
confiável, sendo suas infraestruturas de software o MapReduce, BigTable e
Dremel, inovações para desenvolvimento industrial (CHANDRASEKARAN,
2015). Uma das características do Google Cloud Platform são suas máquinas
virtuais, seu armazenamento em bloco, armazenamento de dados NoSQL além de
análise de Big Data, fornecendo uma variedade de serviços de armazenamento e
permitindo fácil manutenção e rápido acesso aos dados (CHANDRASEKARAN,
2015).

4 A NUVEM E BIG DATA


O armazenamento de dados em nuvem permite realizar a análise de
dados, processo de análise de dados brutos ou não processados que permite obter
conclusões, o qual pode realizado em nuvem pública ou privada, cujo resultado
pode ser um ou vários valores ou ainda um gráfico (CHANDRASEKARAN, 2015).
Esta técnica de obtenção de resultados está sendo utilizada por pesquisadores de
todo o mundo, que com base em seus resultados, são tomadas decisões importantes
para os negócios de organizações (CHANDRASEKARAN, 2015). Neste sentido,
se uma análise destas é realizada com grande quantidade de dados, terabytes ou
petabytes por exemplo, chamada de análise de Big Data, termo recente utilizado
na computação, sendo que um exemplo de onde pode ser gerada essa enorme
quantidade de dados é a internet (CHANDRASEKARAN, 2015).

16
TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO

Para exemplificar o uso de Big Data na internet, pode ser tomado como
exemplo uma rede social, em que o administrador deste site deseja saber algo
de um usuário, como o tipo de postagem que ele mais possui interesse, e para
chegar a essa informação, pode ser realizada análise de todos os dados deste
usuário. Outro exemplo é uma companhia de seguros, a qual deseja fazer um
ranking dos melhores clientes no sentido de bons pagadores, se baseando em seus
pagamentos mensais, podendo chegar a esse resultado fazendo uso de análise de
dados (CHANDRASEKARAN, 2015).

As vantagens da computação em nuvem, como popularidade,


disponibilidade e escalabilidade sem limites, com uma estrutura robusta com
várias camadas, têm levado a utilização do serviço de armazenamento na nuvem
para o Big Data (MISTRIK et al., 2017).

Armazenar Big Data em nuvem pública é mais econômico, existindo uma


enorme redução de recursos financeiros tanto através da infraestrutura física
quanto na questão do gerenciamento de sistemas (KAVIS, 2014). Neste sentido,
o armazenamento tradicional (físico) envolve vários recursos de infraestrutura e
de software, como dispositivos em fita ou disco para realizar backups, podendo
haver vários tipos de mídia para armazenamento, assim como outros serviços que
complementam o uso em data center físico (KAVIS, 2014). Com o armazenamento
em nuvem, as empresas podem eliminar o data center físico e partir para o
armazenamento em nuvem, os quais podem ser automatizados através da
utilização de scripts, cujo custo é muito mais barato que o armazenamento físico,
além dos processos de recuperação de dados serem mais fáceis (KAVIS, 2014).

Para a análise de terabytes ou petabytes de dados, isto é, Big Data, é necessário


alto poder de processamento e memória, com recursos pesados ​​em back-end, sendo
que isso custa muito caro para as empresas ou organizações, podendo ser um
grande problema para organizações que não possuem recursos financeiros para
isso (KAVIS, 2014). Nesse caso, a solução é o aluguel dos recursos necessários, o
que pode ser exemplificado pelo Large Hadron Collider (LHC), o qual registrava
petabytes de dados semanalmente e havia a necessidade de processa-los, sendo que
os cientistas não possuíam seus próprios recursos (CHANDRASEKARAN, 2015).
Foi utilizado o modelo de computação em grade, a qual pode ser entendida por
ser uma das tecnologias que permite o usuário utilizar recursos de computação
pagando por eles, tecnologia direcionada principalmente para aplicações
científicas com Big Data, usando em áreas de astronomia, física, bioinformática,
entre outros (CHANDRASEKARAN, 2015).

A diferença entre computação em grade e em nuvem é os serviços em


nuvem serem divididos em vários tipos, sendo os dois principais os privados e
os públicos, conforme já mencionado (CHANDRASEKARAN, 2015). A nuvem
pública possui a característica de oferecer serviços para usuários em todo o
mundo, enquanto que a nuvem privada é considerada restrita e pode apenas
ser utilizada por uma organização ou indivíduo (CHANDRASEKARAN, 2015).
Neste sentido, análise em nuvem é o termo utilizado para definir a nuvem

17
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

pública ou privada, sendo utilizada para análise de dados e possui a vantagem


em relação à plataforma de grade, de qualquer pessoa no mundo poder utilizar
essa plataforma para realizar análises de dados (CHANDRASEKARAN, 2015).

Com estes serviços de análise de Big Data em nuvem pública ou privada,


não é necessário comprar nenhum recurso de computação, permitindo que apenas
se aloque quando e o quanto for necessário de recursos (KAVIS, 2014). Segundo
Chandrasekaran (2015), a análise em nuvem permite que ao invés de utilizar
recursos de processamento diretamente, seja possível utilizar os aplicativos
em nuvem projetados especificamente para análise de Big Data, criados pelo
provedor, sendo este modelo chamado SaaS. A Figura 8 apresenta a classificação
da análise em nuvem.

FIGURA 8 – ANÁLISE EM NUVEM

FONTE: Chandrasekaran (2015, p. 366)

5 INFRAESTRUTURA COMO UM SERVIÇO (IAAS)


A infraestrutura como serviço (IaaS) fornece data center em nuvem, como
servidores físicos e virtualizados, armazenamento de dados em nuvem, os quais
podem ser acessados de qualquer local (JAMSA, 2013). Neste modelo de serviço,
desenvolvedores precisam instalar sistema operacional, sistema gerenciador
de banco de dados e os softwares necessários, e então, os desenvolvedores, ou
administradores, precisam gerenciar o hardware e o software (JAMSA, 2013).

A Figura 9 apresenta um exemplo do modelo IaaS, o que também pode


ser exemplificado pelo Amazon Elastic Compute Cloud (Amazon EC2).

18
TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO

FIGURA 9 – EXEMPLO DO MODELO IAAS

FONTE: Jamsa (2013, p. 8)

O Instituto Nacional de Padrões e Tecnologia (NIST - National Institute of


Standards and Technology) define IaaS como sendo o fornecimento de processamento,
armazenamento, redes e outros recursos de computação para o consumidor poder
implantar e executar operações de sistemas ou executar aplicações (VACCA,
2017). Neste caso, o consumidor não controla a infraestrutura da nuvem, mas
possui controle de sistemas operacionais, do armazenamento e de aplicativos
implantados e, em alguns casos, possui certos controles de componentes de rede,
como firewall, por exemplo (VACCA, 2017).

A CSA (Cloud Security Alliance) ou Aliança de Segurança em Nuvem


pode ser compreendida por ser uma organização que se remete a padrões
de segurança na nuvem e define que o IaaS disponibilize infraestrutura de
computador como um serviço, como ambiente de virtualização, por exemplo,
assim como armazenamento e rede (VACCA, 2017). Neste sentido, ao invés de
comprar servidores, software, espaço para armazenamento em data center ou
equipamentos de rede, é mais vantajoso para o cliente adquirir estes recursos
como um serviço terceirizado (VACCA, 2017).

Através do IaaS, muitos dos recursos que são necessários em um data


center físico para tarefas de gerenciamento e manutenção, assim como para
infraestrutura física de servidores, como discos de armazenamento, manutenção
de rede, entre outros, não são necessários na nuvem (VACCA, 2017). Todos os
recursos disponibilizados na nuvem são disponibilizados como uma coleção
de serviços, os quais podem ser acessados inclusive através de automatização,
com scripts ou ainda a partir de aplicações de web services (VACCA, 2017). Neste
sentido, os desenvolvedores possuem a tarefa de implementar os aplicativos
necessários, assim como os administradores precisam realizar a instalação
e gerenciamento de aplicações utilizadas de terceiros, e com isso não existe
mais o ciclo de compra de hardware, em que teria que realizar a solicitação de
compra, aguardar a chegada dos equipamentos, e então o trabalho de instalação
e configuração (VACCA, 2017).

19
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

Utilizando o modelo IaaS, toda a infraestrutura virtual necessária sob


demanda pode ser disponibilizada em minutos, através da chamada de uma
API (Application Programming Interface) ou ainda acessando um console de
gerenciamento, cujo custo pode ser medido e é apenas aplicado se recursos
estiverem sendo utilizados (VACCA, 2017). Com estas explicações, se pode dizer
que o IaaS oferece recursos de data center virtual para atender a necessidades
de consumidores, os quais podem se concentrar mais no desenvolvimento
e gerenciamento de aplicativos e menos no gerenciamento de recursos de
infraestrutura (JAMSA, 2013).

Agora que você compreendeu o que é o IaaS, você pode avançar o estudo
conhecendo alguns dos vários fornecedores de IaaS existentes no mercado. Um
deles é o provedor de serviços em nuvem Amazon Web Services (AWS), assim
como o Rackspace e GoGrid que também são pioneiros neste segmento. Outro
fornecedor é o OpenStack, o qual é um projeto de código aberto que fornece
recursos de IaaS para consumidores que desejam construir seu próprio IaaS com
recursos internos, chamados de nuvem privada (VACCA, 2017).

5.1 PLATAFORMAS DE IAAS


Existem vários e grandes provedores de serviços no mercado de tecnologia,
sendo que muitos deles oferecem serviços de infraestrutura em nuvem. Como
existem vários destes provedores de serviços IaaS, focaremos em alguns dos mais
utilizados, os quais estão descritos a seguir.

5.1.1 DigitalOcean
DigitalOcean é um provedor de serviços de computação em nuvem que
obteve uma reputação positiva de muitas comunidades de desenvolvimento de
software por ser rápido, confiável, além de ter um preço acessível para instâncias
de máquinas virtuais (THOMPSON, 2015).

20
TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO

FIGURA 10 – CONSOLE DO DIGITALOCEAN

FONTE: Thompson (2015, p. 297)

A plataforma DigitalOcean possui uma API eficaz e simples para acesso


às instâncias computacionais, o que torna a integração com o DigitalOcean mais
simplificada, assim como seu console fácil de se utilizar, ilustrado na Figura 10
(THOMPSON, 2015).

É uma plataforma de hospedagem de sites, a qual pode ser acessada pela


URL https://www.digitalocean.com, sendo muito fácil de se utilizar, pois com
a realização do cadastro, automaticamente são disponibilizados os nomes dos
servidores, os quais devem ser configurados no domínio (BROWN, 2020).

Assim como outros provedores de hospedagem, o internauta acessa o


domínio, como www.uniasselvi.com.br por exemplo, e através da resolução do
DNS, é chamado um dos servidores do DiditalOcean, onde está hospedado o site
(BROWN, 2020).

5.1.2 Linode
O Linode é um provedor de serviços IaaS que disponibiliza serviços
parecidos com muitos dos serviços da Amazon, iste é, oferece diferentes níveis
de servidores, sendo eles de 512 MB até 20 GB de RAM (MITCHELL, 2013). A
diferença é que a Amazon cobra os serviços por hora, enquanto que o Linecode
realiza a cobrança mensal de seus serviços, e, além disso, as instâncias dos
computadores possuem recursos específicos para capacidade de armazenamento
e recursos de CPU, possuindo data center nos Estados Unidos, Grã Bretanha e
Japão (MITCHELL, 2013).

21
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

Este provedor utiliza uma personalizada linguagem para implantação


e gerenciamento de servidores, utilizando a plataforma de virtualização Xen
(MITCHELL, 2013). Todos os recursos de serviços de computação disponibilizados
pelo Linode possuem serviço de suporte premium, e oferecem backup automático
e serviços de restauração, diferente de outros provedores, sendo que para estes
serviços de backup e restauração, o Linode disponibiliza um fácil aprendizado
para os usuários usufruírem de forma mais eficiente destes serviços (MITCHELL,
2013). Além de backups, o Linode oferece serviços adicionais com recursos extras,
como RAM, espaço em disco, banda de velocidade da rede ou endereço IP, além
de permitir clonagem de recursos internos dos servidores, como de configurações,
permitindo ajudar no gerenciamento (MITCHELL, 2013).

O Linode permite que vários usuários utilizem a mesma conta, permitindo


que vários usuários utilizem a mesma conta, além de suportar várias versões
de Linux, como Debian, Fedora, Ubuntu e CentOS (MITCHELL, 2013). Além
disso, diferente de outros serviços IaaS, o Linode oferece a vantagem de permitir
inicialização do Sistema Operacional em modo de recuperação, além de outros
métodos, o que facilita o gerenciamento de máquinas (MITCHELL, 2013).

5.1.3 Rackspace
O provedor Rackspace disponibiliza vários serviços de hospedagem dos
modelos PaaS e IaaS, sendo que o Rackspace suporta algumas plataformas de
servidores, como Windows e Linux, assim como a Amazon (MITCHELL, 2013).
No Rackspace, podem ser alocados servidores de 256 MB até 30 GB de RAM,
e espaço em disco de 256 MB até 10GB, os quais são pagos por hora, diferente
do Linode que é mensal (MITCHELL, 2013). Outra característica do Rackspace
é o oferecimento de instâncias de servidores gerenciáveis e não gerenciáveis,
com serviços de suporte de TI premium, incluindo serviços PaaS de e-mail e
hospedagem de sites, além de serviços em nuvem privados (MITCHELL, 2013).

Além destas características, a questão de personalização, assim como no


Linode, o Rackspace também oferece opções parecidas, assim como interface
gráfica para gerenciamento e configuração de backup (MITCHELL, 2013).

5.1.4 Amazon Web Services (AWS)


Amazon Web Services (AWS) é um dos provedores IaaS mais conhecidos,
o qual suporta uma grande variedade de serviços em nuvem, como servidor
de hospedagem (EC2), armazenamento em nuvem (S3, EBS), serviços de
monitoramento, serviços de notificações (SES, SQS), serviços de banco de dados
relacional (RDS), assim como serviço de DNS (Route 53) (MITCHELL, 2013).

22
TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO

O Amazon disponibiliza serviços em ambientes públicos, privados ou em


comunidades através de serviço VPC, serviço GovCloud e instâncias de VPC
dedicados (MITCHELL, 2013).

O serviço EC2 suporta as plataformas Windows e Linux, assim como o


serviço de importação e exportação de imagem do Sistema Operacional, além
disso, os recursos disponibilizados de empresas parceiras, como Microsoft
Windows, RedHat Linux e Oracle, por exemplo, são licenciados e são pagos por
hora de utilização (MITCHELL, 2013). Amazon possui servidores em quase todos
os continentes, como Ásia, Europa e Estados Unidos da América, liderando os
servidores de infraestrutura em nuvem, além de permitir a integração com outras
plataformas, como a Heroku que pode ser integrada a Amazon RDS, por exemplo
(MITCHELL, 2013).

A Amazon oferece várias opções de tamanhos de recursos de máquinas,


várias funções para gerenciamento de servidores, serviços de banco de dados
assim como serviço de armazenamento, oferecendo serviços públicos, privados,
gratuitos e licenciados, incluindo uma comunidade completa para suporte
(MITCHELL, 2013). Oferecendo pequenos servidores de 1.7 GB de RAM e 1
CPU, ou então os maiores servidores que são de 7.4 GB de RAM e até 4 CPUs
(MITCHELL, 2013).

Assim como outros provedores disponibilizam serviços gratuitos para


novos usuários, a Amazon também oferece, sendo um recurso com micro EC2 e
armazenamento para utilizar durante um ano (MITCHELL, 2013). O Amazon Web
Services oferece várias configurações diferentes de configurações de servidores,
isto é, várias capacidades de memória RAM e recursos de CPU para as várias
necessidades dos clientes, mas os pequenos servidores, ou instâncias, servem
para realizar testes na plataforma, e não para colocar aplicações em produção
(MITCHELL, 2013).

5.1.5 Cisco Metapod


De acordo com Santana (2016), devido à necessidade de algumas
organizações, alguns provedores de nuvem disponibilizaram um serviço
conhecido por PCaaS (Private Cloud as a Service), em que neste cenário, o provedor:

• Disponibiliza uma nuvem privada e local em uma organização, utilizando


operações automatizadas pré-testadas;
• Opera, gerencia e disponibiliza suporte para nuvem privada;
• Realiza a cobrança da organização de acordo com sua utilização de recursos.

Neste sentido, a Cisco oferece PCaaS através da plataforma Cisco


Metapod, a qual pode ser entendida por ser uma solução de plataforma aberta
sendo remotamente instalada e opera 24 horas por dia durante o ano inteiro
(SANTANA, 2016). O Cisco Metapod possui fácil e rápida instalação, sendo um

23
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

provedor de nuvem privada que possui alta disponibilidade e um catálogo pré-


construído de servidores virtuais e desktops quase prontos para utilização, além
de permitir integração com outras organizações e suporte para APIs do AWS
(SANTANA, 2016).

5.1.6 Microsoft Azure


Outra plataforma deste modelo é o Microsoft Azure, o qual é desenvolvido
pela Microsoft, e fornece uma variedade de serviços que se pode utilizar sem
pagar, permitindo o desenvolvimento de soluções para realizar tarefas que não
podem ser realizadas em um ambiente local de hardware, isso é, fazendo elas no
servidor e não no computador do desenvolvedor (COPELAND et al., 2015). Neste
sentido, o Microsoft Azure pode ser descrito como um servidor de processamento
e armazenamento em nuvem, possibilitando ao desenvolvedor se preocupar
com sua tarefa principal de implementar as aplicações, não sendo necessário se
preocupar com instalação e configuração de infraestrutura (COPELAND et al.,
2015).

A plataforma Microsoft Azure oferece suporte para nuvem pública,


privada, e híbrida, sendo que o Windows Azure Pack permite adicionar muitos
dos serviços do Azure em data centers, oferecendo a experiência destes serviços
aos usuários do servidor, podendo realizar esta integração através de uma rede
virtual privada (COLLIER; SHAHAN, 2015). O Microsoft Azure possui data
centers em 19 regiões do planeta, e com esta plataforma, podem ser adicionados
novos servidores para satisfazer a necessidade de desempenho de uma
determinada solução, além de facilitar para Startups, permitindo estas iniciarem
com baixo custo (COLLIER; SHAHAN, 2015).

O Microsoft Azure fornece serviços IaaS através de execução e


gerenciamento de servidores com virtualização de software, permitindo criar
VMs (Virtual Machines), ou máquinas virtuais, as quais rodam na infraestrutura
de servidores e, dependendo do servidor, é possível rodar Sistema Operacional
Windows ou Linux (COLLIER; SHAHAN, 2015). Nestas VMs, é possível
configurar redes virtuais, balanceadores de carga de rede, armazenamento, assim
como outros serviços que rodam nesta arquitetura, porém não se possui controle
do hardware e do software de virtualização (COLLIER; SHAHAN, 2015).

A migração de serviços para VMs do Microsoft Azure é facilitada, pois


é possível criar VMs com mesmas configurações da infraestrutura atual dos
serviços que se deseja migrar, podendo serem realizados ajustes quanto a URLs
por exemplo, mas muitas aplicações poderão ser migradas desta forma e sem
maiores problemas (COLLIER; SHAHAN, 2015).

24
TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO

5.1.7 Google Compute Engine (GCE)


A plataforma Google Compute Engine (GCE) disponibiliza serviços
em VMs, as quais rodam nos data centers do Google, podendo serem criadas
VMs com as mais diversas configurações, conforme a necessidade, possuindo
redundância e replicação dos dados armazenados, além de permitir que haja
comunicação entre a rede privada interna com a rede da VM (COHEN; HURLEY;
NEWSON, 2015).

O Google Compute Engine disponibiliza várias ferramentas que facilitam


o gerenciamento e configuração das instâncias das VMs, como por exemplo
atribuir discos de armazenamento, configurar a rede de acesso às VMs, entre
outros (COHEN; HURLEY; NEWSON, 2015). Segundo Cohen, Hurley e Newson
(2015), dentre as ferramentas disponibilizadas, citam-se:

• Google Developers Console: Interface web (UI);


• GCloud Compute: Ferramenta em linha de comando que permite desenvolver
scripts de automação;
• Compute Engine API: API RESTFul que permite a integração e interação em
código fonte para gerenciamento de aplicações.

Para começar a utilizar o Google Compute Engine, é necessário criar um


projeto Engine Compute na ferramenta Developers Console (COHEN; HURLEY;
NEWSON, 2015). Um projeto do Engine Compute é uma coleção de recursos e
configurações do projeto, como um container de recursos, no qual, disco, firewall,
rede e todas as instâncias estão associadas ao projeto (COHEN; HURLEY;
NEWSON, 2015). Uma característica interessante é nessa plataforma ser possível
adicionar membros para a equipe do projeto, especificando determinadas
permissões para acesso a determinados recursos (COHEN; HURLEY; NEWSON,
2015).

25
RESUMO DO TÓPICO 1
Neste tópico, você aprendeu que:

• A computação em nuvem (cloud computing) pode ser entendida pela utilização


de recursos de computação em um provedor na internet, isto é, quando se
precisa de um servidor, por exemplo, é possível utilizar uma máquina virtual
(virtual machine) que é disponibilizada por vários provedores na internet.

• A computação em nuvem pode ser exemplificada também pelo armazenamento


em nuvem, isto é, armazenar dados ou arquivos em um servidor na internet,
permitindo que estes estejam disponíveis de qualquer local.

• Com a utilização da computação em nuvem, recursos são melhores utilizados,


deixando de existir recursos ociosos, como discos com grandes capacidades
não sendo utilizados por exemplo, podendo ser alocado um disco com a
capacidade necessária. O mesmo exemplo serve para processamento.

• Dentre as vantagens da computação em nuvem, a escalabilidade, disponibilidade


e a elasticidade são as principais.

• O termo elasticidade para computação em nuvem indica que o cliente de um


serviço pode aumentar ou diminuir a demanda por um serviço.

• O termo disponibilidade para computação em nuvem indica que um serviço


está disponível a qualquer momento do dia.

• O termo escalabilidade para computação em nuvem significa que um serviço


suporta o aumento da quantidade de usuários, sem perder eficiência.

• No cotidiano, a computação em nuvem é largamente utilizada, atualmente,


como para empresas incubadoras que possuem menos recursos e pagam estes
serviços pelo que que utilizam.

• A virtualização de data centers permite evitar uso ineficiente de recursos,


como por exemplo ter um processador com alto poder de processamento, sem
precisar utilizá-lo sempre.

• A Big Data é muito utilizada na computação em nuvem para armazenamento


desta quantidade enorme de dados, seno terabytes ou petabytes, cujo
processamento é mais rápido na nuvem.

• O modelo IaaS disponibiliza servidores físicos e virtualizados, assim como


armazenamento de dados em nuvem, em que desenvolvedores instalam o
sistema operacional, sistema gerenciador de banco de dados e os softwares
necessários, podendo realizar o acesso de qualquer lugar.
26
AUTOATIVIDADE

1 Algumas empresas possuem um setor de Tecnologia de Informação


internamente, para sanar muitos problemas e apresentar soluções para
o dia a dia dos negócios. Neste sentido, assinale a alternativa CORRETA
referente à computação em nuvem:

a) ( ) Computação em nuvem, ou cloud computing, é uma solução viável


apenas para empresas que precisam hospedar sites e disponibilizar na
internet.
b) ( ) Computação em nuvem, ou cloud computing, é uma solução para uso
de recursos na internet que existe a menos de três anos.
c) ( ) Computação em nuvem, ou cloud computing, facilita o uso de recursos
de computação, através da internet, aumentando a ociosidade dos recursos.
d) ( ) Computação em nuvem, ou cloud computing, permite que recursos
de computação sejam disponibilizados pela internet, e evita ociosidade
destes.

2 Em data centers físicos, muitos recursos podem permanecer ociosos por


horas ou dias, até alguma aplicação utilizá-lo conforme a necessidade.
Neste sentido, assinale a alternativa CORRETA referente à computação em
nuvem.

a) ( ) A computação em nuvem começou a ser utilizada por volta da década


de 1960, logo após ter sido publicado o primeiro artigo a respeito do tema.
b) ( ) A computação em nuvem começou a ser utilizada com a disponibilização
de armazenamento e hospedagem na internet.
c) ( ) A computação em nuvem começou a ser utilizada com o recurso de
armazenamento local de dados e arquivos.
d) ( ) A computação em nuvem, para o NIST, significa o recurso
computacional de processamento, armazenamento e disponibilização de
serviços locais.

3 Com um pequeno esforço de provedores de serviços da internet, muitos


recursos são disponibilizados para seus clientes. Referente à computação
em nuvem, assinale a alternativa CORRETA:

a) ( ) Uma das vantagens da computação em nuvem é a possibilidade de


aumento da capacidade de armazenamento de um disco rapidamente,
porém o custo deste serviço é mais caro que em um data center físico.
b) ( ) Uma das desvantagens da computação em nuvem é a exigência
de pilhas de equipamentos e implementações, como configuração de
hardware, instalação de software e outras tarefas demoradas, as quais são
de responsabilidade do cliente.

27
c) ( ) Uma das desvantagens da computação em nuvem é a demora em
solicitar um recurso novo, como aumento da capacidade de armazenamento,
por exemplo.
d) ( ) A computação em nuvem auxilia na economia financeira evitando
compra de hardware e software, além de recursos para configuração e de
data centers locais.

4 A virtualização de data center pode ser compreendida pela computação em


nuvem, a qual disponibiliza qualquer recurso computacional pela internet.
Referente à computação em nuvem, assinale a alternativa CORRETA que
cita todas as vantagens deste tipo de computação:

a) ( ) Aumento da ociosidade dos recursos, redução de custos para


armazenamento e disponibilização dos recursos computacionais em
qualquer local do planeta.
b) ( ) Aumento da ociosidade dos recursos e redução de custos destes para
o cliente.
c) ( ) Armazenamento de Big Data, assim como o processamento destes
dados de forma ociosa.
d) ( ) São a elasticidade, disponibilidade e a escalabilidade.

5 O modelo IaaS (Infraesrtucture as a Service) pode ser compreendido pelo


fornecimento de um data center em nuvem, como servidores físicos e
virtualizados, por exemplo, os quais podem ser acessados de qualquer local
do planeta. Referente ao modelo IaaS, assinale a alternativa CORRETA:

a) ( ) Os desenvolvedores ou administradores precisam gerenciar o


hardware e o software.
b) ( ) O gerenciamento de recursos como hardware e software, assim como
a instalação de software, não é necessário neste modelo.
c) ( ) No modelo IaaS, não é possível realizar automatização para
disponibilização de recursos.
d) ( ) Dentre as plataformas que disponibilizam computação em nuvem, o
Linode é um exemplo para o IaaS, diferente do Amazon Web Services e
Rackspace que disponibilizam apenas serviços no modelo PaaS.

28
TÓPICO 2 —
UNIDADE 1

SOFTWARE COMO SERVIÇO - SAAS

1 INTRODUÇÃO
Entre os três modelos de Serviços, Software como um Serviço (SaaS),
Plataforma como um Serviço (PaaS) e Infraestrutura como um Serviço (IaaS)
apresentado no Tópico 1 desta unidade, o SaaS está no topo da pilha dos serviços,
é um aplicativo completo entregue como um serviço aos consumidores. De acordo
com Kavis (2014), no SaaS o consumidor do serviço precisa apenas configurar
alguns parâmetros específicos do aplicativo e gerenciar os usuários, e por outro
lado o provedor de serviços lida com toda a infraestrutura, toda a lógica do
aplicativo, todas as implantações e tudo relacionado à entrega do produto ou
serviço.

Segundo Chandrasekaran (2015), o provedor SaaS oferece diferentes


serviços como os serviços comerciais incluindo ERP (Enterprise Resource Planning),
CRM (Customer Relationship Management), cobrança, vendas, recursos humanos,
as redes sociais, para o gerenciamento de documentos eletrônicos, nos quais os
provedores SaaS começaram a oferecer serviços para criar, gerenciar e rastrear
esse tipo de documento e serviços eletrônicos como e-mail. Enfim, existem várias
soluções SaaS que lidam com segurança, monitoramento, registro em log, testes e
assim por diante como também na categoria de dados inclui business intelligence,
banco de dados como serviço, visualização de dados, dashboards, data mining e
muito mais (KAVIS, 2014).

Segundo Chandrasekaran (2015), o SaaS muda a maneira como o software


é entregue aos clientes. No modelo de software tradicional, o software é entregue
como um produto baseado em licença que precisa ser instalado no dispositivo
do usuário final. Como o SaaS é entregue como um serviço sob demanda pela
nuvem, não há necessidade de instalar o software nos dispositivos do usuário
final. Seus serviços podem ser acessados ou desconectados a qualquer momento,
com base nas necessidades do usuário final a partir de qualquer navegador leve
em qualquer dispositivo, como laptops, tablets e smartphones.

Uma empresa deve usar o SaaS para terceirizar todos os aplicativos,


recursos e serviços que não são sua competência essencial, assumindo que atenda
às suas necessidades e seja acessível. Por exemplo, se uma empresa não está
envolvida na elaboração de software de RH, folha de pagamento, gerenciamento
de relacionamento com cliente (CRM) e contabilidade, não deve criar esses
aplicativos. Comprar esses aplicativos e executá-los no local não é rentável com o

29
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

surgimento de alternativas SaaS. Enfim, no SaaS a parte da categoria produtividade


inclui ferramentas de colaboração, ferramentas de desenvolvimento, pesquisas,
ferramentas de campanha por e-mail e muito mais.

Um dos exemplos mais comuns e utilizados de uma aplicação SaaS é o


e-mail, ou seja, a maioria das pessoas utiliza aplicações nesse modelo sem ter
conhecimento disso. Um exemplo bem simples desse tipo de aplicação é o Gmail,
o gerenciamento de e-mail do Google, em que basta o usuário acessar o site, inserir
seu login e senha para se conectar com todas as suas informações ali guardadas
(SOARES, 2020).

Outro exemplo clássico de SaaS é a Netflix, que oferece diversas séries e


filmes. O usuário paga um plano para assistir e, conforme for seu plano, um ou
mais equipamentos podem ser acessados simultaneamente na casa do usuário,
podendo o usuário alterar a qualquer momento, de maneira simples e rápida
configurando sua conta. Como o Netflix é um aplicativo SaaS, o usuário final não
é responsável por sua manutenção, e qualquer problema relacionado à aplicação
é de responsabilidade exclusiva do provedor do serviço a solução ao problema.

O SaaS vem em um crescimento no Brasil e no mundo, por ser adaptável


às necessidades da empresa e/ou usuário final. Nos dias atuais as empresas e
usuários tem uma necessidade cada vez maior de agilidade nos processos,
exigindo que o usuário esteja conectado praticamente em tempo integral, desta
forma, o modelo SaaS vem para facilitar esse processo (SOARES, 2020).

Este mesmo autor nos traz que informações levantadas pela consultoria
Gartner mostram que, nos últimos anos, cerca de 71% das empresas no mundo
começaram a utilizar o SaaS. Enfim, o modelo SaaS é o modelo mais utilizado
para entregar serviços para nuvem no Brasil, com 92% das empresas adotando
pelo menos uma solução SaaS. A previsão de 2019 foi atingir US$ 113,1 bilhões
em 2021 com crescimento de 32,9% em apenas dois anos.

2 CONCEITO DE SAAS
Segundo Silva (2017), o modelo de entrega de serviço SaaS tem potencial
para revolucionar a forma de como as empresas vão investir em sistemas
de informação. Na perspectiva de adoção, esse modelo é ideal para empresas
iniciantes, que não têm capital para entregar sistemas de grande porte, caso em
que é necessário investir altas taxas em implantação e manutenção dos sistemas.  

Enfatiza o autor que com o SaaS, a pequena empresa poderá contratar


sistemas de informação robustos e consagrados no mercado pagando apenas
uma fatura mensal referente ao uso. Muitas vezes, será possível a utilização de
software de diversos dispositivos ou locais pagando-se apenas um único contrato.
Na perspectiva de venda de serviços computacionais e software, empresas que
possuem sistemas de alto custo poderão se inserir em um novo segmento de

30
TÓPICO 2 — SOFTWARE COMO SERVIÇO - SAAS

mercado, na medida em que poderão vender seus serviços de acordo com o volume
de utilização. Os aplicativos SaaS também são chamados de softwares baseados
na web, softwares sob demanda ou softwares hospedados (SALESFORCE, 2020).

Para Furht e Escalante (2010), o SaaS é baseado no uso de software de


licenciamento sob demanda que pode ter sido desenvolvido e implantado na
camada PaaS ou IaaS de uma plataforma em nuvem. O SaaS substitui o uso
tradicional de software por um modelo de aluguel, reduzindo os custos de
implantação e gerenciamento de equipamentos físicos do usuário. As nuvens
SaaS também podem permitir aos usuários compor serviços existentes para
atender aos seus requisitos.

As organizações optam por utilizar soluções SaaS para funções não


essenciais, ou seja, tarefas que não fazem parte de seu escopo ou produto de
desenvolvimento para que não precisem oferecer suporte à infraestrutura de
aplicativos, fornecer manutenção e contratar pessoal para gerenciar tudo. Em vez
disso, eles pagam uma taxa de assinatura e simplesmente usam o serviço pela
rede da Internet como um serviço baseado em nuvem (KAVIS, 2014).

O provedor SaaS pode fornecer serviços de negócios, redes sociais,


gerenciamento de documentos e serviços de correio, como mostra a Figura 11.
Segundo Chandrasekaran (2015), os Serviços Comerciais que incluem ERP,
CRM, cobrança, vendas e recursos humanos, as Redes sociais que adotaram o
SaaS por sua sustentabilidade, os gerenciamentos de documentos usados ​​para
criar, gerenciar e rastrear documentos eletrônicos e por fim os serviços de e-mail
pessoais e organizacionais.

FIGURA 11 – SERVIÇOS FORNECIDOS PELOS PROVEDORES SAAS

FONTE: Chandrasekaran (2015, p. 86)

31
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

Para Kavis (2014), os provedores de SaaS controlam totalmente a


infraestrutura, o desempenho, a segurança, a escalabilidade, a privacidade e
muito mais, e os fornecedores de SaaS geralmente oferecem duas maneiras para
seus clientes usarem seus aplicativos. A primeira maneira é provê acesso em
qualquer dispositivo que possa se conectar à Internet através uma interface de
usuário baseada na Web amigável e a outra maneira é fornecer APIs para seus
clientes, para que os consumidores de serviços possam integrar recursos aos
aplicativos existentes ou com outras soluções SaaS.

Do ponto de vista do desenvolvimento de sistemas, para Silva (2017), para


adotar SaaS a equipe de desenvolvimento deve criar aplicações fazendo uso de
PaaS e as implantam na IaaS da nuvem, ou seja, pensar em que tipo de modelo
de serviço (IaaS, PaaS, SaaS) o arquiteto deve usar a solução e também detalhar
conforme os requisitos de negócios qual tipo de modelo de implantação em
nuvem (público, privado, híbrido) deve ser utilizado.

Segundo Kavin (2014), se uma empresa estiver criando sites voltados


para o consumidor, nos quais os usuários trocam voluntariamente seus dados
pessoais por um serviço gratuito (Facebook, Twitter, Instagram etc.), a empresa
pode facilmente justificar colocar tudo em uma nuvem pública. Se uma empresa
está vendendo para outras empresas como estabelecimentos de varejo, hospitais
e agências governamentais, há uma chance muito boa de alguns clientes exigirem
que pelo menos alguns dos dados estejam em uma nuvem privada ou não saiam
de suas instalações. Portanto para desenvolver um SaaS levando em consideração
os requisitos de negócios e requisitos de sistemas, Kavin (2014) nos apresenta as
seguintes recomendações:

• Compreenda os requisitos de negócios e as expectativas dos clientes da


computação em nuvem antes de selecionar modelos de serviço e tipos de
nuvem.
• Obter clareza da definição e os requisitos do produto, fazendo uma avaliação
regulatória e de segurança dos requisitos e adicione o código mais importante
em todo o log de produto.
• Tenha à mão uma lista de perguntas frequentes que responde a todas as
perguntas e preocupações que o cliente típico terá para a solução baseada em
nuvem.

Bhowmik (2017) define serviço como a abstração de muitas funcionalidades


complexas, quanto mais acima a camada, maior o nível de abstração. O SaaS fica
na primeira camada onde seu grau de abstração ainda é mais elevado, ou seja, os
consumidores podem usar aplicativos sem se preocupar com nada subjacente,
tendo sua responsabilidade limitada à utilização do aplicativo, visto que a
infraestrutura, a plataforma, o desenvolvimento e o gerenciamento do aplicativo
cabem aos fornecedores.

32
TÓPICO 2 — SOFTWARE COMO SERVIÇO - SAAS

3 CARACTERÍSTICAS DO SAAS
Os serviços SaaS são diferentes e oferecem mais benefícios aos
usuários finais do que o software tradicional. A seguir, são apresentadas por
Chandrasekaran (2015) às características essenciais dos serviços SaaS que o
tornam único em relação ao software tradicional:

• Um para muitos: os serviços SaaS são entregues como um modelo para muitos,
no qual uma única instância do aplicativo pode ser compartilhada por vários
ou múltiplos locatários ou clientes.
• Acesso à Web: os serviços SaaS fornecem acesso à Web ao software, no qual
o usuário final acessa o aplicativo a partir de qualquer local, se o dispositivo
estiver conectado à Internet.
• Gerenciamento centralizado: como os serviços SaaS são hospedados e
gerenciados a partir do local central, o gerenciamento do aplicativo SaaS se
torna mais fácil. Normalmente, os provedores de SaaS executam as atualizações
automáticas que garantem que cada locatário esteja acessando a versão mais
recente do aplicativo sem nenhuma atualização do lado do usuário.
• Suporte a vários dispositivos: os serviços SaaS podem ser acessados ​​a partir
de qualquer dispositivo do usuário final, como desktops, laptops, tablets,
smartphones e fino cliente (thin client).
• Melhor escalabilidade: como a maioria dos serviços SaaS utiliza PaaS e
IaaS para seu desenvolvimento e implantação, ela garante uma melhor
escalabilidade do que o software tradicional. O dimensionamento dinâmico
dos recursos subjacentes da nuvem faz com que os aplicativos SaaS funcionem
com eficiência, mesmo com cargas variadas.
• Alta disponibilidade: os serviços SaaS garantem a disponibilidade de 99,99%
dos dados do usuário, à medida que os mecanismos adequados de backup e
recuperação são implementados no back-end.
• Integração de API: os serviços SaaS têm a capacidade de integração com outro
software ou serviço por meio de APIs padrão.

Destaca o portal SoftLine (2017) que qualquer um conhece o SaaS porque


sites como o Facebook e o Twitter ou aplicativos como o Skype, OneDrive, Google
Docs e o Office 365 funcionam dessa maneira. Então, o SoftLine enfatiza que o
SaaS é bastante recomendado para pequenas empresas, que não podem gastar
com a compra de licenças, trabalhos que durem apenas um curto período de
tempo, quando tem a necessidade de acesso remoto aos aplicativos, como no caso
de softwares de CRM ou de gestão de redes sociais.

Vale destacar que só paga pelo que sua dos aplicativos SaaS, ou seja,
consumido sob demanda e necessidade de cada empresa ou usuário. Para
Chandrasekaran (2015), além dos benefícios relacionados aos custos, os serviços
SaaS oferecem os seguintes benefícios:

33
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

• Nenhuma instalação no lado do cliente: os serviços SaaS não exigem a


instalação do software no lado do cliente. Os usuários finais podem acessar os
serviços diretamente do centro de dados do provedor de serviços sem nenhuma
instalação. Não há necessidade de hardware de ponta para consumir SaaS.
• Serviços: Ele pode ser acessado a partir de qualquer dispositivo portátil,
reduzindo assim o gasto inicial na compra de hardware de última geração.
• Economia de custos: como os serviços SaaS seguem o faturamento com base
em serviços públicos ou com o pagamento conforme o uso, é necessário que os
usuários finais paguem pelo que usaram. A maioria dos provedores de SaaS
oferece planos de assinatura diferentes para beneficiar clientes diferentes. Às
vezes, os serviços SaaS genéricos, como processadores de texto, são oferecidos
gratuitamente aos usuários finais.
• Menos manutenção: os serviços SaaS eliminam a sobrecarga adicional de
manter o software do lado do cliente. Por exemplo, no software tradicional, o
usuário final é responsável por executar atualizações em massa. No entanto,
no SaaS, o próprio provedor de serviços mantém as atualizações automáticas,
o monitoramento e outras atividades de manutenção dos aplicativos.
• Facilidade de acesso: os serviços SaaS podem ser acessados ​​a partir de qualquer
dispositivo, se estiver conectado à Internet. A acessibilidade dos serviços SaaS
não se restringe a dispositivos específicos. É adaptável a todos os dispositivos,
pois usa a interface de usuário da web responsiva.
• Escala dinâmica: os serviços SaaS são conhecidos popularmente pela escala
dinâmica elástica. É muito difícil para o software local fornecer capacidade
de dimensionamento dinâmico, pois requer hardware adicional. Como os
serviços SaaS aproveitam os recursos elásticos fornecidos pela computação em
nuvem, ele pode lidar com qualquer tipo de carga variável sem interromper o
comportamento normal do aplicativo.
• Recuperação de desastres: com mecanismos adequados de backup e
recuperação, as réplicas são mantidas para todos os serviços SaaS. As réplicas
são distribuídas por muitos servidores. Se algum servidor falhar, o usuário
final poderá acessar o SaaS de outros servidores. Elimina o problema do ponto
único de falha. Também garante a alta disponibilidade do aplicativo.
• Multilocação: Múltiplo Locatário é a capacidade dada aos usuários finais de
compartilhar uma única instância do aplicativo. A multilocação aumenta a
utilização de recursos do lado do provedor de serviços.

Segundo Chandrasekaran (2015), o principal problema com os serviços


SaaS é a segurança dos dados. Todas as empresas estão preocupadas com a
segurança de seus dados hospedados no data center do provedor de serviços. A
seguir, estão os principais problemas com os serviços SaaS de acordo com este
autor:

•  Segurança: a segurança é a principal preocupação na migração para o aplicativo


SaaS. Como o aplicativo SaaS é compartilhado entre muitos usuários finais,
existe a possibilidade de vazamento de dados. Aqui, os dados são armazenados

34
TÓPICO 2 — SOFTWARE COMO SERVIÇO - SAAS

no centro de dados do provedor de serviços. Não podemos simplesmente


confiar em algum provedor de serviços terceirizado para armazenar nossos
dados confidenciais e sensíveis à empresa. O usuário final deve ter cuidado ao
selecionar o provedor SaaS para evitar perda de dados desnecessária.
• Requisitos de conectividade: os aplicativos SaaS requerem conectividade com
a Internet para acessá-lo. Às vezes, a conectividade com a Internet do usuário
final pode ser muito lenta. Em tais situações, o usuário não pode acessar os
serviços com facilidade. A dependência da conexão à Internet de alta velocidade
é um grande problema nos aplicativos SaaS.
• Perda de controle: como os dados são armazenados em um local externo e
externo, o usuário final não tem controle dos dados. O grau de controle do
aplicativo SaaS e os dados é menor que o aplicativo local.

4 APLICAÇÕES SAAS EM CENÁRIOS DE BIG DATA


Perez (2018) explica que as plataformas de dados convencionais e as
soluções de Big Data se esforçam para cumprir seu propósito fundamental que é
de permitir que qualquer usuário trabalhe com quaisquer dados, sem limites de
escala, desempenho ou flexibilidade. Percebendo que a realidade é bem outra,
Perez nos faz o seguinte questionamento: A maioria dos dados da sua empresa,
senão todos, já residem na nuvem?

Neste caso, vamos supor que uma porcentagem considerável de


seus dados esteja em sua solução de CRM. Há anos você utiliza um
CRM baseado em nuvem, o que significa que seus dados de cliente,
oportunidade e engajamento já estão armazenados on-line. Nesse
cenário, faz pouco sentido extrair esses dados da nuvem para um
sistema local - especialmente quando você considera que os dados têm
massa, o que significa que também têm inércia e gravidade. Quanto
mais os dados residem em um sistema em silos, menos viável a
consulta cruzada se torna. Enfim, conclui o autor que uma abordagem
melhor seria contar com uma ferramenta de análise SaaS construída
para a nuvem, ou seja, uma solução SaaS moderna e instantaneamente
elástica pode fazer flutuações em computação e armazenamento - por
hora, minuto ou segundo - prática padrão e uma oportunidade viável
para seu negócio (PEREZ 2018, s. p.).

O uso de soluções SaaS envolvendo Big Data são utilizados para que
todo o potencial de dados das empresas seja utilizado a favor delas. Através das
técnicas em Big Data é possível entendendo o comportamento do consumidor e
buscar entender de formas inteligentes as melhorias dos serviços e produtos. O
conceito de amarrar SaaS com Big Data busca a revolução na produção de dados,
na qual os dados passam a serem gerados em diversos formatos diferentes, sem
estrutura ou associação entre eles, em alta velocidade, basicamente o tempo todo,
em fontes como a internet e sistemas internos.

35
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

Guerreiro (2020) destaca que as empresas Gainsight e Keen.io possuem


uma ferramenta analíticas de Big Data que podem ser incorporadas e entregues
no aplicativo SaaS a fim de ajudar a gerenciar os serviços do consumidor. Tem
também o “Muoro”, uma ferramenta de ciência de dados que ajuda a gerar
análises avançadas usando IA e aprendizado de máquina por meio do algoritmo
proprietário do DataShelter. Seu foco é tornar o trabalho do SaaS colaborativo
como uma tarefa contínua entre cientistas de dados e gerentes de negócios,
tornando a análise avançada um processo sem complicações na organização.

Big Data faz parte dos serviços do Google Cloud mais utilizados nas
empresas para análise de dados, seus serviços permitem processar e consultar
Big Data na nuvem para receber respostas rápidas para perguntas complicadas
(GOOGLE CLOUD, 2020a). O Google BigQuery oferece serviços de “análise de
dado”, em que se permite (GOOGLE CLOUD, 2020b):

• Criar esquemas personalizados que organizam os dados em conjuntos de


dados e tabela.
• Carregar dados de uma grande variedade de fontes, como dados de streaming.
• Usar comandos semelhantes aos do SQL para consultar conjuntos de dados
enormes em um instante. O BigQuery foi projetado e otimizado para oferecer
velocidade.
• Usar a IU da Web, a interface de linha de comando ou a API.
• Carregar, consultar, exportar e copiar dados usando Jobs.
• Gerenciar e proteger dados usando permissões.

Já o Dataflow oferece um serviço gerenciado e um conjunto de SDKs


que você pode usar para realizar tarefas de processamento de dados em lote e
streaming. É um recurso que funciona bem para computação de alto volume,
especialmente quando as tarefas de processamento podem divididas facilmente
e de forma clara em cargas de trabalho em paralelo. É excelente para tarefas de
extração, transformação e carga, que são úteis para migrar dados entre diferentes
mídias de armazenamento, fazer a transformação de dados para um formato mais
desejável ou carregar dados em um novo sistema de armazenamento (GOOGLE
CLOUD, 2020c).

Por fim, o Pub/Sub é um “serviço de mensagens assíncronas”. O


aplicativo pode enviar mensagens no formato de estruturas de dados JSON para
uma unidade de publicação, chamada tópico. Como os tópicos do Pub/Sub são
um recurso global, outros aplicativos nos seus projetos podem se inscrever no
tópico para receber as mensagens na solicitação HTTP ou nos corpos de resposta.
A utilidade de Pub/Sub não se limita ao Big Data. É possível usar o Pub/Sub
em muitas situações em que um serviço de mensagens assíncrono é necessário.
Para conferir um exemplo que usa Pub/Sub para coordenar o App Engine e o
Compute Engine, consulte Programação de tarefas confiável no Compute Engine
(GOOGLE CLOUD, 2020c).

36
TÓPICO 2 — SOFTWARE COMO SERVIÇO - SAAS

Neste viés das possibilidades de aplicar Big Data para SaaS, devido ao
fato de que como o aparato tecnológico se tornou mais robusto e também há uma
constante diminuição de custos, com fornecedores de ferramentas e computação
em nuvem cada vez mais especializados, as empresas começam a fazer um uso
mais inteligente das informações de que dispõem. Estruturar, analisar e tomar
decisões com dados gerados pelos clientes fica cada vez mais possível e, com isso,
também fica mais fácil inovar em relacionamentos, produtos e serviços. Portanto,
a interpretação rápida de informações para pautar a equipe de vendas ou para
criar peças de comunicação mais assertivas só é possível graças às ferramentas
criadas para lidar com o Big Data e com a infraestrutura oferecida por Cloud.
Os gestores de TI agora passam a ter sob sua responsabilidade este domínio
das possibilidades tecnológicas, tornando-se executivos que formam grandes
parcerias e administram pessoas capazes de lidar com as demandas e as ambições
corporativas (UDELCIO, 2014).

O modelo de cobrança do SaaS funciona como um aluguel, sendo cobrado


de diferentes formas, com semanais, mensais, semestrais, anuais ou apenas de
acordo com seu uso. São vendidos em forma de assinaturas, nas quais a empresa
ou o usuário paga uma taxa contínua, mas há casos de SaaS que disponibilizam
uma versão gratuita com funcionalidades mais básicas contendo propagandas de
anunciantes que mantêm essa versão. Soares (2020) explica que o cliente paga por
um pacote, pelo que usar ou pela versão desejada para ter acesso a determinados
recursos, números de logins, volume de tráfego suportado etc.

5 PLATAFORMAS DE SAAS
Uma empresa deve usar o SaaS para terceirizar todos os aplicativos,
recursos e serviços que não são sua competência essencial, assumindo que atenda
às suas necessidades e seja acessível. São diversos os modelos de aplicação de
SaaS. Nesta seção, apresentaremos alguns dos principais provedores de SaaS:

5.1 GOOGLE APPS


Concorrendo diretamente com empresas como a Microsoft e seu Office, o
Google App lançado em 2006 um pacote de aplicativos que oferece soluções para
e-mail, calendário, armazenamento na nuvem, reuniões ou treinamentos pelo
Meet e edição de arquivos (texto, planilhas e apresentações). Segundo o portal
do Google Cloud (2020d), o SaaS é parte do seu DNA da Google App oferecendo
soluções inovadoras que transformam as organizações. Seus produtos SaaS
destacam-se da concorrência devido à moderna tecnologia de análise de dados
e de recursos do machine learning. Soluções que permitem gerenciar usuários
e realiza implantação de ferramentas integradas utilizando nuvem híbrida/
de várias nuvens como por exemplo a ferramenta Anthos (GOOGLE CLOUD,
2020d).

37
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

Ao escolher o Google App é possível utilizar uma infraestrutura


moderna que permite que o Google mostre bilhões de resultados de
pesquisa em milissegundos, forneça 6 bilhões de horas de vídeo no
YouTube por mês e disponibilize armazenamento para 1 bilhão de
usuários do Gmail (GOOGLE CLOUD, 2020d, s.p.).

Segundo Furht e Escalante (2010), o Google Apps fornece vários aplicativos


da Web com funcionalidade semelhante ao software de escritório tradicional
(processamento de texto, planilhas etc.), mas também permite comunicar, criar
e colaborar com facilidade e eficiência. Esclarecem os autores que como todos
os aplicativos são mantidos on-line e acessados ​​por meio de um navegador da
Web, os usuários podem acessar suas contas a partir de qualquer computador
conectado à Internet sem a necessidade de instalação extra local.

O Google Apps possui vários componentes. Os componentes de


comunicação consistem no e-mail do Google e no Google Talk, que permitem
a comunicação por e-mail, mensagens instantâneas e chamadas de voz. Os
componentes do escritório incluem documentos e planilhas, através dos quais
os usuários podem criar documentos on-line que também facilitam a pesquisa
e a colaboração, pelo Google Agenda que é um aplicativo de calendário flexível
para organizar reuniões e eventos e por fim outro recurso é as as páginas da web
do Google App, os administradores podem publicar facilmente as informações
fornecendo aos usuários uma rica variedade de conteúdo e aplicativos que podem
ser personalizados (FURHT, ESCALANTE, 2010).

O Google Apps possui vários recursos significativos (FURHT,


ESCALANTE, 2010). Primeiro, ele fornece um painel de controle fácil de usar
que facilita as tarefas administrativas mais comuns, como ativar / desativar
aplicativos, gerenciar contas e personalizar interfaces. Segundo, embora
hospedado no Google, o usuário pode controlar a marca em todas as interfaces,
ou seja, inclui e-mail profissional personalizado (completo com proteção contra
spam), agendas compartilhadas e videoconferências (meet) ao lado do Google
Drive, no qual os usuários poderão personalizar sua interface Web, layouts e
cores das páginas. Terceiro, os administradores podem integrar-se às plataformas
existentes e estender a funcionalidade dos principais aplicativos do Google Apps
com as Interfaces de programação de aplicativos (APIs) oferecidas. Existem
várias APIs disponíveis para provisionamento, reportar e migração, bem como
de manipulação de dados de agenda e nas planilhas do Google integrado com
sistemas Single Sign On (SSO) (FURHT, ESCALANTE, 2010).

5.2 ONEDRIVE
OneDrive é um serviço de armazenamento em nuvem da Microsoft, uma
plataforma suportada em iOS, Android e Windows, na qual todos os usuários
do Office 365 têm direito a utilizar o serviço de armazenamento de forma
ilimitada é totalmente gratuito. Serve para salvar fotos, vídeos, documentos,
PDFs, apresentações em PowerPoint e outros arquivos. Nele, o usuário pode

38
TÓPICO 2 — SOFTWARE COMO SERVIÇO - SAAS

definir arquivos públicos, para qualquer pessoa acessar e alterar os arquivos,


ou privados, nos quais somente o próprio usuário que hospedou o arquivo tem
direito de alteração.

Segundo Strategic SaaS (2020), os benefícios para uma organização


utilizar o armazenamento OneDrive é de manter o controle, a integridade e o
desempenho dos dados; aumentar a utilização do armazenamento e o acesso aos
dados; fornece uma plataforma central para velocidade e eficácia com backup
mais rápido; e por fim, expandir a capacidade para atender aos crescentes
requisitos de armazenamento.

As dez vantagens de usar um serviço de armazenamento OnDrive


apresentados por Celular Direto (2019) são: economia de espaço no seu
computador; armazenamento mais seguro; liberdade de acesso; versão para
computador e smartphones; senha no aplicativo; compartilhamento e edição
colaborativa de arquivos e pastas; recuperar arquivos apagados; busca por
palavras em documentos, imagens e arquivos em PDF; acesso off-line aos arquivos
e inserir apresentações em PowerPoint em sites.

Uma vantagem de trabalhar com OneDrive é a possibilidade de salvar


uma pasta no seu computador e sincronizar automaticamente seus arquivos com
a versão da nuvem, trabalhando de forma local (off-line) ou remota (on-line)
com seus arquivos. O explorer de seu computador sinaliza se os seus arquivos
já foram sincronizados com a versão on-line ou não, e para atualizar basta clicar
com o botão direito do mouse sobre o arquivo e sincronizar.

DICAS

Para acessar o OneDrive, utilize o seguinte link: https://onedrive.live.com/

5.3 DROPBOX
O DropBox foi um dos primeiros serviços de hospedagem de arquivos
em cloud mais popular da web e que nos últimos anos perdeu espaço para os
serviços da Microsoft e Google. Segundo Tutida (2019), a grande vantagem do
Dropbox é a sua acessibilidade em vários dispositivos e plataformas, é suportado
pelas plataformas do Windows, iOS, Android e Linux. Funciona em um algoritmo
de transferência de arquivos em nível de bloco, sincronizando com a nuvem no
momento em que é alterado. Quanto ao aspecto de segurança, ele criptografa
os dados em trânsito e em repouso e para não ocorrer invasão de hackers o
Dropbox ativa um recurso de autenticação de dois fatores para efetuar login. Está
disponível pelo endereço: https://www.dropbox.com/.
39
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

5.4 SALESFORCE
Segundo Furht e Escalante (2010), o Salesforce é uma plataforma em nuvem
SaaS comercial que fornece aplicativos personalizáveis, principalmente serviços
de Gerenciamento de Relacionamento com o Cliente (Customer Relationship
Management (CRM)), para os consumidores.

Existem dois produtos principais apresentados pelo Salesforce. O Sales


Cloud é um grupo de aplicativos abrangentes para melhorar a conveniência e a
eficiência das atividades de negócios; e a Service Cloud é fornecida para integrar
aplicativos de redes sociais como Facebook e Twitter, para construir a comunidade
de atendimento ao cliente de um usuário (FURHT, ESCALANTE (2010).

Esta mesma referência nos esclarece que os serviços do Salesforce CRM


são implantados na plataforma em nuvem Force.com, que opera uma arquitetura
orientada por metadados orientada para multilocação. A multilocação permite
compartilhar a mesma versão de um aplicativo entre muitos usuários, mas cada
usuário pode acessar apenas seus próprios dados privados, o que mantém suas
atividades isoladas. Todas as funcionalidades e configurações dos aplicativos
são descritas com metadados, para que os usuários possam personalizar os
aplicativos como desejarem. Embora o modelo de aplicativo compartilhado
possa causar interferência entre os usuários, a nuvem do Salesforce SaaS tem as
seguintes vantagens (FURHT, ESCALANTE (2010):

• Os provedores de serviços podem desenvolver apenas uma versão do aplicativo


e não precisam se preocupar com ambientes de execução heterogêneos;
• O compartilhamento do recurso de computação física, sistema operacional e
ambiente de tempo de execução reduz o custo do serviço de aplicativo; e
• Os consumidores de serviços são livres para escolher sua versão preferida do
aplicativo e personalizá-lo para se adequar aos seus negócios.

5.5 CISCO WEBEX


O Cisco WebEx e uma plataforma de comunicação que fornece aplicativos
para realização de reunião on-line e aplicações de videoconferência. Segundo Lima
(2019), o Cisco WebEx permite reunir funcionários ou clientes que se encontram
geograficamente distantes, para discussões e colaborações no ambiente digital,
em tempo real como se estivessem presentes na mesma sala.

As duas principais ferramentas são o Cisco WebEx Meetings e o Cisco


WeBex Teams. As principais vantagens estão em permitir muita colaboração nos
negócios, melhorando seus processos empresariais e melhorarem os resultados
das equipes de vendas, marketing, treinamento, gerenciamento de projeto e
suporte.

40
TÓPICO 2 — SOFTWARE COMO SERVIÇO - SAAS

Quanto ao aspecto de segurança, Lima (2019) destaca que a ferramenta


oferece diversos recursos que tornam a sua implantação, a sua manutenção (rede,
plataforma, entre outros) e o seu uso (do agendamento da reunião, autenticação
de participantes, compartilhamento de documentos etc.) mais seguros. Destaca
também que o Cisco Webex Meeting possui versões para os sistemas operacionais
Windows, Mac Osx e sistemas operacionais mobile IOS e Android e que o
aplicativo versão desktop permite que você realize agendamentos, inicie e entre
em reuniões de forma rápida e fácil.

Enfim, para Lima (2019), dentro da sua sala de reunião pessoal do Webex
é possível utilizar diversos recursos dos quais os principais são a interação com os
participantes via áudio e vídeo, a interação com os participantes via mensagem de
texto, o compartilhamento de tela, a gravação da sua reunião no Webex e também
disponibiliza seu endereço da empresa no Portal Webex onde o link sempre é
disponível da seguinte forma: https://NOME_DA_SUA_EMPRESA.webex.com.

5.6 CONCUR
Segundo Shapiro (2018), a partir de 2018, a Concur se tornou um produto
da família SAP, agora é SAP Concur. É um SaaS utilizado para o gerenciamento
de despesas, viagens e faturas para maior visibilidade e controle.

Segundo Google Play (2020b), com o aplicativo SAP Concur, o usuário


pode gerenciar todo o processo de viagem e despesa de negócios de onde
estiver, pode tirar fotos dos recibos para nunca mais perdê-los, pode analisar e
aprovar rapidamente relatórios, faturas e solicitações de viagem, também pode
adicionar participantes a reuniões ou refeições de negócios, pode importar dados
dos cartões de crédito, reservar um voo/hotel/automóvel rápida e facilmente
de qualquer lugar, também pode visualizar sugestões de hotel personalizadas,
especificar encargos de hotel por item, acessar e gerenciar seu itinerário enquanto
viaja, pode integrar seu itinerário ao aplicativo TripIt, pode acompanhar e enviar
facilmente a quilometragem do automóvel e muito mais.

5.7 GOTOMEETING
Segundo o Google Play (2020a), no GoToMeeting permite-se:

• Participar de uma reunião ou organize-a em qualquer telefone ou tablet com


Android.
• Áudio de VoIP de banda completa, totalmente claro, ou chamada telefônica.
• Conferência de vídeo face a face, em que parte do mundo você estiver.
• Compartilhar a tela completa do seu dispositivo com todos os que estão na
reunião.
• Transferir o controle da apresentação para outros participantes para ver
apresentações, simulações, relatórios etc.
41
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

• Ver todas as próximas reuniões e entre com um simples toque.


• Receber alertas quando uma reunião estiver prestes a começar.
• Usar o chat com cada participante em separado ou com todos os presentes na
reunião.

5.8 GOOGLE BIGQUERY


BigQuery é uma plataforma de armazenamento de dados corporativo que
realiza consultas SQL super-rápidas utilizando a capacidade de processamento
da infraestrutura do Google para facilitar e integrar a análise de uma quantidade
muito grande de dados. Ou seja, é uma poderosa ferramenta de Big Data que ajuda
as empresas em suas estratégias de negócio que permite acesso às informações
em tempo real com o streaming e obter análises avançadas, preditivas e assertivas
(SANTODIGITAL, 2020).

Segundo Google Cloud (2020b), o BigQuery é totalmente gerenciado e


acessado pelo Console do Cloud, pela UI clássica da Web, por uma ferramenta de
linha de comando ou fazendo chamadas à API REST do BigQuery com diversas
bibliotecas de cliente, como Java, .NET ou Python.

O sistema de armazenado é baseado em NoSQL e não permite a remoção


ou renomeação dos arquivos, além de não criar outros links para o mesmo
projeto. A interação é feita por meio de navegador web próprio, uma linha de
comando ou por chamadas para API do REST utilizando linguagens JAVA, .NET
ou Phyton. Também é possível acessar cópias dos projetos na plataforma Google
Cloud. O sistema permite o total gerenciamento de acesso de acordo com o perfil
da empresa (GOOGLE CLOUD, 2020a).

DICAS

Recomendamos a leitura do artigo Entenda as principais técnicas para


otimização de custos do BigQuery, disponível em: https://www.santodigital.com.br/
bigquery-entenda-as-principais-tecnicas-para-otimizacao-de-custos/.

42
TÓPICO 2 — SOFTWARE COMO SERVIÇO - SAAS

5.9 O GOOGLE DRIVE


O Google Drive é um exemplo de uma aplicação SaaS muito popular e
utilizado para hospedar e compartilhar arquivos. Geralmente, esses serviços já
incluem o gerenciamento de licenças, possíveis manutenções, atualizações e todo
o suporte de que o usuário precisa (SOARES, 2020).  

O Google Drive é suportado pelas plataformas Windows, iOS e Android,


porém segundo Tutida (2019), ele não oferece armazenamento ilimitado, vem com
15 GB de espaço de armazenamento de dados gratuito dividido em diferentes
aplicativos do Google, como o Google Fotos, o e-mail e os semelhantes. O Google
Drive está disponível em: https://www.google.com/drive/.

Google Drive é simples e fácil de usar. Por exemplo, utilizando o Gmail, o


usuário pode enviar arquivos grandes anexos pelo Google Drive disponibilizando
o link para fazer o upload. Quanto ao aspecto de segurança, o Google criptografa
seus arquivos em trânsito seguindo o protocolo criptográfico TLS. Assim como o
Dropbox, o Google Drive também apresenta um sistema de verificação em duas
etapas. Sobre os centros de dados, o Google Drive usa grades de laser e scanners
biométricos para garantir segurança completa. Assim, seus dados ficarão bem
seguros e protegidos (TUTIDA, 2019).  

43
RESUMO DO TÓPICO 2
Neste tópico, você aprendeu que:

• No SaaS o consumidor do serviço precisa apenas configurar alguns parâmetros


específicos do aplicativo e gerenciar os usuários.

• No SaaS o provedor de serviços lida com toda a infraestrutura, toda a lógica do


aplicativo, todas as implantações e tudo relacionado à entrega do produto ou
serviço.

• Alguns exemplos de SaaS são os serviços comerciais, incluindo ERP (Enterprise


Resource Planning), CRM (Customer Relationship Management), cobrança, vendas,
recursos humanos, as redes sociais, para o gerenciamento de documentos
eletrônicos, videoconferências, entre outros.

• O Netflix é um exemplo clássico de SaaS, em que o usuário paga um plano para


assistir séries e filmes, não se responsabilizando por sua manutenção, ficando
o provedor responsável pela solução do problema.

• Existem várias soluções SaaS que lidam com segurança, monitoramento,


registro em log, testes e assim por diante como também na categoria de dados
inclui business intelligence, banco de dados como serviço, visualização de
dados, dashboards, data mining e muito mais bem como controlam totalmente
a infraestrutura, o desempenho, a segurança, a escalabilidade, a privacidade e
muito mais.

• Às características essenciais dos serviços SaaS que os tornam único em relação


ao software tradicional são que os serviços SaaS são entregues como um modelo
para muitos, no qual uma única instância do aplicativo pode ser compartilhada
por vários ou múltiplos locatários ou clientes com acesso a qualquer lugar e
com gerenciamento centralizado suportado por vários dispositivas, com
melhor escalabilidade e com alta disponibilidade e como integração de API.

• Os principais benefícios dos serviços SaaS oferecidos são: Nenhuma instalação


no lado do cliente, economia de custos, menos manutenção, facilidade de
acesso, escala dinâmica, recuperação de desastres e multilocação.

• Os principais problemas com os serviços SaaS são: segurança, requisitos de


conectividade e perda de controle.

• O uso de soluções SaaS envolvendo grande quantidade de dados são utilizados para
que todo o potencial de dados das empresas seja utilizado a favor delas. Através das
técnicas em Big Data, é possível entendendo o comportamento do consumidor e
buscar entender de formas inteligentes as melhorias dos serviços e produtos.
44
• O modelo de cobrança do SaaS funciona como um aluguel, sendo cobrado de
diferentes formas, com semanais, mensais, semestrais, anuais ou apenas de
acordo com seu uso e assinatura obtida.

• Os principais provedores de SaaS são: Google Apps, OneDrive, Dropbox,


Salesforce, Cisco WebEx, Concur, GoToMeeting, Google BigQuery e Google
Drive.

45
AUTOATIVIDADE

1 Na área de desenvolvimento de software, existem muitas tarefas que as equipes


de desenvolvimento são responsáveis, sendo uma delas a infraestrutura de
servidores para manter ou hospedar os serviços e aplicações desenvolvidas,
trabalho este que pode ser evitado com uso de serviços em nuvem. Defina o
que é e como funciona Software como um Serviço (SaaS).

2 Uma das preocupações de equipes de desenvolvimento de software é a


configuração, acompanhamento e controle de infraestrutura de servidores
para hospedar as aplicações desenvolvidas, assim como os dados em
Sistemas Gerenciadores de Bancos de Dados. Qual é a importância da SaaS
no cenário de Big Data?

3 Os SaaS são modelos de fornecimentos de algum software por meio da


internet sem necessidade de algum download ou fidelidade. Cite três
exemplos práticos de provedores SaaS e que serviços cada um oferecem.

4 O Software as a Service (SaaS) surgiu por volta de 1999 e suas aplicações são
licenciadas como um serviço sob demanda com um modelo de distribuição do
serviço. Com base no Software as a Service (SaaS), analise as sentenças a seguir.

I- No SaaS os aplicativos rodam diretamente nos servidores do fornecedor.


II- Os aplicativos são instalados na máquina do cliente e ficam disponíveis
permanentemente.
III- As aplicações SaaS são atualizadas com frequência pois são hospedadas
em um único local em um servidor, o que evita que os clientes tenham que
instalar as novas versões.

Assinale a alternativa CORRETA:


a) ( ) As sentenças I e II estão corretas.
b) ( ) Somente a sentença II está correta.
c) ( ) As sentenças I e III estão corretas.
d) ( ) Somente a sentença III está correta.

5 Os provedores SaaS oferecem serviços para criar, gerenciar e rastrear


documento e serviços eletrônicos sendo utilizado para designar uma nova
maneira de distribuição e comercialização de software, que possui como
uma das suas características:

a) ( ) Fornece serviço de suporte ao software no computador do cliente.


b) ( ) Os serviços são hospedados e gerenciados a partir de vários locais na nuvem.
c) ( ) Não precisar de licença para ser utilizado.
d) ( ) Executam as atualizações automáticas garantindo que cada cliente
acesse a versão mais recente do aplicativo sem nenhuma atualização do
lado do usuário.
46
TÓPICO 3 —
UNIDADE 1

PLATAFORMA COMO SERVIÇO PAAS

1 INTRODUÇÃO
Plataforma como um Serviço (PaaS), Software como um Serviço (SaaS) e
Infraestrutura como um Serviço (IaaS) são os três principais modelos de serviços
utilizados no ambiente de computação em nuvem. Através destes modelos, as
empresas e usuários podem alugar sob demanda a capacidade de computação e
armazenamento dos dados e informações de forma transparente para acessá-los
a qualquer momento e em qualquer lugar independente de localização.

Oliveira (2020) informa que atualmente muitas empresas desejam oferecer


um nível maior de atendimento e suporte ao cliente usando aplicativos e soluções
desenvolvidas na Web e nesse contexto, o PaaS torna-se atrativo e existem duas
maneiras de se beneficiar de toda sua estrutura: utilizando PaaS público ou do
tipo privado.

O PaaS público é entregue por um provedor de serviços para a criação


de aplicativos, enquanto o PaaS corporativo (privado) é fornecido pela TI
central de uma organização para desenvolvedores e, possivelmente parceiros e
clientes comerciais. Dessa forma, o PaaS permite que os desenvolvedores criem e
implementem seus aplicativos de maneira on-line, não precisando se preocupar
com a instalação de hardwares e softwares internos (OLIVEIRA, 2020).

Enfim, podemos destacar que a computação em nuvem aumentou


ainda mais o nível de eficiência e agilidade atingido pela virtualização dos data
centers. Segundo Silva (2017), por meio da disponibilização de recursos em pool,
diversidade geográfica e conectividade universal, a computação em nuvem
facilita o fornecimento de software hospedados, plataformas e infraestruturas
como um serviço e se tornarão cada vez mais comuns. Nesse modelo de nuvem,
contrata-se um ambiente completo de desenvolvimento, no qual é possível criar,
modificar e otimizar softwares e aplicações.

2 CONCEITOS DE PAAS
O serviço da PaaS (Platform as a Service), ou Plataforma como Serviço,
foi definido pelo Instituto Nacional de Padrões e Tecnologias (National Institute
of Standards and Technology - NIST) como um modelo de serviço básico, assim
como as tecnologias de IaaS (infraestrutura como serviço) e SaaS (software
como serviço) (OLIVEIRA, 2020). Trata-se de uma plataforma para desenvolver

47
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

aplicações sem que seja preciso instalar qualquer ferramenta de desenvolvimento


e bibliotecas. Inclui ambientação, compreendendo o ciclo de desenvolvimento,
teste e implementação, e até mesmo hospedagem de aplicações web como um
serviço entregue por uma base em nuvem.

Sousa et al. (2020) explicam que o modelo de PaaS fornece sistema


operacional, linguagens de programação e ambientes de desenvolvimento para
as aplicações, auxiliando a implementação de sistemas de software. Nele o
usuário não administra ou controla a infraestrutura subjacente, mas tem controle
das aplicações implantadas e, possivelmente, as configurações de aplicações
hospedadas nesta infraestrutura. Ela é, ao mesmo tempo, uma nova plataforma
tecnológica e uma nova arquitetura de TI (SILVA, 2017).

A Figura 12, criada por Oliveira (2020), apresenta as características que


compõem a PaaS, em que se pode notar três entidades, de cima para baixo:
IaaS, PaaS e a interface de acesso ao PaaS, além de outros elementos, como
escalabilidade, gerenciamento de recursos, gerenciamento de aplicação e
qualidade de serviço (QoS). A PaaS na nuvem oferece um modelo de computação,
armazenamento e comunicação para as aplicações acessado pelos clientes via
navegador, por exemplo, App Engine do Goole, Azure da Microsoft, Force.com,
Red Hal OpenShift, Heroku e Engine Yard.

FIGURA 12 – MODELO DE REFERÊNCIA DA PLATAFORMA COMO SERVIÇO (PAAS)

FONTE: Adaptada de Buyya, Vecchiola e Selvi (2013, p. 117)

48
TÓPICO 3 — PLATAFORMA COMO SERVIÇO PAAS

Através do PaaS, os clientes (empresas ou usuários) conseguem


facilmente realizar a implementação de serviços web com menor custo, gestão e
complexidade. O cliente não precisa manipular a infraestrutura necessária para
que uma aplicação seja desenvolvida, como servidores, sistemas operacionais,
sistemas de armazenamento de dados e rede. Seu foco passa a ser apenas o
desenvolvimento da aplicação, salvo uma ou outra configuração no ambiente
em que está hospedada. Portanto, o PaaS está em cima do IaaS e abstrai muitas
das funções padrões no nível de aplicativos fornecendo essas funções como um
serviço para que os desenvolvedores possam concentrar na lógica de negócio e
não reinventar a roda, pois, são serviços e ferramentas suportadas pelo provedor
sem que o cliente gerencie ou controle a infraestrutura da nuvem subjacente.

Os provedores de PaaS fornecem uma ampla variedade de linguagens


de programação para os desenvolvedores de aplicativos, um framework de
aplicativos, a comunicação dos aplicativos por bancos de dados e muitas outras
ferramentas necessárias para desenvolver, testar e implantar um aplicativo como
um serviço pela Internet.

FIGURA 13 – SERVIÇOS FORNECIDOS POR PROVEDORES DE PAAS

FONTE: Adaptada de Chandrasekaran (2015)

As plataformas de desenvolvimento PaaS são diferentes das plataformas de


desenvolvimento de aplicativos tradicionais. Portanto, segundo Chandrasekaran
(2015) as principais características do PaaS está em:

• Prover todos os serviços em um único local para se desenvolver, testar,


implantar, hospedar e manter aplicativos no mesmo IDE.
• Ter acesso da Web à plataforma de desenvolvimento.
• Ter acesso off-line quando poderá sincronizar seu IDE local com os serviços de
PaaS quando a internet estiver ativa.
• Pela escalabilidade integrada e dinâmica para qualquer aplicativo desenvolvido
para que seja capaz de lidar eficientemente com cargas variadas.
• Plataforma colaborativa para que possamos trabalham em diferentes locais e
coletivamente.
• Fornecendo uma ampla variedade de ferramentas de cliente para ajudar o
desenvolvedor.
49
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

Nos destaca ArtSoft (2018) que o PaaS oferece toda uma plataforma
completa para a hospedagem, criação e controle de um software, disponível em
diversos provedores que estão na nuvem, no qual suas principais características
são:

• Ferramentas simples para lidar com gerenciamento e faturamento de


assinaturas.
• Integração de serviços web e com outras bases de dados sem conflitos no
sistema.
• Segurança.
• Vários usuários podem utilizar o mesmo aplicativo (mesmo tipo de nuvem),
sem quaisquer tipos de prejuízo ou lentidão nos serviços.

Para Silva (2017), o público-alvo principal da PaaS são os desenvolvedores


de sistemas, os quais adotam uma plataforma oferecida por alguma empresa e
seguem suas tecnologias e padrões para criar seus sistemas. Nesse ambiente,
comumente é disponibilizado um conjunto de bibliotecas que os desenvolvedores
podem utilizar para desenvolver e hospedar suas aplicações. Inicialmente, a
adoção de PaaS pode exigir algum treinamento dos desenvolvedores que irão
trabalhar com a plataforma. No entanto, em um segundo momento tais tecnologias
podem reduzir o tempo de desenvolvimento por prover funcionalidades, facilitar
o desenvolvimento e distribuição de aplicações por nuvem (SILVA; LUCRÉDIO,
2012). Por exemplo: o Google App Engine (GAE) atualmente provê muitas
funcionalidades, dentre elas API para processamento de imagens, armazenamento
de dados de maneira não relacional, entre outros.

Quando a organização adotar o uso da PaaS, sua equipe de desenvolvimento


só precisa se preocupar com a programação do software, pois o gerenciamento,
manutenção e atualização da infraestrutura ficam a cargo do fornecedor bem como
oferece na plataforma web várias ferramentas de desenvolvimento de software
dessa maneira, ela se torna completa, robusta, escalável e totalmente disponível
em uma nuvem pública ou privada. O ideal é usar o PaaS quando a empresa
tem um time de desenvolvedores disponíveis para trabalhar simultaneamente e
precisa executar as tarefas ou se houver uma grande integração com o banco de
dados (SOFTLINE, 2017).

Segundo Veras (2015), a PaaS está vinculada ao uso de ferramentas de


desenvolvimento de terceiros, nas quais rodam os aplicativos e se armazenam os
dados. A grande diferença com relação a um modelo convencional de terceirização
é que a plataforma roda em data centers de provedores externos como a Microsoft
com seu Azure e é acessada via web. Os desenvolvedores estão do lado da rede.
A Figura 14 ilustra a ideia de PaaS.

50
TÓPICO 3 — PLATAFORMA COMO SERVIÇO PAAS

FIGURA 14 – PAAS DE NUVEM

FONTE: Veras (2015, p. 150)

Veras (2015) afirma que os servidores físicos apresentam altos custos de


operação devido ao mau aproveitamento dos recursos e devido ao gerenciamento
complexo. Máquinas ou servidores virtuais através da computação em nuvem
surgiram como solução. A possibilidade de fazer várias máquinas virtuais rodarem
em um mesmo servidor físico otimiza o uso de recursos, mas também pode
causar problemas se as instâncias virtuais forem criadas de forma desordenada.
Os custos de operação e gerenciamento nessa situação também são altos. A
abstração no nível da nuvem permite melhorar o gerenciamento dos ambientes
virtualizados. No caso de IaaS, ela permite que os usuários aloquem máquinas
virtuais precisando assim estruturar e configurar estas máquinas virtuais quanto
ao armazenamento de redes. Com PaaS, isso já está resolvido.

Portanto, segundo Furht e Escalante (2010), os dois aspectos a serem


considerados nas soluções PaaS são a abstração de recursos físicos e API de
programação para dar suporte a novos serviços. Na Abstração de recursos físicos a
camada da infraestrutura fornece aos usuários acesso isolado e direto à infraestrutura
subjacente de forma que permita que os desenvolvedores criem novos softwares que
não sejam suscetíveis ao número de máquinas provisionadas ou à sua configuração
de rede, por exemplo. E referente a API de programação são bibliotecas de
componentes para dar suporte a novos serviços que permite que os desenvolvedores
construam/programem um novo software aproveitando os recursos disponíveis e
compartilhados com o middleware (FURHT; ESCALANTE, 2010).

3 CARACTERÍSTICAS DO PAAS
As plataformas de desenvolvimento PaaS são diferentes das plataformas
de desenvolvimento de aplicativos tradicionais. A seguir, são apresentadas
as características essenciais que tornam o PaaS exclusivo das plataformas de

51
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

desenvolvimento tradicionais, segundo Chandrasekaran (2015):

1. Tudo em um: a maioria dos provedores de PaaS oferece serviços para


desenvolver, testar, implantar, hospedar e manter aplicativos no mesmo IDE.
Além disso, muitos provedores de serviços fornecem todas as linguagens de
programação, frameworks, bancos de dados e outros serviços relacionados ao
desenvolvimento que fazem os desenvolvedores escolher entre uma ampla
variedade de plataformas de desenvolvimento (CHANDRASEKARAN, 2015).
2. Acesso da Web à plataforma de desenvolvimento: Uma plataforma de
desenvolvimento típica usa quaisquer IDEs para desenvolver aplicativos.
Normalmente, o IDE será instalado nas máquinas do desenvolvedor. O
PaaS fornece acesso da web à plataforma de desenvolvimento. Usando a
interface da web, qualquer desenvolvedor pode obter acesso à plataforma
de desenvolvimento. A interface do usuário baseada na Web ajuda os
desenvolvedores a criar, modificar, testar e implantar aplicativos diferentes na
mesma plataforma (CHANDRASEKARAN, 2015).
3. Acesso off-line: um desenvolvedor pode não conseguir se conectar à Internet
por um dia inteiro para acessar os serviços PaaS. Quando não há conectividade
com a Internet, os desenvolvedores devem ter permissão para trabalhar off-
line. Para habilitar o desenvolvimento off-line, alguns dos provedores de PaaS
permitem que o desenvolvedor sincronize seu IDE local com os serviços de PaaS.
Os desenvolvedores podem desenvolver um aplicativo localmente e implantá-
lo on-line sempre que estiverem conectados à Internet (CHANDRASEKARAN,
2015).
4. Escalabilidade integrada: a escalabilidade é um requisito importante para
os aplicativos da web ou SaaS da nova geração. É muito difícil habilitar a
escalabilidade dinâmica para qualquer aplicativo desenvolvido usando
plataformas de desenvolvimento tradicionais. No entanto, os serviços PaaS
fornece escalabilidade interna para um aplicativo desenvolvido usando
qualquer PaaS específico. Isso garante que o aplicativo seja capaz de lidar com
cargas variadas com eficiência (CHANDRASEKARAN, 2015).
5. Plataforma colaborativa: Atualmente, a equipe de desenvolvimento é
composta por desenvolvedores que trabalham em diferentes locais. Há uma
necessidade de uma plataforma comum em que os desenvolvedores possam
trabalhar em conjunto no mesmo projeto. A maioria dos serviços PaaS fornece
suporte ao desenvolvimento colaborativo. Para permitir a colaboração entre
desenvolvedores, a maioria dos provedores de PaaS fornece ferramentas para
o planejamento e a comunicação do projeto (CHANDRASEKARAN, 2015).
6. Diversas ferramentas de cliente: Para facilitar o desenvolvimento, os
provedores de PaaS fornecem uma ampla variedade de ferramentas de cliente
para ajudar o desenvolvedor. As ferramentas do cliente incluem CLI, web
CLI, web UI, REST API e IDE. Os desenvolvedores podem escolher qualquer
ferramenta de sua escolha. Essas ferramentas clientes também são capazes de
lidar com o gerenciamento de cobrança e assinatura (CHANDRASEKARAN,
2015).

52
TÓPICO 3 — PLATAFORMA COMO SERVIÇO PAAS

Para Chandrasekaran (2015), além dos benefícios relacionados aos custos,


os serviços PaaS são uma opção adequada para as seguintes situações:

1. Desenvolvimento colaborativo: para aumentar o tempo de comercialização


e a eficiência do desenvolvimento, é necessário um local comum em que
a equipe de desenvolvimento e outras partes interessadas do aplicativo
possam colaborar entre si. Como os serviços PaaS fornecem um ambiente de
desenvolvimento colaborativo, é uma opção adequada para aplicativos que
precisam de colaboração entre desenvolvedores e outros terceiros para executar
o processo de desenvolvimento (CHANDRASEKARAN, 2015).
2. Teste e implantação automatizados: o teste e a criação automatizados de um
aplicativo são muito úteis ao desenvolver aplicativos em um período muito
curto. As ferramentas de teste automatizadas reduzem o tempo gasto nas
ferramentas de teste manual. A maioria dos serviços de PaaS oferece recursos
automatizados de teste e implantação. A equipe de desenvolvimento precisa se
concentrar mais no desenvolvimento, em vez de testar e implantar. Assim, os
serviços de PaaS são a melhor opção onde há necessidade de teste e implantação
automatizados dos aplicativos (CHANDRASEKARAN, 2015).
3. Tempo de lançamento no mercado: Os serviços de PaaS seguem as
metodologias de desenvolvimento iterativas e incrementais que garantem que
o aplicativo esteja no mercado conforme o prazo especificado. Por exemplo, os
serviços PaaS são a melhor opção para o desenvolvimento de aplicativos que
usa metodologias de desenvolvimento ágil. Se o fornecedor do software deseja
que seu aplicativo esteja no mercado o mais rápido possível, os serviços PaaS
são a melhor opção para o desenvolvimento (CHANDRASEKARAN, 2015).

Conforme Raj e Sharma (2017 apud OLIVEIRA, 2020), as plataformas PaaS


fornecem ambientes bem definidos, arquitetados, contínuos, sempre disponíveis,
resilientes e escalonáveis, ajustados para as necessidades específicas de seus
aplicativos e serviços. Para utilizá-la, o usuário paga conforme o uso, no entanto,
alguns provedores cobram uma taxa mensal fixa pelo acesso à plataforma e aos
seus aplicativos, em um modelo de pagamento baseado com frequência nas
especificações do servidor, do número de projetos e do tempo de utilização.
Enfim, parâmetros como a utilização de CPU, o uso de disco para transação e a
largura de banda da rede podem determinar o custo do PaaS, sendo os principais
parâmetros que definem o seu faturamento (RAJ; RAMAN, 2018), ou seja, o uso
de CPU por hora; disponibilidade de serviço; cobrança por serviço utilizado e a
largura da banda de rede de entrada e saída.

Para estes autores, uma das métricas mais usadas para definir a cobrança
do PaaS é a largura de banda consumida, e a dificuldade encontrada para este
parâmetro se dá pela dificuldade de calcular exatamente qual usuário de transação
está consumindo uma quantidade específica de recursos de utilização da CPU
por solicitação. Uma alternativa é então cobrar calculando a quantidade de dados
armazenados que um usuário específico está consumindo e realizar a cobrança
adequada do serviço. Enfim, ainda existe uma forma mais simples de cobrar, cujo
único critério reside no fato de ter requisitos de código seguros e sem transações

53
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

demoradas na CPU. Ao levar estes fatores em consideração poderá cobrar o uso


de PaaS de duas modos: conforme o uso de cada usuário e os serviços utilizados;
e a partir de uma taxa mensal fixa pelo acesso à plataforma e seus aplicativos,
independente da quantidade de serviço utilizada.

4 VANTAGENS E DESVANTAGENS DO USO DE PAAS


Podemos destacar como vantagem da utilização da PaaS o fato de as
suas plataformas se integrarem a inúmeras soluções de software de terceiros
integradas através de uma arquitetura orientada a serviços (SOA), geralmente
chamadas de plugins, complementos ou extensões. Portanto, diversos são os
benefícios e contraindicações no uso de PaaS, conforme destacado no Quadro 1.

QUADRO 1 – VANTAGENS E DESVANTAGENS DA PAAS

Vantagens Desvantagens
Fácil desenvolvimento e implantação Bloqueio de fornecedores pela falta
(deployment) e após o desenvolvimento de padrões, comum entre diferentes
a maioria dos serviços executará provedores de PaaS e as tecnologias
automaticamente o processo de teste e proprietárias usadas pelos provedores
implantação. de PaaS, que impedem de migração
dos aplicativos de um provedor PaaS
a outro.
Custo reduzido: não é necessário Segurança: é um dos principais
a compra de ferramentas de problemas, pois, normalmente os
desenvolvimento e teste se os serviços dados são armazenados em servidores
de PaaS foram selecionados. Basta de terceiros. Ao selecionar o provedor
alugar estes recursos, reduzindo o de PaaS, o desenvolvedor deve revisar
custo total de propriedade da empresa as políticas de uso, de conformidade e
de desenvolvimento. de segurança do provedor de PaaS em
relação aos seus próprios requisitos de
segurança.
Suporte a desenvolvimento ágil: a Pouca flexibilidade: infelizmente, os
maioria dos aplicativos desenvolvidos provedores de PaaS não fornecem aos
na nova geração usa metodologias desenvolvedores sua própria pilha
ágeis, cenários em que os provedores de ferramentas. Em sua maioria, é
de PaaS se destacam. oferecido suporte a várias linguagens
de programação, além de serviços
de banco de dados e ferramentas de
suporte à programação.
Trabalho em conjunto: os serviços PaaS
oferecem suporte a desenvolvedores
de diferentes locais para trabalharem
juntos no mesmo projeto.

54
TÓPICO 3 — PLATAFORMA COMO SERVIÇO PAAS

Fácil uso: alguns desenvolvedores


podem não estar familiarizados com as
interfaces fornecidas pela plataforma
de desenvolvimento de aplicativos, o
que dificulta o trabalho. Contudo, o
PaaS fornece uma ampla variedade de
ferramentas clientes, como CLI, CLI
da web, UI da web, API e IDE.
Despesas de manutenção: em
aplicativos locais, empresas de
desenvolvimento ou fornecedores
de software são responsáveis por
manter o hardware subjacente,
criando a necessidade de ter
administradores qualificados para
manter os servidores. Essa sobrecarga
é eliminada pelos serviços PaaS, pois
a infraestrutura subjacente é mantida
pelos provedores de infraestrutura.
Isso dá liberdade aos desenvolvedores
para trabalhar no desenvolvimento de
aplicativos.
Aplicativos escaláveis: a maioria
dos aplicativos desenvolvidos
usando serviços de PaaS são de web
ou SaaS, com boa flexibilidade de
acesso a recursos extras (conforme
solicitado). Os serviços PaaS fornecem
escalabilidade integrada ao aplicativo
desenvolvido, usando a própria
plataforma de PaaS.
FONTE: Adaptado de Chandrasekaran (2015)

5 APLICAÇÕES PAAS EM CENÁRIOS DE BIG DATA


As soluções da PaaS que causam um grande impacto são aquelas que se
concentram em dispositivos móveis e Big Data. Segundo Silva (2020), quando se
pensa em computação em nuvem, imagina-se grandes servidores em data centers
de última tecnologia com grande quantidade de dados (Big Data) que vem
provendo os mais variados serviços, como e-mail, armazenamento de arquivos e
soluções em gerais. Contudo, objetivamente, a base da computação em nuvem é o
fato de existir algum serviço disponível na internet, por meio de um computador
interligado a outros pela internet para realizar um ou vários tipos de serviços.

55
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

Construir aplicativos é uma tarefa desafiadora. Atualmente, muitas


empresas surgiram oferecendo serviços de Big Data baseados em nuvem para
ajudar outras empresas e organizações a resolver seus dilemas relacionados
a dados. Existem muitos smartphones e celulares, além de tablets, com
recursos que requerem personalizações para que a interface do usuário seja
renderizada corretamente. As empresas e usuários costumam pagar para que
os desenvolvedores criem uma versão para iOS, outra para Android, outra para
iPad e assim por diante.

Segundo Kavis (2014), com a Big Data, agora somos capazes de processar
enormes quantidades de dados e produzir resultados acionáveis ​​mais rapidamente
do que nunca. Os avanços nessa área estão produzindo melhor conhecimento a
respeito dos clientes e informações em tempo real dos dispositivos conectados
à Internet, como a saúde de um carro ou um motor de avião, e facilitando a
descoberta de padrões em dados como nunca antes.

O desafio é que é bastante complicado configurar e gerenciar os bancos


de dados e a infraestrutura necessários para solucionar problemas de Big Data.
Estão surgindo soluções PaaS de Big Data que tiram a ciência da configuração e
gerenciamento desses ambientes complexos. À medida que essas soluções da PaaS
começam a amadurecer, qualquer empresa poderá implementar uma solução de
Big Data aproveitando um serviço de nuvem pré-pago, em vez de investir muito
tempo, dinheiro e recursos tentando descobrir por si próprios (KAVIS, 2014).

Justifica então este mesmo autor que são essas soluções da PaaS que
automatizam problemas específicos e complexos que farão uma enorme diferença
no tempo de colocação no mercado no futuro. As empresas poderão aproveitar
várias soluções de PaaS para criar rapidamente novos produtos e serviços com
recursos limitados de funcionários e ilimitados. Portanto, o PaaS ainda está na
fase de maturidade e ainda não é amplamente adotado.

Cresce o número de empresas que utilizam PaaS disponibilizando


aplicativos da nuvem e executando análises de Big Data. Por exemplo, na
T-Systems (2020), o produto PaaS Big Data coleta e filtra dados de diferentes
origens, como:

[...] das redes sociais, Internet das Coisas, Internet Industrial,


comunicação entre máquinas ou processos. Para o gerenciamento de
dados, o AppAgile aposta em plataformas de Big Data como Hadoop,
NoSQL ou In-Memory. Quantidades grandes de dados são agregadas
em um Data Lake. A avaliação dos dados é realizada por meio de
análises avançadas e preditivas, análise estatística ou mineração.
PaaS Big Data está disponível na Open Telekom Cloud, DSI vCloud
(VMware), assim como na plataforma Microsoft Azure. Dessa maneira,
também é possível implementar cenários híbridos na área de Big Data.

56
TÓPICO 3 — PLATAFORMA COMO SERVIÇO PAAS

[...]
Com base na plataforma de contêiner Red Hat OpenShift, a plataforma
como serviço gerenciada Azure Hybrid da T-System está disponível a
partir da Microsoft Cloud da Alemanha e globalmente como oferta
modular de plataforma como serviço. Na Microsoft Cloud Alemanha,
os serviços Azure são disponibilizados de data centers alemães e os
dados dos clientes são processados e armazenados exclusivamente no
país. O acesso aos dados dos clientes fica nas mãos do administrador
de dados de confiança, a T-Systems. Sem a autorização da empresa
ou do cliente, a Microsoft não obtém acesso. Por meio da abordagem
híbrida do AppAgile, os clientes podem combinar aplicativos privados
e de dados críticos com ofertas da nuvem pública e, mesmo assim,
manter o controle total sobre seus dados (T-SYSTEMS, 2020, s.p.).

Assim como a Plataforma como um Serviço (PaaS), Software como um


Serviço (SaaS) e Infraestrutura como um Serviço (IaaS) cresceram ao longo dos
anos, o Big Data como Serviço (BDaaS) também cresceu nas empresas devido aos
desafios envolvendo o aumento da geração de dados e a necessidade de fazer
análises precisas para a tomada de decisão. Segundo 2Cloud (2018), algumas
vantagens de adotar o Big Data as a Service além da simplicidade, segurança
e produtividade está o baixo custo de implementação e gerenciamento e a
escalabilidade que adapte a capacidade de armazenamento e processamento
facilmente.

6 PLATAFORMAS DE PAAS
O fornecedor de um PaaS, em geral, oferece uma variedade de ferramentas
e utilitários para dar suporte ao design, à integração, ao teste, ao monitoramento
e à implantação do aplicativo. Dão suporte para colaboração entre pessoas,
gerenciamento de dados, teste, pilhas de serviços, autenticação, monitoramento
de performance, serviços de mensagens e componentes de interface, tudo de forma
on-line com uma mega infraestrutura tecnológica e de maneira transparente e
flexível (OLIVEIRA, 2020). Em alguns casos, o provedor de PaaS é executado em
cima da infraestrutura de outro provedor, por exemplo, Heroku e Engine Yard
são executados na Amazon Web Services - AWS.

Exemplos de serviços fornecidos como plataformas: são 1) Arcabouços


de execução; 2) Gerenciadores de bancos de dados; 3) Servidores Web e 4)
Ferramentas de desenvolvimento etc. Nesta seção, apresentaremos alguns
exemplos de plataformas como Serviços utilizadas no mercado.

6.1 AWS ELASTIC BEANSTALK


Segundo a Amazon Web Services (AWS), o AWS Elastic Beanstalk é um
serviço de fácil utilização para implantação e escalabilidade de aplicações e
serviços da web desenvolvidos com Java, .NET, PHP, Node.js, Python, Ruby, Go
e Docker em servidores familiares como Apache, Nginx, Passenger e IIS.

57
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

Os custos de manter um website utilizando Elastic Beanstalk podem


variar de acordo com diversos fatores, tais como o número de instâncias
do Amazon EC2 necessárias para controlar o tráfego de seu website,
a largura de banda utilizada por seu aplicativo e qual banco de dados
ou opções de armazenamento seu aplicativo utiliza (AWS, 2020a, s.p.).

O AWS Elastic Beanstalk é um serviço que oferece ampla seleção de


plataformas de aplicativos com uma variedade de opções de implantação do seu
código por meio do Console de Gerenciamento da AWS, da interface da linha de
comando do Elastic Beanstalk, do Visual Studio e do Eclipse (AWS, 2020b). Ele
realiza monitoramento através de diversas métricas e atributos garantindo sua
integridade, escalabilidade, personalização e conformidade com diversas normas
internacionais a ISSO, entre outras.

DICAS

Recomendamos a leitura no tutorial completo com perguntas frequentes


a respeito do AWS Elastic Beanstalk, disponível no endereço: https://aws.amazon.com/
pt/elasticbeanstalk/faqs/, bem como o Guia do desenvolvedor do AWS Elastic Beanstalk,
disponível em: https://docs.aws.amazon.com/pt_br/elasticbeanstalk/latest/dg/awseb-dg.
pdf#GettingStarted.

6.2 WINDOWS AZURE PLATFORM (WAP)


A plataforma Windows Azure (WAP) da Microsoft foi apresentada em
2008, lançada em 2010 e renomeada para Microsoft Azure em 2014. É composto
por um sistema operacional, um conjunto de serviços de suporte e integração
com outros serviços como Dropbox, Google Apps e Salesforce. Esta plataforma
fornece dimensionamento, balanceamento de carga e vários serviços de suporte,
como identidade e autenticação, criptografia de mensagens, monitoramento e
gerenciamento (OLIVEIRA, 2020).

Segundo Oliveira (2020), o WAP é desenvolvido como um PaaS primário,


no qual os usuários gerenciam suas hospedagens e a escala de aplicações web em
data centers da corporação, o que inclui algumas características do módulo de
IaaS. Ele utiliza uma combinação de tecnologia web, como REST, HTTP E XML,
integrada à ferramenta Visual Studio, o que possibilita que os desenvolvedores
criem serviços que contenham a framework .NET.

Existem dois modelos de assinatura, um pré-pago e outro pós-pago,


pagando somente pelo serviço que precisa, baseado na sua demanda de
computação e armazenamento, além da capacidade de investimento que o cliente

58
TÓPICO 3 — PLATAFORMA COMO SERVIÇO PAAS

quer fazer. Seus principais serviços são: máquinas virtuais, gerenciamento de redes,
aplicações em nuvem, armazenamento e backup, storSimple (armazenamento
simplificado), automatização de processos, Streamings de vídeo, ao vivo ou
sob demanda, Contêineres, Bancos de dados SQL, Análise de dados com IA e
Machine Learning, IoT (SOFTLINE, 2017).

A WAP funciona como um apoio tecnológico ao negócio e sua estrutura


serve para coleta e gerenciamento de dados, sendo uma fonte inesgotável de
insights para novas estratégias. Segundo Softline (2017), sua capacidade de lidar
com Big Data, data mining e data lake cria oportunidades de incluir Business
Intelligence tanto no atendimento ao cliente quanto na otimização de custos e
gestão financeira da empresa.

O Azure possui várias opções para deploy de aplicações para


desenvolvedores, incluindo App Services, Cloud Services, Service Fabric,
Container Service, Functions, Batch, WebJobs e muito mais. Independentemente
do tipo de aplicação que se está desenvolvendo, a Microsoft possui excelentes
ferramentas para ajudar a implementá-lo e dimensioná-lo (COSTA, 2017).

DICAS

Para obter maiores informações das soluções e produtos de Azure, favor


acessar o portal da Microsoft Azure pelo link: https://azure.microsoft.com/pt-br/.

DICAS

Recomendamos acessar o guia completo de tudo que você precisa saber


sobre o WAP. Disponível no endereço: https://brasil.softlinegroup.com/sobre-a-empresa/
blog/microsoft-azure-o-guia-completo-de-tudo-que-voce-precisa-saber.

59
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

6.3 HEROKU
Segundo Pacheco (2020, s.p.): “A Heroku é uma plataforma na nuvem
que faz deploy de várias aplicações back-end seja para hospedagem, testes em
produção ou escalar as suas aplicações, tem integração com o GitHub, deixando
o uso mais fácil e com containers denominados Dyno”.

É uma solução que abstrai o desenvolvedor dos detalhes de infraestrutura


ao disponibilizar containers para instalação das aplicações, facilitando a
manutenção, extensão e escalabilidade, além de oferecer maior agilidade para
disponibilizar uma aplicação na web, com menor custo inicial. Atualmente, o
Heroku suporta Ruby, Java, Clojure, Python, Scala e Node e possui um parque de
mais de três milhões de aplicações instaladas (STORI, 2013).

O Heroku é composto por mais de 140 complementos, que vão desde


alertas e notificações a bancos de dados, ferramentas de análise ou serviços
de segurança para monitoramento, cache, e-mail ou rede. Muitos desses
complementos, inclusive, são hospedados na AWS (COSTA, 2017). Ele é muito
prático, ele elimina toda a complexidade de preparação e configuração de
infraestrutura e disponibiliza de forma prática tudo o que um desenvolvedor
necessita, o desenvolvedor precisa apenas se preocupar em fazer o que foi
contratado, ou seja, código.

Segundo Costa (2017), a plataforma do Heroku remove todo o trabalho de


instalar qualquer software disponível em seu ecossistema, não há preocupações
por parte do desenvolvedor com aspectos relacionados à manutenibilidade,
monitoramento e atualizações de versões necessárias para as tecnologias
utilizadas em um projeto. Este é um dos motivos pelo qual o Heroku é sugerido
em muitos tutoriais e artigos disponíveis na Internet. Ele simplesmente funciona
e permite que tenhamos rapidamente uma aplicação web disponível para o
mundo em poucos minutos. E eles também oferecem uma cota gratuita, com
claras limitações, tornando-se uma ótima opção para testar seu aplicativo.

DICAS

Quer saber o que é e como funciona o Keruko? Acesse o endereço: https://


blog.geekhunter.com.br/heroku/.

60
TÓPICO 3 — PLATAFORMA COMO SERVIÇO PAAS

DICAS

Para não ficar apenas na teoria, acesse o site que demonstra como criar uma
aplicação Java simples sem o auxílio de plugins, e como instalar, no Heroku, usando o
Heroku Toolbelt baseado em templates e um plugin para o Eclipse. Disponível em: https://
www.devmedia.com.br/primeiros-passos-em-paas-com-heroku/29465

6.4 FORCE.COM
O Force.com é uma plataforma corporativa oferecida pelo Salesforce para
ajuda os fornecedores de serviços a desenvolver e fornecer aplicativos estáveis,
seguros e escaláveis. Duas principais tecnologias ativadoras do Force.com são
multilocação e metadados (FURHT; ESCALANTE, 2010).

Explicam estes autores que a abordagem de multilocação permite


que diferentes usuários compartilhem modelos de aplicativos em um pool de
recursos de computação física pública, enquanto as instâncias de aplicativos são
independentes umas das outras. Para aplicativos personalizados, existe uma
arquitetura orientada a metadados que gera componentes de aplicativos. Outras
tecnologias e serviços da plataforma Force.com incluem infraestrutura de entrega
de serviços, banco de dados, serviços lógicos, interfaces de usuário e ferramentas
de desenvolvedor.

Segundo Veras (2015), o Force.com foi a primeira plataforma PaaS


desenvolvida para criar aplicações SaaS multilocação. Aplicações dedicadas
único local requerem um conjunto de recursos para satisfazer a uma organização.
Aplicações multilocação podem satisfazer às necessidades de múltiplos locatários
(companhias, ou mesmo departamentos dentro das companhias) usando recursos
de hardware e funcionários necessários para gerenciar uma instância única de
software.

Operar só uma instância da aplicação para múltiplas organizações dá uma


grande economia de escala para o provedor. Somente um conjunto de hardware é
necessário para atender às necessidades dos usuários. Um conjunto de hardware
pode atender a todos os usuários, em um staff experimentado mais reduzido
pode gerenciar todo montante de software. Os desenvolvedores podem construir
um único código em uma só plataforma (VERAS, 2015).

61
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

6.5 GOOGLE APP ENGINE


O Google App Engine (GAE) é uma PaaS que permite que sejam executados
serviços na infraestrutura do Google. Possui ambiente de desenvolvimento para
as linguagens Java™, PHP, Node.js, Python, C#, .Net, Ruby e Go em entre várias
bibliotecas e frameworks conhecidos que fornecem uma máquina virtual, uma
interface Servlets e serviços de armazenamento de dados (SILVA, 2017).

O GAE mantém um ambiente de programação runtime (em tempo de


execução), além de algumas APIs simples para acessar os serviços do Google onde
os front-ends espalham solicitações HTTP com estratégias de balanceamento de
carga e roteamento com base no conteúdo. Os sistemas runtime em execução
nos servidores de aplicativos lidam com o processamento lógico dos aplicativos
e fornecem conteúdo dinâmico da Web, enquanto as páginas estáticas são
atendidas pela infraestrutura compartilhada do Google. Para dissociar os dados
persistentes dos servidores de aplicativos, o GAE os coloca no armazenamento de
dados em vez de em um sistema de arquivos local (FURHT; ESCALANTE, 2010).

O portal Google Cloud (2020a) destaca que pelo GAE é possível criar
aplicativos altamente escalonáveis em uma plataforma totalmente gerenciada
e sem servidor, o que significa que faz o escalonamento sem interrupções em
pequena ou grande escala sem se preocupar com o gerenciamento da infraestrutura
subjacente utilizando linguagens e ferramentas open source conhecidas. O GAE
permite criar e depurar o código-fonte na produção e executar, o back-ends de
API com facilidade por meio das ferramentas mais usadas do setor, como o SDK
do Cloud, Cloud Source Repositories, IntelliJ IDEA, Visual Studio e PowerShell.
Proteja seus aplicativos contra ameaças usando os recursos de firewall do App
Engine, regras de gerenciamento de identidade e acesso (IAM) e certificados
gerenciador SSL/TLS. E por fim só pagando os serviços e recursos utilizados
(GOOGLE CLOUD, 2020a).

DICAS

Sugiro uma boa leitura no artigo O que é o App Engine e como publicar uma
aplicação nele disponível no endereço: https://www.treinaweb.com.br/blog/o--e-o-app-
engine-e-como-publicar-uma-aplicacao-nele/ contendo uma boa explicação além dé
ótimos vídeos de sua utilização.

62
TÓPICO 3 — PLATAFORMA COMO SERVIÇO PAAS

DICAS

No portal da DevMedia há um artigo que traz uma rápida introdução à cloud


computing e as possibilidades de desenvolvimento neste modelo utilizando o Google App
Engine e que apresenta um guia como fazer a criação de um aplicativo Java na “nuvem”
utilizando esta plataforma. Disponível em: https://www.devmedia.com.br/introducao-ao-
google-app-engine/24552.

6.6 APACHE STRATOS


O Apache Stratos é uma estrutura PaaS altamente extensível que pode
executar aplicativos Apache Tomcat, PHP e MySQL, oferece serviço, governança,
segurança e desempenho de nível corporativo para nuvens privadas, públicas
e híbridas (VAUGHAN-NICHOLS, 2014). A Apache afirma que "pode ​​ser
estendida para oferecer suporte a muito mais ambientes em todas as principais
infraestruturas de nuvem. Para os desenvolvedores, fornece um ambiente baseado
em nuvem para desenvolvimento, teste e execução de aplicativos escaláveis.
Os provedores de TI se beneficiam de altas taxas de utilização, gerenciamento
automatizado de recursos e informações em toda a plataforma, incluindo
monitoramento e cobrança (VAUGHAN-NICHOLS, 2014).

Segundo Haddad (2014), o Apache Stratos é usado pelas principais


organizações que constroem ecossistemas conectados nas indústrias aeroespacial,
de telecomunicações e de construção. Por exemplo, a iniciativa de linha aérea
digital da Boeing, que está reinventando a logística da cadeia de suprimentos,
é alimentada por Apache Stratos (incubadora). Os principais fornecedores de
infraestrutura de rede estão integrando o Apache Stratos e fornecendo serviços
avançados de telecomunicações à sua base de clientes, mantendo a confiabilidade
e a disponibilidade da classe de telecomunicações sob carga máxima. Um
fornecedor de equipamentos de construção e engenharia está construindo uma
solução em nuvem com vários inquilinos que pode adaptar políticas e regras a
nichos de mercado específicos (VAUGHAN-NICHOLS, 2014).

A arquitetura Apache Stratos nativa da nuvem fornece técnicas e negócios


exclusivos, incluindo, de acordo com Haddad (2014):

• Modelo do cartucho: traz infraestrutura herdada para a nuvem e cria contêineres


com reconhecimento de nuvem que hospedam serviços de infraestrutura e
lógica de negócios. Criando um cartucho ou escolhendo opções pré-construídas,
as equipes podem implantar facilmente o software tradicional da plataforma de
aplicativos em um ambiente PaaS gerenciado. O modelo de cartucho permite
a extensibilidade do tempo de execução e o suporte poliglota para qualquer
linguagem de programação, estrutura de plataforma ou servidor desejado.

63
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

• Multilocação no contêiner: o Apache Stratos oferece suporte à multilocação


dentro do contêiner, que otimiza a utilização de recursos, reduz a área ocupada
por inquilinos e oferece suporte eficiente às implantações de PaaS que atendem
a bases de clientes em larga escala (centenas de milhares ou milhões de
inquilinos).
• Escalonamento automático de carga com base no tráfego http e não http: A
arquitetura Apache Stratos suporta o dimensionamento automático baseado
em http e não http. O Apache Stratos PaaS monitora a integridade da nuvem,
analisa tendências de uso e provisiona dinamicamente os recursos da nuvem
com base na carga atual e futura.
• Integração personalizada do Load Balancer e roteamento de nuvem híbrida:
O Apache Stratos (incubação) inclui um balanceador de carga nativo da nuvem
e algoritmos de balanceamento de carga com reconhecimento de política que
analisam o tráfego por inquilino, serviço e partição. A estrutura PaaS também
se integrará a qualquer balanceador de carga de terceiros e balanceadores
de tráfego em nuvem híbridos externos por meio de um componente do
intermediário de mensagens. A estrutura PaaS escalará automaticamente
as instâncias da nuvem em um ambiente híbrido diversificado, enquanto as
respectivas políticas de qualidade de serviço.

6.7 OPENSHIFT
Segundo Oveo (2020), o container Cloud OpenShift é uma solução PaaS
baseada em Docker, na qual você contrata recursos computacionais e distribui
em containers, selecionando as linguagens e bancos de dados necessários para
a aplicação e escalando conforme a demanda de acessos de forma manual ou
automatizada. Oferece suporte para Node.js, Ruby, Python, PHP, Perl e Java
realiza solução mais inteligente para automatizar deploys de aplicações que
rodam em máquinas (gears) compostas de serviços chamados de cartuchos
(cartridges). É uma plataforma de utilização simples, poupando tempo e esforço
de desenvolvimento em um ambiente virtual isolado para testar, distribuir,
desenvolver e escalar aplicações (OVEO, 2020).

Nextios (2017) afirma que containers são uma nova forma de abstração de
infraestrutura que está conquistando muito espaço na comunidade desenvolvedora
graças a sua praticidade, portabilidade e, especialmente, economia de recurso,
ou seja, um container é semelhante a uma VM, sigla do inglês Virtual Machine,
ou máquina virtual: uma abstração para encapsular aplicações em ambientes
isolados.

Nextios reforça ainda que uma grande vantagem dos containers no


OpenShift é a portabilidade, que trata do serviço é encapsulado com tudo
necessário para sua execução e, com isso, rodará tão bem no notebook do
desenvolvedor quanto no ambiente de produção da empresa. Essa característica
reduz o trabalho de reconfigurações e elimina incompatibilidades inconvenientes
que poderiam retardar o lançamento de uma aplicação.

64
TÓPICO 3 — PLATAFORMA COMO SERVIÇO PAAS

Muitas vezes durante o desenvolvimento de uma aplicação, os seus


criadores utilizam tecnologias diferentes para os múltiplos serviços dela,
especialmente quando é adotada uma arquitetura de microsserviços. Um exemplo
prático é um site em PHP com base em MySQL. Do ponto de vista técnico, integrar
essas duas tecnologias até que não é tão difícil assim, mas no OpenShift basta
executar um conteiner com uma imagem com PHP e MySQL e pronto. Nenhum
problema de compatibilidade, nenhuma configuração extra. Surgiu a necessidade
de incluir algo como phpMyAdmin, por exemplo? Só carregar mais um conteiner
(NEXTIOS, 2017).

E para acelerar ainda mais o começo do desenvolvimento de um projeto,


o OpenShift oferece uma ampla gama de Web Framework Quickstart Templates,
que permitem que os desenvolvedores, em um clique, instalem frameworks como
o cakePHP, o Rails, Django entre outros (NEXTIOS, 2017).

NOTA

Para saber O que é OpenShift e como ele funciona, acesse o endereço: http://
blog.locawebcorp.com.br/solucoes/o-que-e-openshift-e-como-ele-funciona/.

6.7.1 Red Hat OpenShift


Segundo RedHat (2020), o Red Hat OpenShift é uma plataforma de
aplicações em container que inclui um sistema operacional Linux para empresas,
um ambiente de execução em container, rede, monitoramento, registros e soluções
de autenticação e autorização. Clientes como a rede de hotéis Hilton, usam o Red
Hat OpenShift para configurar soluções de PaaS para o uso por desenvolvedores
internos.

Enfim, o PaaS mais pesquisado no mercado é o Red Hat OpenShift,


que combina os poderes do Docker e Kubernetes com um sistema de controle
prático próprio para empresas. O Red Hat OpenShift no Azure oferece uma
implantação de autoatendimento flexível de clusters OpenShift totalmente
gerenciados. Mantenha a conformidade regulatória e o foco no desenvolvimento
de aplicativos, enquanto o patch dos seus nós mestres, de infraestrutura e de
aplicativo é aplicado e eles são atualizados e monitorados pela Microsoft e pela
Red Hat. Permite escolher seu próprio Registro, rede, armazenamento ou soluções
CI/CD. Ou comecar imediatamente usando soluções internas com gerenciamento
de código-fonte automatizado, builds de contêiner e de aplicativo, implantações,
dimensionamento, gerenciamento de integridade e mais (MICROSOFT AZURE,
2020).

65
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

Com esta PaaS você pode automatizar o gerenciamento do ciclo de vida


para ter mais segurança, soluções operacionais personalizadas e portabilidade de
aplicações. Você também pode padronizar os fluxos de trabalho de desenvolvedor,
otimizar a entrega, oferecer compatibilidade com vários ambientes e viabilizar a
integração contínua com controle automático de versões. O Red Hat Marketplace
oferece implantação automatizada de aplicações certificadas em qualquer cluster
do Red Hat OpenShift. Além disso, o Red Hat OpenShift prioriza a segurança,
conta com uma plataforma de Kubernetes com suporte e inclui consultoria e
treinamento oferecidos por especialistas para os clientes que precisam de mais
ajuda (REDHAT, 2020).

DICAS

Para saber mais a respeito do Red Hat OpenShift, disponibilizado no Azure da


Microsoft acesse: https://www.infoq.com/br/news/2018/07/azure-openshift-managed-k8s/

6.8 IBM
Para Shinya (2018), a plataforma cloud da IBM une Platform-as-a-
Service (PaaS), Infrastructure-as-a-Service (IaaS), Software-as-a-Service (SaaS) e
Function-as-a-Service (FaaS) em um catálogo com mais de 170 serviços, da IBM e
terceiros. Atualmente o serviço de Serverless na IBM Cloud suporta as seguintes
linguagens: Node.js, Swift, Java, Python, Ruby, Golang, PHP, .NET e qualquer
outra linguagem suportada pelo Docker (como Rust, C, C++ e outros).

Os únicos pré-requisitos para obter este PaaS é ter uma conta na IBM
Cloud e baixar e instalar como usuário Windows. Segundo IBM (2020), o IBM
Cloud™ oferece suporte a mais de 1.000 clientes corporativos e mais de 19.000
clusters de produção que usam Kubernetes. É fácil de se conectar e migrar por
meio da implementação sob demanda de um ambiente gerenciado Red Hat®
OpenShift® e com o nosso comprometimento com o ecossistema Red Hat.  

A IBM Cloud Education (2019) informa que a PaaS oferecida pela IBM é rica
e escalável para desenvolver aplicativos nativos de nuvem do zero ou modernizar
aplicativos existentes para se beneficiar da flexibilidade e escalabilidade da
nuvem. Os serviços incluem o IBM Cloud Kubernetes Service, uma solução de
orquestração de contêiner totalmente gerenciada; Red Hat OpenShift no IBM
Cloud; IBM Cloudant e IBM Cloud Databases para PostgreSQL; e muito mais. O
IBM Cloud Foundry é a versão da IBM do PaaS de código aberto para construção,
teste, implementação e dimensionamento de aplicativos. E a plataforma IBM
Watson permite implantar aplicativos de IA onde quer que seus dados residam -
em qualquer nuvem ou em sua própria plataforma de nuvem privada.
66
TÓPICO 3 — PLATAFORMA COMO SERVIÇO PAAS

6.9 JELASTIC
Segundo Oliveira (2020), a solução de hospedagem Jelastic compete
diretamente com a Amazon, a Google e a Microsoft com uma plataforma
sofisticada que fornece aos usuários finais uma poderosa PaaS com recursos que
ultrapassaram os da concorrência. O Jalastc fornece aos desenvolvedores suporte
à linguagem em Java, PHP, Ruby, Node.js e Python.

O Jelastic é uma plataforma de fácil implementação com automação


devOps para unificar e automatizar o gerenciamento da infraestrutura em
nuvem sendo altamente escalável sob demanda das empresas e clientes. Possui
capacidade de implantar e gerenciar cargas de trabalho em nuvem pública,
privada e híbrida ou multi-nuvem em mais de 70 data centers locais e no topo
de nuvens de hiperescala como AWS, Google Cloud, Azure ou Digital Ocean,
portanto com alta disponibilidade nos níveis de aplicativos e infra bem como alta
interoperabilidade multi-nuvem de fácil migração e digitalização para a nuvem.

67
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

LEITURA COMPLEMENTAR

CLOUD COMPUTING E SUA UTILIDADE PARA EMPRESAS EM TEMPOS


DE PANDEMIA

Adentro

Por conta das medidas sanitárias recomendadas pela OMS, muitas


empresas estão de portas fechadas por tempo indeterminado. Nesse contexto, o
uso de tecnologias que permitam o trabalho remoto é fundamental. Uma delas é
a cloud computing.

De fato, o número de postos de trabalho em home office aumentou


exponencialmente, levando a uma maior demanda de serviços de cloud. Somente
a Microsoft relata um aumento de 775% na procura pelo serviço.

Com o intuito de falar mais desse assunto, explicamos como a cloud


computing para empresas pode ser útil no contexto da pandemia de COVID-19.

Mais acessibilidade às informações com cloud computing

Uma das utilidades mais evidentes da cloud computing para as empresas


que aderiram ao home office durante a pandemia é a acessibilidade remota às
informações, como contatos de clientes e fornecedores.

Em um único local, todos os colaboradores podem acessar os dados que


precisam para realizar suas rotinas e manter as atividades da empresa.

Sem a cloud computing isso seria impossível, haja vista que as informações
estariam centralizadas na empresa, não possibilitando o trabalho remoto.

Ademais, os dados em cloud podem ser acessados a qualquer momento,


de qualquer dispositivo conectado à internet.

68
TÓPICO 3 — PLATAFORMA COMO SERVIÇO PAAS

Mais integração entre as equipes durante a pandemia

Quando as ferramentas de comunicação via web começaram a surgir,


muitos viram com maus olhos o que viria a ser um fator que contribuiria para a
desumanização e o distanciamento das relações.

Hoje em dia, vemos que é justamente o contrário. Por exemplo, as soluções


de videoconferência em cloud computing permitem que sejam feitas reuniões
com as equipes de trabalho, mantendo o contato entre os colaboradores.

Dessa forma, torna-se possível comunicar novas orientações, dar feedbacks


e compartilhar resultados, sem perder de vista a comunicação visual.

Durante a pandemia, com a imposição do isolamento social, essa


ferramenta se tornou fundamental.

Por isso mesmo, houve um crescimento abrupto da procura por esse


serviço. Para se ter uma ideia da adesão às ferramentas de videoconferência,
somente o Google registrou um aumento de 60% do uso diário do Google Meet.

Redução de custos com TI

Manter uma estrutura de informações na empresa não somente


impossibilita o trabalho remoto, como também pode ser muito oneroso.

No contexto pelo qual passamos, isso significa, ainda, ter que manter os
altos custos com TI, mesmo com a empresa de portas fechadas.

Ao contrário, ao adotar a cloud computing, é possível cortar os gastos


com a manutenção das estruturas e hardwares, além de evitar os custos com a
contratação de equipes de TI.

De acordo com uma pesquisa realizada pela IDC, 77% das empresas que
investiram em cloud conseguiram diminuir os custos com sua estrutura de TI.

“É importante dizer que uma das vantagens da cloud computing é o


fato de a contratação desse serviço ter um custo bastante acessível, mesmo para
empresas de menor porte”.

Além disso, a manutenção de data center, hardware e equipe passam a ser


de responsabilidade do serviço contratado.

Cloud: mais flexibilidade para se adaptar a novas situações

69
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING

Escalabilidade

Com certeza, as empresas que adotaram aplicações de cloud computing


antes da pandemia saíram na frente quando a questão é adaptação ao novo
contexto.

De fato, sabemos que muitos empreendimentos podem ter sofrido com a


diminuição da demanda e, consequentemente, das receitas.

Nesse caso, a contração de um serviço de cloud possibilita a adaptação à


estrutura utilizada em apenas alguns minutos.

Redução de custos com flexibilização de estrutura

Além disso, é possível reduzir ou aumentar a estrutura sem a necessidade


de mobilizar uma equipe e investir em novos componentes de hardware.

Em outras palavras, usar a cloud computing evita os custos da realização


dessa operação pelos meios tradicionais, a qual exige dinheiro, tempo e um
planejamento prévio.

Planos sob medida

A maioria dos serviços de cloud computing conta com planos que atendem
a empresas de diversos portes.

Há, ainda, alguns serviços de cloud que oferecem a seus clientes a


possibilidade de personalizar pacotes, de maneira a pagar somente pelas soluções
que desejam utilizar.

Utilizando softwares na pandemia por meio de cloud computing

A utilização de um software é fundamental para que se possa manter as


operações de uma empresa por meio do trabalho remoto.

Nesse sentido, a cloud computing permite o uso de softwares sem a


necessidade de se adquirir uma licença.

Explicando de outra forma, com o SaaS (“Software como Serviço”), é


possível usar um software on-line, sem a necessidade de se fazer configurações
ou instalações de programas.

Cloud computing: uma tecnologia fundamental para empresas na pandemia

Como você mesmo pôde perceber a partir da leitura desse artigo, contratar
esse tipo de serviço têm diversas utilidades para as empresas que foram obrigadas
a interromper suas atividades e adotar o home office.

70
TÓPICO 3 — PLATAFORMA COMO SERVIÇO PAAS

Isso porque a cloud computing permite o acesso remoto a informações da


empresa, além de possibilitar o contato com as equipes e a utilização de softwares
para a realização das operações.

FONTE: <https://adentrocloud.com.br/cloud-computing-utilidade-na-pandemia/>. Acesso em:


18 set. 2020.

71
RESUMO DO TÓPICO 3

Neste tópico, você aprendeu que:

• A PaaS trata-se de uma plataforma de computação integrada para


desenvolver aplicações sem que seja preciso instalar qualquer ferramenta de
desenvolvimento e bibliotecas.

• Oferece um conjunto de soluções como um serviço, compreendendo o ciclo de


desenvolvimento, teste, implantação, e até mesmo hospedagem de aplicações
na nuvem.

• Fornece uma ampla variedade de linguagens de programação para os


desenvolvedores de aplicativos, um framework de aplicativos, a comunicação
dos aplicativos por bancos de dados e muitas outras ferramentas.

• O cliente não precisa manipular a infraestrutura necessária para que uma


aplicação seja desenvolvida, como servidores, sistemas operacionais, sistemas
de armazenamento de dados e rede.

• As características essenciais que tornam o PaaS exclusivo são obter todos


os recursos de em um só lugar, obter acesso da web à plataforma de
desenvolvimento, obter acesso off-line, obter escalabilidade integrada,
plataforma colaborativa e diversas ferramentas de cliente.

• As três principais desvantagens da PaaS são o bloqueio de fornecedores pela


falta de padrões comum entre diferentes provedores de PaaS, a falta de política
de segurança em servidores de terceiros e a pouca flexibilidade e suporte a
serviços de banco de dados e ferramentas de suporte à programação.

• Uma das métricas mais usadas para definir a cobrança do PaaS é a largura de
banda consumida, quantidade específica de recursos de utilização da CPU por
solicitação e a quantidade de dados armazenados que um usuário específico
está consumindo.

72
• As soluções da PaaS que causam um grande impacto são aquelas que se
concentram em dispositivos móveis e Big Data realizando a análises dos dados.

• Os principais exemplos de Plataformas de PaaS são: AWS Elastic Beanstalk,


Windows Azure Plataform (WAP), Heroku, Force.com, Google App Engine,
Apache Stratos, OpenShift, IBM e Jelastic.

CHAMADA

Ficou alguma dúvida? Construímos uma trilha de aprendizagem


pensando em facilitar sua compreensão. Acesse o QR Code, que levará ao
AVA, e veja as novidades que preparamos para seu estudo.

73
AUTOATIVIDADE

1 A Cloud Computing, ou computação em nuvem, pode ser entendida como


um serviço, em que empresas não precisam possuir uma infraestrutura de
datacenter local, podendo utilizar plataformas em nuvem. Defina o que é e
como funciona Plataforma como um Serviço (PaaS).

2 A computação em nuvem permite que empresas deixem de possuir um


datacenter para manter armazenar seus dados, evitando gastos com
infraestrutura de servidor, permitindo que faça o mesmo com custo mais
baixo. Qual é a importância da PaaS no cenário de Big Data?

3 A PaaS na nuvem oferece um modelo de computação, armazenamento e


comunicação para as aplicações acessado pelos clientes na nuvem. Cite três
exemplos práticos de provedores PaaS e que serviços cada um oferecem.

4 Entre os modelos de computação em nuvem, a PaaS é o mais indicado,


pois, inclui infraestrutura de armazenamento e de rede e ferramentas de
desenvolvimento. No que tange às definições de PaaS, analise as sentenças
a seguir.

I- Permite que uma aplicação seja implantada e distribuída sem que seja
preciso se preocupar com as camadas de hardware e software necessárias.
II- Seu ambiente de execução é controlado somente pelo fornecedor do serviço
sem a colaboração entre desenvolvedores do cliente.
III- Oferece um modelo arquitetural padronizado para as aplicações.
IV- Não fornece um sistema operacional, linguagens de programação e
ambientes de desenvolvimento para as aplicações.

Referente à Plataforma como um serviço (PaaS), assinale a alternativa


CORRETA:
a) ( ) As sentenças II e III estão corretas.
b) ( ) As sentenças I, II e IV estão corretas.
c) ( ) As sentenças I e III estão corretas.
d) ( ) As sentenças II, III e IV estão corretas.

5 A PaaS trata-se de uma plataforma para desenvolver aplicações sem que


seja preciso instalar qualquer ferramenta de desenvolvimento e bibliotecas.
Referente a computação em nuvem, analise as sentenças a seguir:

I- O cliente não precisa manipular a infraestrutura necessária para que uma


aplicação seja desenvolvida, como servidores, sistemas operacionais,
sistemas de armazenamento de dados e rede.
II- A falta de padrões comum entre diferentes provedores de PaaS e as
tecnologias proprietárias usadas pelos provedores de PaaS não são motivos
de bloqueio de fornecedores PaaS.
74
III- A maioria dos serviços de PaaS não oferece recursos automatizados de
teste e implantação.

Assinale a alternativa CORRETA:


a) ( ) As sentenças I e II estão corretas.
b) ( ) As sentenças I e III estão corretas.
c) ( ) Somente a sentença II está correta.
d) ( ) Somente a sentença III está correta.

75
REFERÊNCIAS
2CLOUD. Big data e analytics: como a computação em nuvem pode ajudar?
c2018. Disponível em: https://www.2cloud.com.br/big-data-e-analytics-como-a-
computacao-em-nuvem-pode-ajudar/. Acesso em: 20 jul. 2020.

APACHE STRATOS. Apache Stratos. c2017. Disponível: https://stratos.apache.


org/. Acesso em: 22 jul. 2020.

ARTSOFT SISTEMAS. IaaS, SaaS e PaaS no conceito de cloud computing.


2018. Disponível em: https://www.artsoftsistemas.com.br/blog/iaas-saas-e-paas-
no-conceito-de-cloud-computing/. Acesso em: 13 jul. 2020.

AWS. Definição de preço do AWS Elastic Beanstalk. c2020a. Disponível em:


https://aws.amazon.com/pt/elasticbeanstalk/pricing/#:~:text=Os%20custos%20
de%20manter%20um,op%C3%A7%C3%B5es%20de%20armazenamento%20
seu%20aplicativo. Acesso em: 13 jul. 2020.

AWS. Recursos do AWS Elastic Beanstalk. c2020b. Disponível em: https://aws.


amazon.com/pt/elasticbeanstalk/details/. Acesso em: 13 jul. 2020.

BAI, H. Zen of cloud: learning cloud computing by examples on microsoft


azure. Boca Raton, FL: CRC Press, 2015. ISBN-13: 978-1-4822-1581-6.

BHOWMIK, S. Cloud computing. Cabridge: Cambridge Univesity, 2017.

BROWN, E. Programação web com node e express: beneficiando-se da stack


JavaScript. São Paulo: Novatec Editora Ltda, 2020. ISBN: 978-65-86057-09-6.

BUYYA, R.; VECCHIOLA, C.; SELVI, S. T. Mastering cloud computing:


foundation and applications programming. Waltham: Morgan Kaufmann,
2013. Disponível em: https://1library.net/document/ozl74rry-mastering-cloud-
computing-rajkumar-buyya-pdf.html. Acesso em: 13 ago. 2020.

BUYYA, R.; BROBERG, J.; GOSCINSKI, A. Cloud computing: principles and


paradigms. Hoboken: John Wiley & Sons, 2011. ISBN: 978-0-470-88799-8.
Disponível em: http://dhoto.lecturer.pens.ac.id/lecture_notes/internet_of_things/
CLOUD%20COMPUTING%20Principles%20and%20Paradigms.pdf. Acesso em:
28 set. 2020.

CELULAR DIRETO. 10 funções do OneDrive que vão facilitar seus trabalhos.


Celular Direto, Saquarema, 13 fev. 2019. Disponível em: https://www.
celulardireto.com.br/10-funcoes-do-onedrive-que-vao-facilitar-seus-trabalhos/.
Acesso em: 13 ago. 2020.

76
CHANDRASEKARAN, K. Essentials of cloud computing. Boca Raton: CRC
Press, 2015. seus-trabalhos/. Acesso em: 13 ago. 2020. Disponível em: https://
keyhannet.com/wp-content/uploads/2018/11/K.-Chandrasekaran-Essentials-of-
Cloud-Computing-2014-Chapman-and-Hall_CRC.pdf. Acesso em: 13 ago. 2020.

COHEN, M.; HURLEY, K.; NEWSON, P. Google compute engine: managing


secure and scalable cloud computing. Sebastopol, USA: O’Relly Media Inc, 2015.
ISBN: 978-1-449-36088-7.

COLLIER, M.; SHAHAN, R. Essentials of cloud computing. Washington, USA:


Microsoft Press, 2015. ISBN: 978-0-7356-9722-5.

COPELAND, M. et al. Microsoft azure: planning, deploying, and managing


your data center in the cloud. New York, USA: Springer Science+Business Media
Network, 2015. ISBN-13: 978-1-4842-1043-7.

HADDAD, C. Why to use apache stratos. DZone, Durham, 15 maio 2014.


Disponível em: https://dzone.com/articles/why-use-apache-stratos. Acesso em:
22 jul. 2020.

FAYNBERG, I.; LU, H.; SKULER, D. Cloud computing: business trends and
technologies. Hoboken: John Wiley & Sons, 2016. ISBN: 9781118501214.

FONSECA, N. L. S. da; BOUTABA, R. Cloud services, networking, and


management. Hoboken: John Wiley & Sons, 2015. ISBN: 978-1-118-84594-3.

FURHT, B.; ESCALANTE, A. Handbook of cloud computing. Miami, USA.:


Springer Science & Business Media, 2010.

GOOGLE CLOUD. App engine. c2020a. Disponível em: https://cutt.ly/wf0nSGi.


Acesso em: 15 jul. 2020.

GOOGLE CLOUD. Introdução ao BigQuery. c2020b. Disponível em: https://


cloud.google.com/bigquery/what-is-bigquery?hl=pt-br. Acesso em: 13 ago. 2020.

GOOGLE CLOUD. Sobre os serviços do Google Cloud. c2020c. Disponível em:


https://cloud.google.com/docs/overview/cloud-platform-services?hl=pt-br#big-
data. Acesso em: 7 ago. 2020.

GOOGLE CLOUD. Software as a service. c2020d. Disponível em: https://cloud.


google.com/saas?hl=pt-br. Acesso em: 31 jul. 2020.

GOOGLE PLAY. GoToMeeting. c2020a. Disponível em: https://play.google.


com/store/apps/details?id=com.gotomeeting&hl=pt_BR. Acesso em: 13 ago.
2020.

77
GOOGLE PLAY. SAP Concur. c2020b. Disponível em: https://play.google.com/
store/apps/details?id=com.concur.breeze&hl=pt_BR. Acesso em: 13 ago. 2020.

GUERREIRO, C. Top 20+ ferramentas de Big Data para se tornar cientista de


dados (mesmo sem saber programar). Blog Tecnologia que interessa, [S. l.],
mar. 2020. Disponível em: https://blog.tecnologiaqueinteressa.com/2020/03/top-
20-ferramentas-de-big-data-para-cientistas-de-dados-programadores-ou-nao/.
Acesso em: 7 ago. 2020.

IBM CLOUD. Nuvem Pública. c2020. Disponível em: https://www.ibm.com/br-


pt/cloud/public. Acesso em: 7 jul. 2020.

IBM CLOUD Education. PaaS (plataforma como serviço). IBM Cloud Learn
Hub, New York, 29 out. 2019. Disponível em: https://www.ibm.com/cloud/
learn/paas. Acesso em: 7 ago. 2020.

COSTA, M. Computação em nuvem - parte 1: o que contratar? InfoQ, São


Paulo, 8 ago. 2017. Disponível em: https://www.infoq.com/br/articles/contratar-
computacao-nuvem/. Acesso em: 22 jul. 2020.

JAMSA, K. Cloud computing: SaaS, PaaS, IaaS, virtualization, business models,


mobile, security, and more. Burlington, MA: Jones & Barlett Learning, 2013.

JELASTIC. Jamazing PaaS Experience. c2020. Disponível em: https://jelastic.


com/. Acesso em: 12 ago. 2020.

KANNAN, R.; et al. Managing and processing Big Data in cloud computing.
Hershey, PA: Information Science Reference, 2016. ISBN: 978-1-4666-9868-3.

KAVIS, M. J. Architecting the cloud: designs decisions for cloud computing


service models (SaaS, PaaS and IaaS). Hoboken: John Wiley & Sons, 2014. ISBN:
978-1-118-82627-0.

KAVIS; M. J. Architecting the cloud: design decisions for cloud computing


service models (SaaS, PaaS and IaaS). Hoboken: John Wiley & Sons, 2014.

LIMA, L. O que é o Cisco Webex? Any Consulting, Belo Horizonte, 15 fev. 2019.
Disponível em: https://www.anyconsulting.com.br/o-que-e-o-cisco-webex/.
Disponível em: 13 ago. 2020.

MICROSOFT AZURE, Red Hat OpenShift no Azure: serviço OpenShift


totalmente gerenciado, operado conjuntamente com a Red Hat. c2020.
Disponível em: https://azure.microsoft.com/pt-br/services/openshift/. Acesso
em: 7 ago. 2020.

78
MARTINS, R. Computação em nuvem: entenda o que é e como aplicar na sua
empresa. Microtel It Solutions, Curitiba, 15 jan. 2018. Disponível em: https://
www.microtelit.com.br/computacao-em-nuvem-entenda-o-que-e-e-como-
aplicar-na-sua-empresa/. Acesso em: 14 jul. 2020.

MISTRIK, I. et al. Software architecture for Big Data and the cloud. Cambridge,
MA, USA: Elsevier Inc., 2017. ISBN: 978-0-12-805467-3.

MITCHELL, E. T. Cloud-based services for your library. Chicago, US:


American Library Association, 2013. ISBN: 978-1-55570-900-6.

NEXTIOS. O que é OpenShift e como ele funciona? Blog Locaweb Corp, [S. l.],
6 jun. 2017. Disponível em: http://blog.locawebcorp.com.br/solucoes/o-que-e-
openshift-e-como-ele-funciona/. Acesso em: 7 ago. 2020.

OLIVEIRA, H. S. de. Infraestrutura de TI. Porto Alegre: SAGAH, 2020.


Disponível em: https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/
impressao_ua/20655717. Acesso em: 10 ago. 2020.

OVEO. Container Cloud OpenShift. c2020. Disponível em: https://www.eveo.


com.br/container-cloud/?gclid=CjwKCAjw97P5BRBQEiwAGflV6U85RwHHa
wV8enyGgz617ggb8XvmRya4iyLYCDXBVN5u1ENmfDW6nxoCZQYQAvD_
BwE. Acesso em: 7 ago. 2020.

PACHECO, R. A. F. Heroku: o que é e como funciona. Geekhunter,


Florianópolis, 28 fev. 2020. Disponível em: https://sagahcm.sagah.com.br/
sagahcm/sagah_ua_dinamica/impressao_ua/20655717. Acesso em: 10 ago. 2020.

PATHAN, A.; MONOWAR, M. M.; FADLULLAH, Z. M. Building next-


generation converged networks: theory and practice. Boca Raton, FL: CRC
Press. 2013. ISBN-13: 978-1-4665-0764-7.

PEREZ, R. Is SaaS data analytics right for you? Snowflake, San Mateo, 26 jun.
2018. Disponível em: https://www.snowflake.com/blog/is-saas-data-analytics-
right-for-you/. Acesso em: 7 ago. 2020.

QUERINO FILHO, L. C. Introdução ao Google App Engine. Devmedia, Marília,


2012. Disponível em: https://www.devmedia.com.br/introducao-ao-google-app-
engine/24552#modulo-mvp. Acesso em: 15 jul. 2020.

RAJ, P.; RAMAN, A. Software-defined cloud centers: operational and


management technologies and tools. London: Springer, 2018. 242 p.

REDHAT. Cloud computing: O que é a PaaS? c2020. Disponível em: https://


www.redhat.com/pt-br/topics/cloud-computing/what-is-paas. Acesso em: 7 ago.
2020.

79
SALESFORCE. O que é SaaS? c2020. Disponível em: https://www.salesforce.
com/br/saas/. Acesso em: 12 ago. 2020.

SANTANA, G. A. A. CCNA Cloud CLDFND 210-451 official cert guide.


Indianapolis, IN, USA: Pearson Education. 2016. ISBN-13: 978-1-58714-700-5.

SANTODIGITAL. BigQuery: entenda as principais técnicas para otimização


de custos. Santo Digital, São Paulo, 10 jan. 2020. Disponível em: https://www.
santodigital.com.br/bigquery-entenda-as-principais-tecnicas-para-otimizacao-
de-custos/. Acesso em: 13 ago. 2020.

SHAPIRO, J. Concur agora é SAP Concur. SAP Brasil, [S. l.], 4 jan. 2018.
Disponível em: https://news.sap.com/brazil/2018/01/concur-agora-e-sap-concur/.
Acesso em: 13 ago. 2020.

SHARMA, S. The DevOps adoption playbook: a guide to adopting devops in a


multispeed IT enterprise. Hoboken: John Wiley & Sons, 2017. 416 p.

SHINYA, V. O que é a IBM Cloud e como subir a sua primeira aplicação


na nuvem. IBM Developer Brasil, [S. l.], 7 nov. 2018. Disponível em: https://
medium.com/ibmdeveloperbr/o-que-%C3%A9-o-ibm-cloud-e-como-subir-a-
sua-primeira-aplica%C3%A7%C3%A3o-na-nuvem-41bfd260a2b7. Acesso em: 6
ago. 2020.

SILVA, K. C. N. da. Sistemas de Informações Gerenciais: Computação na


Nuvem. Porto Alegre: SAGAH, 2020.

SILVA, E. A. N. da. Uma abordagem dirigida por modelos para


desenvolvimento de aplicações multi-paas. 2017, 178f. Tese (Doutorado em em
Ciência de Computação e Matemática Computacional) – Instituto de Ciências
Matemáticas e de Computação. Universidade de São Paulo, 2017. Disponível
em: https://teses.usp.br/teses/disponiveis/55/55134/tde-08022018-103528/publico/
EliasAdrianoNogueiradaSilva_revisada.pdf. Acesso em: 7 ago. 2020.

SILVA, E. A. N. da; LUCRÉDIO, D. Software engineering for the cloud:


a research roadmap. In: BRAZILIAN SYMPOSIUM ON SOFTWARE
ENGINEERING. 26., 2012, São Carlos. Anais […]. São Carlos: IEEE, Brazil;
UFSCar, 2012. p. 71-80. Disponível em: https://www.researchgate.net/
publication/261039376_Software_Engineering_for_the_Cloud_A_Research_
Roadmap. Acesso em: 6 ago. 2020.

SIQUEIRA, C. O que é o Red Hat OpenShift? Blog 4 Partner, [S. l.], 7 ago. 2017.
Disponível em: https://blog.4partner.com.br/red-hat-openshift/. Acesso em: 7
ago. 2020.

SOARES, J. A. Infraestrutura de TI. Porto Alegre: SAGAH, 2020.

80
SOFTLINE. IaaS, PaaS e SaaS: entenda os modelos de nuvem e suas finalidades.
SoftLine, São Paulo, 31 out. 2017. Disponível em: https://brasil.softlinegroup.
com/sobre-a-empresa/blog/iaas-paas-saas-nuvem. Acesso em: 13 jul. 2020.

SOUSA, F. R. C. et al. Gerenciamento de dados em nuvem: conceitos, sistemas


e desafios. In: SIMPÓSIO BRASILEIRO DE BANCO DE DADOS, 25., 2010. Belo
Horizonte. Anais [...]. Belo Horizonte: UFMG, 2010.Disponível em: https://sol.
sbc.org.br/livros/index.php/sbc/catalog/download/18/81/167-1?inline=1. Acesso
em: 13 jul. 2020.

STORI, D. Primeiros passos em PaaS com Heroku. Devmedia, Santo André,


2013. Disponível em: https://www.devmedia.com.br/primeiros-passos-em-paas-
com-heroku/29465. Acesso em: 20 jul. 2020.

STRATEGIC SAAS. Por que consolidar com armazenamento OneDrive é


uma estratégia de negócios inteligente. c2020. Disponível em: https://www.
strategicsaas.com/onedrive-storage-better-than-a-free-for-all/. Acesso em: 13
ago. 2020.

SULLIVAN, D. The definitive guide to cloud computing. US: Realtime


Publishers, 2010.

T-SYSTEMS. Desenvolvimento de aplicativos com a plataforma como


serviço. c2020. Disponível em: https://www.t-systems.com/br/pt/cloud-and-
infrastructure/new-business-models/managed-paas-and-big-data. Acesso em: 28
set. 2020.

TALBOT, C. Apache elevates stratos paas to top-level project. Channel Futures,


Londres, 5 jun. 2014. Disponível em: https://www.channelfutures.com/cloud-2/
apache-elevates-stratos-paas-to-top-level-project. Acesso em: 22 jul. 2020.

TAURION, C. Computação em nuvem: transformando o mundo da tecnologia


da informação. Rio de Janeiro: Brasport, 2009. ISBN: 978-85-7452-423-8.

THOMPSON, C. Vagrant virtual development environment cookbook.


Birminghan: Packt Publishing Ltd., 2015. ISBN: 978-1-78439-374-8.

TUTIDA, D. OneDrive, Google Drive ou Dropbox: 4 coisas a considerar ao fazer


sua escolha. Encontre um Nerd, São Paulo, 18 set. 2019. Disponível em: https://
encontreumnerd.com.br/blog/onedrive-google-drive-ou-dropbox. Acesso em: 13
ago. 2020.

UDELCIO. Cloud computing x Big Data: o que um tem a ver com o outro.
Grupo Meta, [S. l.], 15 out. 2014. Disponível em: https://www.grupometa.com/
cloud-computing/cloud-computing-big-data/. Acesso em: 7 ago. 2020.

81
VACCA, John R. Computer and Information Security Handbook. US: Elsevier,
2017.

VERAS, M. Computação em nuvem: novas arquiteturas de TI. Rio de Janeiro:


Editora Brasport, 2015. Disponível em: https://docero.com.br/doc/n050c. Acesso
em: 7 ago. 2020.

VLADIMIRSKY, V. 10 exemplos populares de software como serviço (SaaS).


Nerdio, [S. l.], 20 out. 2016. Disponível em: https://getnerdio.com/academy/10-
popular-software-service-examples/. Acesso: 31 jul. 2020.

VAUGHAN-NICHOLS, S. J. Apache makes Stratos PaaS cloud a top-level


project. ZDNet, 3 jun. 2014. Disponível em: https://www.zdnet.com/article/
apache-makes-stratos-paas-cloud-a-top-level-project/. Acesso em: 22 jul. 2020.

82
UNIDADE 2 —

SERVERLESS, BACK-END AS SERVICE


(BAAS) E FUNÇÃO COMO SERVIÇO
(FAAS)

OBJETIVOS DE APRENDIZAGEM
A partir do estudo desta unidade, você deverá ser capaz de:

• conhecer os fundamentos de Serverless;


• compreender a utilização do Serverless como computação orientada a
eventos;
• compreender a diferença entre a arquitetura monolítica e uma arquitetu-
ra de micro serviços;
• conhecer os fundamentos de Back-end as a Service (BaaS);
• conhecer os fundamentos de Function as a Service (FaaS).

PLANO DE ESTUDOS
Esta unidade está dividida em três tópicos. No decorrer da unidade,
você encontrará autoatividades com o objetivo de reforçar o conteúdo
apresentado.

TÓPICO 1 - SERVERLESS
TÓPICO 2 - BACK-END AS SERVICE (BAAS)
TÓPICO 3 - FUNÇÃO COMO SERVIÇO (FAAS)

CHAMADA

Preparado para ampliar seus conhecimentos? Respire e vamos


em frente! Procure um ambiente que facilite a concentração, assim absorverá
melhor as informações.

83
84
TÓPICO 1 —
UNIDADE 2

SERVERLESS

1 INTRODUÇÃO
Agora que você conhece o cloud computing ou computação em nuvem,
assim como seus modelos de serviços, chegou o momento de conhecer mais um
termo muito utilizado na área de computação, o serverless.

Assim como muitos conceitos da computação, o serverless precisa ser bem


compreendido antes de ser aplicado na prática, pois este conceito engloba muitas
coisas e, nesse sentido, é importante entender seu conceito, como ele funciona, em
quais casos pode ser aplicado, assim como quais os benefícios de sua utilização
(STIGLER, 2018).

Normalmente, quando se fala em serverless, na computação, as pessoas


pensam que se trata apenas de back-ends que rodam em serviços de terceiros
ou em contêiner temporário (STIGLER, 2018). Além disso, muitas pessoas que
ingressam na computação serverless, terão a percepção de que são aplicações
simplesmente hospedadas na nuvem (STIGLER, 2018). Aplicações serverless
podem ser exemplificadas pelo Amazon Web Services (AWS) Lambda e pelas
funções do Azure, por exemplo.

Antes, vamos a um exemplo de um cenário utilizado, normalmente, no


qual uma aplicação é desenvolvida e o próprio desenvolvedor realiza o deploy da
aplicação, possuindo, neste caso, um determinado nível de controle de requisições
Hypertext Transfer Protocol (HTTP) realizadas para o servidor (STIGLER, 2018).
Neste cenário, com aplicações que rodam em um servidor, os desenvolvedores,
ou algum administrador da empresa, se torna responsável pelo gerenciamento de
recursos da máquina, mas, neste caso, existem alguns problemas, como:

• a empresa ou organização possui a despesa do serviço de hospedagem do


servidor, e seu gerenciamento, mesmo que o software não estiver sendo
executado;
• a empresa ou organização precisa manter recursos para a manutenção de
servidores, assim como manter o servidor funcionando (on-line);
• a empresa ou organização deste cenário, possui responsabilidade por manter e
gerenciar a segurança do servidor.

Ainda no cenário da empresa possuir um servidor para hospedagem


de aplicações, caso a demanda para uso de aplicações aumentar, os recursos
do servidor também devem ser expandidos, e caso diminuir a quantidade de
demanda do servidor, recursos ficarão ociosos, consumindo energia elétrica.
85
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)

De acordo com o cenário de servidor local comentado, esse gerenciamento


de servidor pode se tornar caro, trabalhoso e ocupar muito tempo, principalmente
se tratando de pequenas empresas, diferente de uma empresa grande que
normalmente possui uma equipe de suporte de Tecnologia de Informação (TI)
para realizar estas tarefas de servidor. No entanto, de qualquer forma, se for
uma empresa de grande porte com uma equipe de suporte de TI para gerenciar o
servidor, o desenvolvedor terá de ocupar um pouco de seu tempo para repassar
processos e manuais para a equipe de suporte. Para resolver a este problema,
atualmente, temos a arquitetura Serverless.

2 CONCEITOS DE SERVERLESS
Serverless computing, ou computação sem servidores, pode ser
compreendida por ser uma tecnologia, a qual também é conhecida por Function as
a Service (FaaS), em que o provedor de nuvem possui o gerenciamento completo
do contêiner no qual as funções são executadas, conforme necessário para atender
às solicitações (STIGLER, 2018). Com o modelo dessa arquitetura, a necessidade
de continuar executando sistemas pode ser extinguida, passando a execução a
ser baseada em eventos, e, com isso, se aumenta a possibilidade de criação de
aplicações escalonáveis dentro desta arquitetura (STIGLER, 2018).

Arquitetura serverless pode ser descrita como uma arquitetura de


computação orientada a eventos, sendo sua principal finalidade permitir que
empresas de desenvolvimento de software realizem a criação e possam manter
suas aplicações web sem se preocupar com infraestrutura de servidores (MISHRA,
2020).

Nesse sentido, o trabalho de desenvolvimento de software pode ser


simplificado, sendo apenas escrito o código fonte da aplicação, sem se preocupar
no entendimento e trabalho de instalação, configuração, assim como manutenção
da infraestrutura do servidor para rodar a aplicação (STIGLER, 2018). Dessa
forma, o trabalho de desenvolvimento de software possui a vantagem de se
tornar mais rápido, se levando a metade do tempo para implementação de uma
aplicação, ao ser utilizada a arquitetura serverless (STIGLER, 2018).

Computação serverless é uma das tecnologias de hospedagem na nuvem


mais recentes disponibilizadas por provedores, sendo altamente recomendado e
adaptado para o desenvolvimento de soluções altamente escalonáveis (MISHRA,
2020).

Ainda segundo Mishra (2020), esse modelo de computação em nuvem


é barato e disponibiliza vários recursos úteis que não são disponibilizados na
computação em nuvem normal, sendo o Serverless computing utilizado por
gigantes do mundo da nuvem para construir suas soluções, como a Microsoft e
Amazon.

86
TÓPICO 1 — SERVERLESS

2.1 SERVERLESS COMO COMPUTAÇÃO ORIENTADA A


EVENTOS
O serverless como computação orientada a eventos pode ser compreendido
por ser um padrão de arquitetura baseada na ação de resposta ou ainda de
recepção de eventos, além disso, esse padrão de arquitetura serve para garantir
que uma função seja executada somente quando for disparada (STIGLER, 2018).
Por isso esse modelo de arquitetura induz os desenvolvedores de software a
pensar antecipadamente nos tipos de eventos e respostas que serão necessários
para uma solução antes de começar a programar (STIGLER, 2018).

Nesse modelo de computação orientada a eventos, as funções de um


software são consideradas consumidoras, pois aguardam quando um evento
ocorre e são responsáveis pelo seu processamento (STIGLER, 2018). Ainda
segundo Stigler (2018), seguem alguns exemplos disparados por funções serverless:

• Requisições por Application Programming Interface (API).


• Envios e recuperações de objetos no repositório.
• Alterações em bancos de dados.
• Agendamentos de cronogramas de eventos.
• Comandos de voz.
• Robôs com processamento de linguagem natural.

A Figura 1 apresenta um exemplo de computação orientada a eventos, em


que a Amazon Lambda é um método invocado pela API Gateway.

FIGURA 1 – REQUISIÇÃO REALIZADA PARA API GATEWAY

FONTE: Stigler (2018, p. 2)

87
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)

No exemplo apresentado na Figura 1, um dispositivo móvel, como um


smartphone, realiza uma requisição para a API Gateway, sendo esta última
um serviço da API Amazon, a qual permite facilmente realizar uma requisição
RESTful HTTP. Por sua vez, a API Gateway possui uma função Lambda que a
trata como um ponto de integração, sendo a função Lambda configurada para
receber eventos da API Gateway. Nesse sentido, quando uma requisição é
realizada, a função Lambda é disparada e a função executada (STIGLER, 2018).

E
IMPORTANT

É possível exemplificar com a situação de um usuário que, ao clicar em um


botão em uma tela, o qual realiza a requisição para buscar filmes de um determinado ator,
cuja requisição é a chamada para a API Gateway, sendo que esta dispara a função Lambda,
retornando a lista de todos os filmes cadastrados no banco de dados (STIGLER, 2018).

Na arquitetura serverless, uma função Lambda pode ser criada


separadamente para realizar uma função de atualizar uma informação no banco,
por exemplo, sendo, neste caso, criada uma simples função para um único evento,
mantendo assim, uma aplicação leve, de fácil manutenção e escalável (MISHRA,
2020).

2.2 ESTRUTURA DA ARQUITETURA SERVERLESS


De maneira geral, serverless pode ser descrito como um modelo de
execução, em que o provedor da computação em nuvem, como AWS, Microsoft
Azure ou Google Cloud por exemplo, é o responsável pela execução de algum
pedaço de código ou uma função, cujos recursos são alocados dinamicamente, e
sendo cobrados desta forma (MISHRA, 2020). Nesse sentido, o código (aplicação
no servidor) é executado dentro de containers stateless, os quais podem ser ativados
de várias maneiras, como exemplificado pela Figura 2.

88
TÓPICO 1 — SERVERLESS

FIGURA 2 – MANEIRAS DE ATIVAÇÃO

FONTE: O autor

Conforme já mencionado, na arquitetura serverless o código fonte


é executado sem a necessidade de um usuário criar, manter e entender a
infraestrutura de servidor, sendo que geralmente, o código enviado ao provedor
é implementado em forma de função (MISHRA, 2020). Devido ao código no
servidor ser normalmente uma função, a arquitetura serverless é referenciada por
Function as a Service (FaaS) ou Funções como Serviço (STIGLER, 2018).

O Microsoft Azure é uma das plataformas que disponibiliza soluções


fáceis e rápidas de se implementar serverless, disponibilizando uma lista de
classes, permitindo facilmente integração de serviços de mensagem, auxiliando
componentes serverless a conseguirem interagir com outros (MISHRA, 2020).

No serverless, o código de uma aplicação é executado em um servidor na


nuvem, mas a questão de infraestrutura do servidor não é mais responsabilidade
da equipe de desenvolvimento da aplicação, sendo construído o código fonte da
aplicação e este, é enviado para o servidor (deploy), sendo realizado o build e
execução da aplicação (STIGLER, 2018).

Nesse caso, a aplicação hospedada na arquitetura serverless, é executada


sob demanda, em que algum evento dispara a execução, para que a aplicação
rode no ambiente de servidores serverless, sendo a cobrança realizada enquanto a
aplicação estiver rodando no servidor e os recursos que ela consumiu (MISHRA,
2020). Além disso, aplicações serverless podem ser escalonadas sob demanda,
sendo responsabilidade do provedor de hospedagem este recurso, sendo assim,
se tem menos controle dos serviços do servidor neste modelo de arquitetura.

89
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)

2.3 SERVERLESS: FUNÇÃO COMO UM SERVIÇO


Conforme foi mencionado que a arquitetura serverless segue o modelo
FaaS, é interessante compreender o básico desse tipo de modelo, que envolve
executar códigos de aplicações back-end sem o trabalho de desenvolver e realizar
o deploy da aplicação no próprio servidor, mas sim utilizando um servidor de
terceiros, na nuvem (MISHRA, 2020).

Na Figura 3, você pode analisar as configurações ou recursos que são


gerenciáveis pelo cliente do provedor de computação em nuvem, sendo a cor
alaranjada, gerenciáveis pelo cliente e, azul, não gerenciáveis pelo cliente. Note
que a última coluna da Figura 3 é o FaaS, o qual permite gerência apenas da
aplicação pelo cliente.

FIGURA 3 – DIFERENÇAS ENTRE OS MODELOS DE SERVIÇOS NA NUVEM

FONTE: Stigler (2018, p. 3)

3 FUNÇÕES E OBJETIVOS
Conforme já mencionado, uma das grandes mudanças com relação
a outras metodologias de desenvolvimento de software é o fato de aplicações
serem executadas em forma de funções, as quais são disparadas por eventos,
porém, neste modelo de arquitetura serverless, são utilizados micro serviços.
Nesse sentido, quanto menor for desenvolvida a função e menos operações esta
função realizar, melhor será, visando as boas práticas (STIGLER, 2018).

As funções, na computação serverless, são executadas dentro de contêineres


serverless, conforme já mencionado, o que significa que não é possível realizar a
execução de funções que estejam sendo executadas, depois que o principal evento
for concluído, assim como também não é possível utilizar uma execução anterior

90
TÓPICO 1 — SERVERLESS

para atendimento de uma requisição. Isso porque, após a função ser executada,
isto é, a requisição estar completa, o contêiner serverless, no qual ela foi hospedada,
será eliminado (STIGLER, 2018).

Para que você possa compreender melhor vamos exemplificar. Usaremos


um exemplo de sistema tradicional de três camadas com lógica do lado do
servidor e mostraremos como seria diferente usando a arquitetura sem servidor.
Digamos que temos um site, no qual podemos pesquisar e comprar livros
didáticos. Em uma arquitetura tradicional, você pode ter um cliente, um servidor
com balanceamento de carga e um banco de dados para livros didáticos. A Figura
4 ilustra essa arquitetura tradicional para uma loja on-line de livros didáticos
(STIGLER, 2017).

FIGURA 4 – ARQUITETURA TRADICIONAL PARA UMA LOJA ON-LINE DE LIVROS DIDÁTICOS

FONTE: Stigler (2017, p. 337)

A configuração de uma arquitetura tradicional na qual o servidor é


provisionado e gerenciado pelo desenvolvedor. Em uma arquitetura computação
serverless, podemos mudar várias características, incluindo o servidor e o banco
de dados. Um exemplo dessa mudança seria a criação de uma API provisionada
em nuvem e o mapeamento de solicitações de métodos específicos para funções
diferentes.

Em vez de ter um servidor, as aplicações agora têm funções para cada


parte da funcionalidade e servidores provisionados em nuvem que são criados
com base na demanda. Poderíamos ter uma função para pesquisar um livro e
uma função para comprar um livro. Ainda podemos escolher dividir nosso banco
de dados em dois bancos de dados separados, correspondendo às duas funções.
A Figura 5 ilustra uma arquitetura sem servidor para uma loja on-line de livros
didáticos (STIGLER, 2017).

FIGURA 5 – ARQUITETURA SERVERLESS PARA UMA LOJA ON-LINE DE LIVROS DIDÁTICOS

FONTE: Stigler (2017, p. 348)

91
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)

A configuração de uma arquitetura tradicional na qual o servidor é


provisionado e gerenciado pelo desenvolvedor. Já a configuração de uma
arquitetura serverless em que os servidores aumentam e diminuem de acordo com
a demanda. Existem algumas diferenças entre os dois diagramas de arquitetura
para a livraria on-line apresentado na Figura 4 e na Figura 5 (STIGLER, 2017).

A Figura 4 traz a arquitetura tradicional, na qual temos um servidor


que precisa ter balanceamento de carga com escalonamento automático pelo
desenvolvedor. Já no exemplo apresentado na Figura 5, com a solução em nuvem,
a aplicação é executada em contêineres, em que são colocados sem estado, e são
ativados e desativados por funções acionadas. Outra diferença é a separação dos
servidores apresentados na Figura 5 (STIGLER, 2017).

4 SERVERLESS E CLOUD COMPUTING


Os termos serverless computing e cloud computing, são muito próximos,
pois cloud computing, ou computação em nuvem, pode ser compreendido pela
disponibilização de serviços na Internet a partir de um computador remoto, em
vez do disco rígido de um computador local (CHANDRASEKARAN, 2015). Além
disso, computação em nuvem pode ser descrita pelos recursos na nuvem, como
armazenamento, processamento ou disponibilização de serviços, como APIs, em
um provedor de serviços na internet.

Nesse sentido, o serverless computing pode ser compreendido como sendo


a evolução do cloud computing, na qual, para determinados serviços, como APIs
ou processamentos de funções, utilizando a infraestrutura na nuvem, embora
ainda possa existir servidores internos na empresa para determinados serviços.

No serverless computing, esta nomenclatura – computação sem servidor – é


utilizada devido à gerência e planejamento da infraestrutura de servidor serem
ocultadas para a equipe de desenvolvimento de software, o que já foi comentado
que é Back-end as a Service. Se os desenvolvedores não precisam se preocupar com
gerenciamento, provisionamento e manutenção de infraestrutura de servidores,
ao ter que implantar ou realizar o deploy de algum código-fonte ou serviço, estes
podem apoiar mais seu tempo ao trabalho de desenvolvimento.

Serverless computing pode ser ainda compreendido por ser um modelo de


execução de computação em nuvem, no qual o provedor de nuvem mantém o
servidor e realiza o gerenciamento dinâmico de alocação de recursos de servidores
(STIGLER, 2018).

Sendo assim, o valor cobrado nesse modelo, se baseia na quantidade


de recursos consumidos pela aplicação, e não a quantidade de recursos pré-
alocadas como no modelo cloud computing. De acordo com Stigler (2018) e Mishra
(2020) existem algumas diferenças entre os modelos Cloud computing e Serverless
computing (Quadro 1), apesar deste último ser a evolução do primeiro modelo.

92
TÓPICO 1 — SERVERLESS

QUADRO 1 – PRINCIPAIS DIFERENÇAS DE CLOUD COMPUTING E SERVERLESS COMPUTING

• Modelo de computação em nuvem no qual a gerência e


alocação de recursos normalmente é realizada pelo cliente
(organização, empresa) do provedor de recursos em nuvem.
• Muitas vezes, a equipe de desenvolvedores precisa
disponibilizar um certo tempo para questões de infraestrutura,
Cloud
assim como configurações de recursos no provedor de
computing
recursos em nuvem.
• Garante, desta forma, que sempre que necessário, existirá
disponibilidade de recursos de computação, mas podendo
haver necessidade de se preocupar com infraestrutura
(configuração).
• Modelo de computação em nuvem mais maduro, no qual a
gerência e alocação de recursos é realizada pelo provedor de
recursos em nuvem.
Serverless • Permite que equipe de desenvolvedores ocupe seu tempo com
computing sua principal atividade: o desenvolvimento de aplicações.
• Garante, desta forma, que sempre que necessário, existirá
disponibilidade de recursos de computação, sem preocupação
com infraestrutura (manutenção e configuração).
FONTE: O autor

Você pode estar se perguntando qual a diferença entre computação


serverless e construir uma infraestrutura a partir do zero. Sabemos que a principal
diferença é depender de fornecedores terceirizados para manter seus servidores,
mas como isso faz diferença no processo de desenvolvimento de sua aplicação?

4.1 PRINCIPAIS DIFERENÇAS ENTRE COMPUTAÇÃO


SERVERLESS E CONSTRUIR A INFRAESTRUTURA DO ZERO
As duas principais diferenças que você provavelmente verá estão no
desenvolvimento de aplicações e nos processos independentes que são usados​​
para criá-los (STIGLER, 2017).

4.1.1 Desenvolvimento de aplicações


O processo de desenvolvimento da computação serverless muda
consideravelmente em relação à maneira como se desenvolveria um sistema
tradicional. Para Stigler (2017), aspectos do ambiente do desenvolvimento,
incluindo Integrated Development Environment (IDEs), controle de código
fonte, controle de versão e opções de implantação podem ser utilizados pelo
desenvolvedor de forma local ou na nuvem.
93
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)

Ao se trabalhar com desenvolvimento contínuo é comum escrever funções


na computação serverless utilizando um IDE, como Visual Studio, Eclipse e IntelliJ.

A implantação é realizada em entregas menores que são disponibilizadas


na nuvem, fazendo uso de uma interface de linha de comando do próprio
provedor de nuvem, também conhecida como Comand-Line Interface (CLI).

Se as funções forem pequenas o suficiente, elas podem ser desenvolvidas


dentro do portal do provedor de nuvem real. Entretanto, a maioria tem um limite
no tamanho da função antes que de fato seja realizado o upload compactado, em
zip, do projeto.

NOTA

A CLI é uma ferramenta de desenvolvimento dita como “poderosa” porque


possibilita que funções computação serverless e seus serviços seja implantado de maneira
fácil e deixa livre a escolha das ferramentas para escrever e gerar o código. A ferramenta
Serverless Framework é outra opção de desenvolvimento que pode ser instalada usando o
Node Package Manager (NPM), que é o gerenciador de pacotes do Node.

4.1.2 Processos independentes


Outra maneira de pensar em funções na computação serverless é como
micro serviços. Aqui, cada função atende a seu propósito e completa um processo
independentemente das outras funções. A computação serverless é sem estado
e baseada em eventos, portanto, é assim que as funções também devem ser
desenvolvidas.

Por exemplo, em uma arquitetura tradicional com operações de API


Create, Read, Update and Delete (CRUD) básicas, ou seja, as operações envolvendo
GET, POST, PUT, DELETE. Portanto, você pode ter modelos baseados em objetos
com esses métodos definidos em cada objeto. A ideia de manter a modularidade
também se aplica na computação serverless. Cada função pode representar um
método API e executar um processo (STIGLER, 2017).

As funções devem ser leves, escalonáveis e servir a um único propósito.


Para ajudar a explicar por que a ideia de processos independentes é preferida,
apresentaremos diferentes estilos arquitetônicos e as mudanças que foram feitas
a eles ao longo do tempo. Agora, veja a Figura 6 que apresenta o projeto de uma
arquitetura monolítica.

94
TÓPICO 1 — SERVERLESS

FIGURA 6 – ARQUITETURA MONOLÍTICA

FONTE: Stigler (2017, p. 377)

A Figura 6 demonstra a dependência existente dos aspectos de


funcionalidades. Portanto, uma aplicação monolítica é construída como uma
única unidade entrelaçada com uma aplicação do lado do servidor que lida com
todas as solicitações e lógicas associadas a aplicação.

Existem várias preocupações com esse modelo de arquitetura. Uma das


preocupações existentes se refere que, durante o período de desenvolvimento,
pode ser que nenhum desenvolvedor tenha uma compreensão completa do
sistema, porque todas as funcionalidades são empacotadas em uma unidade.
Cabe destacar também as preocupações referentes a incapacidade de escalar, a
reutilização limitada e a dificuldade de implantação repetida.

Na abordagem de micro serviços, se rompe o padrão de arquitetura


monolítica separando os serviços em componentes independentes que são
criados, implantados e mantidos separados uns dos outros. A Figura 7
exemplifica a arquitetura de micro serviços, sendo possível observar os serviços
independentes que compõem uma arquitetura de micro serviços. Muitas das
preocupações existentes na arquitetura monolítica são abordadas por meio desta
solução. Os serviços são construídos como componentes individuais com um
único propósito. Isso permite que a aplicação seja consumida e usada por outros
serviços de maneira eficiente e fácil. Além disso, é mais fácil tratar a escalabilidade
na arquitetura de micro serviços.

95
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)

FIGURA 7 – ARQUITETURA DE MICRO SERVIÇOS

FONTE: Stigler (2017, p. 385)

Cabe destacarmos que, na arquitetura de micro serviços, se diminui


a chance de ter um único ponto de falha em seu código. Esses micros serviços
também são mais rápidos de construir e implantar, pois é possível o fazer de
maneira independente, sem construir a aplicação por inteiro. Isso torna o tempo de
desenvolvimento mais rápido e eficiente e permite que tanto o desenvolvimento
quando os testes sejam realizados de forma rápida e fácil.

E
IMPORTANT

A cultura DevOps surgiu com o intuito de aproximar a equipe de


desenvolvimento com a equipe de operações. Os profissionais de DevOps estão cada vez
mais gerenciando vários servidores, cada um executando diversos sistemas operacionais,
aplicações, versões e requisitos dos mais variados. Para lidar com as tarefas específicas
de cada aplicação e projeto, a indústria e a comunidade propuseram um conjunto de
ferramentas de gestão. Com o advento desse conceito, diversas ferramentas de automação,
configuração e gerenciamento de ambientes foram propostas.

96
TÓPICO 1 — SERVERLESS

DICAS

• Recursos de DevOps da AWS. Confira, no link a seguir, informações das


soluções da Amazon AWS para a área de DevOps. Navegue na página que se encontra
disponível em: https://aws.amazon.com/pt/devops/resources/#guides.
• O que é o Azure DevOps? Aqui você verá o que é o Azure DevOps, como criar sua
conta e os primeiros passos para utilizar o provedor de serviços. Acesse o seguinte link:
https://www.youtube.com/embed/4BYlkYtHNus.
• Quais são os benefícios do DevOps na nuvem? A discussão aqui é sobre quais são os
benefícios que a cultura DevOps pode trazer para clientes de nuvem. Navegue no link:
https://blogbrasil.westcon.com/quais-os-beneficios-do-devops-na-nuvem.

5 POR QUE USAR SERVERLESS


Dentre os benefícios da serverless computing, podem ser citados
desenvolvimento e implantação rápida, baixo custo, escalabilidade sob demanda,
redução de recursos utilizados pela aplicação não estar utilizando recursos,
aplicação sempre disponível, separação de preocupações, os quais serão descritos
a seguir (MISHRA, 2020).

5.1 DESENVOLVIMENTO E IMPLANTAÇÃO RÁPIDA


Como toda a infraestrutura, manutenção e escalonamento automático são
gerenciados pelo provedor de nuvem, com isso, o tempo de desenvolvimento é
muito mais rápido e a implantação mais fácil do que na cloud computing normal.

Aqui, no serverless computing, o desenvolvedor é responsável somente pelo


desenvolvimento da própria aplicação, eliminando a necessidade de planejar o
tempo a ser gasto na configuração do servidor. Assim como outros provedores de
nuvem, podem ser citados o AWS, o Azure e o Google, os quais também fornecem
modelos de função, isto é, permitem que seus recursos possam utilizados para a
criação de funções executáveis que rodam imediatamente (STIGLER, 2017).

Stigler (2017) também destaca que a implantação se torna muito mais


simples, tornando o processo mais rápido. Esses provedores de nuvem possuem
um ambiente integrado para os desenvolvedores usarem para trabalhar e
implantar em diferentes ambientes.

97
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)

5.2 BAIXO CUSTO


Provedores de nuvem alugam infraestrutura barata na nuvem para
hospedar aplicações ou códigos fonte e executá-los, sendo cobrado o ambiente
utilizado.

No modelo serverless computing, conforme já mencionado, o cliente paga


apenas pelos recursos que suas aplicações consumiram, e não pela alocação
antecipada de recursos de computação, ou pela quantidade de aplicações, isto
é, sendo pago exatamente o que se está utilizando, sem ociosidade de recursos
(MISHRA, 2020).

Com isso, os recursos de servidores de aplicações são gerenciados,


alocados e desalocados, conforme necessidades das aplicações, pelos provedores
de nuvem, sendo mais baratos do que se fossem servidores locais (STIGLER,
2018). Veja no Quadro 2 os preços cobrados por três provedores de nuvem que
fornecem serverless computing, de acordo com Stigler (2018).

QUADRO 2 – PREÇOS DE EXECUÇÃO DE FUNÇÃO POR PROVEDOR DE NUVEM A PARTIR DA


PUBLICAÇÃO

AWS Lambda Azure Functions Google Cloud Functions


Primeiro milhão de Primeiro milhão de Primeiros dois milhões de
requisições por um mês requisições por um mês requisições por um mês
grátis grátis grátis
$ 0,20 por milhão de $ 0,20 por milhão de $ 0,40 por milhão de
requisições requisições requisições
$ 0,00001667 para cada $ 0,000016 para cada GB- $ 0,000025 para cada GB-
GB-segundo usado segundo usado segundo usado

FONTE: Stigler (2018, p. 7)

5.3 ESCALONABILIDADE SOB DEMANDA


No serverless computing, conforme aumentam as demandas de requisições
para as aplicações, automaticamente se aumentam os recursos para suportar a
demanda, da mesma forma que caso caia a demanda, automaticamente recursos
de servidor são desalocados, gerenciado pelos provedores de nuvem (STIGLER,
2018).

Nesse sentido, as aplicações desse modelo de computação, podem sofrer


massivamente uma sobrecarga de requisições sem afetar no seu funcionamento,
pois recursos são alocados automaticamente, para que não seja prejudicada
a eficiência da aplicação, ocorrendo um balanceamento de requisições por
servidores, por exemplo (MISHRA, 2020).

98
TÓPICO 1 — SERVERLESS

Para compreender melhor esta característica, saiba que as soluções


serverless são distribuídas de forma automática e consistem em vários componentes
que podem ter escalonamento independente (MISHRA, 2020). Nesse contexto, se
um determinado serverless receber uma carga pesada de tráfico, então este terá
escalonamento independente.

5.4 REDUZIR O TEMPO DE ATIVAÇÃO DA APLICAÇÃO


Com esse modelo de serverless, não é necessário adquirir uma infraestrutura
interna de servidores ou ambiente de hospedagem para hospedar o código fonte,
podendo utilizar, ao invés disso, recursos de serverless, algo realizado em poucos
minutos, e a aplicação já pode estar sendo executada (MISHRA, 2020).

No serverless computing, desenvolvedores focam na implementação das


aplicações, isto é, o trabalho de codificação, e não necessita focar seu tempo na
análise da infraestrutura do ambiente de hospedagem. Ainda sobre esse modelo
de computação, as aplicações, assim que jogadas no serverless, são executadas
muito mais rapidamente do que em outros modelos de computação (MISHRA,
2020).

5.5 ALTA DISPONIBILIDADE DA APLICAÇÃO


Aplicações ou funções hospedadas em serverless computing possuem alta
disponibilidade, sendo que os provedores de nuvem realizam acordo em contrato
que garantem esta característica e benefício (MISHRA, 2020). Com isso, não
importa quantas requisições a aplicação receberá, nesse modelo, a disponibilidade
está garantida.

5.6 SEPARAÇÃO DE PREOCUPAÇÕES POR COMPONENTES


As aplicações estão livres de as preocupações de um serviço afetar
outro, devido ao simples padrão de responsabilidade existente no serverless
(MISHRA, 2020). Para compreender melhor, você deve ter em mente que uma
solução serverless é composta por vários componentes serverless, e cada um deles
é responsável por uma tarefa de curta duração, sendo uma tarefa com uma única
responsabilidade.

Nesse sentido, um dos componentes realiza a leitura do banco de dados,


outro componente prepara os dados e os envia para uma fila, e um terceiro
componente processa os dados (MISHRA, 2020). Esses componentes não executam
várias tarefas, realizando apenas a única tarefa que são responsáveis, sendo ela
um simples padrão de responsabilidade que torna a separação de preocupações
por componentes mais um dos benefícios do serverless.

99
RESUMO DO TÓPICO 1

Neste tópico, você aprendeu que:

• Existem problemas ao se ter aplicações rodando em servidores, sendo elas:


(i) a empresa ou organização possui a despesa do serviço de hospedagem
do servidor, e seu gerenciamento, mesmo que o software não estiver sendo
executado; (ii) a empresa ou organização precisa manter recursos para a
manutenção de servidores, assim como manter o servidor funcionando (on-
line); (iii) a empresa ou organização deste cenário, possui responsabilidade por
manter e gerenciar a segurança do servidor.

• Serverless computing, ou computação sem servidores, também é conhecida por


Function as a Service (FaaS).

• Em serverless computing, o provedor de nuvem possui o gerenciamento


completo do contêiner no qual as funções são executadas, conforme necessário
para atender às solicitações.

• Com o modelo da arquitetura serverless computing, a necessidade de continuar


executando sistemas pode ser extinguida, passando a execução baseada em
eventos, e, com isso, se aumenta a possibilidade de criação de aplicações
escalonáveis dentro desta arquitetura.

• Arquitetura serverless pode ser descrita como uma arquitetura de computação


orientada a eventos, sendo sua principal finalidade, permitir que empresas
de desenvolvimento de software realizem a criação e possam manter suas
aplicações web sem se preocupar com infraestrutura de servidores.

• Serverless como computação orientada a eventos pode ser compreendido por


ser um padrão de arquitetura baseada na ação de resposta ou ainda de recepção
de eventos.

• Serverless computing é a evolução do cloud computing;

• Diferente do cloud computing, no modelo serverless computing, a gerência e


alocação de recursos é realizada pelo provedor de nuvem, poupando o tempo
de trabalho da equipe de desenvolvimento.

• Alguns exemplos disparados por funções serverless são: requisições por


Application Programming Interface (API), envios e recuperações de objetos no
repositório, alterações em bancos de dados, agendamentos de cronogramas de
eventos, comandos de voz e robôs com processamento de linguagem natural.

100
• O surgimento da cultura DevOps surgiu com o intuito de aproximar a equipe
de desenvolvimento com a equipe de operações.

• Os profissionais de DevOps estão cada vez mais gerenciando vários servidores,


cada um executando diversos sistemas operacionais, aplicações, versões e
requisitos dos mais variados.

• Tanto o desenvolvimento quanto a implantação são rápidos devido a toda


infraestrutura, manutenção e escalonamento automático gerenciados pelo
provedor de nuvem, com isso, o tempo de desenvolvimento é muito mais
rápido e a implantação mais fácil do que antes.

• As aplicações no serverless computing, podem sofrer massivamente uma


sobrecarga de requisições sem afetar no seu funcionamento, pois recursos
são alocados automaticamente, para que não seja prejudicada a eficiência da
aplicação, ocorrendo um balanceamento de requisições por servidores, por
exemplo.

• As aplicações, ou funções hospedadas em serverless computing, possuem alta


disponibilidade, sendo que os provedores de nuvem realizam acordo em
contrato que garantem esta característica e benefício, não importa quantas
requisições a aplicação receberá, nesse modelo, a disponibilidade está garantida.

• Um dos componentes realiza a leitura do banco de dados, outro componente


prepara os dados e os envia para uma fila, e um terceiro componente processa
os dados. Esses componentes não executam várias tarefas, realizando
apenas a única tarefa que são responsáveis, sendo este simples padrão de
responsabilidade que torna a separação de preocupações por componentes
mais um dos benefícios do serverless.

101
AUTOATIVIDADE

1 A computação sem servidor (serverless computing) diz respeito a toda


a infraestrutura, manutenção e escalonamento automático, os quais
são gerenciados pelo provedor de nuvem e, com isso, o tempo de
desenvolvimento é muito mais rápido e a implantação mais fácil do que
antes. Aqui, o desenvolvedor é responsável somente pela própria aplicação,
eliminando a necessidade de planejar o tempo a ser gasto na configuração do
servidor. A qual benefício da computação serverless estamos nos referindo?

a) ( ) Desenvolvimento e implantação rápida.


b) ( ) Baixo custo.
c) ( ) Escalabilidade sob demanda.
d) ( ) Separação de preocupações por componentes.

2 Na computação sem servidor (serverless computing) um dos benefícios está


relacionado aos provedores de nuvem que alugam infraestrutura barata
para hospedar aplicações ou códigos fonte e executá-los, sendo cobrado
o ambiente utilizado. Aqui, o cliente paga apenas pelos recursos que
suas aplicações consumiram, e não pela alocação antecipada de recursos
de computação ou pela quantidade de aplicações, isto é, sendo pago
exatamente o que se está utilizando, sem ociosidade de recursos. A qual
benefício da computação serverless estamos nos referindo?

a) ( ) Desenvolvimento e implantação rápida.


b) ( ) Baixo custo.
c) ( ) Escalabilidade sob demanda.
d) ( ) Separação de preocupações por componentes.

3 Na computação sem servidor (serverless computing) um dos benefícios


se refere às aplicações neste modelo de computação, as quais podem
sofrer massivamente uma sobrecarga de requisições sem afetar no seu
funcionamento, pois recursos são alocados automaticamente para que não
seja prejudicada a eficiência da aplicação, ocorrendo um balanceamento de
requisições por servidores, por exemplo. A qual benefício da computação
serverless estamos nos referindo?

a) ( ) Desenvolvimento e implantação rápida.


b) ( ) Baixo custo.
c) ( ) Escalabilidade sob demanda.
d) ( ) Separação de preocupações por componentes.

102
4 As aplicações ou funções hospedadas em serverless computing possuem
alta disponibilidade, sendo que os provedores de nuvem realizam acordo
em contrato que garantem esta característica e benefício, não importando
quantas requisições a aplicação receberá. A qual benefício da computação
serverless estamos nos referindo?

a) ( ) Alta disponibilidade da aplicação.


b) ( ) Baixo custo.
c) ( ) Escalabilidade sob demanda.
d) ( ) Separação de preocupações por componentes.

5 Um dos componentes realiza a leitura do banco de dados, outro


componente prepara os dados e os envia para uma fila, e um terceiro
componente processa os dados. Esses componentes não executam várias
tarefas, realizando apenas a única tarefa que são responsáveis, sendo este
simples padrão de responsabilidade que torna a separação de preocupações
por componentes mais um dos benefícios do serverless computing. A qual
benefício do serverless computing estamos nos referindo?

a) ( ) Desenvolvimento e implantação rápida.


b) ( ) Baixo custo.
c) ( ) Escalabilidade sob demanda.
d) ( ) Separação de preocupações por componentes.

103
104
TÓPICO 2 —
UNIDADE 2

BACK-END AS SERVICE - BAAS

1 INTRODUÇÃO
O aumento crescente do uso de aplicativos causa uma procura, bem como
uma exigência no processo de implementação e desenvolvimento com qualidade
e na distribuição ágil (WU, 2008).

O efeito disso é o aumento na complexidade dos aplicativos em relação


aos custos da sua implementação e no número de funcionalidades, sendo preciso
infraestrutura que suportem essas funcionalidades (NG, 2017).

Portanto, de acordo com Wu (2008) e Creese (2011), uma infraestrutura


mal projetada cria diversos obstáculos, tais como:

• usabilidade limitado;
• escalabilidade e evolução;
• custos elevados.

O que se percebe é que atualmente é cada vez menos frequente que as


empresas tenham sua própria infraestrutura antes de conquistas um alto número
de usuários e transações (WU, 2008; CREESE, 2011). Isso ocorre já que a oferta de
serviços de infraestrutura disponível em nuvem se tornou confiável.

Consequentemente, a implementação e o design das aplicações se tornam


o foco principal, e, com isso, se tornou primordial ter um serviço de back-end
(CREESE, 2011). Todavia, esse tipo de serviço causa custos de criação, tanto
financeiro quanto de tempo.

NOTA

Back-end consiste na lógica de negócio da aplicação e no processamento e


gestão de dados dela.

105
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)

Desse modo, cada vez mais são analisadas soluções que possibilitam
direcionar o foco do desenvolvimento para o design da aplicação. Isso significa
encontrar soluções que diminuam o esforço na implementação e desenvolvimento.

De modo a solucionar esta necessidade, uma abordagem possível passa


por ignorar o desenvolvimento do back-end e focar no esforço do desenvolvimento
no front-end das aplicações, originando o conceito MBaaS-Mobile Back-end as a
Service ou somente BaaS - Back-end as a Service (TAURION, 2009; BATSCHINSKI,
2016).

Agora vamos compreender o cenário atual e o que é necessário no


momento de selecionar o melhor modelo para seu projeto (GODSE e MULIK,
2009).

2 APLICAÇÕES
Com relação a aplicações de BaaS, vejamos um exemplo. Vamos supor
que você tenha um aplicativo de corrida de carros, e ele implementa muitas
funcionalidades, tais como: velocidade, distância percorrida, rotas, entre outros.
E ainda, seu aplicativo poderá mostrar o mapa com o trajeto percorrido. O
aplicativo desenvolvido teria um alto custo para ter uma base de dados de mapas
e ainda mantê-la atualizada, por isso, esses aplicativos utilizam serviços que
estão disponíveis na nuvem para atender a essa demanda (WU, 2008; GODSE e
MULIK, 2009; CREESE, 2011).

No entanto, você pode não querer que seu aplicativo calcule a velocidade
utilizando os recursos do usuário, então, algumas empresas começaram a
disponibilizar o BaaS (Back-end as a Service). Desse modo, existe a possibilidade
de transferir para a nuvem qualquer processamento que for preciso para executar
as funcionalidades do seu aplicativo.

Muitas empresas estão apostando nesse mercado, o que denota uma


tendência em investir na arquitetura que use Back-end as a Service (MULIK, 2009;
CREESE, 2011). Então, agora vamos entender os conceitos sobre BaaS e mBaaS.

3 CONCEITOS DE BACK-END AS A SERVICE - BAAS


Um Back-end como Serviço – BaaS ou mBaaS – é considerada uma
plataforma que automatiza o desenvolvimento de back-end, bem como atende à
infraestrutura de nuvem. Isso significa que Back-end as a Service é um modelo
de arquitetura em que o desenvolvedor implementa a interface e possibilita
que uma parte ou todo o processamento seja atendido por meio de um serviço
disponível na nuvem (cloud computing) (WU, 2008; GODSE e MULIK, 2009;
CREESE, 2011). Isso acarreta a simplificação dos aplicativos (WU, 2008; CREESE,

106
TÓPICO 2 — BACK-END AS SERVICE - BAAS

2011). A utilização de um BaaS possibilita a terceirização das responsabilidades


vinculadas à manutenção e ao gerenciamento de servidores para um terceiro, e
com isso consegue focar no desenvolvimento do front-end (FIGURA 8).

Ainda, um BaaS provê as ferramentas para auxiliá-lo a desenvolver um


código de back-end e acelerar o processo de desenvolvimento (TAURION, 2009;
BATSCHINSKI, 2016).

FIGURA 8 – NÍVEL DE APLICAÇÃO BaaS

FONTE: https://www.linkedin.com/pulse/iaas-vs-PaaS-saas-BaaS-vaquar-khan-/. Acesso em: 24


set. 2020.

Nesse sentido, BaaS e MBaaS são praticamente as mesmas coisas, já que


você pode utilizar um back-end como um serviço para projetos web ou projetos para
dispositivos móveis (MBaaS) (TAURION, 2009; CREESE, 2011; BATSCHINSKI,
2016).

Outro ponto importante é que o BaaS é considerado como um modelo


mais abrangente, já que oferece soluções modulares para as funções mais
usuais que necessitam estar disponíveis na infraestrutura. Alguns exemplos
são: autenticação, armazenamento, push notifications (serviço de notificações),
integração com serviços externos, escalabilidade automática e analytics estão entre
os básicos. Cada provedor de infraestrutura BaaS pode oferecer estes e muitos
outros serviços (BATSCHINSKI, 2016).

A estrutura BaaS pode auxiliar na solução de problemas, tais como:


gerenciar e dimensionar a infraestrutura em nuvem, e acelerar o desenvolvimento
de back-end. Portanto, uma plataforma BaaS é considerada como um serviço
técnico e criado para desenvolvedores.

Isso significa que um usuário sem habilidades terá dificuldades para usá-
lo, sendo os usuários mais comuns, de acordo com Batschinski (2016); Batschinski
(2019):

107
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)

• Engenheiros de front-end com pouco conhecimento em desenvolvimento de


back-end.
• Engenheiros de back-end que querem acelerar o desenvolvimento.
• Engenheiros que precisam terceirizar tarefas de repetitivas ou de baixo valor.

ATENCAO

Alguns exemplos de recursos BaaS (Back-end as a Service): autenticação,


banco de dados, blockchain e API Gateways – neste modelo, o fornecimento e a gestão
destes serviços são automáticos e imperceptíveis para o desenvolvedor que os usa em suas
aplicações.

Agora vamos compreender a arquitetura BaaS, os conceitos de front-end e


back-end e qual a diferença entre estes dois conceitos.

4 ARQUITETURA DE BAAS
Um back-end, de um modo geral, é considerado como um serviço
segmentado em três camadas (BATSCHINSKI, 2016), sendo:

• Primeira camada: possui os servidores de banco de dados, sendo que um


cluster de banco de dados terá ao menos dois servidores para replicar dados e
uma rotina de backup para possibilitar que os dados possam ser recuperados.
• Segunda camada: possui muitos servidores para processar as solicitações.
A quantidade de servidores muda ao longo do dia, e os procedimentos
de escalonamento automático são essenciais para atender o grupo com a
quantidade adequada de servidores.
• Terceira camada: conecta os servidores de aplicativos à Internet e é composto
por balanceadores de carga e CDNs.

5 DIFERENÇA ENTRE FRONT-END E BACK-END


De modo geral, os aplicativos possuem uma parte que o usuário
visualiza, denominada de front-end, já o back-end, representa a parte que o usuário
não vê (FIGURA 9). Sendo que as duas partes se combinam através de APIs.
Um dos primeiros modos de aplicação da arquitetura em nuvem é o back-end
como serviço. Ele faz parte da evolução da aplicação da arquitetura serverless,
sobretudo por estas aplicações estarem conectadas a algum banco de dados em

108
TÓPICO 2 — BACK-END AS SERVICE - BAAS

nuvem e serem hospedadas em determinados serviço cloud. Considerando o


BaaS, não existe preocupação com o Back-end, somente é consumido esse serviço
através do provedor de computação em nuvem (TAURION, 2009; CREESE, 2011;
BATSCHINSKI, 2016; BATSCHINSKI, 2019).

FIGURA 9 – BAAS X BACK-END CUSTOMIZADO

FONTE: <https://blog.back4app.com/wp-content/uploads/2019/07/backend-frontend-768x384.
png>. Acesso em: 29 set. 2020.

E
IMPORTANT

Vamos analisar dois exemplos para você compreender as diferenças entre o


código personalizado e o uso de um BaaS, sendo eles:

BaaS x AWS EC2: imagine que você precise criar um projeto de software e não utilizará
um BaaS. O primeiro passo para começar a desenvolver um back-end é configurar os ser-
vidores, depois:

Faça o login na AWS ou em qualquer outra nuvem.


Vá para instâncias.
Inicie uma Instância.
Selecione o sistema operacional.
Selecione o tamanho da instância.
Configure detalhes da instância.
Número de instâncias.
Rede
IP.
Monitoramento.
Outras configurações como Auto Scaling, IAM etc.
Adicionar armazenamento.
Configurações de segurança.

109
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)

Tudo bem, sua instância está funcionando e agora você pode iniciar a codificação! Na
verdade, não! Esta é somente a primeira etapa do processo, e você ainda precisará instalar
o servidor da Web, o banco de dados, a estrutura etc. Depois você poderá iniciar a codifi-
cação. O tempo para executar esse processo pode variar de algumas horas até dias para
ambientes grandes. Este mesmo processo utilizando um back-end como um serviço será
realizado com alguns cliques e não levará mais do que alguns minutos.

Configurações de segurança do LGPD ou GDPR: os requisitos de privacidade da LGPD


– Lei Geral Brasileira de Dados ou da GDPR (Genereal Data Privacy Requirements) – são
bastante complexos e a implementação exigirá muito esforço de engenharia. Os requisitos
vão desde a implementação de HTTPS para dados de trânsito como criptografar dados do
lado do servidor em repouso (e várias outras condições). A quantidade exata de horas de
engenharia para atender a todos os elementos dependerá do tamanho e complexidade do
projeto, mas pode facilmente ultrapassar 100 horas de implementação. Terceirizar esta im-
plementação para uma empresa de back-end como serviço faz muito sentido em especial
para projetos pequenos e de médio porte. Digo isto, visto que as plataformas de back-end
podem diluir o investimento feito para implementar configurações de LGBD ou GDPR entre
centenas ou milhares de aplicativos, e o custo por aplicativo será mínimo. Uma empresa
com um único projeto terá que compensar todo o investimento em apenas uma aplicação.
Mesmo que o aplicativo seja bem-sucedido, ele demandará muito mais tempo para ter o
retorno do investimento.

FONTE: <https://blog.back4app.com/pt/backend-as-a-service/>. Acesso em: 28 jul. 2020.

6 RAZÕES PARA USAR BAAS


As razões para utilizar uma plataforma de Back-end as Service podem ser
comerciais ou técnicas. Agora vamos entender cada uma delas!

6.1 RAZÕES COMERCIAIS


As vantagens de um back-end como serviço estão atreladas aos ganhos
de produtividade e terceirização de responsabilidades de gerenciamento de
servidores. Considerando projetos de pequeno a médio porte, existe mais
benefícios utilizando uma plataforma de back-end com serviço (BATSCHINSKI,
2016; BATSCHINSKI, 2019). Outra vantagem é a redução do Time to Market de
um projeto de software, já que a espera de meses para fornecer um produto de
software pode acabar com a oportunidade de mercado ou fazer com que a empresa
tenha mais concorrência (TAURION, 2009; CREESE, 2011; BATSCHINSKI, 2016).
Sendo assim, as vantagens de um BaaS são:

• Reduzir o Tempo entre a análise de um produto e sua disponibilização para o


mercado.
• Reduzir o custo de desenvolvimento.
• Utilizar menos desenvolvedores de back-end.
• Terceirizar o gerenciamento da infraestrutura de nuvem.

110
TÓPICO 2 — BACK-END AS SERVICE - BAAS

6.2 RAZÕES TÉCNICAS


Os desenvolvedores capacitados de back-end são complicados de se achar
disponíveis no mercado. Por isso, se a empresa tiver um profissional com essas
qualificações é preciso utilizar seu tempo com sabedoria. Então, atividades
repetitivas e boiler plate code é um desperdício de recursos (TAURION, 2009;
CREESE, 2011; BATSCHINSKI, 2016).

Além disso, um serviço de back-end permite que os desenvolvedores de


front-end se concentrem em atividades produtivas. Então, as vantagens técnicas
são:

• Foco no desenvolvimento de front-end.


• Exclui stack redundante de código.
• Padronização do código fonte.
• Permitir que o desenvolvedor de back-end programar código de alto valor.
• Permitem clonar aplicativos e executar ambientes de teste de modo
automatizado.
• Configurações de segurança e procedimentos de backup pré-configurados.

7 QUANDO UTILIZAR UM BAAS?


Conforme Batschinski (2016), existem casos mais usuais para se usar Back-
end as a Service, sendo:

• Criação de um MVP (Produto Mínimo Viável).


• Aplicativos que exigem um pequeno número de integrações.
• Aplicações corporativos que não são de missão crítica.
• Para os presentes casos de uso, é uma boa escolha e economizará muito dinheiro
e tempo.

NOTA

O MVP (Minimum Viable Product), que traduzindo significa “produto mínimo


viável”, é a versão simplificada de um produto final de um startup. Através desta versão, o
empreendedor vai oferecer o mínimo de funcionalidades do produto com o objetivo de
testar o produto para o mercado.

111
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)

7.1 VANTAGENS DE UM BAAS


O benefício é a redução do investimento de tempo e recursos financeiros
na infraestrutura da aplicação. Os SDKs e APIs fornecidos podem ser mais
simples de uso e bem documentados. As soluções de autenticação, notificações
push multiplataforma e analytics representam uma vantagem considerável do
serviço.

A maioria dos BaaS que estão disponíveis no mercado trabalham com


o modelo freemium. Isso significa que permitem a utilização limitada, mas sem
custo por usuários ou acessos. Esse acesso sem custos pode ser suficiente para
pequenas empresas por alguns meses.

Os aplicativos possuem um front-end, um back-end e APIs conectando


ambos os lados. Um back-end como um serviço –­ BaaS ou mBaaS – auxilia o
desenvolvedor a automatizar parte do trabalho de desenvolvimento de código
de back-end. Os back-end as a Service terão, ainda, a responsabilidade de implantar,
gerenciar e escalar aplicativos. Portanto, as vantagens primordiais para utilizar
um back-end como serviço são:

• Redução do tempo de lançamento de um aplicativo, em função da velocidade


de desenvolvimento.
• Redução de custos de desenvolvimento, maior velocidade de desenvolvimento
reduzindo custo de hora de profissionais.
• Muito importante, em especial, para startups.
• Terceirização do gerenciamento da infraestrutura.
• É serverless e não é necessário gerenciar a infraestrutura.
• Esforço de desenvolvimento, já que um desenvolvedor pode economizar
semanas em relação à criação de um back-end.
• Escalabilidade, a quantidade de usuários pode ser escalada sem interrupções
ou perda de performance.
• Segurança, as empresas de BaaS fornecem protocolos de segurança de
qualidade.

7.2 DESVANTAGENS DE UM BAAS


As desvantagens de um BaaS, conforme Batschinski (2016), são:

• Menor flexibilidade em comparação com a codificação customizada.


• Menor grau de personalização em comparação com um back-end personalizado.
• Os desenvolvedores apresentam menor controle do código fonte e o acesso ao
back-end é mais restrito.
• O usuário deve ser cauteloso e avaliar os fornecedores, sendo uma decisão de
longo prazo e deve ter cuidado em selecionar fornecedores que permitam a
migração de dados.

112
TÓPICO 2 — BACK-END AS SERVICE - BAAS

8 BAAS E SEUS RECURSOS


Um back-end é considerado um serviço que fornece recursos que podem
ser implantados em aplicativos de vários segmentos, sendo:

• Gestão de dados.
• Autenticação de usuário.
• Integração Social (Facebook, LinkedIn, Twitter etc.).
• Verificar de e-mail.
• Notificações.
• Funções de código de nuvem.
• Geolocalização.
• Logs.
• Cache.
• Infraestrutura (configurações de segurança, dimensionamento automático,
backup de dados, otimização de banco de dados).

8.1 IAAS X PAAS X BAAS


De acordo com Batschinski (2016) e Batschinski (2019), quando um
desenvolvedor passa de IaaS para PaaS e de PaaS para BaaS, este irá adicionar
camadas de serviço a seu aplicativo.

Vamos analisar da seguinte maneira, conforme a Figura 10.

• IaaS = Data Center + Servidores + Armazenamento + Rede.


• PaaS = IaaS + Implantar + Gerenciar + Escalar.
• BaaS = PaaS + Recursos para construir back-end.

113
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)

FIGURA 10 – IAAS X PAAS X BAAS

FONTE: <https://miro.medium.com/max/268/0*MvwMIGaAgfx0jgwS.png>. Acesso em: 29 set. 2020.

Segundo Batschinski (2019), o maior representante BaaS até 2016 era o


“Parse.com” com mais de um milhão de aplicativos instalados em sua plataforma,
e ainda com mais de 600 mil usuários.

NTE
INTERESSA

O Parse foi adquirido pelo Facebook em 2013, porém, em 2016, a rede social
tomou a decisão de finalizar as operações. Com isso, milhões de aplicações tiveram que
buscar alternativas de migração (BATSCHINSKI, 2016).

114
TÓPICO 2 — BACK-END AS SERVICE - BAAS

De acordo com Godse e Mulik (2009), Taurion (2009), Creese (2011),


Batschinski (2016) e Batschinski (2019), estas são algumas opções de BaaS:

8.1.1 Azure Mobile Apps


A Azure Mobile Apps A Microsoft integra-se ao Xaramim (front-end cross-
platform) e ao Azure. As vantagens são:

• Protocolos de segurança: fornece segurança de nível corporativo para criar


aplicativos.
• Sincronização off-line: permite que os usuários sincronizem dados
automaticamente.
• Integrações AD: permite o login da empresa.

8.1.2 Back4App
O Back4App possui banco de dados em tempo real, graphQL, notificações
push, autenticação, integração de SDK, gerenciamento de usuários, entre outros.
Essa tecnologia é baseada em código aberto, então isso significa que envolve Parse
Server, MongoDB ou Postgrees e NodeJS. Outro ponto relevante que precisa
ser comentado é que essa plataforma cuida da escala, já que possui aplicativos
consideravelmente grandes rodando e, ainda, tem uma arquitetura bem projetada
que oferece desempenho e confiabilidade.

Os planos iniciam com uma camada gratuita indicada para aplicações em


desenvolvimento. O nível gratuito foi planejado para fins de desenvolvimento
e aprendizado, já os aplicativos em produção precisam de um plano pago. As
vantagens de utilizar o Back4App são:

• Facilidade de utilização: a plataforma é simples de utilizar, e em apenas poucos


minutos pode se iniciar a codificação de um aplicativo simples.
• Flexibilidade: gerencia as versões de código-fonte, e o código-fonte pode ser
alterado conforme a necessidade da empresa.
• Hospedagem: muitas opções de hospedagem disponíveis, e ainda é um serviço
confiável.
• Content Delivery Network (CDN): os aplicativos hospedados no Back4App
distribuirão automaticamente o conteúdo de modo global.
• GraphQL: nova implementação e fornece a linguagem de consulta mais
avançada.
• Suporte: suporte 24/7. Os diferentes níveis de suporte disponíveis de acordo
com o orçamento do cliente.

115
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)

8.1.3 Firebase
O Firebase é uma plataforma de código fechado adquirida pelo Google,
em 2014. O Firebase possui recursos como análise, autenticação, banco de dados
em tempo real e hospedagem. O Firebase abrange três pilares:

• Recursos de desenvolvimento: contempla ferramentas para aumentar o


desenvolvimento de aplicativos móveis, e ainda possui autenticação do usuário,
armazenamento, banco de dados em tempo real, aprendizado de máquina e
funções de nuvem.
• Serviços do analytics: fornece um conjunto de serviços de análise para
dispositivos móveis que melhoraram o desempenho do aplicativo.
• Crescimento: integra um serviço chamado Ad Mob, que possibilita a veiculação
de anúncios no aplicativo.

As vantagens de utilizar o Firebase são:

• Banco de dados em tempo real: permite a criação de aplicativos de mensagens


como o WhatsApp, que usa dados em dispositivos quase que instantaneamente.
• Aprendizado de máquina: recurso disponível no Firebase e não disponível em
outros back-ends como serviço.
• Ad Mob: permite gerar receita com seu aplicativo e integrá-lo a uma rede
global de anúncios gerenciada pelo Google.

8.1.4 Parse
O Parse é um framework de código aberto suportado por uma grande
comunidade de desenvolvedores, tendo mais de 30k estrelas e 15 forks no Github.
O Parse proporciona aos desenvolvedores uma maneira de elaborar aplicativos
ágeis. A estrutura fornece aos desenvolvedores uma stack tecnológica que
abrange um módulo de servidor de API para o Node.JS, um painel para gerenciar
aplicativos, SDK e bibliotecas, adaptadores e documentação.

As alternativas ao self-hosting do Parse são os provedores de nuvem, como


AWS, Azure ou Digital Ocean. O Parse é gratuito, sendo que o único custo está
atrelado à hospedagem. As vantagens de utilizar o Parse são:

• Gerenciamento de dados: armazena tipos de dados essenciais, consultas, locais,


imagens com algumas linhas de código.
• Simplicidade: o framework é simples e a curva de aprendizado é menos de
uma hora, considerando pequenos projetos.
• Flexibilidade: trabalha com uma estrutura de código aberto leva a versatilidade
para o próximo nível.
• Código personalizado: o Parse fornece um recurso chamado Cloud Code.
• Multiplataforma: há muitos SDKs disponíveis, podendo utilizar o Parse em
quase todas as plataformas.
116
TÓPICO 2 — BACK-END AS SERVICE - BAAS

• GraphQL: fornece a linguagem de consulta mais avançada.

8.1.5 CloudKit
A CloudKit é considerada uma plataforma de back-end de código
fechado e gerenciada pela Apple. Sua utilização é para desenvolver aplicativos
para iOS e possui SDK nativo. A plataforma disponibiliza serviços de banco de
dados, autenticação e armazenamento. Isso permite que os desenvolvedores se
concentrem no desenvolvimento necessário ao cliente. Desse modo, o CloudKit
é considerado como um repositório de dados com suporte de autenticação de
identificação iCloud essencial e uma API na frente dele. Quando comparado com
outros serviços, ele apresenta menos recursos, sendo a principal vantagem de
usar o CloudKit é o SDK nativo para iOS.

Os back-endless são considerados um dos primeiros players disponíveis


no mercado e atuam sem investimento de fundos de capital de risco. A empresa
pode utilizar o serviço on-line ou rodar a estrutura de modo local. Existe um
nível gratuito limitado para hospedagem on-line, bem como planos pagos. As
vantagens de usar são:

• Versão local: executa esta versão de modo local em seu servidor ou em qualquer
outra plataforma de nuvem.
• Recurso de cache: disponível em hospedagem local ou em nuvem.
• Suporte: fornecem suporte 24/7 aos usuários.

8.1.6 Kinvey
O Kinvey é um back-end direcionado em grandes corporações, permitindo
a operação em aplicativos corporativos utilizando um ambiente serverless. Nos
planos estão inclusas hospedagem e operação, e a versão grátis tem um limite de
100 usuários. As vantagens são:

• Integrações empresariais populares: adequada para grandes empresas. O


serviço abrange integrações como Salesforce, SAP, Workday, Microsoft Active
Directory e Oracle.
• Ferramentas de inteligência operacional: relatórios de conformidade e análise.
Ele fornece aplicativos compatíveis com HIPAA para empresas de saúde.
• Suporte: 24/7 disponível.

117
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)

8.1.7 AWS Ampify


O AWS Ampify é considerado uma biblioteca de código aberto
funcionando em conjunto com o Amazon Web Services. Ele disponibiliza suporte
a desenvolvedores para elaborar aplicativos escalonáveis sem servidor, e ainda
integra de modo suave com iOS, Android, React Native e outros front-ends da
web.

Os recursos disponíveis englobam o Google Analytics, Notificações,


AR/VR, armazenamento e APIs. O serviço possui um plano Pay as You Go para
ambientes de produção. As vantagens são:

• CDN (Content Delivery Network): fácil de integrar com o CloudFront e implantar


conteúdo globalmente.
• GraphQL: o Amplify fornece um recurso chamado GraphQL Transform, que
auxilia no processo de desenvolvimento.
• Implantações atômicas: permite que seu aplicativo continue funcionando
mesmo se o processo de construção falhar em novos lançamentos.

8.1.8 Kii
O Kii é considerado como uma plataforma de desenvolvimento de back-
end para jogos, IoT e aplicativos de modo geral. O seu funcionamento é tanto
em nuvens públicas quanto privadas. Os recursos possuem notificações push,
gerenciamento de dados e usuários, testes A/B, geolocalização e análises. As
vantagens são:

• Várias opções de implantação: executa a solução em qualquer nuvem ou


localmente.
• Internet of Things (IoT): usa recursos para interações de IoT.
• Soluções de nicho: possui soluções específicas para agricultura, gestão de
ativos, beacons, entre outros.

8.1.9 Kumulos
O Kumulos é uma definida como plataforma de back-end desenvolvida
para empresas de desenvolvimento de aplicativos móveis e agências digitais.
Auxilia essas empresas a criar aplicativos para seus clientes. Os valores são
diferenciados conforme os níveis das empresas, sendo: startups, agências digitais
e empresas. As vantagens são:

118
TÓPICO 2 — BACK-END AS SERVICE - BAAS

• Relatórios e diagnósticos de falhas: auxilia os desenvolvedores a encontrar


problemas de modo rápido e a tomar medidas para solucionar.
• Otimização de App Store: uma característica única entre todos os BaaS e
disponível apenas na Kumulos.
• Console da agência: permite que uma empresa de desenvolvimento de software
gerencie vários aplicativos em uma conta corporativa.

ATENCAO

Conforme Taurion (2009), alguns outros provedores de back-end como


serviços, são:

• Playfab.
• Appcelerator.
• BaaSBox.
• MongoDB Stich.
• Oracle Mobile Hub.
• Game Sparks.
• Baqend.
• Convertigo.
• Kuzzle.
• Hoodie.

9 MERCADO
Conforme Batschinski (2019), o mercado de BaaS tem previsão de
crescimento superior a 80% ao ano, podendo atingir 28 bilhões de dólares agora
em 2020. Esse crescimento é motivado em função das economias orientadas a
aplicativos ao redor do mundo (WU 2008; GODSE; MULIK, 2009; NG, 2017)

O impacto dos aplicativos também é sentido nas indústrias, trazendo


mudanças disruptivas tanto nos negócios quanto nos processos. Isso é em
decorrência da mobilidade empresarial que gira em torno de aplicativos, e,
ainda, as organizações estão investindo em aplicações mobile para ampliar a
mobilidade (CREESE, 2011; NG, 2017). A previsão é de que, em 2020, poderão
existir aproximadamente 20 milhões de desenvolvedores ao redor do mundo,
sendo este o profissional que mais será requisitado (BATSCHINSKI, 2019).

119
RESUMO DO TÓPICO 2

Neste tópico, você aprendeu que:

• A utilização de um BaaS possibilita a terceirização das responsabilidades


vinculadas à manutenção e ao gerenciamento de servidores para um terceiro.

• MBaaS se refere ao back-end como um serviço para projetos web ou projetos


para dispositivos móveis.

• Uma plataforma BaaS é considerada como um serviço técnico e criado para


desenvolvedores.

• Um back-end é considerado como um serviço segmentado em três camadas.

• As razões para utilizar uma plataforma de Back-end as Service podem ser:


comerciais ou técnicas.

• Algumas opções de plataforma BaaS são: Azure Mobile Apps, Back4App,


Firebase, Parse, CloudKit, Kinvey, AWS Ampify, Kii, Kumulos.

120
AUTOATIVIDADE

1 Back-end como Serviço (BaaS ou mBaaS) é considerada uma plataforma


que automatiza o desenvolvimento de back-end, bem como atende a
infraestrutura de nuvem (WU, 2008; GODSE; MULIK, 2009; CREESE, 2011).
Então, sobre o ato de jogar, assinale a alternativa CORRETA:

a) ( ) Back-end as a Service é um modelo de arquitetura em que o desenvolvedor


implementa a interface.
b) ( ) Back-end as a Service possibilita que somente uma parte do
processamento seja atendido por meio de um serviço disponível na nuvem.
c) ( ) BaaS possui as ferramentas para garantir desenvolver um código fonte
e reduzir o processo de implementação.
d) ( ) A utilização de um BaaS não possibilita a terceirização das
responsabilidades vinculadas a manutenção e ao gerenciamento de
servidores para um terceiro.

2 Um dos primeiros modos de aplicação da arquitetura em nuvem é o Back-


end como Serviço. Ele faz parte da evolução da aplicação da arquitetura
Serverless, sobretudo por estas aplicações estarem conectadas a algum banco
de dados em nuvem e serem hospedadas em determinados serviço cloud.
Considerando o BaaS não existe preocupação com o Back-end, somente é
consumido esse serviço através do provedor de computação em nuvem
(TAURION, 2009; CREESE, 2011; BATSCHINSKI, 2016; BATSCHINSKI,
2019). Considerando esta afirmação, assinale a alternativa CORRETA:

a) ( ) As vantagens de um back-end como serviço estão atreladas somente à


terceirização de responsabilidades de gerenciamento de servidores.
b) ( ) A vantagem é gerenciar a infraestrutura de nuvem.
c) ( ) A vantagem de um BaaS é utilizar mais desenvolvedores de back-end.
d) ( ) A vantagem de um BaaS é reduzir o tempo entre a análise de um
produto e sua disponibilização para o mercado.

3 Ao se utilizar uma estrutura BaaS, dividido em algumas camadas, é possível


resolver alguns problemas, como o gerenciamento e dimensionamento da
infraestrutura em nuvem, assim como a aceleração do desenvolvimento de
back-end. Considerando esta afirmação, assinale a alternativa CORRETA:

a) ( ) BaaS é segmentado em duas camadas, sendo uma a que possui


servidores de bancos de dados e a outra a que possui servidores para
processamento de requisições.
b) ( ) BaaS é segmentado em três camadas e oferece vários serviços
disponíveis na própria infraestrutura.

121
c) ( ) BaaS é considerada uma plataforma exclusiva para administradores
de servidores.
d) ( ) BaaS disponibiliza muitos serviços, exceto autenticação e push
notifications.

4 Plataformas BaaS oferecem muitos benefícios para equipes de


desenvolvimento de software, permitindo que mais tempo seja voltado para
atividades do projeto de software, e não para infraestrutura de servidores.
Considerando esta afirmação, assinale a alternativa CORRETA:

a) ( ) São muitas as vantagens de se utilizar uma plataforma BaaS, a qual é


indicada apenas para projetos de grande porte.
b) ( ) Uma desvantagem de se utilizar o BaaS é o aumento do time to market
de um projeto de software.
c) ( ) O BaaS pode reduzir o tempo de análise de um projeto de software.
d) ( ) Apesar da aceleração do processo de desenvolvimento de software,
uma das desvantagens de se utilizar o BaaS é o aumento do número de
desenvolvedores.

5 O BaaS pode ser definido por uma plataforma que acelera o desenvolvimento
de back-end de uma aplicação, atendendo a infraestrutura de nuvem.
Nesse sentido, o Back-end as a Service pode ser considerado um modelo de
arquitetura no qual o desenvolvedor implementa a interface e possibilita
que o processamento seja atendido por meio de um serviço disponível na
nuvem. Considerando esta afirmação, assinale a alternativa CORRETA:

a) ( ) A minoria dos BaaS que estão disponíveis no mercado trabalha com o


modelo freemium.
b) ( ) Modelo freemium de BaaS significa que permite uma utilização
limitada, porém sem custo por usuários ou acessos.
c) ( ) Aplicativos possuem um front-end, um back-end e APIs, sendo o front-
end, a parte da aplicação que lida diretamente com regras de negócios e
com o banco de dados.
d) ( ) Uma das vantagens principais do BaaS é o menor grau de personalização
em comparação com um back-end personalizado.

122
TÓPICO 3 —
UNIDADE 2

FUNÇÃO COMO SERVIÇO (FAAS)

1 INTRODUÇÃO
As Funções como Serviço (FaaS) podem ser descritas como um modelo de
execução computacional orientado a eventos. As funções gerenciam a lógica e o
estado no lado do servidor usado como serviços (REDHAT, 2020).

É um serviço de computação em nuvem que permite executar código


em resposta a eventos sem a infraestrutura complexa, normalmente associada à
criação e publicação de softwares (IBM, 2019).

Usualmente, a publicação de um software na internet requer


provisionamento e gerenciamento de um servidor virtual ou físico, gerenciamento
de processos de hospedagem de sistemas operacionais e servidores da web. Com
a utilização do FaaS, o hardware físico, o sistema operacional da máquina virtual
e o gerenciamento de software do servidor são gerenciados pelo provedor da
nuvem (IBM, 2019).

A implantação de funções como serviço são muito diferentes das formas


tradicionais e com reserva de recurso, pois não temos aplicações de servidor para
executar por conta própria. Em um ambiente FaaS, carregamos o código da função
no provedor e ele faz todo o necessário para provisionar recursos, instanciar as
máquinas virtuais e gerenciar os processos, por exemplo (ROBERTS, 2018).

A computação sem servidor é um contexto em que os desenvolvedores


escrevem a lógica de negócios, que é executada em contêineres Linux, totalmente
gerenciados por uma plataforma, por exemplo na Amazon Web Services ou
Microsoft Azure. As funções estão na nuvem, no entanto, algumas implementações
on-premise e híbridas podem ser concebidas (REDHAT, 2020).

Por que ficar sem servidor para a minha aplicação? As vantagens começam
por garantir que não haja nenhuma sobrecarga de infraestrutura, atividades de
manutenção reduzidas, o custo eficiente mais adequado à real necessidade do
negócio, e, por fim, a escala é facilmente e rapidamente implementada, permitindo
que o produto seja amplamente distribuído, gerando resultados financeiros mais
rápido para o negócio (IBM, 2020a).

123
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)

A função dentro de uma estrutura FaaS, normalmente concebida sob a


lógica de um micro serviço, é um algoritmo que entrega uma lógica de negócios,
o que faz com que normalmente as aplicações sejam compostas de muitas funções
(REDHAT, 2020).

A utilização do FaaS traz alguns benefícios para o desenvolvimento de


software, seja para o desenvolvedor, principal beneficiado, seja para o usuário, que
vai ter uma experiência mais fluida e com maior disponibilidade e produtividade
(REDHAT, 2020).

Em um primeiro momento, pode-se destacar o aumento da produtividade


dos desenvolvedores e do tempo de desenvolvimento, assim os programadores
de software colhem os benefícios do FaaS (REDHAT, 2020).

Outro aspecto positivo é não ter a responsabilidade pelo gerenciamento


de servidores, pois a solução está nas plataformas dos provedores, assim, os
analistas de infraestrutura saem, também, beneficiados (REDHAT, 2020).

Do ponto de vista do usuário, a possibilidade de a aplicação ser


escalada facilmente e escalada horizontalmente de forma gerenciada pela
própria plataforma provedora do serviço, faz com que o software tenha melhor
desempenho e disponibilidade (REDHAT, 2020).

E o melhor do FaaS é que quase qualquer software pode ir para a


estrutura de função como serviço, pois estas podem ser escritas em quase todas
as linguagens de programação (REDHAT, 2020). Por exemplo, as funções do
AWS Lambda podem ser implementadas em JavaScript, Python, Go, qualquer
linguagem JVM ou .NET (ROBERTS, 2018).

Assim como os serviços de computação em nuvem, a infraestrutura pode


se comportar de forma inteligente. Logo, em tendo a demanda de solicitação de
função caindo, a aplicação reduz a escala da infra automaticamente. O (REDHAT,
2020).

2 CONCEITOS
Podemos simplificar a definição do conceito de FaaS como sendo a
execução de código de back-end sem gerenciar seus próprios sistemas de servidor
ou aplicativos de servidor de longa duração, o qual possui a principal diferença
quando comparada com outras tendências da arquitetura moderna, como os
Platform as a Service (PaaS), que o desenvolvedor precisa alocar o servidor por um
longo período, mesmo que não tenha toda essa necessidade (ROBERTS, 2018).

124
TÓPICO 3 — FUNÇÃO COMO SERVIÇO (FAAS)

Na Figura 11 são apresentadas as camadas que são gerenciadas de acordo


com cada tipo de serviço de computação em nuvem, sendo possível perceber a
tendência de diminuição da responsabilidade de manutenção da infraestrutura
conforme a evolução da esquerda para a direita vai ocorrendo, ou seja, de
totalmente gerenciável até nada gerenciável.

FIGURA 11 – CAMADAS GERENCIAIS POR TIPO DE SERVIÇOS

FONTE: <https://www.smartspate.com/deploy-an-apps-in-aws-serverless/>. Acesso em: 29 set. 2020.

As infraestruturas on premise, conforme Figura 11, necessitam de total


controle por parte da equipe de desenvolvimento de software, até mesmo do
hardware. Na IaaS, a preocupação passa a ser apenas das questões de sistemas
operacionais e seus níveis superiores, simplificando as questões de hardware, redes,
armazenamento e virtualização. Na coluna seguinte, os PaaS simplificam ainda
mais, delegando ao desenvolvedor apenas a necessidade de gerenciar aspectos
relacionados a recursos que precisam servir a aplicação e ao código propriamente
dito. Na sequência, o FaaS simplifica ao máximo, fazendo o desenvolvedor se
preocupar apenas com código fonte. Os SaaS já são considerados, do ponto de
vista do usuário, onde não há preocupação com codificação, mas apenas com o
uso do software propriamente dito.

O FaaS pode substituir um servidor de processamento de cliques, por


exemplo, que seja possivelmente uma máquina física, mas definitivamente um
aplicativo específico, por algo que não precisa de um servidor provisionado, nem
um aplicativo que esteja executando 24/7 (ROBERTS, 2018).

125
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)

A computação sem servidor e as funções como serviço são normalmente


vistas como análogas, mas o FaaS é uma parte da computação serverless, o qual é
focado em qualquer categoria de serviço, seja computação, armazenamento, banco
de dados, mensagens, gateways da API, dentre outros, nos quais o gerenciamento
é transparente para o usuário final.

O FaaS, por outro lado, talvez seja a tecnologia mais central em arquiteturas
sem servidor, concentra-se no paradigma da computação orientada a eventos em que o
código do software é executado apenas em resposta a eventos ou solicitações (IBM, 2019).

De acordo com a IBM (2019) o FaaS se difere de outros modelos comuns


de computação no mercado:

• Tempo de provisionamento: milissegundos, comparado a minutos e horas para


os outros modelos.
• Administração contínua: nenhuma, comparada a uma escala móvel de fácil a
difícil para PaaS, contêineres e VMs.
• Escala elástica: cada ação é sempre instantânea e escalada, em comparação com
outros modelos que oferecem escalonamento automático, mas lento, os quais
requerem ajustes cuidadosos das regras de escalonamento automático.
• Planejamento de capacidade: não é necessário no FaaS, em comparação
com outros modelos que exigem uma mistura de alguns dimensionamentos
automáticos e algum planejamento de capacidade.
• Manutenção: toda a manutenção é gerenciada pelo provedor FaaS. No entanto,
o PaaS, contêineres e VMs requerem manutenção significativa, que inclui a
atualização e gerenciamento de sistemas operacionais, imagens de contêineres,
conexões, dentre outros.
• Alta disponibilidade e recuperação de desastre: a alta disponibilidade é inerente
ao modelo FaaS sem esforço ou custo extra. Os outros modelos exigem custos
adicionais e esforço de gerenciamento.
• Utilização de recursos: os recursos nunca estão ociosos, são invocados somente
mediante solicitação. Todos os outros modelos apresentam pelo menos algum
grau de capacidade ociosa.
• Limites de recursos: o FaaS é o único modelo que possui limites de recursos em
tamanho de código, ativações simultâneas, memória e duração da execução,
por exemplo.
• Granularidade e cobrança de carregamento: por blocos de 100 milissegundos,
comparados à hora e, as vezes, aos minutos de outros modelos.

3 FUNÇÕES COMO SERVIÇO


Em uma arquitetura orientada, as funções, ou eventos, como vimos
anteriormente, é preciso se atentar a alguns aspectos críticos para que os benefícios
da FaaS sejam possíveis de serem alcançados. Por exemplo, o limite de tempo de
execução de uma função, sendo necessário que uma função seja algo que possa
ser iniciado e executado rapidamente (REDHAT, 2020).

126
TÓPICO 3 — FUNÇÃO COMO SERVIÇO (FAAS)

Por parte do provedor do serviço em nuvem, as funções iniciam em


questão de milissegundos e processam solicitações individuais.

O ponto de destaque para essa arquitetura é, caso haja várias solicitações


simultâneas por parte da aplicação solicitante a serem processadas por uma função,
o sistema criará um número de cópias suficientes da instância de processamento
das funções para atender à demanda (REDHAT, 2020).

As funções são normalmente acionadas por eventos definidos pelo


provedor, no caso da Amazon Web Services, esses acionamentos podem ser
atualizações no servidor de arquivos S3, passagem de tempo, como tarefas
agendadas, e mensagens adicionadas a um barramento de mensagens (ROBERTS,
2018).

Quando existem transações de alto volume, ou seja, cargas de trabalho que


ocorrem de tempos em tempos, os FaaS são muito adequados. Em caso de geração
de relatórios, processamento de imagens ou quaisquer tarefas programadas, por
exemplo (REDHAT, 2020).

No entanto, as funções normalmente são limitadas em quanto tempo


cada chamada é executada. Segundo Roberts (2018), o tempo limite para uma
função do AWS Lambda – serviço FaaS da AWS – responder a um evento é de no
máximo cinco minutos. O Microsoft Azure e o Google Cloud Functions têm limites
semelhantes (ROBERTS, 2018).

Contudo, certas tarefas – as de longa duração – não são adequadas a serem


desenvolvidas no modelo FaaS. É necessário criar várias funções coordenadas,
enquanto, em um ambiente tradicional você pode ter uma tarefa de longa duração
executando coordenação e execução (ROBERTS, 2018).

A implementação e eficácia dos FaaS depende de algumas práticas


recomendadas, por exemplo, cada função deve executar apenas uma ação, as
funções do FaaS devem ser projetadas para executar uma única lógica em resposta
a um evento. Torne seu escopo de código limitado, eficiente e leve, para que as
funções sejam carregadas e executadas rapidamente.

Não é aconselhável que as funções chamem outras funções, o grande


diferencial do FaaS está no isolamento de funções. Evitar a utilização de bibliotecas
em funções é altamente benéfico, pois o uso de muitas bibliotecas pode diminuir
a velocidade das funções e torná-las mais difíceis de dimensionar (IBM, 2019).

127
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)

4 ESCALABILIDADE
A escala horizontal é totalmente automática, elástica e gerenciada pelo
provedor. Se o seu sistema precisar processar 100 solicitações em paralelo,
o provedor cuidará disso sem nenhuma configuração extra de sua parte. Os
“contêineres de computação” que executam suas funções são efêmeros, com o
provedor FaaS criando e destruindo-os puramente orientados pela necessidade
de tempo de execução. Com o FaaS, o fornecedor lida com todo o provisionamento
e alocação de recursos subjacentes – nenhum gerenciamento de cluster ou VM é
necessário para o usuário (ROBERTS, 2018).

A escalabilidade é fundamental do ponto de vista de negócios. Digamos


que estávamos tendo um bom dia de vendas em uma loja virtual, e os clientes
estavam clicando em dez vezes mais anúncios do que o costumeiro para a loja
em questão. Em uma arquitetura tradicional, o sistema on-line da loja teria
que ser capaz de lidar com isso. Por exemplo, o site teria que saber lidar com
várias mensagens ao mesmo tempo, provisionando recursos para crescimentos
esporádicos.

Com a abordagem do FaaS, todas essas dificuldades são resolvidas de


princípio, é necessário apenas escrever a função para que entenda o paralelismo
em escala horizontal, mas, a partir desse momento, o provedor do FaaS lida
automaticamente com todas as necessidades de dimensionamento (ROBERTS,
2018).

5 SEGURANÇA
A aplicação em FaaS exige uma análise profunda na questão de segurança,
cada caso deve ser explorado da forma mais adequada ao que diz respeito ao
projeto. Cada fornecedor sem servidor que você usa, aumenta o número de
diferentes implementações de segurança adotadas. Essa situação aumenta
potencialmente a área para ataques maliciosos (ROBERTS, 2018).

6 CUSTOS RELACIONADOS
A empresa que desenvolve o software paga pelo que consumir do
provedor, sendo a cobrança apenas do uso de recursos efetivamente entregues
ao usuário, por exemplo, não pagando por servidor quando em sua ociosidade
(REDHAT, 2020).

Além disso, o usuário não paga, nem se preocupa, com a memória, CPU
e demais recursos relacionados. E, ainda, não se preocupa com instalação e
configuração, muito menos com administração contínua da infraestrutura (IBM,
2020c).

128
TÓPICO 3 — FUNÇÃO COMO SERVIÇO (FAAS)

Não se preocupar com a infraestrutura inclui não precisar fazer o


planejamento da capacidade, pois o FaaS fornece automaticamente a capacidade
adequada de acordo com a demanda da função (IBM, 2020c).

Quando o FaaS não está em uso, ele não custa nada. O código somente é
executado quando há uma requisição ao serviço, mudança de estado do banco de
dados ou outro tipo de evento que aciona a execução do código. No caso da IBM,
o faturamento é por milissegundo de tempo de execução arredondado até o 100
MS mais próximos (IBM, 2020a).

7 CASOS DE APLICAÇÕES
Os micros serviços ainda necessitam de grande complexidade na concepção
da infraestrutura usando tecnologias de nuvem tradicionais, as quais necessitam
uma variedade de controles relacionados a ferramentas complexas e pipelines de
construção e operações. Equipes pequenas e ágeis utilizam muito tempo criando
infraestruturas complexas e operacionais, com recursos de tolerância a falhas,
balanceamento de carga, ajustes automáticos de escala e criação de logs (IBM,
2020b).

A capacidade modular e escalável dos FaaS fazem com que ele se torne
ideal para implementar lógicas de ações, as ações são independentes uma das
outras e podem ser implementadas usando várias linguagens diferentes que são
suportadas pelo provedor, tendo a capacidade de acessar vários sistemas back-
end. As ações podem ser implementadas e gerenciadas independentemente, além
de ser escalada de forma separada de outras ações (IBM, 2020b).

Até mesmo aplicações web voltadas para usuário final podem ter os
benefícios das FaaS, nas quais as requisições do navegador do usuário servem
como eventos. As solicitações são processadas apenas a partir da interação do
usuário, não existindo tempo de espera, tornando o FaaS menos caro quando
comparado com contêineres tradicionais (IBM, 2020b).

Aplicações voltadas para internet das coisas também podem usufruir


dos benefícios dos eventos disparados ao FaaS. Por exemplo, uma ação poderá
ser acionada quando precisar reagir a um sensor que excede uma temperatura
específica. As interações IoT são geralmente sem estado e com o potencial de alta
carga em grandes eventos espontâneos, como desastres naturais, tempestades
climáticas significativas ou engarrafamentos. Uma necessidade é criada para um
sistema elástico em que a carga de trabalho normal pode ser pequena, mas precisa
escalar rapidamente com tempo de resposta previsível.

129
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)

Portanto, a capacidade de manipular vários eventos simultâneos sem


aviso prévio no sistema é desejável. É difícil construir um sistema para atender
esses requisitos que usam arquiteturas de computação em nuvem com servidores
tradicionais. Essas infraestruturas tendem a ser subdesenvolvidas e incapazes
de manipular a carga de pico no tráfego ou ser excessivamente provisionados e
altamente custosos (IBM, 2020b).

Uma aplicação prática e adequada à estrutura de FaaS é a montagem de


APIs sem servidores. O FaaS pode chamar uma ação com métodos do HTTP. Esse
recurso é útil não apenas para expor APIs a consumidores externos, mas também
para construir aplicativos de micro serviços (IBM, 2020b).

8 APLICAÇÕES EM CENÁRIOS DE BIG DATA


As arquiteturas sem servidor, como FaaS, tem um grande potencial
em auxiliar as aplicações de software que trabalham com big data. A alta
disponibilidade das funções e alta tolerância a falhas e disponibilidade permitem
que o desenvolvimento se concentre mais no desenvolvimento da solução big
data. O tempo de colocação no mercado reduzido é essencial para as soluções de
big data, pois levam apenas alguns minutos para iniciar.

No entanto, antes de implementar sua solução de big data na arquitetura


sem servidor, há algumas coisas que precisam ser consideradas, pois nenhuma
solução é perfeita. É necessário descobrir se o servidor está sendo uma solução
barata para o sistema de big data ou não. Em segundo lugar, se a equipe é capaz de
implementá-la ou será obrigada a contratar novos profissionais para a concepção
dessa solução específica. Além disso, precisa-se descobrir se a estratégia para
o gerenciamento de pipelines de big data. A segurança dos dados também é
uma grande preocupação quando avança para as soluções centradas em dados
(AKIWATKAR, 2018).

Um aspecto negativo é que os dados são buscados em várias fontes, o


que aumenta significativamente o tempo de execução. E como as funções sem
servidor têm vida curta, isso entra em conflito com as melhores práticas. É viável
fazer a implementação neste modelo, contudo, foge dos padrões e boas práticas,
e também aumentará o custo geral da solução de big data (AKIWATKAR, 2018).

Se trata de tecnologia em plena evolução, logo as possíveis soluções para


os problemas apresentados estarão dispostas para a comunidade. Contudo,
o a computação sem servidor entregará bons benefícios quando os problemas
forem compreendidos completamente e o software for construído de acordo com
normas e boas práticas (AKIWATKAR, 2018).

130
TÓPICO 3 — FUNÇÃO COMO SERVIÇO (FAAS)

9 DESVANTAGENS
Assim como a maioria das tecnologias, principalmente as que estão em
fases mais iniciais, os FaaS possuem algumas desvantagens, e estão associadas à
forma pela qual as plataformas são implementadas. Alguns exemplos são a duração
de execução, latência de inicialização e limites de função cruzada. A latência de
inicialização pode ser possivelmente atenuada, permitindo que um cliente solicite
ao provedor que duas instâncias de uma função FaaS estejam sempre disponíveis
em baixa latência, com o cliente pagando por essa disponibilidade (ROBERTS,
2018).

10 PLATAFORMAS DE FAAS
As plataformas são responsáveis por entregar o serviço ao desenvolvedor
e gerenciar toda a infraestrutura necessária para o desenvolvedor ter um ambiente
pronto e apenas implementar e focar na regra de negócio da solução que busca
implementar. Um provedor de nuvem torna uma função sempre disponível e
gerencia a alocação de recursos. Como as funções são orientadas a eventos, e não
a recursos, elas podem ser escaladas com facilidade.

10.1 AWS LAMBDA


O principal provedor de computação em nuvem entrega sua ferramenta
de função como serviço já consolidada e muito utilizada por grandes corporações.

FIGURA 12 – AMAZON WEB SERVICES

FONTE: <https://aws.amazon.com/pt/lambda/>. Acesso em: 29 set. 2020.

O serviço Lambda da AWS entrega as funcionalidades do FaaS, permitindo


a execução de código sem provisionar ou gerenciar servidores, bem como as
facilidades de pagar apenas pelo tempo de execução consumido pelas funções.
Com o Lambda é possível executar o código para variados tipos de aplicativo ou
serviços de back-end, tudo sem precisar de administração da infraestrutura.

A quase que única tarefa é fazer a inserção do código, que o Lambda


se encarrega de todos os procedimentos necessários para executar e alterar a
escala do código e deixar a infraestrutura com alta disponibilidade. Você pode

131
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)

configurar seu código para que ele seja acionado automaticamente por outros
serviços da AWS ou chamá-lo diretamente usando qualquer aplicação móvel ou
da web (AWS, 2020).

A Figura 13 apresenta como funciona passo-a-passo o serviço de FaaS da


AWS, do upload do código ao pagamento do serviço.

FIGURA 13 – COMO FUNCIONA O AWS LAMBDA

FONTE: <http://twixar.me/Xrlm>. Acesso em: 29 set. 2020.

Após estar logado no painel dos serviços de computação da Amazon, basta


acessar o Lambda e fazer o upload do código dentro do próprio editor de códigos
da AWS. Posteriormente, é necessário configurar como a função será disparada,
podendo ser disparada por outros serviços da AWS ou APIs HTTP e atividades
do usuário dentro de softwares. Feito isso, a AWS irá executar o código apenas
quando for disparado o evento e você pagará apenas pelas frações de tempo de
execuções da sua função, torando o aplicativo altamente disponível.

Um exemplo de uso é no caso de um fotógrafo, quando retira uma foto


e precisa redimensionar a imagem para ser distribuída em desktop, tablets e
smartphones.

FIGURA 14 – CASO DE USO PARA REDIMENSIONAMENTO DE IMAGEM

FONTE: <http://twixar.me/trlm>. Acesso em: 29 set. 2020.

132
TÓPICO 3 — FUNÇÃO COMO SERVIÇO (FAAS)

Quando a imagem é enviada ao repositório de arquivos da AWS, o Amazon


S3, automaticamente é disparado um evento ao Lambda para que recupere essa
imagem e faça seu redimensionamento deixando a imagem disponível e adequada
para ser exibida em quaisquer dispositivos.

Utilizar o Lambda para aplicativos web é uma abordagem muito


interessante, pois pode aumentar a performance do serviço e até mesmo reduzir
custos. Assim, sua API Rest terá a infraestrutura totalmente supervisionada pela
equipe de engenharia da AWS. Veja a Figura 15 como acontece o passo a passo
para executar um aplicativo na Web usando Lambda.

FIGURA 15 – APLICATIVO WEB UTILIZANDO LAMBDA

FONTE: <http://twixar.me/8rlm>. Acesso em: 29 set. 2020.

A Figura 15 apresenta o fluxo desde a interação do usuário no front-end


da aplicação, neste caso, hospedada nos serviços Amazon S3 até a consulta dos
dados persistidos no DynamoDB, também da Amazon.

Quando o usuário interage com a interface para recuperar as informações


da temperatura, imediatamente após este momento é requisitada a API da
aplicação que dispara um evento para o Lambda acessar a base de dados no
DynamoDB e retornar para a própria a API as informações do clima, a qual exibe
na interface do usuário a informação completa.

Para colocar em prática a criação de uma função Lambda na AWS você


pode criar uma conta gratuita, mas sempre prestando atenção ao seu painel de
faturamento para evitar a utilização de recursos que estejam fora da camada
gratuita.

Na Figura 16 está o painel inicial do AWS Lambda, sendo, dentro dele,


que você pode começar a criação de funções. Perceba que não existe a necessidade
de configuração de nenhuma infraestrutura de servidor, apenas da criação da
função.

133
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)

FIGURA 16 – TELA INICIAL PARA CRIAÇÃO DE FUNÇÕES NA AWS

FONTE: O autor

Ao clicar em “Criar função” é possível avançar para a tela da Figura 17, em


que você pode criar suas funções de diversas maneiras, seja criar uma função do
zero, utilizar um esquema a partir de um exemplo da AWS com base em casos de
uso comum e, por fim, utilizar algum repositório criado por terceiros. Na Figura
17 você pode ver a tela que é utilizada para escolher estas opções.

FIGURA 17 – CRIANDO UMA FUNÇÃO NA AWS

FONTE: O autor

134
TÓPICO 3 — FUNÇÃO COMO SERVIÇO (FAAS)

Ao escolher a opção “Explorar o repositório de aplicativos sem servidor”


você vai ter uma série de opções, conforme exemplo na Figura 18. São exemplos
que vão de um “hello world” básico até mais complexos, nos quais o FaaS chega
a ter interações e tarefas junto à Alexa®, a assistente virtual da Amazon.

FIGURA 18 – EXPLORANDO O REPOSITÓRIO DE FAAS DA AWS

FONTE: O autor

Grandes corporações, como a Coca Cola, Thomson Reuters, Netflix e


T-Mobile utilizam o FaaS da Amazon, e você também pode utilizar.

DICAS

• A AWS possui uma camada gratuita, e você pode consultar os serviços gra-
tuitos no link a seguir: https://aws.amazon.com/pt/free/?all-free-tier.sort-by=item.additio-
nalFields.SortRank&all-free-tier.sort-order=asc.
• No caso do AWS Lambda, você tem 1 milhão de solicitações gratuitas por mês, durante 1
ano, veja no link a seguir: https://aws.amazon.com/pt/lambda/?did=ft_card&trk=ft_card.
• Conheça todos os recursos do AWS Lambda no link a seguir: https://aws.amazon.com/
pt/lambda/resources/.
• Que tal criar a sua primeira função no Lambda com um tutorial desenvolvido pela
própria AWS? Veja o link a seguir: https://aws.amazon.com/pt/getting-started/hands-on/
run-serverless-code/.

135
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)

10.2 GOOGLE CLOUD FUNCTIONS


O Google oferece uma série de funcionalidades de computação em nuvem,
e oferece também o serviço função como serviço.

FIGURA 19 – GOOGLE CLOUD

FONTE: <http://twixar.me/Prlm>. Acesso em: 29 set. 2020.

A forma Google de desenvolver suas tecnologias favorece o aprendizado


e a facilidade de uso, como a própria empresa se define: a maneira mais simples
de executar seu código. O Cloud Functions é a plataforma.

A possibilidade de iniciar diretamente da etapa de código até implantação


com entrega contínua e ferramentas de monitoramento. O Google oferece a
possibilidade de conectar-se a serviços do Google Cloud, ou de terceiros, para
criar cenários de desenvolvimento complexos com facilidade.

Conforme mencionado anteriormente, a experiência simplificada do


Google confere maior velocidade para o desenvolvedor, o Cloud Functions, o
qual oferece uma experiência de desenvolvedor simples e intuitiva. Seguindo as
bases do FaaS, basta escrever o código e deixar que o Google Cloud gerencia a
infraestrutura operacional. Inferindo num desenvolvimento com mais rapidez,
basta escrever e executar snippets de código pequenos que respondam a eventos
(GOOGLE, 2020).

Empresas consolidadas, como a Natura, Hurb, Resultados Digitais,


Mercado Livre e SBT utilizam a nuvem do Google para potencializar seus
negócios. Podemos utilizar as mesmas estruturas que essas grandes corporações
utilizam, podendo levar soluções em software para a nuvem em até quatro meses.

Alguns casos de uso comuns que podem-se aplicar a estrutura do Google


Cloud são apresentados a seguir. Por exemplo, back-ends de aplicativos, nos quais
é possível executar o código dentro do Google Cloud ou diretamente de qualquer
aplicativo web, móvel ou de back-end.

O Cloud Functions fornece uma camada de lógica conectiva que permite


integrar e estender os serviços do Google Cloud e de terceiros, possibilitando a
criação rápida de aplicativos sem servidor altamente disponíveis, seguros e com
boa relação custo-benefício (GOOGLE, 2020).

136
TÓPICO 3 — FUNÇÃO COMO SERVIÇO (FAAS)

A integração com serviços e APIs de terceiros também pode ser


implementada com o Cloud Functions, seja para publicar microsserviços por meio
de APIs HTTP ou integrar a serviços de terceiros que oferecem integrações de
webhook para estender rapidamente o aplicativo com recursos eficientes, seja
para enviar e-mail de confirmação ou responder a eventos de mensagem.

Na Figura 20, é apresentado o fluxo de execução após um commit no


Github, gerando um evento no serviço FaaS do Google.

FIGURA 20 – DISPARO DE EVENTO APÓS COMMIT

FONTE: <https://cloud.google.com/images/products/functions/third-party-services-graphic.
svg?hl=fr>. Acesso Em: 29 set. 2020.

Na Figura 20, após ser efetuado um push num repositório GitHub, integrado
com o Cloud Functions do Google por intermédio dos webhoocks do GitHub, é
possível disparar uma função que envie uma mensagem automaticamente para
uma equipe de desenvolvimento em um grupo do aplicativo Slack.

A vantagem disso é que os push no GitHub não são constantes, o que não
justifica possuir uma infraestrutura disponível 24/7 para esse tipo de situação,
o que acabaria resultando numa grande ociosidade de computação e um custo
elevado e constante desnecessário.

A simplicidade das interfaces do Google é perceptível também na


ferramenta de nuvem da empresa. A criação de funções como serviço dentro
da plataforma é orientada passo a passo dentro de telas que facilitam muito a
conceber funções.

Na Figura 21, é apresentado o painel do Google, no qual basta escolher um


nome da função, selecionar a memória adequada a ser alocada para a execução
do código, apresentar a forma como será disparada a função, neste caso por
requisições HTTP.

Depois disso, escolhe a forma em que o código será inserido no provedor,


a facilidade é tão grande que pode ser editado dentro do painel mesmo, ou um
ZIP, ou até mesmo um repositório específico. Ao final, basta escolher a linguagem
de programação que vai ser utilizada e colocar a função no ar.

137
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)

FIGURA 21 – CRIAR FUNÇÕES NO GOOGLE CLOUD

FONTE: O autor

A função “function-1”, criada anteriormente, já pode ser visualizada na


tela de listagem das funções. Conforme a Figura 22, é possível ver as informações
mais relevantes.

138
TÓPICO 3 — FUNÇÃO COMO SERVIÇO (FAAS)

FIGURA 22 – LISTAR FUNÇÕES NO GOOGLE CLOUD

FONTE: O autor

A simplicidade para fazer a publicação de uma função como serviço pode


ser traduzida pela Figura 23, em que, após o cadastro, é possível, através do
menu de contexto, executar um teste da função por dentro da própria plataforma.
Nesse menu, também é possível verificar a execução e resultados por meio da
opção de logs da função.

FIGURA 23 – TESTAR FUNÇÃO NO GOOGLE CLOUD

FONTE: O autor

Além da facilidade das funções como serviço, ganhamos agilidade e


redução de custos. Agora que já conhecemos plataformas intuitivas para a criação
dela, basta escrever o código e enviar para a plataforma. É fundamental destacar
que o Google possui uma camada gratuita.

No link https://cloud.google.com/functions/pricing, você pode consultar


o preço atualizado dos serviços do Google Cloud Functions, sendo que, assim
como em outros provedores, é possível criar uma conta e ter 12 meses de acesso
a uma camada gratuita, na qual você ganha 300 dólares em créditos, sendo, desta
forma, possível testar a plataforma e compreender se a demanda atenderá as
necessidades do software.

139
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)

DICAS

Para colocar um FaaS do Google no ar é simples e prático. Veja como,


acessando o link: https://cloud.google.com/functions/docs/quickstart-console.

10.3 MICROSOFT AZURE FUNCTIONS


A Microsoft oferece seus serviços de FaaS pelo Azure Functions, permitindo
acelerar e simplificar o desenvolvimento de software com a computação sem
servidor orientada a eventos que também pode resolver problemas complexos
de orquestração. É possível criar e depurar localmente e sem configurações
adicionais, implantar e operar em escala na nuvem e integrar serviços usando
acionadores e associações (MICROSOFT, 2020).

FIGURA 24 – MICROSOFT AZURE

FONTE: <https://ocaradoti.com.br/wp-content/uploads/2020/01/logo-transparente-Microsoft-
-Azure.png>. Acesso em: 29 set. 2020.

A Azure Functions possui uma experiência de desenvolvimento, indo


desde a criação e a depuração local nos principais sistemas operacionais, seja
Windows, macOS ou Linux, até a implantação e o monitoramento na nuvem.
É possível utilizar as extensões e modelos do Functions no Visual Studio e no
Visual Studio Code, editor de código amplamente utilizado pela comunidade,
para obter um desenvolvimento mais rápido e eficiente em seu computador local,
mas completamente integrado com a plataforma do Azure (MICROSOFT, 2020).

No entanto, é possível desenvolver utilizando o editor de código favorito


do desenvolvedor e o Azure Functions Core Tools. Para agilizar ainda mais o
desenvolvimento é possível configurar a CI/CD (integração contínua e entrega
contínua) com o Azure Pipelines e obter sugestões proativas e inteligentes do
desempenho de aplicativos na produção pelo Azure Monitor (MICROSOFT,
2020).

140
TÓPICO 3 — FUNÇÃO COMO SERVIÇO (FAAS)

O Azure possui um painel de monitoramento completo, no qual você


pode verificar a quantidade de vezes que a função foi executada com ou sem
sucesso, bem como um log de todas as execuções com seu respectivo sucesso
e duração da execução dela. Na Figura 25, é possível perceber a execução de
uma determinada tarefa, clicando no botão Refresh, o painel é atualizado com as
possíveis novas execuções da função, que neste caso se chama “HttpTrigger1” e
pertence ao aplicativo “myfunctionaap”.

FIGURA 25 – AZURE FUNCTION MONITOR

FONTE: O autor

O Azure Functions permite que você escreva funções com as linguagens


C#, JavaScript, F#, Java, PowerShell, Python e TypeScript.

DICAS

Você pode consultar os preços do Azure Functions no link https://azure.


microsoft.com/pt-br/pricing/details/functions/. A Microsoft também possui um nível
gratuito. Então, você pode criar sua conta Azure e começar hoje mesmo a testar o Functions.
Aproveite e escreva sua primeira função na Microsoft seguindo o roteiro a seguir, utilizando
a linguagem de programação Java Script. Acesse: https://docs.microsoft.com/pt-br/azure/
azure-functions/functions-create-first-function-vs-code?pivots=programming-language-
javascript.

141
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)

10.4 IBM CLOUD FUNCTIONS


A IBM tem sua tecnologia FaaS com base no Apache OpenWhisk, que
é uma plataforma sem servidor distribuída de código aberto, ele gerencia a
infraestrutura, os servidores e o dimensionamento usando contêineres para que
seja possível focar na construção do software (IBM, 2020b).

FIGURA 26 – IBM CLOUD FUNCTIONS

FONTE: <https://cloud.ibm.com/functions/>. Acesso em: 29 set. 2020.

A IBM destaca o potencial do FaaS com a possibilidade de executar código


sem servidores, a possibilidade de escalar sem complicação e automaticamente e
não pagar nada quando não estiver usando os recursos (IBM, 2020b).

Aplicar esse conceito na prática para back-end de aplicativos móveis é


interessante. Diante disso, a IBM apresenta um caso de uso da empresa Weather
Gods. Conforme a Figura 27, o cliente faz uma requisição ao Gateway de API
do provedor e logo após acessa o Cloud Functions para executar o código fonte e
enviar uma notificação ao dispositivo móvel do usuário.

FIGURA 27 – FLUXO DE USO DO IBM FAAS EM PRA BACK-END MÓVEL

FONTE: <https://cloud.ibm.com/functions/>. Acesso em: 29 set. 2020.

O painel da IBM é bem completo para a criação das funções como serviço,
veja na Figura 28 com é possível cadastrar uma função, basta escolher o nome da
função, o pacote e o ambiente em que o código vai rodar.

142
TÓPICO 3 — FUNÇÃO COMO SERVIÇO (FAAS)

FIGURA 28 – CADASTRANDO UMA FUNÇÃO NO IBM CLOUD FUNCTIONS

FONTE: <https://www.codechain.com.br/wp-content/uploads/2019/02/image-42.png>. Acesso


em: 29 set. 2020.

Na Figura 29 é apresentada a tela com a codificação de uma função node.


js em uma função que envia uma mensagem via WhatsApp. A simplificação do
processo de construção da infraestrutura é muito relevante.

FIGURA 29 – CODIFICANDO UMA FUNÇÃO NO IBM CLOUD FUNCTIONS

FONTE: <https://www.codechain.com.br/wp-content/uploads/2019/02/image-43.png>. Acesso


em: 29 set. 2020.

143
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)

DICAS

Ao criar uma conta na IBM Cloud você tem acesso ao recurso de FaaS. A
precificação pode ser consultada no link a seguir: https://cloud.ibm.com/functions/learn/
pricing. E adocumentação completa você pode consultar no link: https://cloud.ibm.com/
docs/openwhisk.

144
TÓPICO 3 — FUNÇÃO COMO SERVIÇO (FAAS)

LEITURA COMPLEMENTAR

SAAS, BAAS, FAAS… O QUE VEM A SEGUIR?

Henrique Augusto

Como parte das ações que integram a transformação digital, grandes


empresas buscam diminuir os gastos com infraestrutura migrando a que
possuem localmente (on-premise) para aquela que é entendida como um serviço -
realidade proporcionada pela computação em nuvem. Como consultor na área, é
possível afirmar que esse processo elimina toda a ociosidade dos sistemas locais,
que normalmente costuma ser de 30% a 50% da capacidade instalada. A cloud
computing que me refiro não é a mais comumente conhecida e adotada, embarcada
em um servidor.

Uma nova tendência para otimizar ainda mais a base tecnológica,


principalmente para empresas que possuem oscilação no uso - como é o caso
de grandes redes de e-commerce e startups que precisam de escalabilidade
global - é a adoção do serverless (sem servidor, em inglês). Em 2017, a novidade já
tinha sido destacada em pesquisas do Gartner como uma das realidades a serem
empregadas no segmento enterprise na próxima década. O futuro chegou mais
rápido do que se esperava e hoje grandes organizações já adotam esse tipo de
estrutura, como Snapchat, Netflix e Spotify.

A evolução da nuvem não é só a de Infrastructure as a Service (IaaS),


mas Back-end as a Service (BaaS) e Function as a Service (FaaS). Ao adotar esses
dois últimos conceitos, conseguimos otimizar ao extremo a base tecnológica
de empresas que estão em processo de escalabilidade e veem a demanda por
recursos oscilar bastante.

Se sua empresa for iniciar hoje o desenvolvimento de uma solução nova,


não há dúvida que o conceito serverless é a melhor alternativa, inclusive se ela
não precisa de escalabilidade nem sofre variação de consumo. Dessa forma,
o desenvolvimento sem servidor é mais rápido, já que os programadores só
precisam focar em codificar sua solução, e não mais com infraestrutura.

Um ponto muito importante de ressaltar é que estamos falando de


desenvolvimento serverless, mas entre a "antiga" virtualização on-premise e o
serverless ainda existe um grande passo: o de migrar a infraestrutura virtualizada
para a nuvem. Em seguida avançamos para automatização da gestão dessa
infra virtualizada, ou seja, ao mesmo tempo que já temos novas tecnologias
totalmente automatizadas 95% da infraestrutura das grandes empresas ainda
estão virtualizadas on-premise.

145
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)

Se a sua organização já desenvolveu o produto com tecnologia antiga,


ela precisará ser redesenhada para possuir o conceito serverless. Ou seja:
invariavelmente haverá, no futuro, um investimento de recursos financeiros e
humanos que ficarão dedicados a refactory (refazer) sua solução com essa nova
tecnologia.

FONTE: <https://administradores.com.br/noticias/iaas-baas-faas-o-que-vem-a-seguir>. Acesso


em: 24 set. 2020.

146
RESUMO DO TÓPICO 3

Neste tópico, você aprendeu que:

• As Funções como Serviço (FaaS) podem ser compreendidas como sendo um


modelo de execução computacional orientado a eventos, no qual, funções
gerenciam a lógica e o estado no lado do servidor, utilizado como serviços.

• FaaS é um modelo de serviço de computação em nuvem, o qual permite a


execução de código em resposta a eventos, sem necessidade da infraestrutura
que normalmente é utilizada para criação e publicação de softwares.

• No modelo do FaaS, o hardware físico, o sistema operacional da VM e o


gerenciamento de software do servidor são todos gerenciados pelo provedor
da nuvem e não pelo cliente (desenvolvedor).

• O desenvolvimento de lógica de negócios, sem servidor, é realizado através da


execução em contêineres Linux gerenciados pela plataforma, como a Amazon
Web Services (AWS) ou Microsoft Azure, por exemplo.

• A possibilidade de as aplicações serem escaladas horizontalmente e


gerenciadas pela própria plataforma provedora de serviço possibilita um
melhor desempenho e disponibilidade do software.

• Na arquitetura orientada a funções ou eventos, é importante analisar o limite


de tempo de execução de uma função, pois é necessário que uma função seja
algo que possa ser iniciado e executado rapidamente.

• Na arquitetura FaaS, caso existam várias solicitações simultâneas por parte


da aplicação solicitante a serem processadas por uma determinada função,
automaticamente são criadas novas instâncias para processamento das funções,
atendendo à demanda.

147
• Um dos benefícios da arquitetura FaaS é a escalabilidade, em que caso o
sistema necessite executar 100 solicitações em paralelo, quem cuidará disso é o
provedor, sem nenhuma configuração por parte do desenvolvedor.

• Outro benefício da arquitetura FaaS é a empresa que desenvolve o software


pagar apenas pelo que consumir do provedor, não sendo pago recursos ociosos
de servidor.

CHAMADA

Ficou alguma dúvida? Construímos uma trilha de aprendizagem


pensando em facilitar sua compreensão. Acesse o QR Code, que levará ao
AVA, e veja as novidades que preparamos para seu estudo.

148
AUTOATIVIDADE

1 O desenvolvimento de software possui muitos requisitos e trabalho por


parte da equipe de desenvolvimento, porém, existem tecnologias que
facilitam o trabalho. Uma destas tecnologias é a arquitetura FaaS, modelo
de execução computacional orientado a eventos. Referente a Funções como
Serviço (FaaS), assinale a alternativa CORRETA:

a) ( ) Através da utilização de FaaS, o hardware físico, o sistema operacional


da máquina virtual e o software do servidor são gerenciados pelo provedor
da nuvem.
b) ( ) É um serviço de computação física que permite a execução de código
em resposta a eventos com infraestrutura de servidor física, a qual fica sob
gerenciamento da equipe de desenvolvimento.
c) ( ) É um serviço de computação física que permite a execução de código
em resposta a requisições de softwares de terceiros, no qual existe a
exigência de infraestrutura de servidor física para publicação de softwares.
d) ( ) Através da arquitetura FaaS, é possível realizar a execução de código
fonte no servidor, sem necessidade de gerenciamento de software do
servidor pelo desenvolvedor, porém não existe escalabilidade automática
para altas demandas do software.

2 Através da computação sem servidor, desenvolvedores escrevem a lógica


de negócios, que é executada em contêineres Linux, gerenciados por uma
plataforma, como Amazon Web Services (AWS) ou o Microsoft Azure, por
exemplo. Nesse sentido, assinale a alternativa CORRETA:

a) ( ) Uma das desvantagens da arquitetura FaaS é a empresa desenvolvedora


pagar o custo de recursos ociosos, não utilizados por suas aplicações.
b) ( ) Uma das principais vantagens da arquitetura FaaS é garantir que não
haja sobrecarga por altas demandas de requisições.
c) ( ) Uma das desvantagens da arquitetura FaaS é a não existência de alta
escalabilidade.
d) ( ) Apesar das várias vantagens em se utilizar a arquitetura FaaS, a
desvantagem é a redução da produtividade gerada por parte da equipe
de desenvolvimento de software, pois esta precisa gerenciar softwares no
servidor em nuvem.

3 O desenvolvimento de software possui várias tarefas e, em muitos casos,


uma delas é a configuração e gerenciamento de softwares no servidor,
para acompanhamento dos softwares desenvolvidos. A arquitetura FaaS
facilita o trabalho da equipe de desenvolvimento. Nesse sentido, assinale a
alternativa CORRETA:

149
a) ( ) No FaaS, com a demanda de solicitações para a aplicação sendo
reduzida, os recursos de infraestrutura de servidor permanecem em uso,
isto é, não são reduzidos.
b) ( ) O escalamento dinâmico não é um benefício do FaaS, mas provedores
de nuvem podem oferecer serviços deste tipo e cobrar por eles.
c) ( ) O FaaS permite o escalamento horizontal, promovendo eficiência para
as aplicações.
d) ( ) Com o FaaS, a equipe de desenvolvimento se preocupa apenas com os
softwares do servidor, os quais executam as aplicações.

4 Na arquitetura em nuvem de computação, muitos recursos que, no


desenvolvimento de software, dependiam de uma infraestrutura de
servidor local, não são mais necessários, assim como o gerenciamento
desses recursos por parte da equipe de desenvolvimento. Nesse sentido,
assinale a alternativa CORRETA:

a) ( ) Nos modelos de arquitetura IaaS e PaaS, a equipe de desenvolvimento


de software é apenas na questão de sistemas operacionais e questões de
armazenamento e virtualização.
b) ( ) No modelo de arquitetura IaaS, a equipe de desenvolvimento de
software é responsável apenas pelo código fonte da aplicação, não sendo
responsável por gerenciamento de recursos de servidor.
c) ( ) No modelo de arquitetura PaaS, a equipe de desenvolvimento
de software é responsável apenas pelo código fonte da aplicação e pelo
gerenciamento de sistema operacional e questões de armazenamento.
d) ( ) No modelo de arquitetura FaaS, a equipe de desenvolvimento de
software é responsável apenas pelo código fonte da aplicação, não sendo
responsável por gerenciamento de recursos de servidor.

5 Através do FaaS, a plataforma de nuvem disponibiliza todos os recursos


necessários para que a equipe de desenvolvimento de software tenha
um ambiente pronto, focando apenas nas regras de negócio da solução
a ser desenvolvida. Apesar disso, assim como outras arquiteturas de
computação, existem vantagens e desvantagens. Nesse sentido, assinale a
alternativa CORRETA:

a) ( ) Dentre as desvantagens da utilização do FaaS, podem ser citadas a


duração do tempo de execução, a falta de escalabilidade e a latência de
inicialização.
b) ( ) Dentre as vantagens da utilização do FaaS, podem ser citadas a
escalabilidade e os custos de servidor, sendo pagos apenas os recursos
utilizados, não havendo pagamento de recursos ociosos.
c) ( ) Dentre as desvantagens da utilização do FaaS, podem ser citadas a
duração do tempo de execução, a falta de escalabilidade e a falta de recursos
de segurança.
d) ( ) Dentre as vantagens da utilização do FaaS, podem ser citadas a
duração do tempo de execução, a escalabilidade, embora a desvantagem
seja a falta de recursos de segurança.
150
REFERÊNCIAS
AKIWATKAR, R. How serverless will facilitate the growth of big data
applications? Datafloq, Haia, 12 dez. 2018. Disponível em: https://datafloq.com/
read/how-serverless-will-facilitate-growth-big-data/5824. Acesso em: 31jul. 2020.

AWS. AWS lambda. c2020. Disponível em: https://aws.amazon.com/pt/lambda/.


Acesso em: 31 jul. 2020.

BATSCHINSKI, G. Back-end as a service: prós e contras. InfoQ, São Paulo, jul.


2016. Disponível em: https://www.infoq.com/br/news/2016/07/backend-pros-e-
contras/. Acesso em: 25 set. 2020.

BATSCHINSKI, G. BaaS vs PaaS: qual é a melhor opção? Back4App Blog, [S. l.],
3 nov. 2019. Disponível em: https://medium.com/@george_51059/BaaS-vs-PaaS-
bce0079232ec. Acesso em: 25 set. 2020.

CHANDRASEKARAN, K. Essentials of cloud computing. Boca Raton: CRC


Press, 2015. seus-trabalhos/. Acesso em: 13 ago. 2020. Disponível em: https://
keyhannet.com/wp-content/uploads/2018/11/K.-Chandrasekaran-Essentials-of-
Cloud-Computing-2014-Chapman-and-Hall_CRC.pdf. Acesso em: 13 ago. 2020.

CREESE, G. SaaS vs. software: the release cycle for saas is usually (not always)
faster. Gartner Blog, [S. l.], 18 maio 2010. Disponível em: https://blogs.gartner.
com/guy-creese/2010/05/18/saas-vs-software-the-development-cycle-for-saas-is-
usually-not-always-faster/. Acesso em: 13 ago. 2020.

GODSE, M., MULIK, S. An approach for selecting software-as-a-service


(SaaS) product. In: IEEE INTERNATIONAL CONFERENCE ON CLOUD
COMPUTING, 2., 2009, Bangalore. Proceedings […]. Bangalore: IEEE Computer
society, 2009. Disponível em: http://barbie.uta.edu/~hdfeng/CloudComputing/
cloud/cloud29.pdf. Acesso em: 13 ago. 2020.

GOOGLE. Cloud Functions. c2020. Disponível em: https://cloud.google.com/


functions. Acesso em: 31 jul. 2020.

IBM. Introdução ao IBM Cloud Functions. IBM, [S. l.], 23 jun. 2020a. Disponível
em: https://cloud.ibm.com/docs/openwhisk. Acesso em: 31 jul. 2020.

IBM. IBM Cloud Functions. c2020. Disponível em: https://cloud.ibm.com/


functions/. Acesso em: 31 jul. 2020.

IBM Cloud Education. FaaS (function-as-a-service). IBM Cloud Learn Hub,


New York, 30 jul. 2019. Disponível em: https://www.ibm.com/cloud/learn/faas.
Acesso em: 14 ago. 2020.

151
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)

JUNIOR, C. V. Whatsapp com Twilio e IBM Functions – parte 1. Codechain,


Rio de Janeiro, 20 fev. 2019. Disponível em: https://www.codechain.com.
br/2019/02/20/ibm-cloud-alem-do-watson-whatsapp-gateway-100-serverless/.
Acesso em: 31 jul. 2020.

MAISON, A. How to deploy an apps in AWS serverless infrastructure with


FaaS? SMARTSPATE, [S. l.], 30 ago. 2018. Disponível em: https://www.
smartspate.com/deploy-an-apps-in-aws-serverless/. Acesso em: 31 jul. 2020.

MICROSOFT. Funções do Azure. c2020. Disponível em: https://azure.microsoft.


com/pt-br/services/functions/. Acesso em: 31 jul. 2020.

MISHRA, A. Mastering azure serverless computing: design and implement end-


to-end highly scalable azure serverless solutions with ease. New Delhi, India:
BPB Publications. 2020. ISBN: 978-93-89898-163.

NG, D. SaaS, PaaS and IaaS explained in one graphic. Oursky, [S. l.], 12 jul.
2017. Disponível em: https://m.oursky.com/saas-PaaS-and-iaas-explained-in-
one-graphic-d56c3e6f4606. Acesso em: 25 set. 2020.

REDHAT. O que é função como serviço (FaaS). Red Hat, Aplicações Nativas
em nuvens, [S. l.], c2020. Disponível em: https://www.redhat.com/pt-br/topics/
cloud-native-apps/what-is-faas. Acesso em: 31 jul. 2020.

ROBERTS, M. Serverless architectures. MartinFowler.com, Boston, 22 maio


2018. Disponível em: https://martinfowler.com/articles/serverless.html. Acesso
em: 31 jul. 2020.

STIGLER, M. Beginning serverless computing: developing with amazon web


services, microsoft azure, and google cloud. Virginia, USA: Springer Science,
2018. ISBN: 978-1-4842-3084-8.

STIGLER, M. Beginning serverless computing: developing with amazon web


services, microsoft azure, and google cloud. Virginia, USA: Springer Science,
2017.

TAURION, C. Computação em nuvem: transformando o mundo da tecnologia


da informação. Rio de Janeiro: Brasport, 2009.

WU, C. Web services: software-as-a-service (SaaS), communication, and beyond.


In: CONGRESS ON SERVICES, 2., 2008, Beijing. Proceedings […]. Beijing: IEEE,
Computer Society, 2008.

152
UNIDADE 3 —

CONTÊINERES COMO SUPORTE AO


DESENVOLVIMENTO

OBJETIVOS DE APRENDIZAGEM
A partir do estudo desta unidade, você deverá ser capaz de:

• expressar a diferença entre contêiner e imagem;


• avaliar as vantagens em utilizar um contêiner em seu projeto;
• conhecer o conceito das plataformas de CaaS;
• entender o conceito de versionamento e sua aplicação em desenvolvi-
mento e recursos em nuvem.

PLANO DE ESTUDOS
Esta unidade está dividida em três tópicos. No decorrer da unidade
você encontrará autoatividades com o objetivo de reforçar o conteúdo
apresentado.

TÓPICO 1 – CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO


TÓPICO 2 - CONTÊINER COMO SERVIÇO - (CAAS)
TÓPICO 3 – VERSIONAMENTO E DEPLOY EM NUVEM

CHAMADA

Preparado para ampliar seus conhecimentos? Respire e vamos


em frente! Procure um ambiente que facilite a concentração, assim absorverá
melhor as informações.

153
154
TÓPICO 1 —
UNIDADE 3

CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

1 INTRODUÇÃO
Dando continuidade aos nossos estudos, vamos apresentar o conceito
de Contêiner e como ele suporta o desenvolvimento de aplicações, bem como a
ferramenta Docker e boas práticas para a criação de contêineres.

Talvez, poucas áreas de estudos tenham tanta evolução em tão pouco


tempo quanto a área de tecnologia. Essas mudanças acabam ditando o ritmo
de trabalho em diversos setores. Graças a essas evoluções, foram permitidas
mudanças nas formas de trabalho, como a mudança para o cenário de trabalho
remoto, conhecido como home office.

Agora, imagine quanto trabalho o setor de tecnologia das organizações


teria para configurar as máquinas de todos os funcionários que tiveram que se
adequar a essa nova realidade, ou baixar uma nova versão de um produto que
acabou de ser desenvolvido. Vamos conhecer algumas ferramentas que podem
auxiliar nessa tarefa, começando com os contêineres.

2 CONCEITOS
É bem provável que você já tenha visto um contêiner, eles são uma caixa de
metal bastante resistente, utilizados, normalmente, para transporte de produtos
em navios ou em caminhões. Semelhante aos contêineres que são utilizados para
transporte de produtos, os contêineres na área de tecnologia agem como uma
unidade de software padrão, e que, segundo a Microsoft (2018, s.p.), “pode conter
diferentes dependências e códigos”. Inserir o software em contêineres permite
que desenvolvedores e profissionais de TI os implantem em diferentes ambientes
com pouca ou sem nenhuma modificação.

ATENCAO

Na literatura existe o uso das duas formas, do inglês container ou do português


contêiner.

155
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

2.1 INTRODUÇÃO AOS CONTÊINERES


Você pode estar curioso e se perguntando, por que o nome Contêiner?
Se Contêiner nada mais é do que um ambiente isolado contido em um servidor
que, diferentemente das máquinas virtuais, divide um único host de controle.
Para contextualizar melhor, vamos imaginar um navio cargueiro com vários
contêineres dentro. Se um dos recipientes se danificar, não afetará os outros ou o
navio, pois cada um está isolado e protegido.

FIGURA 1 - CONTÊINER

FONTE: Adaptado de <https://m.media-amazon.com/images/I/51M7z3fWLTL.jpg>. Acesso em:


20 out. 2020.

Esse isolamento de contêiner, trazendo de volta para o mundo do


desenvolvimento, possibilita uma utilização limitada do HD, memória RAM e
processador. Ao utilizar um tipo de compartilhamento de kernel, os contêineres
apresentam uma capacidade de economia de recursos maior do que as máquinas
virtuais.

Apenas para lembrar como era o trabalho desenvolvido pelas equipes


de tecnologia, antes das máquinas virtuais, o processo era um pouco mais
complicado:

Por muitos anos, o software corporativo tem sido implantado em “bare


metal” (instalado em um sistema operacional que possui controle total
sobre o hardware subjacente) ou em uma máquina virtual (instalada
em um sistema operacional que compartilha o hardware subjacente
com outros sistemas operacionais “guest”). Naturalmente, instalar
em hardware simples tornou o software dolorosamente difícil de
movimentar e difícil de atualizar - duas restrições que dificultaram
que a TI reagisse com agilidade às mudanças nas necessidades de
negócios (YEGULALP, 2018, s.p.).

156
TÓPICO 1 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

FIGURA 2 - MÁQUINAS VIRTUAIS X CONTÊINER

FONTE: <http://javaquan.com/file/image/20190321/2019032110000878710908.PNG>. Acesso


em: 20 out. 2020.

Agora que vimos um breve comparativo entre os Dockers e as máquinas


virtuais, vamos conhecer alguns componentes que fazem parte da sua arquitetura.

QUADRO 1 - COMPONENTES DA ARQUITETURA DOCKER

Componente Utilização
Docker para Mac, Versões que permitem instalar e executar contêineres nos
Linux e Windows sistemas operacionais de forma isolada.
Software que roda na máquina onde o Docker está
Docker Daemon instalado. Usuário não interage diretamente com o
daemon.
CLI ou REST API que aceita comandos do usuário e
Docker Client
repassa estes comandos ao Docker daemon.
É um template. Uma imagem contém todos os dados e
Docker Image metadados necessários para executar contêineres a partir
de uma imagem.
Detém tudo que é necessário para uma aplicação ser
executada. Cada contêiner é criado a partir de uma
Docker Contêiner
imagem. Cada contêiner é uma aplicação isolada
independente.
Docker Engine Usado para criar imagens e contêineres.
Uma coleção de imagens hospedadas e rotuladas que
Docker Registry juntas permitem a criação do sistema de arquivos de um
contêiner. Um registro pode ser público ou privado.

157
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

Este é um registro usado para hospedar e baixar diversas


Docker Hub imagens. Pode ser visto como uma plataforma SAAS de
compartilhamento e gerenciamento de imagens.
Um arquivo texto contendo uma sintax simples para
Dockerfile
criação de novas imagens.
Usado para definir aplicações usando diversos
Docker Compose
contêineres.
É uma ferramenta que permite o agrupamento
Docker Swarm
(clustering) de Contêineres Docker
FONTE: Adaptado de Moll (2019)

DICAS

Moll (2019) apresenta é um breve resumo do que pode ser realizado. Para
conhecer melhor cada um deles, acesse: https://docs.docker.com/engine/.

2.2 QUANDO USAR DOCKER


Semelhante a todas as áreas de sistemas, não existe uma bala de prata que
irá resolver todos os problemas. Gomes (2020) aponta alguns bons motivos para
sua utilização.

Como no caso de ambientes semelhantes, Gomes (2020, p. 11) afirma que


“uma vez que sua aplicação seja transformada em uma imagem Docker, ela pode
ser instanciada como contêiner em qualquer ambiente que desejar”. Ou seja, ela
poderá ser utilizada tanto em notebook do desenvolvedor ou no servidor de
produção. Outra indicação de uso é no caso da aplicação como pacote completo,
conforme define Gomes (2020, p. 11):

Utilizando as imagens Docker é possível empacotar toda sua


aplicação e dependências, facilitando a distribuição, pois não será
mais necessário enviar uma extensa documentação explicando como
configurar a infraestrutura necessária para permitir a execução, basta
disponibilizar a imagem em repositório e liberar o acesso para o
usuário e, ele mesmo pode baixar o pacote, que será executado sem
problemas.

Essa vantagem, não se aplica somente no momento da aplicação ou


instalação, ela também pode ser vantajosa na atualização, “pois a estrutura de
camadas do Docker viabiliza que, em caso de mudança, apenas a parte modificada
seja transferida e assim o ambiente pode ser alterado de forma mais rápida e
simples” (GOMES, 2020, p. 12).
158
TÓPICO 1 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

DICAS

Conheça mais a respeito do termo bala de prata, muito utilizado em


engenharia de software, em: https://iopub.org/n%C3%A3o-h%C3%A1-bala-de-prata-para-
o-desenvolvimento-de-software-5c6e73ecd28c.

3 TRABALHANDO COM OS CONTÊINERES


Como vimos, existem inúmeras vantagens para trabalharmos com
contêiner, e você já deve estar ansioso para pôr a mão na massa. Antes de
começar, é importante ressaltar que para a execução do modelo apresentado
são necessárias algumas configurações mínimas, e que isso pode variar e mudar
conforme as versões dos produtos evoluem.

Segundo Damaceno (2019), para a execução desse exemplo precisamos


do Windows 10, versão Pro, Enterprise ou Education e X64. Você também precisa
que a Virtualização da sua máquina esteja habilitada, para isso você deve ir ao
gerenciador de tarefas, clicar na aba “desempenho”, que por padrão já aparece
habilitada, conforme vemos na Figura 3, indicado pelas setas.

FIGURA 3 - CONFIGURANDO

FONTE: O autor

159
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

DICAS

Veja como criar no Ubuntu: https://woliveiras.com.br/posts/Criando-uma-


imagem-Docker-personalizada.

Você pode estar curioso com relação às diferenças entre um e outro.


Damaceno (2019, s.p.) explica a diferença entre o “Docker for Windows” e o
“Docker toolbox”:

É que, no primeiro caso, utilizamos o terminal nativo do Windows. Já


no segundo, ele instalará o Docker machine que deverá ser utilizado
no lugar do terminal nativo. Para instalar, é necessário criar uma
conta no docker hub e seguir os passos para a instalação, autorize o
instalador. Depois de fazer o login, habilite o Hyper-v clicando em
“Ok” e, com isso, o computador será reiniciado.

DICAS

Para o download do Docker para Windows, acesse o endereço: https://


download.docker.com/win/beta/InstallDocker.msi.

Continuando com nosso exemplo, após a instalação do seu Docker, vamos


confirmar se está mesmo instalado, abra seu terminal do windows (powershell
ou cmd) e escreva o seguinte comando:

docker - -version

Depois de entender a arquitetura e ter realizada a instalação, vamos


entender como funciona a estrutura da linha de comando. Para utilizar o docker,
deve-se informar a ele as opções e argumentos da seguinte forma:

$ docker [option] [command] [arguments]

E para conhecer as opções adicionais com relação a um comando específico,


basta digitar:

$ docker subcomando –help

Vejamos a lista dos comandos mais utilizados:


160
TÓPICO 1 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

QUADRO 2 - LISTA DE COMANDOS

Comando O que executa


info Exibir informações de todo o sistema
Retorne informações de baixo nível sobre um contêiner ou
inspect
imagem
kill Mate um contêiner em execução
load Carregar uma imagem de um arquivo tar ou STDIN
login Faça login em um registro do Docker
logout Saia de um registro do Docker
logs Buscar os registros de um contêiner
network Gerenciar redes Docker
pause Pausar todos os processos em um contêiner
Listar mapeamentos de portas ou um mapeamento específico
port
para o CONTÊINER
ps Contêineres de lista
pull Extraia uma imagem ou repositório de um registro
push Envie uma imagem ou repositório para um registro
rename Renomear um contêiner
restart Reinicie um contêiner
rm Remova um ou mais recipientes
rmi Remova uma ou mais imagens
run Execute um comando em um novo contêiner
save Salve uma ou mais imagens em um arquivo tar
search Pesquise imagens no Docker Hub
start Inicie um ou mais contêineres parados
Exibir uma transmissão ao vivo de estatísticas de uso de
stats
recursos de contêineres
stop Pare um contêiner em execução
tag Marque uma imagem em um repositório
top Exibir os processos em execução de um contêiner
unpause Retome todos os processos em um contêiner
update Atualizar configuração de um ou mais contêineres
version Mostra as informações da versão do Docker
volume Gerenciar volumes Docker
Bloqueie até que um contêiner pare e imprima seu código de
wait
saída
attach Anexar a um contêiner em execução
build Construir uma imagem de um Dockerfile
commit Crie uma nova imagem a partir das alterações de um contêiner
Copie arquivos / pastas entre um contêiner e o sistema de
cp
arquivos local
create Crie um novo contêiner
diff Inspecione as alterações no sistema de arquivos de um contêiner

161
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

events Obtenha eventos em tempo real do servidor


exec Execute um comando em um contêiner em execução
Exportar o sistema de arquivos de um contêiner como um
export
arquivo tar
history Mostra a história de uma imagem
images Listar imagens
Importe o conteúdo de um tarball para criar uma imagem do
import
sistema de arquivos
FONTE: Adaptado de Moll (2019)

É importante lembrarmos, antes de prosseguir com a criação do nosso


primeiro contêiner, que, conforme Damaceno (2019, s.p.) explica, “o Docker
utiliza uma ‘receita de bolo’, sendo chamada de ‘imagem’, ou seja, uma série
de instruções que o Docker faz para criar um contêiner”. Caso você queira uma
pronta, pode acessar o repositório open source chamado Docker hub. Continuando
com o exemplo, sempre que formos criar um contêiner, utilizaremos a sintaxe:

docker run imagem (imagem que queremos que ele utilize)

Exemplo, se eu quiser criar um contêiner com Node:

>> docker run node

Depois, podemos conferir se ele foi criado com sucesso:

>> docker ps -a

Além disso, existem dois tipos de comandos que podem ser utilizados
para listar os contêineres:

• docker ps: que irá exibir todos os contêineres ativos;


• docker ps -a: que irá exibir todos os contêineres criados.

Chegou o momento, e vamos começar a criar uma aplicação, segundo


modelo proposto por Moll (2019).

Suponhamos que você queira criar uma aplicação que possua todas as
dependências do Node.js já instalados, sem instalar as dependências manualmente
ou diretamente em sua máquina.

Usando Docker, você pode fazer isso de maneira isolada com alguns
comandos declarados no arquivo de configuração. Isso se chama “Dockerfile”.

162
TÓPICO 1 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

DICAS

Leia o artigo O que é Kubernets?Tudo o que você precisa aprender sobre!.


Disponível em: https://blog.geekhunter.com.br/kubernetes-a-arquitetura-de-um-cluster/.

Vamos começar vendo o exemplo de conteúdo de um Dockerfile:

FIGURA 4 - DOCKFILE

FONTE: Moll (2019, s.p.).

Se olharmos para o arquivo app.js que define uma aplicação básica em


Node.js e express, nós teremos:

FIGURA 5 - ARQUIVO APP.JS

FONTE: Moll (2019, s.p.).

163
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

Agora que já definimos nossa aplicação em app.js e já temos nosso


Dockerfile, vamos criar uma imagem para poder rodar nossa aplicação e realizar
o deploy na imagem que será carregada no contêiner. Vamos criar uma imagem
executando o comando, em que a opção -t serve para informarmos uma tag para
a imagem que estamos criando:

$ docker build -t vmoll/nodejs-image-demo

Feito isso, seguindo o modelo proposto por Moll (2019), já será possível
rodar a aplicação utilizando o seguinte comando:

$ docker run -it -p 3000:3000 -h instance-hostname --rm --name nodejs-


image-demo vmoll/nodejs-image-demo:latest

Perceba que no comando que acabamos de executar informamos -p .


3000:3000. Esse comando, segundo Moll (2019, s.p.), “é responsável por realizar
o bind ou vinculação da porta local para uma porta externa do serviço, que será
disponibilizado na máquina que está hospedando a aplicação”. Agora já podemos
ver a aplicação funcionando, basta inserir http://localhost:3000 e receberá a
mensagem “Hello Geeks!”, conforme Figura 6:

FIGURA 6 - PRIMEIRO EXEMPLO

FONTE: Moll (2019, s.p.).

DICAS

Você pode criar uma conta no GitHub e ter acesso a vários outros exemplos,
como o código da aplicação de exemplo, juntamente ao seu Dockerfile. Acesse:
• https://github.com/vmoll/geekhunter-docker-nodejsapp;
• https://github.com/docker/labs;

164
TÓPICO 1 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

O exemplo apresentado por Moll (2019) é uma aplicação bem simples,


para ilustrar como é possível realizar o deploy na imagem que criamos. Agora,
vamos ao nosso foco principal, que é a criação e execução de contêineres usando
Docker. Se você deseja criar uma aplicação completa, você pode utilizar algum
gerador, como o express-generator. Para isso, execute os seguintes comandos e
após abra uma janela do browser em: http://localhost:3000.

$ npm install express-generator -g


$ express minhaAplicacao
$ cd minhaAplicacao
$ npm install
$ npm start

Como todo desenvolvimento, é necessário seguirmos algumas dicas de


boas práticas para aumentar a qualidade do nosso trabalho. Vejamos algumas
propostas pelo site Docker (2020).

BOAS PRÁTICAS NA CONSTRUÇÃO

O Docker constrói imagens automaticamente lendo as instruções de um


Dockerfile, que nada mais é do que um arquivo de texto que irá armazenar
todos os comandos necessários para a criação da determinada imagem. Um
Dockerfile segue um formato específico e um conjunto de instruções que você
pode encontrar na referência do Dockerfile.

QUADRO – ANALISANDO UM DOCKERFILE

Detalhando um Dockerfile
Comando Significado
FROM cria uma camada
FROM ubuntu:18.04
da ubuntu:18.04imagem Docker.

COPY adiciona arquivos do diretório atual do


COPY. /app
seu cliente Docker.

RUN make /app RUN constrói seu aplicativo com make.

CMD especifica qual comando executar


CMD python /app/app.py
dentro do contêiner.
FONTE: Adaptado de Docker (2020)

165
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

Ao executar uma imagem e gerar um contêiner, você adiciona uma


nova camada gravável (a “camada do contêiner”) no topo das camadas
subjacentes. Todas as alterações feitas no contêiner em execução, como gravar
novos arquivos, modificar arquivos existentes e excluir arquivos, são gravadas
nesta camada de contêiner gravável. Por isso, a imagem definida por seu
Dockerfile deve gerar contêineres tão efêmeros quanto possível. Por "efêmero",
queremos dizer que o contêiner pode ser interrompido e destruído e, em
seguida, reconstruído e substituído com um mínimo absoluto de instalação e
configuração.

Essas recomendações foram elaboradas para ajudá-lo a criar um


ambiente eficiente e sustentável Dockerfile.

FROM: sempre que possível, use imagens oficiais atuais como base para
suas imagens. Recomendamos a imagem Alpine (https://hub.docker.com/_/
alpine/) porque é rigidamente controlada e pequena em tamanho (atualmente
menos de 5 MB), embora ainda seja uma distribuição Linux completa.

LABEL: você pode adicionar rótulos a sua imagem para ajudar a


organizar imagens por projeto, registrar informações de licenciamento, para
auxiliar na automação ou por outros motivos. Para cada rótulo, adicione uma
linha começando com LABEL e com um ou mais pares de valores-chave. Os
exemplos a seguir mostram os diferentes formatos aceitáveis. Como as Strings
com espaços, que devem ser colocados entre aspas ou os espaços devem ser
escapados. Caracteres de aspas internas (“) também devem ser escapados.
Vejamos os exemplos:

Com um ou vários Labels simples:

LABEL com.example.version="0.0.1-beta"
LABEL vendor1="ACME Incorporated"
LABEL vendor2=ZENITH\ Incorporated
LABEL com.example.release-date="2015-02-12"
LABEL com.example.version.is-production=""

A imagem pode ter mais de um rótulo composto, pode ser feito de duas
formas, sendo que a primeira era obrigatória até a versão 1.1:

LABEL com.example.version="0.0.1-beta" com.example.release-


date="2015-02-12"

Nas novas versões, o texto citado também pode ser escrito com a
utilização de quebras de linha:

166
TÓPICO 1 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

LABEL vendor=ACME\ Incorporated \


com.example.is-beta= \
com.example.is-production="" \
com.example.version="0.0.1-beta" \
com.example.release-date="2015-02-12"

RUN: ele serve para dividir instruções longas ou complexas em várias


linhas separadas por barras invertidas, o que servirá para deixar o Dockerfile
mais legíveis, compreensíveis e fáceis de manter.

APT-GET: provavelmente, o caso de uso mais comum para RUN é um


aplicativo de apt-get para a instalação de pacotes. Entretanto, o comando tem
várias dicas a serem observadas, como evitar o uso de RUN apt-get upgrade
e dist-upgrade. Esso acontece porque muitos dos pacotes "essenciais" das
imagens pai não podem atualizar dentro de um contêiner sem privilégios. Se
um pacote contido na imagem pai estiver desatualizado, entre em contato com
o responsável. Se você souber que existe um pacote específico foo, que precisa
ser atualizado, use apt-get install -y foo para atualizar automaticamente. Outra
dica é sempre combine RUN apt-get update com apt-get install na mesma
RUN, como no exemplo:

RUN apt-get update && apt-get install -y \


package-bar \
package-baz \
package-foo

Usar apt-get update sozinho em uma instrução RUN causa problemas


de cache e as instruções apt-get install subsequentes falham. Por exemplo,
digamos que você tenha um Dockerfile:

FROM ubuntu:18.04
RUN apt-get update
RUN apt-get install -y curl

USANDO PIPES

Alguns comandos RUN dependem da capacidade de canalizar a saída


de um comando para outro, usando a barra vertical ( | ), como no exemplo a
seguir:

RUN wget -O - https://some.site | wc -l > /number

O Docker executa esses comandos usando o interpretador /bin/


sh -c, que avalia apenas o código de saída da última operação no pipe para
determinar o sucesso. No exemplo, essa etapa de construção é bem-sucedida
e produz uma nova imagem, desde que o comando wc -l seja bem-sucedido,
mesmo se o comando wget falhar.

167
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

Se você quer que o comando falhe devido a um erro em qualquer


estágio do pipe, inclua o prefixo set -o pipefail &&. Isso irá garantir que um
erro inesperado evite que a construção seja acidentalmente concluída. Vejamos
o exemplo:

RUN set -o pipefail && wget -O - https://some.site | wc -l > /number

CMD: a instrução CMD deve ser usada para executar o software contido
em sua imagem, junto a quaisquer argumentos. Esse comando quase sempre
deve ser usado na forma de CMD ["executable", "param1", "param2"…].
Portanto, se a imagem for para um serviço, como Apache e Rails, você executaria
algo como CMD ["apache2","-DFOREGROUND"]. Na verdade, essa forma de
instrução é recomendada para qualquer imagem baseada em serviço.

Na maioria dos outros casos, o CMD deve ser recebido um shell


interativo, como bash, python e perl. Por exemplo, CMD ["perl", "-de0"], CMD
["python"], ou CMD ["php", "-a"]. Ao utilizar desta forma, significa que, ao
executar algo como docker run -it python, você será colocado em um shell
utilizável, pronto para usar. Os CMD raramente deve ser usado na forma de
CMD ["param", "param"] em conjunto com o ENTRYPOINT, a menos que
você e seus usuários esperados já estejam bastante familiarizados com o
funcionamento ENTRYPOINT.

EXPOSE: A instrução EXPOSE indica as portas nas quais um contêiner


escuta as conexões. Por exemplo, uma imagem contendo o servidor da web Apache
usaria EXPOSE 80, enquanto uma imagem contendo MongoDB usaria EXPOSE
27017 e assim por diante. Já para acesso externo, os usuários podem executar
docker run com um sinalizador indicando como mapear a porta especificada
para a porta de sua escolha. Para a vinculação do contêiner, o Docker fornece
variáveis ​​de ambiente para o caminho do contêiner do destinatário de volta à
origem (ou seja, MYSQL_PORT_3306_TCP).

ENV: para tornar o novo software mais fácil de ser executado, você
pode usar ENV para atualizar a variável de ambiente PATH para o software que
seu contêiner instala. Por exemplo, ENV PATH /usr/local/nginx/bin:$PATH
garante que CMD ["nginx"] simplesmente funcione.

A instrução ENV também é útil para fornecer variáveis ​​de ambiente


específicas exigidas para serviços que você deseja armazenar em contêiner,
como Postgres PGDATA. Por último, o ENV também pode ser usado para
definir os números de versão que comumente são usados ​​para que as variações
de versão sejam mais fáceis de manter, conforme visto no exemplo a seguir:

168
TÓPICO 1 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

ENV PG_MAJOR 9.3


ENV PG_VERSION 9.3.4
RUN curl -SL http://example.com/postgres-$PG_VERSION.tar.xz | tar
-xJC /usr/src/postgress && …
ENV PATH /usr/local/postgres-$PG_MAJOR/bin:$PATH

Semelhante a ter variáveis ​​constantes em um programa, ao invés de


ter os valores definidos no código, essa abordagem permite alterar uma única
instrução ENV, e com isso alterar automaticamente a versão do software em
seu contêiner, onde cada linha ENV cria uma nova camada intermediária,
assim como os comandos RUN. Isso significa que mesmo se você remover
a configuração da variável de ambiente em uma camada futura, ela ainda
persistirá nessa camada e seu valor não poderá ser descarregado. Você pode
testar isso criando um Dockerfile como o seguinte e, em seguida, compilando-o.

FROM alpine
ENV ADMIN_USER="mark"
RUN echo $ADMIN_USER > ./mark
RUN unset ADMIN_USER
$ docker run --rm test sh -c 'echo $ADMIN_USER'
Mark

Para evitar isso e realmente remover a definição da variável de ambiente,


use um comando RUN com comandos shell para definir, usar e remover a
definição da variável, tudo em uma única camada. Você pode separar seus
comandos com ; ou &&. Se você usar o segundo método e um dos comandos
falhar, o docker build também falhará. Geralmente é uma boa ideia usar \ como
um caractere de continuação de linha para Dockerfiles Linux, isso melhora a
legibilidade. Você também pode colocar todos os comandos em um script de
shell e fazer com que o comando RUN apenas execute esse script de shell.

FROM alpine
RUN export ADMIN_USER="mark" \
&& echo $ADMIN_USER > ./mark \
&& unset ADMIN_USER
CMD sh
$ docker run --rm test sh -c 'echo $ADMIN_USER'

ADD ou COPY: ADICIONE ou COPIE embora esses comandos sejam


funcionalmente semelhantes, em geral, COPY é o preferido. Isso porque é
mais transparente do que ADD. O comando COPY suporta apenas a cópia
básica de arquivos locais no contêiner, embora ADD tenha alguns recursos.
Consequentemente, o melhor uso para ADD é a extração automática do
arquivo tar local para a imagem, como em ADD rootfs.tar.xz /.

169
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

Se você tiver várias etapas no seu Dockerfile que usam arquivos


diferentes do seu contexto, use o COPY individualmente, em vez de todos de
uma vez. Isso garante que o cache de construção de cada etapa só seja invalidado
(forçando a etapa a ser executada novamente) se os arquivos especificamente
necessários forem alterados. Como no exemplo:

COPY requirements.txt /tmp/


RUN pip install --requirement /tmp/requirements.txt
COPY . /tmp/

Isso resulta em menos invalidações de cache para a etapa RUN, do que


se você colocasse o COPY . /tmp/ antes dela.

Como o tamanho da imagem é importante, usar ADD para buscar


pacotes de URLs remotos é desaconselhado. Você deve usar curl ou wget em
vez disso. Dessa forma, você pode excluir os arquivos de que não precisa mais
depois de extraídos e não precisa adicionar outra camada à imagem. Veja o
exemplo do que evitar e o que preferir:

Evite Prefira
ADD http://example.com/big.tar.xz RUN mkdir -p /usr/src/things \
/usr/src/things/ && curl -SL http://example.com/
RUN tar -xJf /usr/src/things/big.tar. big.tar.xz \
xz -C /usr/src/things | tar -xJC /usr/src/things \
RUN make -C /usr/src/things all && make -C /usr/src/things all

Para outros itens (arquivos, diretórios) que não requerem ADD o


recurso de extração automática do tar, você deve sempre usar COPY.

VOLUME: a instrução VOLUME deve ser usada para expor qualquer


área de armazenamento de banco de dados, armazenamento de configuração
ou arquivos/pastas criados por seu contêiner docker. É muito recomendado
que se use VOLUME para quaisquer partes mutáveis ​​e/ou que possam ser
reparadas pelo usuário de sua imagem.

USER: se um serviço puder ser executado sem privilégios, utilize USER


para mudar para um usuário não root. Comece criando o usuário e o grupo no
Dockerfile, como o exemplo:

RUN groupadd -r postgres && useradd --no-log-init -r -g postgres


postgres.

170
TÓPICO 1 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

Considere um UID / GID explícito: Usuários e grupos em uma imagem


são atribuídos a um UID / GID não determinístico em que o “próximo” UID /
GID é atribuído independentemente das reconstruções da imagem. Portanto,
se for crítico, você deve atribuir um UID / GID explícito.

WORKDIR: Para maior clareza e confiabilidade, você deve sempre usar


caminhos absolutos para o seu WORKDIR. Além disso, você deve usar em vez
WORKDIR de proliferar instruções como RUN cd … && do-something, que
são difíceis de ler.

ONBUILD: esse comando é executado após a conclusão da compliação


do Dockerfile atual. Ele executa em qualquer imagem filha derivada da imagem
FROM atual. Pense no comando ONBUILD como uma instrução que o pai
Dockerfile dá ao filho Dockerfile.

Uma compilação do Docker executa comandos ONBUILD antes de


qualquer comando em um filho Dockerfile. Ele é útil para imagens que serão
construídas a partir de FROM em uma determinada imagem. Por exemplo,
você usaria ONBUILD para uma imagem de pilha de linguagem que constrói
software de usuário arbitrário escrito nessa linguagem dentro do Dockerfile.
As imagens criadas com ONBUILD devem receber uma tag separada, por
exemplo: ruby:1.9-onbuild ou ruby:2.0-onbuild.

Tenha cuidado ao colocar ADD ou COPY em ONBUILD. A imagem


“onbuild” falhará catastroficamente se o contexto da nova construção não incluir
o recurso adicionado. Adicionar uma tag separada, conforme recomendado,
ajuda a mitigar isso, permitindo que o autor do Dockerfile faça uma escolha.

FONTE: Adaptado de <https://docs.docker.com/develop/develop-images/dockerfile_best-


-practices/#dockerfile-instructions>. Acesso em: 14 out. 2020.

DICAS

Veja mais dicas de como usar o RUN em: https://docs.docker.com/develop/


develop-images/dockerfile_best-practices/#dockerfile-instructions.

171
RESUMO DO TÓPICO 1

Neste tópico, você aprendeu que:

• Contêiner nada mais é do que um ambiente isolado contido em um servidor,


diferentemente das máquinas virtuais.

• O isolamento de contêiner possibilita uma utilização limitada do HD, memória


RAM e processador.

• Os componentes de uma arquitetura Docker são: Docker para Mac, Linux e


Windows; Docker Daemon; Docker Client; Docker Image; Docker Contêiner;
Docker Engine; Docker Registry; Docker Hub; Dockerfile; Docker Compose;
Docker Swarm.

172
AUTOATIVIDADE

1 (DPE-RS, 2017) Considere, por hipótese, que a equipe de analistas da


Defensoria Pública tenha optado pelo uso do Docker. Essa decisão foi
motivada por qual fato apresentado pelo Docker?
FONTE: <https://www.qconcursos.com/questoes-de-concursos/questoes/56657761-a0>.
Acesso em: 20 out. 2020.

a) ( ) Estar ganhando espaço como um gerenciador de máquinas virtuais


no ambiente GNU/Linux e não ter bibliotecas próprias, mantendo as
bibliotecas nativas utilizadas para gerenciar o LXC.
b) ( ) Não utilizar Namespaces do Linux, o que permite prover espaços de
trabalho isolados para os contêineres. Desta forma, quando um contêiner é
criado, automaticamente é criada uma camada de isolamento para grupos
de processos.
c) ( ) Permitir portabilidade de contêineres. É possível criar uma imagem de
toda a configuração e aplicativos instalados em um contêiner e transferi-lo
para outro host que tenha um Docker previamente instalado.
d) ( ) Obter o mesmo desempenho da virtualização baseada em hypervisor,
em que cada contêiner é executado em seu próprio sistema operacional, o
que reduz a utilização de recursos de disco, embora os contêineres utilizem
mais memória.

2 (PRODEB, 2018) Atualmente, várias empresas têm utilizado a contêinerização


de aplicações. Dentro dessa plataforma, como pode ser definido o termo
contêiner?
FONTE: <https://www.qconcursos.com/questoes-de-concursos/questoes/c0069605-8f>.
Acesso em: 20 out. 2020.

a) ( ) É uma estrutura para armazenamento de dados não estruturados.


b) ( ) É uma forma de virtualização a nível de sistema operacional, que
proporciona a capacidade de executar múltiplas aplicações (sistemas)
isoladas em um único sistema operacional real.
c) ( ) É uma linguagem de programação que proporciona a aplicabilidade
da plataforma Docker dentro de um sistema.
d) ( ) Pode ser definido como uma estrutura secundária para armazenamento
das redundâncias dentro do processo de desenvolvimento de software.
e) ( ) É uma estrutura de banco de dados relacionais, utilizado para o
armazenamento de informações que são compartilhadas entre os projetos
de uma mesma equipe.

3 (TJ-RN, 2020) Uma imagem de contêiner do Docker é um pacote de


software leve, independente e executável que inclui tudo o que é necessário
para executar uma aplicação. Na criação de um arquivo Dockerfile, o que
faz a instrução EXPOSE?
FONTE: <https://www.qconcursos.com/questoes-de-concursos/questoes/f51c785a-c6>.
Acesso em: 20 out. 2020.

173
a) ( ) Mapeia uma porta externa para uma porta interna à rede Docker.
b) ( ) Divulga uma porta (TCP ou UDP) para os hosts externos à rede
Docker.
c) ( ) Expõe um serviço do contêiner para a rede Docker default.
d) ( ) Documenta quais portas se pretende publicar.

4 (UFC, 2019) Dockerfile é um arquivo de texto que contém todos os


comandos, em ordem, necessários para construir uma determinada
imagem Docker. Sobre as instruções contidas em um Dockerfile, assinale a
alternativa CORRETA:
FONTE: <https://www.qconcursos.com/questoes-de-concursos/questoes/2f4ea7a3-7e>.
Acesso em: 20 out. 2020.

a) ( ) A instrução ENV adiciona metadados para uma imagem.


b) ( ) A instrução WORKDIR permite a criação de um diretório no host em
que ficam armazenados os dados do contêiner.
c) ( ) A instrução EXPOSE informa ao Docker que o contêiner escuta nas
portas de rede especificadas em tempo de execução.
d) ( ) A instrução FROM configura qual será a aplicação principal do
contêiner, sendo executada após a inicialização do contêiner.

174
TÓPICO 2 —
UNIDADE 3

CONTÊINER COMO SERVIÇO (CAAS)

1 INTRODUÇÃO
Os Containers as a Service (CaaS) são serviços em nuvem que permitem
desenvolvedores de software construir, organizar, executar, dimensionar e
gerenciar contêineres usando virtualização com base em contêiner (BUCHANAN,
2020).

Esse tipo de serviço tem a hospedagem e implantação automatizadas


de software em contêineres. Quando não é utilizado o CaaS, as equipes de
desenvolvimento de software precisam implantar, gerenciar e monitorar
a infraestrutura em que os contêineres são executados (BUCHANAN,
2020).  É muito caro configurar e executar um PaaS ou IaaS para entrega profissional
de sistemas. Eles são grandes ferramentas para evitar o custo e o tempo necessários
para configurar um servidor dedicado. É realmente um pesadelo administrar um
servidor dedicado não gerenciado (GHOSH, 2018).

Os CaaS permitem que as equipes de desenvolvimento pensem em mais


alto nível, em vez de se preocupar com o gerenciamento de infraestrutura básica.
Isso proporciona às equipes de desenvolvimento mais clareza para o produto
final e permite um desenvolvimento mais ágil e com maior valor entregue ao
cliente (BUCHANAN, 2020).

2 CONCEITOS
Um contêiner é um software empacotado com as dependências de código,
tempo de execução, configuração e bibliotecas do sistema para que possa ser
executado em qualquer ferramenta de hospedagem. O CaaS permite que as equipes
de software implantem e escalonem rapidamente aplicativos em contêineres para
infraestruturas de nuvem de alta disponibilidade (BUCHANAN, 2020).  

Os CaaS se diferem das Platform as a Service (PaaS), pois dependem do uso de


contêineres. No entanto, o PaaS se preocupa com implantações da linguagem de
programação explícita, como JAVA ou C#, enquanto os CaaS podem implantar várias
pilhas por contêiner, sendo independente de amarrações técnicas (BUCHANAN,
2020).

Vejamos, na Figura 7, as camadas que cada tipo de serviço oferece e a


diferença entre cada uma delas.

175
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

FIGURA 7 – CAMADAS POR TIPO DE SERVIÇOS

FONTE: <https://thecustomizewindows.com/wp-content/uploads/2018/04/PaaS-Versus-Contai-
ner-Docker-CaaS.png>. Acesso em: 20 out. 2020.

O PaaS é um serviço de hospedagem em nuvem que se concentra na


implantação de código com possibilidade de configuração a nível codificação do
software. Os provedores de PaaS oferecem ambientes hospedados automatizados
que se concentram em dependências de infraestrutura de aplicativos de
nível superior, como tempos de execução de linguagem e bancos de dados
(BUCHANAN, 2020).

Estruturas como Docker e PaaS resolvem problemas diferentes. O PaaS


é uma boa opção para desenvolvimento em equipes menores. A implantação
de microsserviços é fácil em uma plataforma de gerenciamento de contêiner
como o Kubernetes, mas nem sempre é necessária para o desenvolvimento de
software web (GHOSH, 2018).

As Plataformas como Serviço (PaaS), que já estudamos na disciplina,


preocupam-se com infraestrutura de nível de pilha de código. Ao usar um PaaS,
um projeto não tem controle do sistema operacional em que está rodando. Os
tempos de execução do contêiner oferecem configuração e virtualização do sistema
operacional, permitindo personalização e controles muito mais avançados. Os
contêineres podem ser essenciais para o desenvolvimento de software altamente
personalizado e especializado (BUCHANAN, 2020).

Os CaaS tendem a serem mais adequados para microsserviços, pois


cada contêiner implantado no CaaS pode ter seu próprio sistema operacional
encapsulado e pilha de idiomas. O PaaS ainda sofre do problema de depender do
ambiente local de cada máquina. Pode haver pequenas diferenças entre o ambiente

176
TÓPICO 2 — CONTÊINER COMO SERVIÇO (CAAS)

de desenvolvimento e o ambiente de produção de um sistema PaaS. O objetivo


principal de um sistema de contêiner é evitar e garantir um comportamento
consistente em ambientes de implantação e de produção (BUCHANAN, 2020).

Os contêineres tornam muito mais fácil o desenvolvimento de sistemas


distribuídos ou arquiteturas de microsserviços. Durante o desenvolvimento,
um conjunto de contêineres pode gerenciar diferentes responsabilidades ou
diferentes ecossistemas de linguagem de código. A promessa do CaaS é que essas
arquiteturas de contêiner definidas e comprometidas podem ser implementadas
rapidamente para hospedagem em nuvem (BUCHANAN, 2020).

O objetivo de uma abordagem orientada a serviços para fornecer


recursos de software é ajudar os usuários a se concentrarem completamente nas
funcionalidades do sistema. Um desenvolvedor que usa PaaS para testar
softwares, por exemplo, só precisa carregar seu próprio código na nuvem. Todos
os requisitos técnicos para o processo de construção, bem como o gerenciamento
e implantação do aplicativo, são fornecidos pelo provedor da plataforma PaaS
(IONOS, 2019).

Para seguir o modelo clássico de computação em nuvem, o CaaS pode


ser colocado entre IaaS e PaaS. No entanto, desses modelos de serviço, o CaaS se
distingue por uma abordagem fundamentalmente diferente da virtualização, que
é o uso da tecnologia de contêiner (IONOS, 2019).

O CaaS também fornece aos usuários o gerenciamento completo do ciclo


de vida do software. Ao contrário de IaaS e PaaS, o fornecimento de recursos
virtualizados não se baseia na virtualização de máquinas separadas com seu
próprio sistema operacional. Em vez disso, as funções nativas dos kernels Linux
são usadas, o que permite o isolamento de processos individuais dentro do
mesmo sistema operacional. A tecnologia de contêiner cria um nível abstrato, que
encapsula aplicativos, incluindo o sistema de arquivos, do sistema subjacente,
permitindo assim a operação em qualquer plataforma que suporte a tecnologia
de contêiner (IONOS, 2019).

Os desenvolvedores de software que desejam fazer uso de um ambiente


de desenvolvimento baseado em nuvem devem contar com as tecnologias
fornecidas pelo fornecedor, como linguagens de programação restritas ou
estruturas no modelo PaaS.

O Container as a Service, por outro lado, fornece aos usuários uma


plataforma de programação relativamente livre, na qual aplicativos encapsulados
em contêineres podem ser escalados em infraestruturas de TI heterogêneas,
independentemente de seus requisitos técnicos (IONOS, 2019).

177
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

3 CASOS DE APLICAÇÕES
Vamos imaginar um software organizado em uma arquitetura
de microsserviços, em que o sistema de serviços é estruturado pela propriedade
do domínio de negócios. Os domínios dos serviços podem ser os de pagamentos,
autenticação e carrinho de compras. Cada um desses serviços possui sua própria
base de código e são armazenados em contêineres. Usando CaaS, esses contêineres
de serviço podem ser implantados instantaneamente em um sistema sem requerer
configurações específicas (BUCHANAN, 2020).

A implantação de softwares em contêineres permite a transparência


no desempenho de um sistema por meio de ferramentas como agregação de
log e monitoramento. O CaaS também inclui funcionalidade integrada para
escalonamento automático e gerenciamento de orquestração.

Ele permite que as equipes criem rapidamente sistemas distribuídos de alta


disponibilidade. Além disso, o CaaS aumenta a velocidade de desenvolvimento
da equipe, permitindo implementações rápidas. O uso de contêineres garante
um objetivo de implantação consistente, enquanto o CaaS pode reduzir os custos
operacionais de engenharia, reduzindo os recursos DevOps necessários para
gerenciar uma implantação (BUCHANAN, 2020).

4 O FUNCIONAMENTO
O Container as a Service é um grupo de computadores que está disponível
por meio da nuvem e é usado por usuários para fazer upload, criar, gerenciar
centralmente e executar aplicativos baseados em contêiner na plataforma de
nuvem. A interação com o ambiente de contêiner baseado em nuvem ocorre por
meio da interface gráfica com o usuário (GUI) ou na forma de chamadas de API.
O provedor determina quais tecnologias de contêiner estão disponíveis para os
usuários (IONOS, 2019).  

No entanto, o núcleo de cada plataforma CaaS é uma ferramenta de


orquestração, também conhecida como orquestrador, que permite o gerenciamento
de arquiteturas de contêiner complexas (IONOS, 2019).

Os aplicativos de contêiner usados em ambientes produtivos geralmente


consistem em um cluster de vários contêineres distribuídos em diferentes
sistemas físicos e virtuais, isso é conhecido como um sistema de vários
contêineres. Usar ferramentas de orquestração é uma boa opção, pois organizam
a interação entre os contêineres executados e permitem funções de operação
automatizada. Segundo Ionos (2019), as seguintes funções são importantes:

178
TÓPICO 2 — CONTÊINER COMO SERVIÇO (CAAS)

• distribuição de contêineres em vários hosts;


• agrupando contêineres em unidades lógicas;
• dimensionamento de contêineres;
• balanceamento de carga;
• alocação de capacidade de armazenamento;
• interface de comunicação entre contêineres;
• descoberta de serviço.

O orquestrador usado na estrutura CaaS tem uma influência direta nas


funções disponibilizadas aos usuários do serviço em nuvem. O mercado de
virtualização baseada em contêiner é atualmente dominado por três ferramentas
de orquestração: Docker Swarm, Kubernetes e Mesosphere DC/OS (IONOS,
2019).

O Docker Swarm é uma ferramenta de gerenciamento e orquestração


de cluster de código aberto projetada por Docker como uma ferramenta nativa
para gerenciar clusters Docker e operações de contêiner. O orquestrador é a base
para Docker On-Premises CaaS Product Docker Datacenter (DDC), permitindo que
as empresas usem um ambiente de contêiner como serviço autogerenciado em
seu próprio data center, como parte do Docker Enterprise Edition (EE) Nuvens
privadas (Docker Datacenter em AWS/Azure).

O autodesenvolvimento do Docker é conhecido por sua fácil instalação


e manuseio e é totalmente integrado ao ambiente de tempo de execução do
contêiner do líder. A ferramenta de orquestração usa a API Docker padrão,
fornecendo compatibilidade com outras ferramentas Docker que se comunicam
usando a API Docker. A administração de clusters e contêineres é feita usando
comandos clássicos do Docker (IONOS, 2019).

O Kubernetes é uma ferramenta de código aberto para provisionamento,


dimensionamento e administração automatizados de aplicativos de contêiner em
infraestruturas de TI distribuídas. A ferramenta foi desenvolvida originalmente
pelo Google e agora está sob os auspícios da Cloud Native Computer Foundation
(CNCF).

Em contraste com o Swarm, o Kubernetes não oferece suporte apenas a


contêineres Docker. Por meio de uma interface de tempo de execução de contêiner
(CRI), o orquestrador faz interface com vários ambientes de tempo de execução
de contêiner em conformidade com OCI e baseados em hipervisor, bem como
com concorrentes como CoreOS. Comparado ao Docker Swarm, a instalação e
configuração do Kubernetes é significativamente mais complexa (IONOS, 2019).

O DC/OS (Sistema Operacional de Data Center) é um desenvolvimento


adicional de um gerenciador de cluster de código aberto chamado Apache Mesos,
que é fornecido pela Mesosphere, uma inicialização do Vale do Silício, como um
sistema operacional para data centers sob uma licença de código aberto (IONOS,
2019).

179
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

5 DESVANTAGENS
Os contêineres da Docker e de outros fornecedores são soluções excelentes,
mas eles não são a solução perfeita para todo tipo de desafio de infraestrutura de
servidores. Como qualquer outra tecnologia, eles têm suas desvantagens (TOZZI,
2016).  

Os contêineres podem parecer a resposta perfeita para todos os problemas.


Porém, como a nuvem, os contêineres vêm com alguns aspectos negativos. Não
são considerados uma tecnologia nova, mas só recentemente eles se tornaram
populares. Poucos desenvolvedores aprenderam a usar contêineres em cursos ou
afins, e as certificações de contêiner ainda são raras.

Como resultado, nem todas as equipes estão preparadas para implantar e


gerenciar infraestrutura em contêineres. Se não estiver preparado, é interessante
pensar em ignorar os contêineres até que tenha profissionais que estejam prontos
para eles, mas uma solução de Contêiner como Serviço (CaaS) pode terceirizar
a maior parte do gerenciamento e facilitar a implantação dos mesmos (TOZZI,
2016).

A necessidade segurança fez com que os contêineres ficassem mais seguros


do que costumavam ser. Se existem necessidades muito altas de conformidade de
segurança ou privacidade de dados, os contêineres provavelmente ainda não são
uma boa ideia (TOZZI, 2016).

Quando existe a necessidade da virtualização tradicional, poder pegar um


aplicativo e colocá-lo em um contêiner é legal e torna as implantações portáteis e
escalonáveis. Entretanto, simplesmente, não há substituto para o VMware. Rede
e armazenamento persistentes são mais complicados em contêineres do que em
máquinas virtuais completas, por exemplo (TOZZI, 2016).

6 PLATAFORMAS DE CAAS
Um serviço de contêiner é fornecido por um provedor de computação em
nuvem e permite que os usuários desenvolvam, testem, executem ou distribuam
software nos chamados contêineres de aplicativos em infraestruturas de TI.
Os contêineres de software são um conceito da região do Linux. A tecnologia
permite a virtualização no nível do sistema operacional. Sistemas de informação
individuais, incluindo todas as dependências, como bibliotecas, arquivos de
configuração, entre outros, são executados como instâncias encapsuladas. Isso
permite a operação paralela de vários aplicativos com requisitos diferentes
no mesmo sistema operacional, bem como a implantação em sistemas
diferentes (IONOS, 2019).

180
TÓPICO 2 — CONTÊINER COMO SERVIÇO (CAAS)

A tecnologia de contêineres está crescendo, tornando a variedade de


serviços CaaS correspondentes grande. Os serviços de virtualização no nível do
sistema operacional são encontrados em quase todos os portfólios de provedores
de nuvem pública.

Amazon, Microsoft e Google – que estão atualmente entre os jogadores


mais influentes no mercado de CaaS – expandiram suas plataformas em nuvem
com uma solução de contêiner baseada em Docker nos últimos dois anos (IONOS,
2019).

Ao escolher um serviço CaaS para uso na empresa, os usuários devem


levar em consideração as seguintes questões:

• Quais ferramentas de orquestração estão disponíveis?


• Quais formatos de arquivo os aplicativos de contêiner suportam?
• É possível operar aplicativos com vários contêineres?
• Como os clusters são gerenciados ao operar um contêiner?
• Quais redes e funções de armazenamento são suportadas?
• O provedor emite um registro privado para imagens de contêiner?
• O ambiente de tempo de execução do contêiner está bem integrado a outros
serviços em nuvem?
• Quais modelos de faturamento estão disponíveis?

6.1 AMAZON EC2 CONTAINER SERVICE (ECS)


O principal provedor de computação em nuvem entrega sua ferramenta
de função como serviço já consolidada e muito utilizada por grandes corporações.

FIGURA 8 – AMAZON WEB SERVICES

FONTE: <https://upload.wikimedia.org/wikipedia/commons/thumb/9/93/Amazon_Web_Servi-
ces_Logo.svg/150px-Amazon_Web_Services_Logo.svg.png>. Acesso em: 20 out. 2020.

Desde abril de 2015, a Amazon fornece soluções para virtualização


baseada em contêiner sob o nome Amazon EC2 Container Service, como parte
do framework da plataforma de computação em nuvem AWS (Amazon Web
Service).

181
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

FIGURA 9 – SITE AMAZON ELASTIC CONTAINER SERVICE

FONTE: <https://aws.amazon.com/pt/ecs/>. Acesso em: 20 out. 2020.

O Amazon ECS fornece aos usuários várias interfaces que permitem


aplicativos isolados no Amazon Elastic Compute Cloud (EC2) em contêineres
Docker. O serviço CaaS é tecnicamente baseado nos recursos de nuvem a seguir
(IONOS, 2019).

Amazon EC2 (instâncias de nuvem do Amazon Elastic Compute


Cloud): Amazon EC2 é a capacidade de computação escalonável do serviço de
computação em nuvem da Amazon, que é alugado na forma das chamadas
“instâncias”.

Amazon S3 (Amazon Simple Storage): Amazon S3 é uma plataforma de


armazenamento de objetos baseada em nuvem.

Amazon EBS (Amazon Elastic Block Store): o Amazon EBS fornece volumes
de armazenamento em bloco de alta disponibilidade para instâncias EC2.

Amazon RDS (Amazon Relational Database Service): Amazon RDS é um


serviço de banco de dados para gerenciar os mecanismos de banco de dados
relacional Amazon Aurora, PostgreSQL, MySQL, MariaDB, Oracle e Microsoft
SQL Server.

O gerenciamento de contêineres é feito pelo ECS por padrão, usando


um orquestrador proprietário, que atua como mestre e se comunica com um
agente em cada nó do cluster que precisa ser gerenciado. Como alternativa,
um módulo de código aberto é oferecido com o Blox, o que torna possível
conectar “agendadores” desenvolvidos por eles mesmos, bem como ferramentas
de terceiros como o Mesos no ECS (IONOS, 2019).

182
TÓPICO 2 — CONTÊINER COMO SERVIÇO (CAAS)

A Amazon fornece aos usuários da AWS repositórios Docker privados


como parte do EC2 Container Registry (ECR) para realizar uma administração
central de suas imagens de contêiner. O acesso ao registro pode ser gerenciado
usando AWS IAM no nível do recurso (IONOS, 2019).

Uma desvantagem do serviço de contêiner Amazon EC2 é que ele


restringe as instâncias do EC2. O serviço CaaS da Amazon não fornece suporte
para infraestruturas de TI fora da AWS – nem fisicamente, nem virtualmente.

Os cenários de nuvem híbrida, em que vários aplicativos de contêiner


às vezes são operados no local, são, portanto, tão impossíveis de executar como
uma combinação dos recursos de tecnologia de diferentes provedores de nuvem
pública. Isso, provavelmente, se deve ao modelo de negócios da Amazon para o
serviço CaaS é essencialmente gratuito por meio da AWS.

Os usuários pagam apenas pelo fornecimento da infraestrutura em


nuvem, como grupos de instâncias EC2, que formam a base para a operação de
aplicativos de contêiner (IONOS, 2019).

FIGURA 10 – PAINEL AMAZON ELASTIC CONTAINER SERVICE

FONTE: O autor

Vamos ver como é o passo a passo para implantação de contêineres


na Amazon utilizando apenas a camada gratuita dos serviços do provedor.

183
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

Iniciamos configurando o Amazon ECS. Para isso, o assistente de


primeira execução do Amazon ECS orientará durante a criação de um cluster e
a execução de um sistema web de exemplo. Nesta etapa, é só acessar o console
do Amazon ECS e executar o assistente. Para isso, é só acessar este link: https://
console.aws.amazon.com/ecs/home#/firstRun.

Após ter criado o Amazon ECS, você pode usar o Amazon Elastic Container
Registry (Amazon ECR) conseguindo criar um repositório de imagens e enviar
uma imagem para ele como parte do assistente de primeira execução.

FIGURA 11 – INICIANDO AMAZON ELASTIC CONTAINER SERVICE

FONTE: O autor

Depois disso, cria-se uma definição de tarefa, que é uma espécie de


esquema do seu aplicativo. Será especificada uma definição de tarefa para que
o Amazon ECS saiba qual imagem de Docker usar para os contêineres, quantos
contêineres usar na tarefa e a alocação de recursos para cada contêiner. A definição
de tarefa vem pré-carregada com valores de configuração padrão. Revise os
valores padrão e selecione o comando para a próxima etapa. Se preferir modificar
as configurações ou quiser saber mais, consulte os parâmetros de definição de
tarefa.

184
TÓPICO 2 — CONTÊINER COMO SERVIÇO (CAAS)

FIGURA 12 – CRIANDO O AMAZON ELASTIC CONTAINER SERVICE

FONTE: O autor

Nesse momento precisa ser configurado o serviço. Após a criação de uma


definição de tarefa, configure o serviço do Amazon ECS. Um serviço executa
e mantém cópias da definição de tarefa no cluster. Por exemplo, ao executar
um aplicativo como um serviço, o Amazon ECS recuperará automaticamente
qualquer tarefa interrompida e manterá o número de cópias que for especificada.

Após isso, configure as opções de serviço. Primeiro o nome do serviço,


que é o valor padrão sample-webapp, um aplicativo de exemplo com base na web
disponibilizado pela AWS. Ele foi projetado para ser executado indefinidamente,
portanto, quando executado como um serviço, ele será reinicializado caso a tarefa
apresente problemas de integridade ou caso seja interrompida inesperadamente. O
número desejado de tarefas, para permanecer no nível gratuito da AWS, mantenha
o valor padrão 1. Isso criará uma cópia da sua tarefa.

185
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

FIGURA 13 – CONFIGURANDO O AMAZON ELASTIC CONTAINER SERVICE

FONTE: O autor

Logo após, é necessário configurar o Elastic load balancing, tendo a opção


de usar um load balancer com seu serviço.

O Amazon ECS pode criar um load balancer do Elastic Load Balancing (ELB)
para distribuir o tráfego entre as instâncias de contêiner onde sua tarefa está
sendo executada. No nome do contêiner e porta do host selecione Simple-
app:80. Os valores padrão de ELB listener protocol (protocolo do listener do ELB),
ELB listener port (porta do listener do ELB) e de ELB health check (verificação de
saúde do ELB) são configurados para o sistema de exemplo.

186
TÓPICO 2 — CONTÊINER COMO SERVIÇO (CAAS)

FIGURA 14 – CONFIGURANDO O ELASTIC LOAD BALANCING

FONTE: O autor

Antes de poder anexar um load balancer a um Amazon ECS Service, é


necessário criar uma função do Identity and Access Management (IAM) a ser usada
pelos serviços. Isso permitirá que o Amazon ECS faça chamadas para as APIs
do Amazon EC2 e do Elastic Load Balancing para registrar e cancelar o registro de
instâncias nos load balancers. Depois de tudo configurado, selecione a próxima
etapa.

187
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

FIGURA 15 – CONFIGURANDO O ELASTIC LOAD BALANCING

FONTE: O autor

Agora é necessário configurar o cluster. As definições de configuração


para um sistema web de exemplo devem seguir com o nome do cluster sendo
sample-cluster, o tipo de instância do EC2 será padrão t2.micro para ficar no nível
gratuito.

Os tipos de instância com mais recursos de CPU e memória podem


realizar mais tarefas. O número de instâncias fica com o valor padrão 1 para
executar uma instância do Amazon EC2 no cluster, no qual as tarefas serão
inseridas. Será necessário usar um par de chaves para utilizar o SSH nas
instâncias mais tarde, podendo manter a seleção padrão de nenhuma — não
habilitado para SSH, selecionar um par de chaves existente ou criar um par no
console do Amazon EC2. No security group, deixar o valor padrão. Selecionar
o seu container instance IAM role. Depois disso, é só revisar e executar.

188
TÓPICO 2 — CONTÊINER COMO SERVIÇO (CAAS)

FIGURA 16 – INICIANDO O AMAZON ECS

FONTE: O autor

Na tela seguinte deverá ser iniciado o serviço.

189
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

FIGURA 17 – INICIANDO O AMAZON ECS

FONTE: O autor

Para abrir o sistema de exemplo, é só ir até a página do aplicativo web de


exemplo (sample-webapp), clicar no nome do Load Balancer e copiar o DNS ou o
endereço do Load Balancer e colar na URL do navegador.

Pronto, depois disso seu ECS está rodando. Na Amazon é sempre


aconselhável estar atento aos recursos que estão sendo escolhidos e excluir os
recursos criados para não gerar nenhuma cobrança indesejada. CUIDADO!

ATENCAO

Sempre exclua todos os recursos que criou nos provedores após ter realizado
seus estudos.

190
TÓPICO 2 — CONTÊINER COMO SERVIÇO (CAAS)

6.2 GOOGLE CONTÊINER ENGINE (GKE)


O Google oferece uma série de funcionalidades de computação em nuvem
e oferece também o serviço de CaaS.

FIGURA 18 – GOOGLE CLOUD

FONTE: <http://twixar.me/Ffbm>. Acesso em: 20 out. 2020.

O Google também integrou um serviço de contêiner hospedado


com o Google Container Engine (GKE) na nuvem. O principal componente do
serviço CaaS são as ferramentas de orquestração Kubernetes.

FIGURA 19 – SITE GOOGLE KUBERNETS ENGINE

FONTE: <https://cloud.google.com/kubernetes-engine?hl=pt-br>. Acesso em: 20 out. 2020.

O GKE depende dos recursos do Google Compute Engine (GCE) e permite


que os usuários executem aplicativos baseados em contêiner em clusters do
Google Cloud Platform (GCP). No entanto, os usuários que têm GKE não estão
limitados apenas à infraestrutura do Google Cloud: o sistema de federação de
cluster do Kubernetes possibilita combinar diferentes recursos de cluster de
computador em uma federação de computação lógica e, se necessário, criar
ambientes híbridos de várias nuvens (IONOS, 2019).

Cada cluster criado com o GKE consiste em um endpoint mestre


do Kubernetes no qual o servidor da API do Kubernetes é executado e qualquer
número de nós de trabalho que atendem às solicitações REST para os servidores
da API, que oferecem suporte a contêineres Docker (IONOS, 2019).

191
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

Enquanto o nó mestre monitora como os recursos são usados e o status


do cluster, os aplicativos contidos são executados no nó de trabalho. Se um nó
de trabalho falhar, o mestre distribui as tarefas necessárias para a operação do
aplicativo para outros nós (IONOS, 2019).

O GKE também oferece suporte ao formato de contêiner Docker


amplamente usado. Para fornecer imagens Docker, os usuários têm um registro
de contêiner privado. Uma sintaxe baseada em JSON oferece a opção de definir
serviços de contêiner como modelos (IONOS, 2019).

Semelhante ao ECS na AWS, o GKE é integrado diretamente à plataforma


Google Cloud para que os usuários do contêiner tenham acesso a vários recursos
da nuvem pública, além do intervalo de funções de orquestração (IONOS, 2019).

Google e Amazon têm planos diferentes em termos de preços de seus


serviços CaaS. Um gerenciamento de contêiner para clusters com até cinco
instâncias de mecanismo de computador (nós) está disponível para os usuários
gratuitamente.

Existem apenas custos para fornecer serviços em nuvem (CPU, memória


etc.). Se os usuários desejam executar contêineres em clusters maiores (seis ou
mais instâncias), o Google também cobra uma taxa de uso para o mecanismo de
contêiner: o preço é por hora para um cluster (IONOS, 2019).

FIGURA 20 – PAINEL GOOGLE KUBERNETS ENGINE

FONTE: O autor

6.3 SERVIÇO DE CONTÊINER DO AZURE (ACS)


A Microsoft possui na plataforma Azure um serviço de Contêineres.

192
TÓPICO 2 — CONTÊINER COMO SERVIÇO (CAAS)

FIGURA 21 – MICROSOFT AZURE

FONTE: <https://ocaradoti.com.br/wp-content/uploads/2020/01/logo-transparente-Microsoft-
-Azure.png>. Acesso em: 20 out. 2020.

O Azure Container Service (ACS) é um ambiente de hospedagem


preparado para a plataforma de computação em nuvem da Microsoft Azure, que
permite aos usuários desenvolver aplicativos baseados em contêiner e implantá-
los em clusters de computador escalonáveis.

O ACS depende de uma versão otimizada do Azure das ferramentas de


contêiner carregadas na origem e permite a operação de contêineres Linux no
formato Docker. Os contêineres do Windows são atualmente suportados apenas
em uma versão de visualização (IONOS, 2019).

O principal componente do serviço CaaS da Microsoft é o Azure


Contêiner Engine, cujo código-fonte está disponível sob a licença de código aberto
no GitHub. O Azure Container Engine atua como um gerador de modelos que cria
modelos para o Azure Resource Manager (ARM). Eles podem ser gerenciados usando
uma API com uma das seguintes ferramentas de orquestração: Docker Swarm,
DC / OS e Kubernetes (IONOS, 2019).

FIGURA 22 – SITE MICROSOFT AZURE CONTAINER SERVICES

FONTE: <https://azure.microsoft.com/pt-br/product-categories/containers/>. Acesso em: 20


out. 2020.

193
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

A escolha do orquestrador depende principalmente dos recursos


disponíveis para usuários ACS ao operar aplicativos de contenção na nuvem do
Azure.

FIGURA 23 – PAINEL MICROSOFT AZURE CONTAINER SERVICES

FONTE: O autor

A Microsoft Azure possui muitos recursos que podem agilizar o


desenvolvimento de CaaS para o seu sistema de informação.

194
RESUMO DO TÓPICO 2

Neste tópico, você aprendeu que:

• Os CaaS diferem das Platform as a Service (PaaS), pois dependem do uso de


contêineres.

• O objetivo de uma abordagem orientada a serviços para fornecer recursos


de software é ajudar os usuários a se concentrarem completamente em seus
negócios.

• O CaaS fornece aos usuários o gerenciamento completo do “ciclo de vida” de


um software.

• Os principais provedores de CaaS são a Amazon, a Microsoft e o Google.

195
AUTOATIVIDADE

1 (TRT-PE, 2018) Para organizar os diferentes tipos de serviço disponibilizados


na nuvem, foram estabelecidas algumas categorias de serviços como o
SaaS, IaaS, PaaS, CaaS, dentre outros. Qual dos itens a seguir é um exemplo
de CaaS?
FONTE: <https://www.qconcursos.com/questoes-de-concursos/questoes/b11360d0-4f>.
Acesso em: 20 out. 2020.

a) ( ) Google Docs.
b) ( ) Amazon ECS.
c) ( ) Amazon Beanstalk.
d) ( ) Google App Engine.

2 O Amazon Elastic Container Service (Amazon ECS) é um serviço gerenciado


de orquestração de contêineres na nuvem da Amazon Web Services (AWS).
Assinale a alternativa CORRETA que apresenta o nome da ferramenta
que precisamos utilizar juntamente ao ECS no serviço da AWS.

a) ( ) Elastic Compute Cloud.


b) ( ) Elastic load balancing.
c) ( ) Simple Storage Service.
d) ( ) Elastic Beanstalk.

196
TÓPICO 3 —
UNIDADE 3

VERSIONAMENTO E DEPLOY EM NUVEM

1 INTRODUÇÃO
A evolução tecnológica vem auxiliando a humanidade em suas tarefas
diárias, através das comodidades e proporcionando agilidade e entretenimento
(ARMBRUST et al., 2009; CORRÊA; ARAUJO; MEDINA, 2016). No entanto,
todos esses aplicativos possuem em comum um código-fonte independente da
linguagem de programação ou plataforma usada.

O surgimento da tecnologia e a necessidade de transmitir a informação de


modo simultâneo exige o desenvolvimento de um sistema de transmissão ágil,
e a plataforma em nuvem é um grande aliado neste processo (CAETANO, 2004;
CORRÊA; ARAUJO; MEDINA, 2016). Desse modo, o processo de controle das
versões (versionamento) e o deploy (disponibilização do aplicativo) em nuvem se
tornou essencial no processo de desenvolvimento e disponibilização de sistema
para usuário.

Atualmente, existem sistemas de controle de versões que auxiliam na


segurança e na qualidade do código-fonte. As empresas de software geralmente
usam um sistema de controle de versão para controlar seus softwares. Com isso,
rastreiam as alterações efetuadas. Agora, vamos conhecer os principais conceitos
do controle de versão e detalhar os principais modelos presente no mercado.

2 CONCEITOS DE VERSIONAMENTO
A gerência de configuração de software é responsável pelo controle da
evolução de sistemas de software e ainda abrange técnicas de versionamento
usadas em grandes projetos de desenvolvimento de software (CAETANO, 2004;
DIAS, 2009; FARLEY; HUMBLE, 2014). As vantagens do gerenciamento de
software são:

• Facilitar as mudanças.
• Controlar os produtos.
• Economizar o tempo no desenvolvimento.
• Facilitar a geração de versões diferenciadas.
• Manter o histórico do software.
• Facilitar a recuperação das versões anteriores.

197
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

Durante o processo de desenvolvimento é essencial que haja o


gerenciamento de configuração, que conforme Farley e Humble (2014, p. 90) é
definido como “a gerência de configuração se refere ao processo pelo qual todos
os artefatos relevantes ao seu projeto e as relações entre eles são armazenados,
recuperados, modificados e identificados de maneira única”.

E
IMPORTANT

Em 1972, nos Estados Unidos, no laboratório Bell Labs, foi criado, por Marc.
J. Rochkind, o primeiro sistema de controle de versões. Esse sistema foi chamado de
Source Code Control System (SCCS) e foi o principal sistema de controle de versão. A sua
contribuição foi a técnica de armazenamento interleaved deltas, que é considerada como
precursora para o surgimento de técnicas de junção (HOFFMAN, 2002).

O controle de versão é definido como uma prática da Engenharia de


Software, que atua no gerenciamento de distintas versões de um documento.

Atualmente, há inúmeras equipes de trabalho atuando em diferentes locais


ao mesmo tempo, então, nestes casos, o controle de versões é visualizado como
uma extensão natural do processo de desenvolvimento colaborativo (HOFFMAN,
2002; DIAS, 2009; FARLEY; HUMBLE, 2014). Entretanto, para garantir o controle
do processo existem três métodos, conforme o Quadro 3.

QUADRO 3 – TIPOS DE MÉTODOS

MÉTODO DESCRIÇÃO
BLOQUEIO Possibilita que a operação de entrega de um arquivo
torne restrita ao usuário que efetuou o bloqueio
(“admin”). Com isso, impedindo que outros usuários
façam modificações deste mesmo arquivo ao
repositório, enquanto ele estiver em alteração.
BLOQUEIO FRACO Utilizado para observar um arquivo (“watch”), ou
seja, o usuário que estiver vigiando o arquivo será
comunicado quando o arquivo tiver alguma alteração.
No entanto, quando outro usuário retirar o arquivo, ele
será somente para leitura, evidenciado desta forma que
o arquivo não pode ser alterado. Mas, caso ele deseje
alterar o arquivo, poderá fazê-lo (“edit”).
SINCRONIZAÇÃO O método mais usado para aceitar alterações paralelas
em um mesmo arquivo. É efetuada através de uma
operação de atualização (“update”), que confirma se
alguma outra atualização foi realizada ao repositório.
FONTE: Adaptado de Hoffman (2002)

198
TÓPICO 3 — VERSIONAMENTO E DEPLOY EM NUVEM

O controle de versões está ligado às técnicas e ferramentas usadas para


controle da evolução de arquivos de computador, isso significa que concede
a recuperação de dados históricos, semelhanças e diferenças entre versões, e
ainda detalhes da evolução de algum conteúdo controlado (HOFFMAN, 2002;
FARLEY; HUMBLE, 2014). Portanto, o controle de versões é uma ferramenta de
gerenciamento de configuração de software que facilita as empresas a dominarem
ou controlarem os problemas existentes nas equipes de desenvolvimento
(FARLEY; HUMBLE, 2014). Então, para finalizar, o sistema de controle de versões
engloba:

• Obtenção de uma cópia de um repositório remoto.


• Realização de alterações nos arquivos do repositório.
• Realização de um commit.
• Confirmação das alterações e inserção de uma mensagem.
• Envio de suas alterações de volta para o servidor remoto.

Um modelo de versão determina os objetos a serem versionados,


identificação da versão e organização, e ainda as operações para recuperação
de versões atuais e a elaboração de novas versões (HOFFMAN, 2002; FARLEY;
HUMBLE, 2014). Segundo Farley e Humble (2014), um controle de versão tem os
seguintes objetivos:

• Guardar cada versão de cada arquivo garantindo o acesso a ele.


• Fornecer uma maneira de associar metadados.
• Permitir a colaboração de equipes distribuídas no tempo e no espaço.

Agora, vamos compreender os principais conceitos do funcionamento do


controle de versões (Quadro 4).

QUADRO 4 – CONCEITOS PRINCIPAIS


Commit (ou check-in) Criação de uma versão nova.
Check-out Recuperação de uma determinada versão do
arquivo.
Repositório de versões Armazenamento de todas as versões dos arquivos
sob controle de versões.
Repositório de versões Cada área de trabalho local contém apenas
centralizados uma versão específica da árvore de versões do
repositório central e todos os usuários realizam
as operações de controle de versões no repositório
central.

199
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

Repositório de
versões Cada área local possui um repositório acoplado, de
distribuídos forma que o usuário tem um repositório próprio
para realizar o controle de versões. As operações
realizadas a respeito dos arquivos são feitas no
repositório local do usuário, e operações específicas
dos repositórios distribuídos são utilizadas para
sincronizar repositórios diferentes.
Árvore de revisões ou de Estrutura lógica que mapeia todas as versões
versões armazenadas no repositório para determinado
arquivo ou conjunto de arquivos.
FONTE: Adaptado de Junqueira (2007)

Os sistemas de controle de versão podem ser divididos em dois modelos,


sendo o modelo centralizado e o modelo distribuído (HOFFMAN, 2002;
JUNQUEIRA, 2007; FARLEY; HUMBLE, 2014). Agora, vamos descrever estes
dois modelos.

No modelo centralizado há somente um repositório central e muitas cópias


de trabalho (Figura 24). Isso significa que existe um servidor central responsável
pelo versionamento, sendo, deste servidor, que os outros computadores acessarão
os arquivos e suas versões (JUNQUEIRA, 2007; FREITAS, 2010). Nesse sentido, as
operações de commit e update são responsáveis por consolidar as modificações e
atualização da cópia local que estão entre o cliente e o servidor (FREITAS, 2010).

FIGURA 24 – MODELO VERSÃO CENTRALIZADO

FONTE: Adaptado de Dias (2009)

200
TÓPICO 3 — VERSIONAMENTO E DEPLOY EM NUVEM

NOTA

O Subversion é um sistema de controle de versão centralizado, tanto o cliente


como o servidor trabalham com os principais sistemas operacionais: Unix, Windows e Mac
OS X, e sua portabilidade se deve ao subversion abstrair todas as diferenças entre os Sistemas
operacionais para que sua utilização seja homogênea em todos eles (JUNQUEIRA, 2007).

No modelo de versão distribuído (ou descentralizado), há inúmeros


repositórios autônomos e independentes, sendo um para cada colaborador, e
cada um desses repositórios tem uma área de trabalho conectada a ele (Figura
25) (JUNQUEIRA, 2007; FREITAS, 2010). No modelo distribuído as operações de
“commit” e “update” ocorrem de maneira local. Esse modelo é considerado mais
avançado, sendo recomendado para grandes equipes e projetos de grande porte
(JUNQUEIRA, 2007; DIAS, 2009; FREITAS, 2010). As vantagens desse sistema são:

• Facilitar o compartilhamento de dados e dispositivos.


• Melhorar e facilitar a comunicação das equipes.
• Melhora na distribuição de tarefas.

Entretanto, como desvantagens têm o alto custo devido à melhoria da


rede e proteção de dados sigilosos.

FIGURA 25 – SISTEMA DE CONTROLE DISTRIBUÍDO

FONTE: <https://blog.pronus.io/images/controle_versao/conceitos_basicos/repositorio_desen-
volvedor.png>. Acesso em: 20 out. 2020.

201
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

Os modelos distribuídos são adotados para o desenvolvimento do kernel


do sistema operacional Linux, projeto Mozilla e os sistemas GIT. Os sistemas de
controle de versão Bazaar e o Mercurial também são exemplos de sistemas de
controle de versão distribuídos (JUNQUEIRA, 2007; DIAS, 2009; FREITAS, 2010;
MORAES, 2013).

E
IMPORTANT

O sistema de controle de versão distribuído GIT possui como características:


velocidade, simples design, suporte robusto a desenvolvimento não linear e capacidade de
lidar de maneira eficiente com grandes projetos como o kernel do Linux (MORAES, 2013).

2.1 O SISTEMA DISTRIBUÍDO GIT


O GIT é considerado um software livre open source que utiliza a linguagem
C, Shell Script e Perl, sendo distribuído sob a licença GNU GPLv2. Portanto, o
GIT é definido como um sistema de controle de versão distribuído tendo como
características: velocidade, simples design, suporte robusto e capacidade de
atuar de modo eficiente com projetos de grande porte (exemplo: kernel do Linux)
(JUNQUEIRA, 2007; DIAS, 2009; FREITAS, 2010; MORAES, 2013).

O modo distribuído do GIT possibilita maior flexibilidade no modo como


os desenvolvedores colaboram em projetos. Desse modo, cada desenvolvedor
contribui para outros repositórios, e ainda pode ter um repositório público
para que outros desenvolvedores possam se basear em seu trabalho e com a
possibilidade de contribuir com informações (JUNQUEIRA, 2007; DIAS, 2009;
FREITAS, 2010; MORAES, 2013; CORRÊA; ARAUJO; MEDINA, 2016).

Portanto, a utilização do GIT possibilita um fluxo de trabalho para equipes


com perfil colaborativo. O GIT pode ainda ser usado para registrar o histórico de
edições de vários tipos de arquivo, isso significa que cada alteração no arquivo
estará registrada e ainda será possível identificar o autor da alteração. Portanto,
o GIT auxilia na resolução de problemas independentemente da quantidade
de envolvidos no processo, já que é considerado um sistema inteligente sendo
responsável em notificar e unir as informações adicionadas do arquivo (FREITAS,
2010; MORAES, 2013; CORRÊA; ARAUJO; MEDINA, 2016).

A realização do controle dessas permissões ocorre através do protocolo


ssh, que permite a criação de chaves para controle da autenticação ou por
meio do protocolo HTTP, que define as permissões de escrita e leitura para
cada arquivo ou diretório (CORRÊA; ARAUJO; MEDINA, 2016). Um ponto
importante é que no GIT a operação de commit é atômica, ou sejam quando uma

202
TÓPICO 3 — VERSIONAMENTO E DEPLOY EM NUVEM

operação é interrompida, ela é desprezada e o repositório não mantem em um


estado inconsistente (MOTAHARI-NEZHAD; STEPHENSON; SINGHAL, 2009;
MORAES, 2013).

Uma outra característica importante do GIT é a sua capacidade de garantir


a ordem impedindo problemas para os desenvolvedores. Desse modo, no GIT
existe a possibilidade de elaborar muitos snapshots do projeto. Isso significa que
a cada ação de salvar o projeto ( “commit”), é como se fosse tirado uma foto
(snapshots) dos seus arquivos naquele momento e ainda, armazenasse uma
referência para essa captura (JUNQUEIRA, 2007; DIAS, 2009; FREITAS, 2010;
MORAES, 2013; CORRÊA; ARAUJO; MEDINA, 2016). Entretanto, se nenhum
arquivo foi modificado, a informação não será armazenada (Figura 26).

FIGURA 26 – TRATAMENTO DOS DADOS GIT

FONTE: Palestino (2015, p. 43)

As principais seções de um projeto GIT são (Figura 27):

• diretório do GIT (GIT directory, repository);


• diretório de trabalho (working directory);
• área de preparação (staging area).

ATENCAO

De modo resumido, o workflow do GIT é do seguinte modo (PALESTINO,


2015):
• Modificar os arquivos em um diretório de trabalho.
• Selecionar os arquivos, adicionando snapshots deles para uma área de preparação.
• Commit que leva os arquivos, como eles estão, na área de preparação e os armazena
permanentemente no diretório GIT.

203
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

FIGURA 27– SEÇÕES PRINCIPAIS DE UM PROJETO GIT

FONTE: Palestino (2015, p. 44)

De acordo com Palestino (2015), os principais comandos do GIT estão


atrelados ao seu fluxo básico de trabalho que pode ser compreendido com as
operações efetuadas por um colaborador, sendo as seguintes operações:

• Atualizar cópia de trabalho: por meio do comando git fetch, que faz o download
de modificações do repositório desejado, seguido do comando git merge,
para mesclar as modificações baixadas com o seu repositório, ou por meio do
comando git pull, responsável pela atualização do seu repositório.
• Efetuar as modificações: por meio dos comandos git add, que insere arquivos
ao index; git rm, que retira um item de uma cópia de trabalho ou do repositório
e git mv, que move ou renomeia um arquivo ou diretório.
• Verificar modificações: por meio dos comandos git status, que mostra as
informações do estado de arquivos e diretórios na cópia de trabalho e git diff,
que mostra as diferenças entre duas revisões ou caminhos.
• Desfazer modificações: com o comando git revert, que altera todas as edições
locais.
• Resolução de conflitos: por meio do comando git mergetool, que executa
ferramentas de resolução de conflitos.
• Submeter modificações: por meio do comando git commit, que encaminha as
modificações de sua cópia de trabalho para o repositório.
• Propagar modificações: por meio do comando git push, que encaminha as
modificações do repositório de origem para outro repositório.

O GitHub é um local de armazenamento em nuvem dos arquivos enviados


via GIT, sendo considerado uma das maiores plataformas de armazenamento de
código existente (JUNQUEIRA, 2007; DIAS, 2009; FREITAS, 2010; MORAES, 2013;
PALESTINO, 2015). O GitHub tem uma ferramenta de rastreamento de erros que
é considerada flexível, já que possibilita o acompanhamento de erros e problemas
de cada projeto, usando marcação por meio de rótulos (labels) que são definidos
pela equipe do projeto (CORRÊA; ARAUJO; MEDINA, 2016).

Ela é uma plataforma que integra as funcionalidades sociais com sucesso


as suas funcionalidades de suporte ao desenvolvimento.

204
TÓPICO 3 — VERSIONAMENTO E DEPLOY EM NUVEM

NOTA

A GitHub é considerada uma plataforma de hospedagem de repositórios com,


aproximadamente, 27 milhões de usuários, 80 milhões de repositórios e 1,8 milhão de
organizações, no período de 2018.

Essas funcionalidades garantem que os desenvolvedores “sigam”


(funcionalidade follow) outro desenvolvedor ou “assistam” (funcionalidade watch)
outros repositórios. Isso possibilita que as ações de desenvolvedores seguidos ou
em repositórios assistidos possam ser informadas para os usuários interessados
(MASON, 2006; DIAS, 2009; CORRÊA; ARAUJO; MEDINA, 2016). Além do que,
existe a ferramenta open source GitLab que tem interface web, é distribuída de
maneira livre sob a licença MIT, seu desenvolvimento tem como base a linguagem
de programação Ruby apoiado pelo framework Rails, ela gerencia de modo
exclusivo o sistema de controle de versão GIT (CORRÊA; ARAUJO; MEDINA,
2016).

Sendo as suas principais funcionalidades:

• criar projetos e repositórios;


• gerenciar usuários e suas permissões de acesso ao código-fonte;
• suporte à comunicação que é oferecido aos membros de uma equipe
colaborativa.

O GitLab tem uma comunidade ativa e colaborativa, sendo que são


lançados os releases de versões de modo constante com atualizações e correções
(CORRÊA; ARAUJO; MEDINA, 2016).

Conforme Corrêa, Araújo e Medina (2016), as suas principais características


e funcionalidades são:

• possuir controle de usuários, grupos e suas permissões por repositório;


• interface para revisão e mesclagem de código;
• suporte à comunicação por meio de tarefas, comentários e páginas de wiki;
• suporte para o sistema de controle de versão GIT.

205
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

NOTA

O GitLab surgiu em meados de 2011, fundado por Dmitriy Zaporozhets e


Valery Sizov. Para instalar o GIT é necessário um dos sistemas operacionais: Debian/Ubuntu,
Windows, OS X. A possibilidade de Hooks é limitada por alguns, sendo possível executar nos
momentos “applypatch-msg”, “pre-applypatch”, “postapplypatch”, “pre-commit”, “prepare-
commit-msg”, “commit-msg”, “post-commit”, “prerebase”, “post-checkout”, “post-merge”,
“pre-receive”, “update”, “post-receive”, “postupdate”, “pre-auto-gc” e “post-rewrite (MASON,
2006).

E
IMPORTANT

Vamos agora entender por meio de um exemplo: em um ambiente sem


o uso do GIT, onde dois profissionais iram trabalhar em um mesmo arquivo de modo
virtual, sendo que cada um vai fazer alterações e encaminhar por e-mail, por exemplo.
Esse cenário é possível, mas em um ambiente com mais colaboradores que necessitam
trabalhar em um mesmo arquivo fica inviável, pois haverá um grande esforço para finalizar
a união de todas as modificações. Entretanto, o uso do GIT nesses mesmos exemplos
facilitará todo o processo, já que o GIT irá juntar todas as modificações dos profissionais de
modo automático para gerar uma nova versão do arquivo (MASON, 2006).

Para finalizar, o controle de versão é uma ferramenta importante que


possui os comandos básicos de um sistema de controle versão como check-out,
commit, branch, tag, diff, merge, log e notes (ou annotation) (MASON, 2006;
DIAS, 2009; CORRÊA; ARAUJO; MEDINA, 2016). Sendo assim, o GIT tem como
principais vantagens velocidade, consistência e simplicidade.

2.2 FERRAMENTAS
As ferramentas proprietárias são aquelas cópias, redistribuição ou
alteração restritas pelo seu criador e exigem pagamento por meio da compra ou
plano de assinatura (MASON, 2006; DIAS, 2009; JEFFERY; NEIDECKER-LUTZ,
2010; CORRÊA; ARAUJO; MEDINA, 2016).

No entanto, algumas possuem planos gratuitos com restrição de uso para


que os usuários conheçam as funcionalidades da ferramenta antes de contratarem
a assinatura.

206
TÓPICO 3 — VERSIONAMENTO E DEPLOY EM NUVEM

• Bitbucket

O Bitbucket tem suporte para os SCV's GIT e Mercurial, e possui suporte


para gerenciamento de repositórios por meio de ambiente web, tendo clientes
desktops para as plataformas Windows e Mac (Figura 28) (MASON, 2006; DIAS,
2009; CORRÊA; ARAUJO; MEDINA, 2016).

FIGURA 28 - BITBUCKET INTERFACE WEB

FONTE: Moraes (2013, p. 26)

As principais características e funcionalidades, de acordo com Corrêa,


Araujo e Medina (2016) são:

ᵒ gestão de repositórios com acesso por meio de interface web com segurança
SSL;
ᵒ disponibiliza uma versão para ambiente desktop com funcionalidades
similares ao do ambiente web;
ᵒ controle de usuários, grupos e suas permissões por repositório;
ᵒ interface para revisão de código;
ᵒ suporte para sistemas de controle de versão GIT e Mercurial.

• GitHub

O GitHub tem suporte para o SCV GIT, sendo gratuito para a hospedagem
de repositórios públicos. Neste caso, tudo o que é criado fica público para
visualizações, downloads e colaborações (MASON, 2006; DIAS, 2009; CORRÊA;
ARAUJO; MEDINA, 2016).

Na Figura 29 é mostrada a interface web da ferramenta GitHub.

207
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

FIGURA 28 - BITBUCKET INTERFACE WEB

FONTE: Moraes (2013, p. 26)

As principais características e funcionalidades, de acordo com Corrêa,


Araujo e Medina (2016), são:

ᵒ disponibiliza uma versão para ambiente desktop com funcionalidades


similares ao ambiente web;
ᵒ controle de usuários, grupos e suas permissões por repositório;
ᵒ interface para revisão de código;
ᵒ suporte à comunicação com fóruns, comentários e páginas de wiki;
ᵒ suporte para o sistema de controle de versão GIT.

• GitLab

O GitLab tem interface web, sendo distribuída livremente sob a licença


MIT, gerencia de modo exclusivo o sistema de controle de versão GIT (MASON,
2006; CORRÊA; ARAUJO; MEDINA, 2016). Na Figura 30 é mostrada a Interface
web da ferramenta GitLab.

208
TÓPICO 3 — VERSIONAMENTO E DEPLOY EM NUVEM

FIGURA 30 – GITLAB

FONTE: Moraes (2013, p. 32)

• XP-Dev

Xp-Dev é uma ferramenta de gerenciamento de projetos e repositórios


que tem suporte para os SCV's Subversion, GIT e Mercurial. O gerenciamento
dos repositórios é realizado por meio de ambiente web, oferecendo suporte a
acesso com segurança SSL multiusuário com níveis de perfis (SOMMERVILLE,
2003; MOTAHARI-NEZHAD; STEPHENSON; SINGHAL, 2009; MORAES, 2013;
MARCO NETO, 2016).

O repositório fica hospedado em servidores externos de domínio da


empresa responsável pela ferramenta. Esses servidores são dedicados com HD's
criptografados e com backups em data center redundantes e independentes para
garantir a consistência e integridade das informações hospedadas (FIGURA 31)
(MOTAHARI-NEZHAD; STEPHENSON; SINGHAL, 2009).

209
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

FIGURA 31 – XP-DEV

FONTE: Moraes (2013, p. 25)

As principais características e funcionalidades, conforme Corrêa, Araujo


e Medina (2016), são:

ᵒ acesso por meio de interface web com segurança SSL;


ᵒ possui controle de usuários, grupos e suas permissões por repositório;
ᵒ interface para revisão de código;
ᵒ suporte à comunicação com blogs, fóruns, comentários e páginas de wiki;
ᵒ suporte para sistemas de controle de versão Subversion, GIT e Mercurial.

ATENCAO

Existem muitas ferramentas no mercado, sendo as mais utilizadas:

• Assembla.
• SVN Access Manager.
• SVN Manager.

3 CONCEITOS DE DEPLOY
O deploy disponibiliza aplicações e recursos para uso, isso significa
implementar novas atualizações, versões, funcionalidades ou ainda correções
(SOMMERVILLE, 2003; PRESSMAN, 2010; MORAES, 2013; MARCO NETO,
2016).
210
TÓPICO 3 — VERSIONAMENTO E DEPLOY EM NUVEM

O deploy, ou a disponibilização das aplicações ao usuário, possui as


seguintes categorias:

• Nuvens Públicas

Os serviços estão disponíveis na Internet e o usuário paga pelo que utiliza,


aqui nasce o conceito de computação como utilidade. Nesse sentido, empresas
como Microsoft, IBM e Oracle estão competindo para serem provedoras de
serviços, para depois se tornarem em uma utilidade. Empresas americanas, como
a Salesforce3, oferecem serviços de CRM para clientes brasileiros, e ainda com
suporte em português (SOMMERVILLE, 2003; PRESSMAN, 2010; MORAES,
2013; MARCO NETO, 2016).

O Google App Engine4 possui suporte com muitos grupos de usuários e


desenvolvedores no Brasil.

• Nuvens Privadas

São os datacenters internos das organizações que não são disponibilizados


publicamente. Desse modo, as empresas investem em técnicas como a virtualização
gerando a redução de custos das operações de TI, com isso surgiu o conceito de
computação em nuvem privada (PRESSMAN, 2010; MARCO NETO, 2016).

• Nuvens Híbridas

Neste tipo, são compostas por duas ou mais infraestruturas de computação


em nuvem, podendo ser pública, privada ou comunitária. As organizações
se comportam como únicas, porém ligadas por tecnologias proprietárias ou
padronizadas que ajudam a portabilidade de dados, bem como de aplicação
(PRESSMAN, 2010; MARCO NETO, 2016).

Desse modo, as empresas conseguem tirar vantagem devido à redução


de custos atrelados a terceirização de serviços, e ainda manter o nível de controle
dos dados críticos (MARCO NETO, 2016).

• Nuvens Comunitárias

Nesta situação, a infraestrutura está disponível para utilização de


uma comunidade de consumidores com objetivos comuns, por exemplo:
requisitos de segurança, políticas, missão, entre outros (MOTAHARI-NEZHAD;
STEPHENSON; SINGHAL, 2009; PRESSMAN, 2010; MARCO NETO, 2016).

O processo de operação e gestão podem ficar sob a responsabilidade de


uma ou de mais organizações de dentro da comunidade, ou ainda, de terceiros
ou de combinação desses itens (MARCO NETO, 2016). Este modelo é mais
interessante para pequenas e médias empresas, visto que cada entidade contribui
com sua parcela na infraestrutura geral da nuvem comunitária (JEFFERY;
NEIDECKER-LUTZ, 2010).
211
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

• Nuvens de Propósitos Específicos

Os sistemas de IaaS geralmente são genéricos quanto ao modo que podem


ser usados por diversos tipos de clientes ou em diversos casos de uso. Os sistemas
de PaaS são considerados mais específicos e restritos a determinados domínios,
por exemplo Google App Engine (REESE, 2009). Portanto, as nuvens de propósitos
específicos oferecem serviços mais direcionados a casos de uso específicos e
funcionalidades dedicadas (MOTAHARI-NEZHAD; STEPHENSON; SINGHAL,
2009; JEFFERY; NEIDECKER-LUTZ, 2010).

4 AUTOMAÇÃO DO DEPLOY EM NUVEM


Como foi visto anteriormente, o Deploy significa a disponibilização
de aplicações em nuvem, mas geralmente atividades como novas versões,
gerenciamento, escalabilidade de aplicações, provisionamento ou desligamento
de recursos, são realizadas manualmente na nuvem (REESE, 2009; MARCO
NETO, 2016).

As atividades realizadas no dia a dia e inseridas em um processo manual


podem levar um maior tempo do que quando automatizadas por meio de soluções
em nuvem (JEFFERY; NEIDECKER-LUTZ, 2010).

Entretanto, o gestor precisa considerar que erros ou atrasos são normais


em processos efetivados de modo manual, acarretando um impacto negativo.
A solução para mitigar os riscos e acabar com bugs é o deploy automatizado
(REESE, 2009). O ganho de tempo da equipe é um fator primordial, já que deixará
os desenvolvedores se dedicando aos códigos (JEFFERY; NEIDECKER-LUTZ,
2010).

Portanto, o deploy automatizado está relacionado com o conceito da


metodologia agile. A agilidade é com certeza um dos benefícios que a equipe
de desenvolvedores vai encontrar ao efetuar esse tipo de procedimento (REESE,
2009; MARCO NETO, 2016). Então, podemos afirmar que os modelos baseados
em agile tornam os ciclos de entrega mais eficazes e eficientes.

A organização que adota a automatização substitui processos manuais


lentos e ineficazes no seu ambiente de testes por um processo rápido e eficiente. Esse
tipo de API em nuvem usa da melhor maneira os recursos (REESE, 2009; MARCO
NETO, 2016). Isso significa que se o gestor necessita provisionar equipamentos
e recursos para determinadas aplicações, ele irá usar estes recursos e gerará a
economia planejada (MOTAHARI-NEZHAD; STEPHENSON; SINGHAL, 2009;
JEFFERY; NEIDECKER-LUTZ, 2010).

212
TÓPICO 3 — VERSIONAMENTO E DEPLOY EM NUVEM

Ao realizar o seu deploy automatizado, os desenvolvedores interagem


através de API e usam ferramentas para efetuar os códigos (REESE, 2009;
JEFFERY; NEIDECKER-LUTZ, 2010). No mercado existem muitas ferramentas
que podem ajudar as empresas na automatização de deploy. As ferramentas de
automação de processos, são consideradas eficientes e entregam o que prometem
em alguns cliques. Nesse caso, é possível, de acordo com Reese (2009):

• rodar testes com suas aplicações;


• migrar bancos de dados;
• comandar sistema e tarefas;
• proporcionar upload do código para a nuvem;
• ação automática.

E
IMPORTANT

Algumas ferramentas têm recursos avançados de monitoramento com


métricas, logs ou deploy progressivo, monitorando a saúde da aplicação e garantindo que
as instâncias estejam prontas para receber tráfego (MARCO NETO, 2016).

213
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

LEITURA COMPLEMENTAR

GITHUB + AZURE APP SERVICE: DEPLOYMENT AUTOMATIZADO E


SEM COMPLICAÇÕES DE WEB APPS NA NUVEM

Renato Groffe

[...]

Criando um recurso do Azure App Service

Para o exemplo demonstrado neste post será criado um novo recurso


do App Service a partir do Portal do Azure:

Associando um repositório do GitHub a um App Service

Para associar um repositório do GitHub a um App Service acessar a


opção Deployment Center:

214
TÓPICO 3 — VERSIONAMENTO E DEPLOY EM NUVEM

Além de repositórios do GitHub, o Azure App Service também


pode trabalhar em conjunto com opções como Azure Repos (Azure
DevOps), Bitbucket, Local GIT e FTP. Selecionar GitHub para prosseguir com a
configuração do deployment:

215
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

Um popup será então exibido, solicitando a conexão a uma conta


do GitHub:

A conta selecionada aparecerá agora na opção GitHub (destacada em


vermelho na imagem), sendo necessário acionar a opção Continue para prosseguir
com as configurações:

Em BUILD PROVIDER, selecionar a opção App Service build service e clicar


em Continue:

216
TÓPICO 3 — VERSIONAMENTO E DEPLOY EM NUVEM

Em CONFIGURE, indicar qual o repositório do GitHub (o repositório


utilizado no exemplo pode ser acessado em https://github.com/renatogroffe/
ASPNETCore2.2_github), bem como a Branch (selecionamos a branch master para
efeitos de testes); acionar na sequência o botão Continue:

Na imagem a seguir podemos observar este repositório no GitHub:

217
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

Em SUMMARY podemos concluir este procedimento clicando em Finish:

Após alguns segundos, aparecerá em Deployment Center uma notificação


de que o deployment teve sucesso:

218
TÓPICO 3 — VERSIONAMENTO E DEPLOY EM NUVEM

Testes

Um acesso a https://groffegithub.azurewebsites.net/api/contador trará


como retorno os dados gerados pela API REST de testes:

Será agora efetuada uma alteração a partir do próprio GitHub, utilizando


a branch master e o arquivo ContadorController.cs, como indicado a seguir (ajuste
destacado em vermelho). Confirmar essa alteração acionando a opção Commit
changes:

219
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO

Um novo deployment acontecerá de forma automática, sendo possível


observar que o mesmo teve sucesso na seção Deployment Center:

Ao acessar novamente a API de testes via browser, a mudança realizada


na branch master já constará no resultado gerado:

220
TÓPICO 3 — VERSIONAMENTO E DEPLOY EM NUVEM

FONTE: <https://medium.com/@renato.groffe/github-azure-app-service-deployment-automati-
zado-e-sem-complica%C3%A7%C3%B5es-de-web-apps-na-nuvem-4c0a0439e096>. Acesso em:
20 ago. 2020.

221
RESUMO DO TÓPICO 3

Neste tópico, você aprendeu que:

• O controle de versão é definido como uma prática da Engenharia de Software,


que atua no gerenciamento de distintas versões de um documento e está ligado
às técnicas e ferramentas usadas para controle da evolução de arquivos de
computador.

• Os sistemas de controle de versão podem ser divididos em dois modelos, sendo


o modelo centralizado e o modelo distribuído. No modelo centralizado há
somente um repositório central e no modelo de versão distribuído há inúmeros
repositórios autônomos e independentes.

• O GIT é definido como um sistema de controle de versão distribuído que


possibilita um fluxo de trabalho para equipes com perfil colaborativo.

• O GitHub é um local de armazenamento em nuvem dos arquivos enviados via


GIT, sendo considerado uma das maiores plataformas de armazenamento de
código existente.

• O deploy disponibiliza aplicações e recursos para uso.

• Ao realizar o deploy automatizado, os desenvolvedores interagem através de


API e usam ferramentas para efetuar os códigos.

CHAMADA

Ficou alguma dúvida? Construímos uma trilha de aprendizagem


pensando em facilitar sua compreensão. Acesse o QR Code, que levará ao
AVA, e veja as novidades que preparamos para seu estudo.

222
AUTOATIVIDADE

1 O GIT é definido como um sistema de controle de versão distribuído,


tendo como características: velocidade, simples design, suporte robusto
e capacidade de atuar de modo eficiente com projetos de grande porte
(CORRÊA; ARAUJO; MEDINA, 2016). Sendo assim, assinale a alternativa
INCORRETA:

a) ( ) O modo distribuído do GIT possibilita maior flexibilidade no modo


como os desenvolvedores colaboram em projetos.
b) ( ) A utilização do GIT possibilita um fluxo de trabalho para equipes com
perfil individualistas.
c) ( ) O GIT tem capacidade de garantir a ordem impedindo problemas
para os desenvolvedores.
d) ( ) No GIT existe a possibilidade de elaborar muitos snapshots do projeto.

2 Um modelo de versão determina os objetos a serem versionados, identificação


da versão e organização, e ainda as operações para recuperação de versões
atuais e a elaboração de novas versões (FARLEY; HUMBLE, 2014). Sobre o
modelo de versão, assinale a alternativa INCORRETA:

a) ( ) Guardar cada versão de cada arquivo garantindo o acesso a ele.


b) ( ) Fornecer uma maneira de associar metadados.
c) ( ) Permitir a colaboração de equipes locais.
d) ( ) Permitir a colaboração de equipes distribuídas no tempo e no espaço.

223
REFERÊNCIAS
ARMBRUST, M. et al. Above the clouds: a Berkeley view of cloud computing.
Berkeley: Electrical Engineering and Computer Sciences, University of
California, 2009. Disponível em: https://www2.eecs.berkeley.edu/Pubs/
TechRpts/2009/EECS-2009-28.pdf. Acesso em: 2 out. 2020.

AMAZON. Amazon Web Services ECS, 17 de jan. de 2020. Disponível em:


https://aws.amazon.com/pt/ecs/. Acesso em: 2 out. 2020.

BIRD, C.; MENZIES, T.; ZIMMERMAN, T. The art and science of analyzing
software data. [S. l.]: Morgan Kaufmann, 2015.

BUCHANAN, I. What is Containers as a Service? 2020. Disponível em: https://


www.atlassian.com/continuous-delivery/microservices/containers-as-a-
service#:~:text=Containers%20as%20a%20Service%20(%20CaaS,by%20using%20
container%2Dbased%20virtualization.. Acesso em: 2 out. 2020.

CAETANO, C. CVS: controle de versões e desenvolvimento colaborativo de


software. São Paulo: Editora Novatec, 2004.

CARR, N. G. TI já não importa. Harvard Business Review Brasil, São Paulo, v.


81, n. 5, p. 30- 37, maio 2003.

CORRÊA, I. da C.; ARAUJO, C. C.; MEDINA, A. M. Tutorial GIT. Santa


Maria: UFSM, 2016. Disponível em: http://coral.ufsm.br/pet-si/wp-content/
uploads/2017/02/Consult%C3%B3rio-de-Software-Git.pdf. Acesso em: 14 out.
2020.

DAMACENO, L. Docker: criando o seu primeiro container. Medium, [S. l.], 23


jan. 2019.Disponível em: https://medium.com/devs-javagirl/docker-criando-o-
seu-primeiro-cont%C3%AAiner-61ac022ceeef. Acesso em: 17 ago. 2020.

DIAS, A. F. Conceitos básicos de controle de versão de software - centralizado e


distribuído. Pronus, São Paulo, 5 nov. 2009. Disponível em: https://blog.pronus.
io/posts/conceitos-basicos-de-controle-de-versao-de-software-centralizado-e-
distribuido/. Acesso em: 14 out. 2020,

DOCKER. Best practices for writing Dockerfiles. Docker Docs, [S. l.], c2020.
Disponível em: https://docs.docker.com/develop/develop-images/dockerfile_
best-practices/#dockerfile-instructions. Acesso em: 17 ago. 2020.

224
FARLEY, D; HUMBLE, J. Entrega contínua: como entregar software de forma
rápida e confiável. Porto Alegre: Bookman, 2014.

FREITAS, D. T. M. de. Análise comparativa entre sistemas de controle de


versões. 2010. 56f. Trabalho de conclusão de curso (Graduação em Ciência
Da Computação) – Universidade Federal de Juiz de Fora, Juiz de Fora, 2010.
Disponível em: https://www.ufjf.br/getcomp/files/2013/03/An%c3%a1lise-
Comparativa-entre-Sistemas-de-Controle-de-Vers%c3%b5es-Daniel-Tannure-
Menandro-de-Freitas.pdf. Acesso em: 17 ago. 2020.

GHOSH, A. Paas versus container (Docker, CaaS). The Customize Windows, [S.
l.], 26 abr. 2018. Disponível em: https://thecustomizewindows.com/2018/04/paas-
versus-container-docker-caas/. Acesso em: 2 out. 2020.

GOMES, R. Docker para desenvolvedores. British Columbia: Leanpub, 2020.

HOFFMAN, A. B. G. Um modelo para o controle de versões de sistemas


para apoio ao desenvolvimento colaborativo através da Web. 2002. 123f.
Dissertação (Mestrado em Ciência da Computação) – Universidade Federal de
Santa Catarina, Florianópolis, 2002. Disponível em: https://repositorio.ufsc.br/
xmlui/bitstream/handle/123456789/83590/189592.pdf?sequence=1&isAllowed=y.
Acesso em: 2 out. 2020.

IONOS. Container-as-a-service – CaaS provider comparison. Ionos Digital


Guide, [S. l.], 24 jun. de 2019. Disponível em: https://www.ionos.com/
digitalguide/server/know-how/caas-container-as-a-service-service-comparison/.
Acesso em: 2 out. 2020.

JEFFERY, K.; NEIDECKER-LUTZ, B. (eds.). The future of cloud computing:


opportunities for European cloud computing beyond 2010. [S. l.]: Expert
Group Report, Information Society and Media. European Commission, 2010.
Disponível em: https://ec.europa.eu/digital-single-market/en/news/future-cloud-
computing-opportunities-european-cloud-computing-beyond-2010-expert-
group-report. Acesso em: 14 out. 2020.

JUNQUEIRA, D. Um controle de versões refinado e flexível para artefatos


de software. 2007. 106f. Dissertação (Mestrado em Ciências Matemáticas)
– Universidade São Paulo, São Carlos, 2007. Disponível em: https://www.
teses.usp.br/teses/disponiveis/55/55134/tde-01042008-134639/publico/
DANIELCJUNQUEIRA_ORIGINAL.PDF. Acesso em: 14 out. 2020.

MARCO NETO, C. C. Um levantamento estruturado do uso da ferramenta


de registro de problemas na plataforma GitHub. Dissertação de mestrado
em Informática, Universidade Federal do Rio de Janeiro, Rio de Janeiro, 2016.
Disponível em: http://ppgi.uniriotec.br/banco-de-dissertacoes-ppgi-unirio/
ano-2016/um-levantamento-estruturado-do-uso-da-ferramenta-de-registro-de-
problemas-na-plataforma-github. Acesso em 17 ago. 2020.

225
MASON, M. Pragmatic version control: using subversion. Beaverton: Pragmatic
Bookshelf, 2006. (The Pragmatic Starter Kit Series).

MICROSOFT. Introdução aos containeres e ao docker. Microssoft, [S. l.], 31


ago. 2020. Disponível em: https://docs.microsoft.com/pt-br/dotnet/architecture/
microservices/container-docker-introduction/. Acesso em: 9 set. 2020.

MOLL, V. Como construir uma aplicação com Docker? Geekhunter, [S. l.], 22
nov. 2019. Disponível em: https://blog.geekhunter.com.br/docker-na-pratica-
como-construir-uma-aplicacao/#Vamos_criar_uma_aplicacao. Acesso em 17 ago.
2020.

MORAES, R. C. CollabDev: gerenciador de repositórios para ambientes


colaborativos de desenvolvimento. 2013, 62f. Trabalho de Conclusão de Curso
(Graduação em Sistemas de Informação) – Curso de Sistemas de Informação,
Fundação de Ensino. Centro Universitário Eurípides de Marília, Marília, 2013.
Disponível em: https://aberto.univem.edu.br/bitstream/handle/11077/991/
rodolfo_adhenawer.pdf?sequence=1&isAllowed=y. Acesso em 17 ago. 2020.

MOTAHARI-NEZHAD, H. R.; STEPHENSON, B.; SINGHAL, S. Outsourcing


business to cloud computing services: opportunities and challenges. IEEE
Internet Computing, Special Issue on Cloud Computing., fev. 2009. Disponível
em: https://www.hpl.hp.com/techreports/2009/HPL-2009-23.pdf. Acesso em 17
ago. 2020.

PALESTINO, C. M. C. Estudo das tecnologias de controle de versões de


softwares. 2015. 72f. Trabalho de conclusão de curso (Graduação em Gestão
da Informação) – Universidade Federal do Paraná. Curitiba, 2015. Disponível
em: https://acervodigital.ufpr.br/bitstream/handle/1884/41087/2015-2%20TCC_
Caroline%20Munhoz%20Correa%20Palestino.pdf?sequence=1&isAllowed=y.
Acesso em: 2 out. 2020.

PRESSMAN, R. S. Engenharia de software. 6. ed. São Paulo: McGraw-Hill, 2010.

ROMERO, D. Containers com docker: do desenvolvimento à produção. São


Paulo: Casa do Código, 2015.

REESE, G. Cloud application architectures. Sebastopol, CA (US): O’Reilly


Media, Inc., 2009.

SOMMERVILLE, I. Engenharia de software. São Paulo: Ed. Pearson Education,


2003.

TOZZI, C. Container drawbacks: when not to use Docker. Container Journal, [S.
l.], 30 jun. 2016. Disponível em: https://containerjournal.com/uncategorized/
container-drawbacks-not-use-docker/. Acesso em: 2 out. 2020.

226
VITALINO, J. F. N.; CASTRO, M. A. N. Descomplicando o docker. Rio de
Janeiro: Brasport, 2016.

YEGULALP, S. Por que apostar em docker e containers? Computerworld, [S.


l.], 12 out. 2018. Disponível em: https://computerworld.com.br/plataformas/por-
que-apostar-em-docker-e-containers/. Acesso em: 17 ago. 2020.

227

Você também pode gostar