Escolar Documentos
Profissional Documentos
Cultura Documentos
dados:
A partir do índice de referência e da quantidade de acórdãos, é retornado o link
para fazer o download de arquivos em formato DOC e
PDF, além de outros dados que facilitem a pesquisa e a localização das
informações requeridas.
O BPM (business process management ou gerenciamento de processos de
negócios) traz uma abordagem adicional aos sistemas de
informação. Vamos considerar o seguinte exemplo: “reclamações” é um
tema sobre o qual praticamente todas as organizações têm sua própria
abordagem de tratamento. Isso mesmo, cada empresa pode ter uma
abordagem distinta de tratamento. Essas abordagens distintas podem
existir também dentro de uma mesma organização. Isso ocorre quando
um determinado processo ou serviço é executado por uma central de
atendimento e por uma área de pagamentos, sendo o mesmo processo,
mas com características distintas entre diferentes áreas e usuários. O
BPM apoia as organizações a tratar essas características nos processos de
negócios, permitindo uma maior flexibilidade processual e mantendo as
características dos sistemas e soluções. O BPM vem evoluindo desde as
soluções workflow (fluxo de trabalho) até as automações
existentes atualmente, chamadas RPA (robotic process automation ou
automação robótica de processos).
Como identificado na figura 2, o BPM atua em conjunto com sistemas, soluções
e web services. Algumas ferramentas no mercado se
especializaram na construção de fluxos de trabalho com base em sistemas
específicos, como o ARIS, que é um acelerador em projetos SAP,
pois contém fluxos de trabalho predeterminados e pode inclusive desenhar ou
alterar fluxos baseados na atualização de processos de uma
determinada organização.
Uma das grandes vantagens de se estabelecer fluxos de trabalho é
poder conferir uma abordagem mais proativa. Considere que a sua empresa
recebeu uma reclamação por e-mail. O normal é que uma pessoa
faça a leitura dessa reclamação, busque formas de resolver o problema
dentro da organização e depois retorne ao cliente com um posicionamento.
Considere que, para resolver o problema, é necessário primeiramente falar
com uma determinada área de rastreamento de pedido,
por exemplo, e depois falar com a transportadora para confirmar a data
de entrega. Para um pedido, isso é muito simples, mas considere que
você tenha cem reclamações. Talvez, neste caso, não seja tão simples.
É nesse ponto que o BPM pode ser uma solução para a organização.
Ele poderá ser configurado para controlar todas as reclamações, enviar
mensagens e e-mails para cobrar posicionamento de áreas e parceiros
envolvidos, alertar a gestão sobre reclamações com prazo de devolutiva
próximo de vencer ou vencido, informar onde cada reclamação está
“travada”, entre outras opções. Note que esses exemplos de processos de
negócios podem ser construídos sem alterar qualquer sistema
ou solução, por isso comentamos que o BPM atua em conjunto com
sistemas, soluções e web services.
4 Levantamento de serviços
Nos nossos estudos, temos apresentado alguns exemplos de serviços que as
organizações costumam desenvolver, seja para uso interno,
seja para uso externo. Para desenvolver web services, devemos levar
em consideração os seguintes aspectos:
• Decisão de negócios, porque a tecnologia é base fundamental
de grande parte dos negócios, e os negócios podem requerer o
desenvolvimento de um serviço a ser utilizado pelos clientes da
organização. Nesse caso, um web service e sua documentação
de como ser utilizado devem ser elaborados.
• Uma arquitetura tecnológica baseada em objetos independentes é
uma candidata natural a um web service. Nesse modelo, é importante avaliar o
volume de clientes que vão consumir o web service.
Se porventura houver apenas um único cliente consumindo o serviço, talvez
seja mais interessante pensar em outras soluções de
arquitetura. De qualquer forma, isso não é um impedimento para
se desenvolver um web service, porque, com a grande variação de
mudanças que existem atualmente no mundo de negócios, deve-se
considerar que novas fontes (clientes) podem surgir e ter um web
service disponível pode ser um fator diferencial na estratégia operacional. Por
fim, um outro fator importante é que, se houver tecnologias distintas na
comunicação entre aplicações, um web service
pode ser um mecanismo que resolva esse tipo de complexidade.
5 Definição e principais componentes de um web service
Um típico web service contém estes quatro elementos:
• Sistema operacional: permite as interações entre a aplicação e
o hardware.
• Servidor web: compreende código-fonte, banco de dados e arquivos HTML
que habilitam o envio do código para as aplicações
(cliente).
• Banco de dados: é o banco no qual os dados estão armazenados
e serão acionados de acordo com as regras estabelecidas na linguagem ou
script.
• Linguagem ou script: é onde as regras de negócios e funcionamento dos web
services são definidas.
6 Web service no desenvolvimento de aplicações e integração de
sistemas
Os web services têm um ciclo de vida bastante típico e passam normalmente
pelas seguintes etapas:
1. Publicação: quando o provedor do web service faz a publicação
do web service e este passa a poder ser invocado pelas aplicações (clientes).
2. Comunicação: quando o provedor do web service informa que
o web service está apto para ser consumido pelas aplicações
(clientes).
3. Invocação: quando as aplicações (clientes) invocam o web
service e o utilizam plenamente.
4. Remoção: apesar de todos os esforços para que o web service
tenha a maior vida útil possível, é natural que, em um determinado
momento, este seja substituído por um novo serviço ou arquitetura tecnológica.
Muitas vezes, quando estamos navegando na
internet, encontramos um erro 404. Esse erro significa que o web
service que está sendo invocado pela aplicação (cliente) não está
mais disponível. Pode ser que tenha havido um problema de infraestrutura ou
acesso na comunicação, mas pode ser também que
o web service tenha sido removido e não esteja mais disponível.
7 Arquitetura e protocolos de comunicação
Para Saudate (2012), uma arquitetura típica de web service pode ser
descrita da seguinte forma:
• HTTP: meio pelo qual é realizado o transporte das informações.
• UDDI (Universal Description, Discovery and Integration): repositório no qual o
web service será registrado.
• WSDL (Web Services Description Language): os documentos
com os dados que serão trocados e como esses dados estarão
organizados.
Saudate (2012) define diferentes tipos de protocolos de comunicação. São
eles:
• SOAP (Simple Object Access Protocol): protocolo para a troca de
mensagens que permite a interoperabilidade entre os sistemas.
Utiliza HTTP e XML.
• REST (Representational State Transfer): utiliza múltiplos padrões, como
HTTP, JSON, URL e XML.
Capítulo 4 Arquitetura de serviços para mobilidade
Segundo Lohrmann (2013), uma mudança radical vem ocorrendo no
contexto de negócios. A geração digital requer maior liberdade e flexibilidade
com os smartphones e PCs, com o objetivo de realizar seus trabalhos de
maneira mais rápida e assertiva. Apesar de a motivação ser variada, como
melhoria da performance ou, ainda, conveniência pessoal, as empresas
oferecem gamas distintas de equipamentos, e as pessoas utilizam uma gama
ainda maior, principalmente nas organizações que contam com programas
como BYOD (“bring your own device” ou “traga seu próprio dispositivo”).
Essa multiplicidade de equipamentos, sistemas operacionais e meios de
acesso
gera desafios extras no design de arquiteturas para aplicações móveis,
pois as aplicações podem ter comportamentos distintos em cada equipamento,
sistema operacional e browser, além da performance dos equipamentos, que
varia de acordo com sua capacidade e com a conexão
com a internet. Enfim, são temas amplos e que mudam dia a dia, por
conta de lançamentos frequentes.
Uma expectativa que os stakeholders têm é poder iniciar um serviço
em um determinado equipamento e concluí-lo em outro, ou, ainda, interagir por
diferentes ferramentas ou canais de comunicação, sejam eles
digitais ou físicos. Obviamente, os stakeholders entendem como um mau
serviço o fato de a organização não ter um histórico dessas interações
e não poder dar continuidade em um atendimento. Para exemplificar, o
stakeholder inicia um serviço pela aplicação móvel e, em um determinado
momento, migra para o call center. A expectativa é de que o atendente
recupere esse histórico da aplicação móvel e consiga dar continuidade
sem requerer dados informados anteriormente. Isso é conhecido como
“omnichannel”, que é uma estratégia de conteúdo entre canais que as
organizações usam para melhorar sua experiência do usuário e conduzir
melhores relacionamentos com seu público nos pontos de contato. Em
vez de trabalhar em paralelo, os canais de comunicação e seus recursos
de suporte são projetados e orquestrados para cooperar. O omnichannel
implica integração e orquestração de canais, de forma que a experiência
de alguém que escolher se engajar em todos os canais seja tão ou até
mais eficiente ou agradável do que usar canais únicos de maneira isolada.
1 Arquitetura geral para integração e desenvolvimento de aplicações móveis As
arquiteturas para integração e desenvolvimento de aplicações móveis devem
ser avaliadas de acordo com o tipo de utilização, e, se possível, a partir de uma
previsão de uso futuro. Com base nisso, podem ser desenhadas arquiteturas
adequadas quanto ao uso e com custos racionais. Vivemos em um momento
de negócios VUCA (volatility, uncertainty, complexity, ambiguity ou volatilidade,
incerteza, complexidade, ambiguidade); portanto, é importante também
considerar arquiteturas flexíveis. Vamos conhecer as arquiteturas mais comuns
utilizadas atualmente. Do ponto de vista de servidores, a arquitetura mais
utilizada pelas organizações é a arquitetura de três camadas: camada de
aplicação, camada de negócios e camada de banco de dados. Vamos
adicionar agora o conceito de filas:
• Arquitetura de uma fila (one-tier architecture): é orientada a ter
as três camadas em um único servidor. É mais rápida para desenvolver,
entretanto não tem escalabilidade. É orientada para aplicações móveis nas
quais a quantidade de usuários é conhecida e
não apresenta grande variação na utilização. Além disso, o grau de segurança
é menor. Um uso típico seria para aplicações móveis
destinadas aos colaboradores de uma empresa, com acesso a temas de
recursos humanos, como marcação de ponto eletrônico, acesso ao holerite,
solicitação de férias, entre outros usos.
• Arquitetura de duas filas (two-tier architecture): é orientada a ter
a camada de banco de dados separada do servidor da camada de
apresentação e negócios. É orientada para quando diferentes aplicações
móveis vão utilizar uma única base de dados corporativa.
Uma experiência comum é quando a empresa tem uma aplicação
desenvolvida com alto grau de acoplamento e não vale a pena a
separação. Nesse caso, a empresa opta em manter a atual estrutura. Este
modelo apresentará dificuldades caso seja necessário escalar, ou, ainda, não
apresenta critérios fortes de segurança. Pode,
com o tempo, se tornar mais caro, à medida que pode requerer
mais recursos de infraestrutura e apresenta dificuldade em compartilhar
serviços. Os ERPs (enterprise resource plannings ou planejamentos de
recursos empresariais) mais conhecidos do mercado operam dessa forma e,
por isso, requerem sempre mais recursos de infraestrutura à medida que o uso
se intensifica. Como as organizações estão trazendo para a sua cadeia
produtiva seus fornecedores e parceiros, este modelo acaba sendo
amplamente utilizado também em aplicações móveis, pois é comum expor os
serviços e aplicações móveis para os parceiros a fim de agilizar a operação.
• Arquitetura de três filas (three-tier architecture): é a arquitetura mais utilizada
nas aplicações móveis. Tem três camadas distintas para aplicações, negócios
e banco de dados. É a mais segura e escalável e possibilita a utilização de
mecanismos eficientes que permitem adaptar a quantidade de servidores
utilizados de acordo com a demanda de negócios, com isso, tendo gastos
controlados pela demanda e sem gerar interrupções aos negócios por falta de
disponibilidade de infraestrutura. É comum encontrarmos ambientes de alta
disponibilidade com esta arquitetura.
Segundo Veras (2016, p. 29), “as organizações buscam construir plataformas
digitais mais estáveis que permitam o crescimento mesmo em ambientes
turbulentos”. Parece contraditório, mas não é. O que se quer é o melhor dos
dois mundos: plataformas estáveis e flexíveis. Pode-se pensar em arquiteturas
e infraestrutura que suportem o crescimento do negócio. A virtualização, nesse
contexto, é uma peça-chave, pois permite alterar a infraestrutura rapidamente
utilizando instrumentos lógicos e não físicos, ao mesmo tempo que estabiliza o
ambiente, tornando as aplicações independentes do hardware.
Com isso, pode-se configurar o banco de dados de forma distinta da aplicação.
O banco de dados, por exemplo, consome muita memória, e, se uma aplicação
estiver instalada no mesmo servidor, ela tende a não ter eficiência e a
apresentar lentidão. Separando as configurações, é possível colocar mais
memória para o banco de dados e memória menor para os servidores de
aplicação e banco de dados.
2 Tecnologia e arquitetura para disponibilizar aplicações
As tecnologias e os dispositivos envolvidos atualmente para aplicações móveis
são variados e são atualizados com uma frequência que torna bastante
complexo manter as aplicações móveis operacionais em todos os dispositivos e
em todas as situações de sistemas operacionais e browsers. Uma forma de
minimizar esse impacto é pensar na aplicação utilizando o conceito responsivo
de que você tenha um único desenvolvimento e uma aplicação funcional em
diversos equipamentos e protocolos, sem prejudicar a experiência do usuário.
Segundo Zemel (2015), o web design responsivo é a chave para essa nova
web. É pensar em páginas que se adaptem a todo tipo de dispositivo e
contexto de uso. É sair das limitações de um browser desktop e seu tamanho
previsível e pensar em páginas com flexibilidade que suportem todo tamanho
de tela, qualquer tipo de resolução, interfaces com touch ou mouse.
Repare que, de uma forma geral, as informações apresentadas em ambas as
telas são iguais, exceto por um detalhe, o menu superior. Na figura 1, o menu
aparece destacado, com todas as suas opções descritas. Na figura 2, o menu é
substituído por um botão que precisa ser clicado para que as opções sejam
apresentadas. Outro ponto importante é que, na figura 1, a opção de login
ganha destaque no lado direito superior e, na figura 2, não aparece claramente.
Isso é o que chamamos de “responsivo”, ou seja, o site se adéqua aos
diferentes tipos de dispositivos, sem perder suas funções principais. Muitas
empresas ainda têm dificuldades em lidar com diferentes tipos de dispositivos;
portanto, acabam ocorrendo cortes de telas e perdas de funções.
Um ponto interessante é que, para obter mais benefícios de cada plataforma e
equipamento, o desenvolvimento nativo nas plataformas é mais eficiente,
porque utiliza melhor os recursos dos equipamentos. No entanto, esse não
deve ser o ponto principal de decisão, mas sim o quanto a utilização desses
recursos melhora a experiência do usuário e reduz a complexidade do
processo de desenvolvimento.
Uma experiência positiva de usuário tem por objetivo a utilização equilibrada
entre textos e imagens, de forma que, ao utilizar a aplicação, o usuário
encontre facilidades, como serviços que apresentem dados preenchidos
automaticamente, a partir da recuperação de dados já preenchidos ou já
existentes dentro da empresa. Por exemplo: se for necessário ter o endereço
do usuário, pedir a ele para preencher o CEP, buscando os dados como
logradouro, cidade e estado, a fim de que o usuário somente os valide e
preencha o mínimo possível de informações.
3 Comunicação e conectividade
Segundo Lee, Schneider e Schell (2005, p. 33), quando se desenha uma
arquitetura para aplicações móveis, deve-se considerar três tipos de
comunicação e conectividade:
• Sempre conectado: é quando os usuários estão sempre conectados às
aplicações.
• Parcialmente conectado: é quando permite ao usuário executar
funções, mesmo quando não está conectado a uma rede ou à internet.
• Nunca conectado: é quando permite ao usuário executar funções, menos
quando o dispositivo não permite conexão a uma rede ou à internet. É
importante que, no desenho da arquitetura, sejam considerados o tipo de
usuário e o tipo de conectividade de cada um, para então definir a melhor
estratégia de sincronização de aplicações.
4 Sincronização de aplicações
Segundo Lee, Schneider e Schell (2005, p. 33):
O tipo de conexão afeta a maneira como você pode sincronizar dados entre o
dispositivo móvel e sistemas back-end. A sincronização
pode ser efetuada de duas maneiras: continuamente ou através de
um método de armazenamento e encaminhamento.
Na comunicação contínua, as sincronizações de dados entre clientes e
servidores são contínuas e podem ser obtidas por meio síncrono
ou assíncrono.
• Comunicação síncrona: ocorre quando uma solicitação para armazenar
dados é enviada para o servidor, seguida pelos dados a serem armazenados.
Os dados são então colocados em uma área de armazenamento, como um
banco de dados, no servidor. Na comunicação síncrona, todos os dados são
completamente armazenados antes que o servidor confirme o recebimento
deles e libere a interface com o cliente.
• Comunicação assíncrona: ocorre quando uma solicitação para armazenar
dados é enviada para o servidor, seguida pelo armazenamento de dados. Os
dados são então colocados em uma área de armazenamento, como um banco
de dados, no servidor. Entretanto, na comunicação assíncrona, os dados não
precisam ser armazenados completamente antes que o servidor dê a
confirmação ao cliente. De fato, o servidor, em geral, confirma imediatamente a
solicitação e somente depois executa a solicitação de armazenamento. Em
seguida, quando a solicitação de armazenamento estiver de fato completa, o
servidor iniciará uma conversa para informar ao cliente que está pronto.
A comunicação pelo método de armazenamento e encaminhamento é para as
situações nas quais a conectividade entre cliente e servidor não pode ser
garantida. Suponha que um usuário móvel queira inserir dados enquanto o seu
dispositivo móvel não esteja conectado a um servidor. Uma aplicação cliente
móvel inicialmente pode armazenar em um banco de dados local. Mais tarde,
quando uma conexão for estabelecida, a aplicação móvel encaminhará os
dados do banco de dados local para o banco de dados no servidor. Armazenar
e encaminhar é um método que dá aos usuários móveis a capacidade de
trabalhar mesmo quando não estão conectados a um servidor
No entanto, é importante notar que, se for permitido aos usuários móveis
armazenar dados em um banco de dados local desse modo, também será
preciso assegurar a integridade dos dados quando estes forem sincronizados
com o banco de dados do servidor, já que outros usuários podem estar
adicionando ou modificando dados que possivelmente podem estar em conflito
com os dos dispositivos móveis.
Capítulo 5 – Estrutura de microsserviços
As APIs têm a função de conectar dois programas de computador, assim como
web services, troca de arquivos de texto, etc. Na SOA, podemos afirmar que
todos os web services são APIs, mas nem todas as APIs são web services. O
que ocorre é que os web services vêm sendo utilizados para comunicações
entre máquinas e requerem servidores e comunicações por rede, enquanto as
APIs vêm sendo utilizadas nas comunicações entre programas, principalmente
em aplicativos móveis. Portanto, os web services são APIs que se comunicam
por rede.
Algumas empresas vêm disponibilizando APIs para que os programadores
possam utilizá-las em suas aplicações. Entretanto, considere os temas de
segurança envolvidos, para saber se as APIs disponibilizadas atendem aos
critérios técnicos necessários.
Segundo a Red Hat ([s. d.]), os microsserviços são uma arquitetura e uma
abordagem para escrever programas de software. Com eles, as aplicações são
desmembradas em componentes mínimos e independentes. Diferentemente da
abordagem tradicional monolítica, em que toda a aplicação é criada como um
único bloco, os microsserviços são componentes separados que trabalham
juntos para realizar as mesmas tarefas. Cada um dos componentes ou
processos é um microsserviço. Essa abordagem de desenvolvimento de
software valoriza a granularidade, a leveza e a capacidade de compartilhar
processos semelhantes entre várias aplicações. Trata-se de um componente
indispensável para a otimização do desenvolvimento de aplicações para um
modelo nativo em nuvem.
Quando adotamos uma arquitetura baseada em microsserviços, devemos levar
em consideração o nível de granularidade. Como o próprio nome diz,
microsserviços podem ser entendidos como serviços menores. Quando
trabalhamos com aplicações com microsserviços, devemos considerar o
gerenciamento e a orquestração dos microsserviços. Apesar do desafio de
gerenciamento envolvido com os microsserviços, trata-se de uma arquitetura
que vem sendo amplamente utilizada em projetos de modernização tecnológica
e migração de sistemas monolíticos em aplicações mais versáteis. Um exemplo
importante é o projeto de open banking que permitirá aos correntistas
compartilharem seus dados bancários com outras instituições financeiras e,
com isso, obter melhores condições em empréstimos e investimentos. Para
isso, os bancos terão que desenvolver microsserviços e APIs que permitirão
essa comunicação entre instituições financeiras.
Um ponto importante é que microsserviços são uma arquitetura,
enquanto APIs são meios de comunicação e integração entre aplicações.
Normalmente, as APIs são utilizadas como meio de comunicação entre os
microsserviços.
2 Aplicação de negócio
Em uma aplicação de negócio, temos vários aspectos que podem ser utilizados
e transformados em serviços.
Essa arquitetura de microsserviços está granularizada e permite um
desenvolvimento independente e com equipes distintas atuando em conjunto.
Enquanto uma equipe desenvolve o módulo login, outra pode desenvolver a
execução de pesquisa. Esse modelo também permite que a aplicação seja
entregue à medida que seja desenvolvida e testada. Cada um dos
microsserviços pode ser desenvolvido, testado e implementado. Nesse tipo de
abordagem, também é possível ter um processo de integração contínua
(DevOps).
Podemos notar que esses microsserviços são autônomos. Podem ser
desenvolvidos, testados, implementados, operados e principalmente escalados
sem afetar o funcionamento de outros microsserviços. Eles podem ou não
compartilhar códigos, e cada um é especializado e cumpre uma determinada
função. Futuramente, podem ser desmembrados ou incorporados a outros
microsserviços. Uma vantagem das APIs sobre os web services é que as APIs
permitem a utilização de CRUDs (create, read, update, delete ou criar, ler,
atualizar, deletar). Nesse modelo de microsserviços, será possível criar novas
pesquisas de produtos sem necessitar alterar códigos, ou seja, os usuários
podem desenvolver novas pesquisas ou até mesmo excluí-las.
3 Estrutura e conectividade
As estruturas e os métodos de conexão dos microsserviços podem variar de
acordo com a necessidade de cada aplicação, mas, de uma forma geral, a
estrutura mais comum é a representada na figura 1, no caso de um modelo da
Microsoft, mas que também é encontrado em outros provedores de serviços
que utilizam arquitetura de microsserviços como base em seu
desenvolvimento.
Esse modelo de arquitetura e conectividade prevê três tipos de aplicações que
podem consumir os microsserviços, sendo duas aplicações para usuários que
estejam fora da organização (aplicativo mobile cliente e WebApp SPA cliente) e
uma aplicação para usuários que estejam dentro do domínio corporativo
(WebApp MVC cliente), desenvolvida em três camadas. Todas as
comunicações entre essas três aplicações passam pelo API gateway, que é
responsável pelo gerenciamento das comunicações e integrações. No caso da
arquitetura da Microsoft, são disponibilizados o ambiente para o desenvolvedor
(portal do desenvolvedor) e o portal de publicação. O API gateway é
responsável pela realização das chamadas aos microsserviços e pelo envio do
retorno dos resultados do processamento.
Conforme comentado anteriormente, esse tipo de arquitetura oferece uma
oportunidade de escalar os serviços de forma independente. Caso os
microsserviços estejam instalados em servidores independentes, habilita-se a
possibilidade de alocar mais servidores e aumentar a capacidade de
processamento.
Consideremos como exemplo um hospital. Normalmente, os hospitais fazem
previsões de quantos pacientes vão receber em um determinado período, mas
sempre é possível que haja um aumento da demanda, por causa de doenças
ou até mesmo de tratamentos eletivos, como exames. Mesmo com as
previsões, pode ser que, em um determinado momento, haja um aumento
expressivo pela consulta de exames. Para suportar esse aumento expressivo
na consulta on-line de exames, caso conte com uma arquitetura baseada em
microsserviços, o hospital poderá aumentar a carga de processamento
(servidores) em relação ao microsserviço de consulta de exame, e os usuários
não sofrerão problemas decorrentes disso, como lentidão ou dificuldade de
acesso.
Essa estrutura de servidores que armazenam microsserviços é chamada de
contêiner. Os contêineres são independentes e podem ser criados
automaticamente à medida que se aumenta a demanda. Isso é gerenciado pelo
Kubernetes, que pode aumentar ou diminuir a capacidade de processamento à
medida que haja aumento ou diminuição da demanda por determinado serviço.
Para facilitar esse processo, o Docker possibilita o empacotamento do
microsserviço dentro de um contêiner, agilizando e facilitando o gerenciamento
de toda a infraestrutura da aplicação.
Esse modelo de arquitetura é potencializado quando a companhia utiliza uma
infraestrutura baseada em computação em nuvem
Capítulo 6 - Arquiteturas de desenvolvimento para computação em nuvem
A computação em nuvem é um tema que permite às empresas desenvolverem
estratégias mais dinâmicas, com maior flexibilidade em termos de ajustar a
infraestrutura à necessidade de negócios. Aplica-se tanto em grandes
empresas que requerem infraestrutura robusta, governança eficiente e alto
grau de segurança como em empresas de pequeno porte e startups que não
desejam fazer grandes investimentos em infraestrutura e sistemas logo no
início de seu negócio.
Temos que olhar a computação em nuvem não somente como infraestrutura,
mas também como um modelo de arquitetura no qual é possível consumir
serviços já existentes e que atuam como aceleradores no desenvolvimento de
qualquer aplicação.
1 Capacidades em nuvem (software, plataforma e infraestrutura como serviço)
Segundo Fernandes e Abreu (2014, p. 283), o gerenciamento da capacidade
[...] assegura que a capacidade de infraestrutura de tecnologia da informação
absorva as demandas evolutivas do negócio de forma eficaz e dentro do custo
previsto, balanceando a oferta de serviços em relação à demanda e otimizando
a infraestrutura necessária à prestação dos serviços de tecnologia da
informação. Nuvem engloba:
• todo o hardware (PCs, servidores, etc.);
• todos os equipamentos de rede (LAN, WAN, bridges, roteador, internet, etc.);
• todos os periféricos (armazenamento, GED, impressoras, etc.);
• todos os softwares (sistemas operacionais, redes, pacotes, sistemas internos,
etc.);
• recursos humanos nas situações em que a falta de recursos humanos pode
resultar no atraso de um tempo de resposta (exemplo: falta de um operador de
backup).
Independentemente do segmento em que a empresa atua, uma das
informações de maior relevância é o quanto e quando seus serviços serão
demandados. Quando se consegue estimar de forma correta a demanda da
empresa, fica mais fácil planejar os recursos que devem ser alocados.
Esse planejamento, a partir das demandas previstas, faz com que a empresa
consiga chegar a um nível adequado de atendimento. Ao entender a demanda,
é possível identificar se há capacidade ociosa ou necessidade de aportar mais
recursos. O grande desafio é alinhar a capacidade com a demanda. O
entendimento da demanda envolve questões de ordem pontual, que acontecem
uma única vez ou durante um período e depois desaparecem, e demandas de
ordem repetitiva. As demandas repetitivas podem ser classificadas em
independentes, sem correlação com outras demandas, e dependentes, ligadas
a outras demandas.
Um gestor pode imaginar o pior cenário possível e adquirir infraestrutura para
suportar esse cenário, entretanto, quando a empresa não consome os
recursos, essa disponibilidade de capacidade é puro desperdício. Por outro
lado, quando o gestor é otimista e adquire infraestrutura considerando
momentos de baixa utilização, corre o risco de não conseguir suportar a
demanda de negócios e de gerar indisponibilidade de serviços.
3 Disponibilidade e capacidade
O gerenciamento da capacidade assegura que a capacidade da área de TI
absorva as demandas evolutivas do negócio de forma eficaz e dentro do custo
planejado com as áreas de negócios. Durante o desenho do serviço, deve ser
identificada a capacidade necessária para assegurar a demanda prevista na
estratégia do serviço (FERNANDES; ABREU, 2014).
Na avaliação de capacidade, deve-se observar as demandas atuais, mas,
sempre que for necessário, rever a infraestrutura dos serviços. Devemos
considerar se a capacidade instalada é suficiente; caso contrário, haverá
interrupções nos serviços, afetando diretamente a disponibilidade.
O gerenciamento da disponibilidade permite otimizar o uso dos recursos,
antecipar e avaliar falhas previstas, implementar políticas de segurança e
monitorar os objetivos dos acordos de serviço (FERNANDES; ABREU, 2014).
Ao mesmo tempo em que os avanços tecnológicos permitiram sistemas mais
estáveis e tolerantes a falhas, a interdependência dos processos de negócios e
das operações de TI chegou a tal ponto que, se a tecnologia parar, o negócio
também para. Como principais fatores de qualidade, a disponibilidade e a
confiabilidade de um serviço são elementos decisivos em um mercado
competitivo. Por meio de um gerenciamento da disponibilidade eficaz, é
possível influenciar a satisfação do cliente e, com isso, determinar a vantagem
competitiva do negócio no mercado.
O gerenciamento da continuidade de serviços visa garantir que os recursos de
TI possam ser retomados dentro dos períodos requeridos e acordados com o
negócio. O gerenciamento da continuidade de serviços deve ser planejado de
acordo com as expectativas de negócios e as perdas geradas com a
interrupção de um determinado serviço. Devem ser identificados os processos
de negócios e os riscos de sua interrupção, a partir dessa matriz. Para cada
serviço, deve-se estabelecer o plano de recuperação necessário por meio dos
gatilhos a serem disparados quando da interrupção; por exemplo: ações a
serem tomadas e quem deve ser escalado.
É preciso considerar as pessoas que devem ser informadas para tomar ação
de recuperação dos serviços e as pessoas que devem ser avisadas para traçar
estratégias de comunicação internas e externas. Entre as estratégias mais
comuns de continuidade de negócios, podemos citar backups, sites de
contingência, ambientes de alta disponibilidade, entre outros. Como os custos
podem variar significativamente, é importante que a área de TI busque
alternativas que visem manter a continuidade de negócios, considerando todos
os recursos disponíveis, e não somente a contratação de serviços externos.
É importante refletir que a disponibilidade não se compra. Ela precisa ser
definida, desenhada, implementada, medida e gerenciada. Os objetivos do
gerenciamento da disponibilidade são alcançados pela determinação dos
requisitos de disponibilidade do negócio, relacionando-os com a
capacidade de TI e as áreas de suporte.
O gerenciamento da disponibilidade deve ser aplicado a todos os serviços em
que tenham sido estabelecidos acordos de nível de serviço ou, ainda, em
serviços críticos, mesmo que não haja acordos formais. A disponibilidade
depende de:
• disponibilidade dos componentes;
• resistência a falhas;
• qualidade do serviço de manutenção e suporte;
• qualidade, padrão e abrangência dos processos e procedimentos
operacionais;
• segurança, integridade e disponibilidade de dados.
Segundo Fernandes e Abreu (2014), a estrutura do gerenciamento da
disponibilidade compreende:
• determinar requerimentos;
• definir metas;
• estabelecer métricas e relatórios;
• monitorar e analisar tendências;
• revisar;
• investigar problemas;
• produzir e manter um plano de disponibilidade.
O grau de confiabilidade e resistência de cada componente é peça- -chave do
processo. Uma vez que falhas vão acontecer, o que vai determinar o nível de
satisfação dos clientes e usuários é a capacidade de manter e
restabelecer um determinado serviço. Técnicas que visem à antecipação
de falhas e manutenções preventivas auxiliam a manter os serviços
disponíveis.
Para iniciar, considere analisar as tendências de disponibilidade dos
componentes de TI e o quanto elas estão aderentes aos acordos de nível de
serviço. Reveja os índices que estão abaixo dos acordos e investigue as ações
pelas quais os níveis ficaram abaixo. Pode ser uma implantação de um novo
sistema, uma troca na rede, entre outros fatores que poderiam ter sido
planejados previamente, mas pode também ser alguma falha inesperada, como
um crash de disco que não estava sendo monitorado ou um crescimento
inesperado (pico de demanda). Após entendidas as ações necessárias, estas
devem ser analisadas sobre o prisma de custos e discutidas com as áreas de
negócios, a fim de aportar novos investimentos ou, ainda, rever o nível de
serviço. Esse ponto costuma ser bem sensível, uma vez que a empresa espera
que o profissional de TI ache uma solução rápida para o problema. Entretanto,
ações de contorno se tornarão frequentes e exigirão do profissional de TI maior
dedicação, e, evidentemente, podem causar prejuízos à operação. Por fim, é
preciso criar e manter um plano de disponibilidade que priorize e planeje as
ações de melhorias.
A medição da disponibilidade deve ser feita considerando o prisma de
negócios. Por exemplo: impacto por minuto perdido e impacto por
transação perdida. Esses indicadores são claros para clientes e usuários
e facilitam o estabelecimento de acordos razoáveis.
Existem dois modelos de arquiteturas para serviços:
• Arquitetura em série: quando há dependência entre os diferentes
componentes para entrega de um determinado serviço.
Nesse tipo de arquitetura, quando um dos componentes falha, todo o serviço é
interrompido, até que o reparo seja executado. Uma preocupação adicional
nesse tipo de arquitetura é quando outros serviços também consomem
componentes ou, ainda, quando estes podem sobrecarregar o serviço em si.
Para entender a disponibilidade nesse tipo de serviço, é possível fazer um
cálculo matemático. Por exemplo:
◦ Servidor visual: 90% de disponibilidade.
◦ Servidor de componentes: 85% de disponibilidade.
◦ Servidor de banco de dados: 87% de disponibilidade.
Para apurar a disponibilidade do serviço, multiplicamos os percentuais de
cada componente: 0,9 × 0,85 × 0,87 = 0,6655, ou seja, a disponibilidade
desse serviço será de 66,55%. Caso esse fosse um serviço de vendas on-
line, dificilmente uma empresa aceitaria esse percentual. Para serviços de
vendas on-line, o nível de serviço esperado gira em torno de 95%.
• Arquitetura em paralelo: modelo em que, quando um dos componentes
apresenta falha ou está sobrecarregado, um componente idêntico assume a
operação. Este modelo também é conhecido como “alta disponibilidade”.
Ao adicionar servidores em paralelo, faz-se necessário também adicionar
servidores e outros serviços de controle para distribuição, balanceamento do
processamento e virtualização. Essas ferramentas permitem entender quando
um determinado servidor está falhando ou sobrecarregado e automaticamente
aciona a habilitação de novos servidores. Nesse cenário, as falhas não são
perceptíveis aos usuários finais. Isso é frequente em sites de vendas na
internet, pois, à medida que a demanda aumenta, novos servidores são
adicionados ao processo para garantir a escalabilidade e, à medida que a
demanda diminui, os servidores não necessários são desligados.
Evidentemente, o custo é maior, mas garante maior disponibilidade dos
serviços (VERAS, 2016).
A fórmula para calcular a disponibilidade nesse tipo de arquitetura é baseada
em não disponibilidade. Considerando o exemplo anterior, vamos assumir a
seguinte indisponibilidade:
◦ Conjunto de servidores visuais: 2%.
◦ Conjunto de servidores de componentes: 1%.
◦ Conjunto de servidores de banco de dados: 1%.
Logo: 1 – (0,02 × 0,01 × 0,01) = 99,99%.
Esse nível de disponibilidade compreende apenas paradas não previstas;
normalmente, paradas planejadas não são consideradas como
indisponibilidades.
A questão do paralelismo também pode estar na nuvem, ou, ainda, pode haver
arquiteturas mistas entre paralelismo e em série. Por exemplo: servidores web
e aplicações em paralelo e banco de dados em série com os outros servidores.
Nesse caso, dois cálculos devem ser feitos: em série, para os
componentes em série, e em paralelo, para os componentes em paralelo.
Após a realização dos dois cálculos, deve-se utilizar o cálculo em série
para a junção dos componentes em paralelo e em série, porque, uma vez
que há componentes em série, a disponibilidade do serviço seguirá em
série (VERAS, 2016)
CAPÍTULO 8 – ECOSSISTEMA DE COMPUTAÇÃO EM NUVEM
1 Papéis previstos no ecossistema de computação em nuvem e
respectivas atividades críticas
Segundo Santos (2016, p. 47), entre os integrantes que compõem o
ecossistema da computação em nuvem estão os consumidores de produtos e
serviços, os provedores de serviços, os provedores de infraestrutura, os
fornecedores parceiros, os auditores, entre outros atores envolvidos.
Vamos conhecer cada um deles:
• Consumidores de produtos e serviços: são aqueles responsáveis pela
contratação dos serviços, pela definição de estratégias e pelaintegração entre
os diferentes provedores de serviços.
• Provedores de serviços: são aqueles responsáveis por fornecer os serviços
em nuvem. Por exemplo: Google, AWS, Huawei, Azure, entre outros.
• Provedores de infraestrutura: são aqueles responsáveis pelo fornecimento da
infraestrutura necessária para o funcionamento dos serviços em nuvem, como
internet, fibra ótica e elefonia, e demais itens necessários para a organização
alcançar a nuvem.
• Fornecedores parceiros: são aqueles responsáveis por licenças de softwares,
desenvolvimento de aplicações, definição dos serviços em nuvem (SaaS) a
serem utilizados e manutenção das aplicações.
• Auditores: são aqueles responsáveis pela verificação dos serviços disponíveis
em computação em nuvem, pela segurança da informação, entre outros
aspectos relacionados a avaliações gerais dos serviços.
• Outros atores envolvidos: são aqueles que podem ser envolvidos de acordo
com a estratégia da organização, como especialistas em migração de dados e
segurança da informação, designers, entre outros.
Com o crescimento da utilização da computação em nuvem, novos papéis vêm
surgindo a todo momento, assim como algumas entidades para definição de
padrões e evolução do setor. Uma delas é o National Institute of Standards and
Technology (NIST), baseado nos Estados Unidos. O NIST tem atuado
fortemente em arquiteturas de referência. Segundo o NIST (2019), devemos
considerar também o broker (corretor de nuvem). O broker é responsável por
escolher o provedor de serviços que vai oferecer a melhor condição que os
consumidores de produtos e serviços procuram a partir dos serviços que
desejam executar pela computação em nuvem.
Um outro uso bastante conhecido é o de múltiplas nuvens (multi- -cloud), por
exemplo, quando uma determinada aplicação requer mais recursos para uma
campanha comercial para o Natal. Nesse caso, as informações geradas para a
campanha podem estar em uma nuvem diferente de onde a aplicação principal
esteja hospedada.
Nesse cenário, ainda podemos ter uma aplicação governamental, na qual, à
medida que há um uso mais intenso das aplicações, os serviços podem ser
direcionados em diferentes nuvens, aproveitando as melhores condições
técnicas e financeiras.
Os provedores de serviços oferecem pacotes de serviços que variam de acordo
com volume de dados, tipos de plano (mensal ou sob demanda), quantidade de
servidores, entre outros. Isso pode fazer com que os preços variem bastante,
por isso o broker ganha espaço para ajudar os consumidores de produtos e
serviços na melhor estratégia técnica e financeira.
Essa é uma configuração em alto nível, que visa apresentar um modelo prático
dos papéis mais comuns dentro do ecossistema em nuvem. Certamente, cada
organização pode configurar isso de diferentes formas. Uma outra forma de
fazer a configuração é de acordo com os papéis existentes dentro da empresa.
Por exemplo, um gestor de serviços em nuvem pode estar com o perfil de
editor, e um arquiteto de nuvem pode estar com o perfil de proprietário. Essa é
uma decisão que cada administrador de serviços em nuvem pode tomar,
inclusive concedendo mais ou menos acesso aos demais integrantes dos
serviços em nuvem.
Outros papéis e configurações podem ser adotados de acordo com a estratégia
de cada organização. O mais importante é que cada organização consiga
entender esses papéis e avaliar a melhor forma de atribuir as funções e obter
mais benefícios com essa configuração. Esse é um processo dinâmico, que vai
mudando à medida que a organização ajusta sua estratégia de negócios
técnica e financeira.
2 Tipos de capacidades em nuvem e delimitação de escopo de
responsabilidade das partes
Segundo Santos (2016, p. 49), a responsabilidade do cliente ou provedor de
serviços está diretamente ligada ao nível em que se terceirizou a carga de
trabalho na nuvem.