quinta-feira, 2 de julho de 2020

Buzzwords da nova economia digital


#cloud #tecnologia #economia #ti
Certamente você já ouviu ou leu alguns destes termos recentemente e pode ser que conheça uns e desconheça outros, mas sabe o impacto deles no seu negócio ou projeto?





"WTF"

Não... infelizmente "WTF" não é uma das buzzwords da nova economia digital. Mas expressa bem o que sentimos quando entramos em uma reunião, cheia de conversinhas-fiadas, que adoram "arrotar" buzzwords para encobrir furadas!

Bom, aqui vão algumas definições para você entender melhor esse novo cenário socioeconômico e tecnológico atual:
  1. API
  2. Cloud-native
  3. DevSecOps
  4. Edge-computing
  5. Elasticidade
  6. FaaS
  7. IaC
  8. Identity-federation
  9. LGPD
  10. Nuvem
  11. PaaS
  12. SaaS
  13. Serverless

API

Originalmente significava: Application Program Interface", ou seja, um protocolo de funções e parâmetros que deveria ser empregado para executar ou utilizar um programa de computador.

Hoje é quase um sinônimo de negócios digitais B2B (Business to Business). É um protocolo para interagir com negócios remotos. Você precisa criar ou ter uma aplicação que se comunica com a referida API para obter o serviço.

O desenvolvimento e venda de serviços através de APIs gerou toda uma nova economia, chamada de API Economy, cujo crescimento é realmente espantoso.

APIs são a base do modelo de comunicação REST, da arquitetura de Microsserviços e da implementação de Service Mesh.

O negócio de APIs é muito lucrativo, requerendo pouco CAPEX (Capital Expenditures, ou investimentos de capital) e focando no modelo Pay-as-you-go (pagando conforme a demanda).

PaaS

Platform as a Service ou Plataforma como Serviço, é um modelo de hospedagem e disponibilização de aplicações que abstrai toda complexidade de baixo nível, como: Sistemas operacionais e conteineres ou Servidores de Aplicação.

Este tipo de hospedagem já oferece a você todo o ambiente necessário para expor sua aplicação, sem que você tenha que se preocupar com a infraestrutura básica. Simplesmente faça upload do pacote da sua aplicação e pronto!

A única exigência é que sua aplicação seja compatível com o framework utilizado  pelo sistema PaaS, por exemplo: Java EE (Jakarta EE) ou .NET.

PaaS é uma excelente opção para criação de novas aplicações, pois praticamente elimina o trabalho de instalação e operação de infraestrutura, diminuindo os custos e o prazo (time-to-market) de novas soluções.

Nuvem

Computação em nuvem ou cloud computing é uma maneira de usar computadores e infraestrutura de TI remotamente, economizando em instalações físicas e manutenção e operação de hardware e telecomunicações.

Utilizando serviços de Cloud Providers, podemos subir e utilizar aplicações na modalidade SaaS (Software as a Service), como: Email, vídeo conferência e colaboração, assim como podemos usar serviços de PaaS para hospedar nossas aplicações ou podemos montar todo um data center virtual, utilizando serviços de IaaS (Infraestrutura como Serviço).

As Nuvens abstraem o hardware de computação, através de virtualização, oferecendo a possibilidade de usarmos Infraestrutrua como Código (IaC - Infrastructure as Code), além de também abstraírem toda a estrutura de redes e comunicação, com o conceito de Redes Definidas por Software (Software defined networking).

Os Cloud Providers oferecem modelos flexíveis de pagamento, como o pay-per-use, incluindo escalabilidade sem reserva, ou o pay-as-you-go. Se utilizarmos recursos por um tempo previsível, podemos reservá-los para economizar. De qualquer forma, trocamos CAPEX por OPEX, crescendo nossa infraestrutura conforme nossa demanda.

O custo e o prazo para provisionar uma infraestrutura mínima de TI própria, também conhecida como on premises, é muito alto, dificultando o investimento em novos negócios e diminuindo a flexibilidade das empresas.

Elasticidade

Elasticidade em computação é a flexibilidade de uma aplicação, ou seja, sua capacidade de ampliar ou reduzir o uso de recursos para se adequar à demanda dos usuários.

Elasticidade está relacionada com Escalabilidade, especialmente a Escalabilidade Horizontal, através da distribuição da carga entre vários servidores baratos, de forma transparente. Desta forma, podemos adicionar ou remover servidores e recursos sem afetar a aplicação, adaptando-a à demanda.

Sistemas monolíticos geralmente são pouco elásticos, exigindo investimentos em servidores, conforme a Escalabilidade Vertical é necessária. Temos que substituir a CPU ou adicionar mais memória ou disco ao Servidor para podermos acomodar um maior volume de transações.

Aplicações distribuídas (como as baseadas em microsserviços), baseadas em componentes de baixo acoplamento, são mais elásticas permitindo o uso de Escalabilidade Horizontal, na qual podemos aumentar ou diminuir a quantidade de servidores e usar recursos como Distribuição (ou Balanceamento) de carga para controlar o tráfego de transações entre as várias instâncias dos componentes.

Elasticidade é muito mais difícil de alcançar em ambientes on premises, pois quando investimos em recursos (computadores, discos etc) esperamos utilizá-los aproveitando o máximo do investimento e, quando a demanda cai, podemos não ter onde utilizá-los. Desta forma, muitas empresas optam por Cloud Providers, migrando suas cargas de aplicações que exigem elasticidade para a Nuvem.

SaaS

Software como Serviço ou Software as a Service é uma modalidade de uso de software de forma remota, pelo qual pagamos sob demanda, ou por mês, por número de usuários, por espaço de armazenamento etc. A maioria das pessoas comuns utiliza aplicações SaaS e nem se dá conta, como serviços de email (Gmail, por exemplo) e de armazenamento (Google Drive, por exemplo).

Mas existem serviços corporativos oferecidos nessa modalidade, como aplicações de controle de tarefas (Zehnk, Trello etc), de Relacionamento com Clientes - CRM (Salesforce), e até ERP (Sap, Totus etc).

Quando temos um SaaS que não tem aplicação cliente, estamos diante de um serviço de API Business, um dos grandes filões do mercado atualmente.

Soluções SaaS podem ser hospedadas on premises ou em ambientes de nuvem, mas apresentam um modelo de consumo mais apropriado para plataformas de grande elasticidade.

Serverless

Soluções serverless ou Computação sem Servidor não quer dizer que as aplicações funcionem realmente sem a necessidade de servidores em rede. Isso pode ser confuso. Serverless está relacionado ao fato dos Desenvolvedores de Software não precisarem provisionar servidores ou qualquer outra infraestrutura de TI, concentrando-se apenas na funcionalidade básica de sua aplicação.

Os Cloud Providers oferecem várias soluções serverless que agilizam o desenvolvimento de software, aumentando a agilidade e flexibilidade da Empresa. Os programadores não precisam mais ficarem amarrados a uma plataforma de software corporativo única, e nem mesmo a uma linguagem de programação única, podendo utilizar as ferramentas mais adequadas para necessidade de negócio.

Há serviços serverless de computação, como soluções PaaS ou mesmo FaaS (Function as a Service), ou de armazenamento e banco de dados, como DBaaS (Database as a Service) ou STaaS (Storage as a Service).

Atualmente as empresas utilizam soluções serverless em aplicações do tipo SaaS ou API, de modo a aumentar a flexibilidade, a elasticidade e reduzir custos e investimentos.

IaC

Infraestrutura como código (Infrastructure as code) é uma maneira de tratarmos todos os recursos de infraestrutura de TI através de automação. Tarefas como: Provisionar, Monitorar, Escalar e Terminar são executadas através de programas, em um ambiente totalmente virtualizado.

A grande vantagem da IaC é diminuir o Configuration Drift (Desvio de configuração) através da manutenção de uma base de configuração de infraestrutura em código-fonte, que pode ser reproduzida e é autodocumentada.

Geralmente, as soluções baseadas em IaC utilizam infraestrutura imutável, ou seja, aquela que um operador não consegue realizar modificações no ambiente utilizando a console do Servidor. Desta forma, todas as modificações devem passar por um ciclo de desenvolvimento e entrega contínua. Soluções que não empregam esses conceitos, não usufruem todos os benefícios de IaC.

Existem várias soluções de IaC, tanto baseadas em virtualização como em Conteineres. Exemplos são: Vagrant e Docker.

Os Cloud Providers geralmente oferecem serviços de IaC, tanto baseados em padrões de mercado como baseados em soluções proprietárias.

FaaS

Function as a Service ou Funções como Serviço é uma maneira de hospedar aplicações sob a forma de funções stateless de baixo acoplamento. Sob o ponto de vista dos programadores, um serviço FaaS é muito fácil e prático de utilizar, com pouca ou nenhuma Complexidade Acidental para eles, aumentando a agilidade e flexibilidade da Empresa para entregar novas aplicações ou modificações.

A diferença entre PaaS e FaaS é a granularidade da aplicação. Na modalidade FaaS você pode entregar parte da sua aplicação, dividida em funções de baixo acoplamento, que utilizam mecanismos como DBaaS ou Filas de Mensagens para comunicação assíncrona entre si. No PaaS geralmente entregamos uma aplicação inteira, montada em um pacote de aplicação, de acordo com o tipo de plataforma (Java EE / Jakarta EE, .Net etc).

Podemos empregar a modalidade FaaS de maneira on premises ou em ambientes de nuvem. Para instalação on premises, existem soluções como o OpenFaaS, que permite criar um ambiente FaaS em seu próprio data center.

Geralmente os Cloud Providers oferecem soluções de FaaS próprias e de baixo custo, cobrando por transação ou volume de dados trafegados.

LGPD

A Lei Geral de Proteção de Dados Pessoais ou LGPD visa proteger os dados pessoais responsabilizando as empresas e pessoas pela divulgação ou mau uso dos mesmos, preservando a privacidade dos cidadãos.

De acordo com a Medida Provisória 959, de Abril de 2020, a LGPD entrará em vigor a partir de Maio de 2021, sendo que as empresas terão que se adequar até lá.

O que a lei estabelece? Basicamente que a coleta, tratamento e processamento de dados pessoais deverá ser feita com expressa autorização do proprietário dos mesmos, estabelecendo punições para descumprimento desta norma básica pelas empresas. Além disto, a empresa que possui dados pessoais deve cuidar para sua preservação e privacidade, de acordo com o uso autorizado.

Qual a influência da LGPD nos serviços da nova economia digital? Basicamente, as empresas deverão se adequar obter as necessárias autorizações das pessoas e proteger os dados coletados, seja em trânsito (em transmissão de dados) ou em repouso (armazenados). Isto é possível com serviços de criptografia de comunicações e de dados em repouso.

Os Cloud Providers que operam no Brasil já estão se preparando para oferecer serviços para implementar os controles exigidos pela LGPD, e as empresas que operam data centers on premises também.

DevSecOps

DevSecOps ou Developer + Security + Operations, assim como DevOps, é uma filosofia de trabalho que visa integrar atividades de segurança e operações no desenvolvimento de aplicações, garantindo que as boas práticas operacionais e de segurança sejam integradas desde o princípio nas aplicações.

Assim como DevOps, DevSecOps não é um papel ou uma responsabilidade, mas uma filosofia de trabalho, que integra pessoas em times heterogêneos, estendendo as responsabilidades para as 3 áreas integradas: Desenvolvimento, Segurança e Operações.

É uma filosofia importantíssima especialmente nessa nova economia digital, com novas modalidades de hospedagem (PaaS, FaaS) e com a LGPD chegando.

Assim como a infraestrutura se torna fluídica e parte do código, a segurança vai no mesmo caminho, exigindo uma nova filosofia integrada de trabalho. Em vez dos profissionais de segurança ficarem isolados e só olharem as aplicações ao final do desenvolvimento, eles participam do processo de desenvolvimento e da operação das mesmas.

Cloud-native

Cloud-native é uma maneira de pensar e desenvolver aplicações considerando a incerteza e elasticidade, através do uso de recursos de nuvem. Isso se contrapõe à migração lift-and-shift para nuvem, na qual a aplicação é simplesmente migrada para hospedagem em nuvem como se fosse apenas uma nova solução de hospedagem, sem considerar os recursos de elasticidade e as modalidades oferecidas pelo novo ambiente.

Desenvolver aplicações cloud-native é pensar desde o princípio em se beneficiar dos recursos de nuvem, criando aplicações voltadas exclusivamente para este tipo de ambiente. Há alguns exemplos de pensamentos cloud-native, como: Elasticidade, Alta disponibilidade em nuvem, e Serviços em vez de servidores.

Em vez de provisionar servidores virtuais na nuvem (VPS - Virtual Private Server) as soluções cloud-native utilizam serviços gerenciados em nuvem (preferencialmente serverless), nos quais é desnecessário gerenciar infraestrutura, balanceamento de carga e até segurança.

Edge-computing

Edge-computing ou computação de borda é uma técnica que processa os dados mais próximos à origem ou ao usuário, consolidando resultados antes de levar para a nuvem ou para o data center on premises.

Ela pode ser utilizada por aplicações IoT, por Websites ou aplicativos móveis, levando parte do processamento para o local onde a informação foi coletada. Existem muitas vantagens, como: Diminuição da latência (os dados são processados localmente), preservação da privacidade (evitando tráfego e armazenamento remoto de informações sensíveis) e diminuição da carga no data center (com o pré-processamento local).

Um exemplo seria um carro inteligente, que pode tomar decisões localmente (em sua própria CPU) sem necessidade de enviar dados pela rede. Por exemplo, pode decidir desviar de um obstáculo sem o risco de latência de rede causar uma colisão. Ou um sensor remoto que pode consolidar dados e acionar atuadores sem ter que esperar a resposta do servidor central.

Mas nem só aplicações IoT se beneficiam da baixa latência. Aplicações web podem ser beneficiadas, através do processamento local (no navegador) ou em dispositivo intermediário, próximo à localização do usuário. Em dispositivos móveis essa tendência vem sendo acentuada, com a criação de APIs de Machine Learning e processamento de imagem para dispositivos móveis.

Identity-federation

Federação de identidade é um meio de vincular a identidade e os atributos eletrônicos de uma pessoa, armazenados em vários sistemas distintos de gerenciamento de identidades. Muito utilizado para permitir que os usuários se identifiquem em aplicações utilizando suas credenciais em diversos provedores de serviço como: Facebook, Google ou serviços de diretório e identificação de terceiros.

Muito comum hoje em dia, a maioria dos serviços em rede aceita que o usuário efetue logon com sua identidade social (Facebook, Google, Github, Amazon etc). E muitos serviços de nuvem podem aceitar que os usuários utilizem suas credenciais baseadas em diretórios on premises para se autenticarem em seus serviços.

A federação de identidade aumenta a segurança das aplicações ao confiar em provedores públicos, isentando a empresa de gerenciar identidades. Assim como aumenta a segurança das pessoas ao evitar criarem senhas em todos os serviços que utilizam. Considerando a entrada em vigor da LGPD, é necessário analisar essa questão com bastante interesse, pois pode aumentar o reduzir a compliance da sua empresa com a Lei.













Nenhum comentário:

Postar um comentário