Escolar Documentos
Profissional Documentos
Cultura Documentos
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
P856f
ISBN 978-65-5663-329-9
ISBN Digital 978-65-5663-330-5
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.
Bons estudos!
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.
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.
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.
Bons estudos!
LEMBRETE
Acesse o QR Code, que levará ao AVA, e veja as novidades que preparamos para seu estudo.
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
FUNDAMENTOS DE CLOUD
COMPUTING
OBJETIVOS DE APRENDIZAGEM
A partir do estudo desta unidade, você deverá ser capaz de:
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.
CHAMADA
1
2
TÓPICO 1 —
UNIDADE 1
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.
3
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING
4
TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO
5
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING
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).
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
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).
8
TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO
NOTA
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).
10
TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO
11
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING
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.
13
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING
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).
14
TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO
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.
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).
17
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING
18
TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO
19
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING
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.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
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
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).
22
TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO
23
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING
24
TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO
25
RESUMO DO TÓPICO 1
Neste tópico, você aprendeu que:
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.
28
TÓPICO 2 —
UNIDADE 1
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.
29
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING
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.
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).
31
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING
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.
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
34
TÓPICO 2 — SOFTWARE COMO SERVIÇO - SAAS
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
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):
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).
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:
37
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING
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
DICAS
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.
40
TÓPICO 2 — SOFTWARE COMO SERVIÇO - SAAS
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.
5.7 GOTOMEETING
Segundo o Google Play (2020a), no GoToMeeting permite-se:
DICAS
42
TÓPICO 2 — SOFTWARE COMO SERVIÇO - SAAS
43
RESUMO DO TÓPICO 2
Neste tópico, você aprendeu que:
• 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.
45
AUTOATIVIDADE
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.
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.
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
48
TÓPICO 3 — PLATAFORMA COMO SERVIÇO PAAS
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:
50
TÓPICO 3 — PLATAFORMA COMO SERVIÇO PAAS
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
52
TÓPICO 3 — PLATAFORMA COMO SERVIÇO PAAS
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
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
55
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING
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.
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.
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.).
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.
57
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING
DICAS
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).
DICAS
DICAS
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”.
DICAS
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).
61
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING
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
63
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING
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.
64
TÓPICO 3 — PLATAFORMA COMO SERVIÇO PAAS
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/.
65
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING
DICAS
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.
67
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING
LEITURA COMPLEMENTAR
Adentro
Sem a cloud computing isso seria impossível, haja vista que as informações
estariam centralizadas na empresa, não possibilitando o trabalho remoto.
68
TÓPICO 3 — PLATAFORMA COMO SERVIÇO PAAS
No contexto pelo qual passamos, isso significa, ainda, ter que manter os
altos custos com TI, mesmo com a empresa de portas fechadas.
De acordo com uma pesquisa realizada pela IDC, 77% das empresas que
investiram em cloud conseguiram diminuir os custos com sua estrutura de TI.
69
UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING
Escalabilidade
A maioria dos serviços de cloud computing conta com planos que atendem
a empresas de diversos portes.
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
71
RESUMO DO TÓPICO 3
• 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.
CHAMADA
73
AUTOATIVIDADE
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.
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.
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.
FAYNBERG, I.; LU, H.; SKULER, D. Cloud computing: business trends and
technologies. Hoboken: John Wiley & Sons, 2016. ISBN: 9781118501214.
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.
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.
KANNAN, R.; et al. Managing and processing Big Data in cloud computing.
Hershey, PA: Information Science Reference, 2016. ISBN: 978-1-4666-9868-3.
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.
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.
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.
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.
79
SALESFORCE. O que é SaaS? c2020. Disponível em: https://www.salesforce.
com/br/saas/. Acesso em: 12 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.
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.
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.
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.
82
UNIDADE 2 —
OBJETIVOS DE APRENDIZAGEM
A partir do estudo desta unidade, você deverá ser capaz de:
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
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.
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).
86
TÓPICO 1 — SERVERLESS
87
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)
E
IMPORTANT
88
TÓPICO 1 — SERVERLESS
FONTE: O autor
89
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)
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).
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).
91
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)
92
TÓPICO 1 — SERVERLESS
NOTA
94
TÓPICO 1 — SERVERLESS
95
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)
E
IMPORTANT
96
TÓPICO 1 — SERVERLESS
DICAS
97
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)
98
TÓPICO 1 — SERVERLESS
99
RESUMO DO TÓPICO 1
100
• O surgimento da cultura DevOps surgiu com o intuito de aproximar a equipe
de desenvolvimento com a equipe de operações.
101
AUTOATIVIDADE
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?
103
104
TÓPICO 2 —
UNIDADE 2
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).
• usabilidade limitado;
• escalabilidade e evolução;
• custos elevados.
NOTA
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.
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.
106
TÓPICO 2 — BACK-END AS SERVICE - BAAS
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)
ATENCAO
4 ARQUITETURA DE BAAS
Um back-end, de um modo geral, é considerado como um serviço
segmentado em três camadas (BATSCHINSKI, 2016), sendo:
108
TÓPICO 2 — BACK-END AS SERVICE - BAAS
FONTE: <https://blog.back4app.com/wp-content/uploads/2019/07/backend-frontend-768x384.
png>. Acesso em: 29 set. 2020.
E
IMPORTANT
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:
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.
110
TÓPICO 2 — BACK-END AS SERVICE - BAAS
NOTA
111
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)
112
TÓPICO 2 — BACK-END AS SERVICE - BAAS
• 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).
113
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)
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
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.
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:
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.
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.
• 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:
117
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)
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:
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
ATENCAO
• 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)
119
RESUMO DO TÓPICO 2
120
AUTOATIVIDADE
121
c) ( ) BaaS é considerada uma plataforma exclusiva para administradores
de servidores.
d) ( ) BaaS disponibiliza muitos serviços, exceto autenticação e push
notifications.
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:
122
TÓPICO 3 —
UNIDADE 2
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).
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)
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)
125
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)
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).
126
TÓPICO 3 — FUNÇÃO COMO SERVIÇO (FAAS)
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).
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)
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).
129
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)
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.
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).
132
TÓPICO 3 — FUNÇÃO COMO SERVIÇO (FAAS)
133
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)
FONTE: O autor
FONTE: O autor
134
TÓPICO 3 — FUNÇÃO COMO SERVIÇO (FAAS)
FONTE: O autor
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)
136
TÓPICO 3 — FUNÇÃO COMO SERVIÇO (FAAS)
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.
137
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)
FONTE: O autor
138
TÓPICO 3 — FUNÇÃO COMO SERVIÇO (FAAS)
FONTE: O autor
FONTE: O autor
139
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)
DICAS
FONTE: <https://ocaradoti.com.br/wp-content/uploads/2020/01/logo-transparente-Microsoft-
-Azure.png>. Acesso em: 29 set. 2020.
140
TÓPICO 3 — FUNÇÃO COMO SERVIÇO (FAAS)
FONTE: O autor
DICAS
141
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)
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)
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
Henrique Augusto
145
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)
146
RESUMO DO TÓPICO 3
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.
CHAMADA
148
AUTOATIVIDADE
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.
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.
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.
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.
151
UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS)
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.
152
UNIDADE 3 —
OBJETIVOS DE APRENDIZAGEM
A partir do estudo desta unidade, você deverá ser capaz de:
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.
CHAMADA
153
154
TÓPICO 1 —
UNIDADE 3
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.
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
155
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO
FIGURA 1 - CONTÊINER
156
TÓPICO 1 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO
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
DICAS
Moll (2019) apresenta é um breve resumo do que pode ser realizado. Para
conhecer melhor cada um deles, acesse: https://docs.docker.com/engine/.
DICAS
FIGURA 3 - CONFIGURANDO
FONTE: O autor
159
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO
DICAS
DICAS
docker - -version
161
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO
>> docker ps -a
Além disso, existem dois tipos de comandos que podem ser utilizados
para listar os contêineres:
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
FIGURA 4 - DOCKFILE
163
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO
Feito isso, seguindo o modelo proposto por Moll (2019), já será possível
rodar a aplicação utilizando o seguinte comando:
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
Detalhando um Dockerfile
Comando Significado
FROM cria uma camada
FROM ubuntu:18.04
da ubuntu:18.04imagem Docker.
165
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO
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 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:
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
FROM ubuntu:18.04
RUN apt-get update
RUN apt-get install -y curl
USANDO PIPES
167
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO
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.
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.
168
TÓPICO 1 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO
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
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'
169
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO
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
170
TÓPICO 1 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO
DICAS
171
RESUMO DO TÓPICO 1
172
AUTOATIVIDADE
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.
174
TÓPICO 2 —
UNIDADE 3
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).
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).
175
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO
FONTE: <https://thecustomizewindows.com/wp-content/uploads/2018/04/PaaS-Versus-Contai-
ner-Docker-CaaS.png>. Acesso em: 20 out. 2020.
176
TÓPICO 2 — CONTÊINER COMO SERVIÇO (CAAS)
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).
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).
178
TÓPICO 2 — CONTÊINER COMO SERVIÇO (CAAS)
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).
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)
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.
181
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO
Amazon EBS (Amazon Elastic Block Store): o Amazon EBS fornece volumes
de armazenamento em bloco de alta disponibilidade para instâncias EC2.
182
TÓPICO 2 — CONTÊINER COMO SERVIÇO (CAAS)
FONTE: O autor
183
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO
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.
FONTE: O autor
184
TÓPICO 2 — CONTÊINER COMO SERVIÇO (CAAS)
FONTE: O autor
185
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO
FONTE: O autor
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)
FONTE: O autor
187
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO
FONTE: O autor
188
TÓPICO 2 — CONTÊINER COMO SERVIÇO (CAAS)
FONTE: O autor
189
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO
FONTE: O autor
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)
191
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO
FONTE: O autor
192
TÓPICO 2 — CONTÊINER COMO SERVIÇO (CAAS)
FONTE: <https://ocaradoti.com.br/wp-content/uploads/2020/01/logo-transparente-Microsoft-
-Azure.png>. Acesso em: 20 out. 2020.
193
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO
FONTE: O autor
194
RESUMO DO TÓPICO 2
195
AUTOATIVIDADE
a) ( ) Google Docs.
b) ( ) Amazon ECS.
c) ( ) Amazon Beanstalk.
d) ( ) Google App Engine.
196
TÓPICO 3 —
UNIDADE 3
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.
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
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).
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
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)
200
TÓPICO 3 — VERSIONAMENTO E DEPLOY EM NUVEM
NOTA
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
E
IMPORTANT
202
TÓPICO 3 — VERSIONAMENTO E DEPLOY EM NUVEM
ATENCAO
203
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO
• 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.
204
TÓPICO 3 — VERSIONAMENTO E DEPLOY EM NUVEM
NOTA
205
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO
NOTA
E
IMPORTANT
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).
206
TÓPICO 3 — VERSIONAMENTO E DEPLOY EM NUVEM
• Bitbucket
ᵒ 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).
207
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO
• GitLab
208
TÓPICO 3 — VERSIONAMENTO E DEPLOY EM NUVEM
FIGURA 30 – GITLAB
• XP-Dev
209
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO
FIGURA 31 – XP-DEV
ATENCAO
• 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
• Nuvens Públicas
• Nuvens Privadas
• Nuvens Híbridas
• Nuvens Comunitárias
212
TÓPICO 3 — VERSIONAMENTO E DEPLOY EM NUVEM
E
IMPORTANT
213
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO
LEITURA COMPLEMENTAR
Renato Groffe
[...]
214
TÓPICO 3 — VERSIONAMENTO E DEPLOY EM NUVEM
215
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO
216
TÓPICO 3 — VERSIONAMENTO E DEPLOY EM NUVEM
217
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO
218
TÓPICO 3 — VERSIONAMENTO E DEPLOY EM NUVEM
Testes
219
UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO
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
CHAMADA
222
AUTOATIVIDADE
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.
BIRD, C.; MENZIES, T.; ZIMMERMAN, T. The art and science of analyzing
software data. [S. l.]: Morgan Kaufmann, 2015.
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.
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.
225
MASON, M. Pragmatic version control: using subversion. Beaverton: Pragmatic
Bookshelf, 2006. (The Pragmatic Starter Kit Series).
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.
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.
227