Como a computação em nuvem muda todo o cenário de desenvolvimento de software

Publicado a: 22 Julho, 2015

Categoria: Cloud & Mobile

Visualizações: 923

Tags: , , , , ,

No mundo atual, a interconexão de quase todos os computadores e muitos outros dispositivos (incluídos os smartphones e muitos outros dispositivos apelidados de ‘inteligentes’) é um fato corriqueiro.

Nesse cenário opera o chamado ‘mundo digital’, que inclui os fenômenos das redes sociais, do comércio eletrônico e vários outros. Esse ‘novo mundo’ em construção apresenta um conjunto de ameaças e oportunidades para as empresas: a estratégia de cada uma delas determinará o efeito que sofrerão.

Já há várias décadas, um ex-presidente do Citibank afirmou que “a informação a respeito do dinheiro ficou quase tão importante quanto o dinheiro propriamente dito”. Nos bancos de hoje em dia, sequer existe dinheiro mais: seu saldo bancário é apenas uma informação. A frase anterior pode ser generalizada substituindo a palavra ‘dinheiro’ pelo produto ou serviço de qualquer empresa: a informação a respeito do que cada empresa produz é atualmente tão ou mais importante para a perenidade da empresa do que aquilo que ela entrega a seus clientes.

Devemos somar a este fato um fenômeno adicional, chamado de ‘software comendo o mundo’ pelo criador do Netscape, onde iniciativas empresariais de base tecnológica de fato já transformaram a lógica empresarial de outros segmentos de atividade econômica. O exemplo mais recente a ocupar o noticiário é o impacto do Uber sobre os taxistas no mundo todo.

Porém, esse fenômeno vem se desenvolvendo há bastante tempo: grandes portais globais de aluguel de carros, reservas de hotéis e passagens aéreas vem redefinindo a comercialização de serviços turísticos (com a gradual extinção do agente de viagens). Analogamente, o sistema de anúncios do Google vem redefinindo o setor de publicidade; o AirBNB vem redefinindo o setor de locação de imóveis; a Amazon age para redefinir o setor de varejo; etc.

As consequências deste fenômeno se aplicam, portanto, igualmente aos tradicionais produtores de serviços de Tecnologia da Informação, e aos seus consumidores (as empresas chamadas pelos primeiros de ‘clientes’): se a informação é tão ou mais importante do que a oferta das empresas, então a disponibilização dessa informação para fora dos limites dos sistemas tradicionais das empresas (que operam em ambientes fechados e controlados) pode criar novas oportunidades de negócios, novos modelos e canais de vendas para qualquer empresa.

É por isso que grandes empresas de consultoria, focadas nas grandes corporações, já publicaram previsões como esta: segundo o Gartner, por exemplo, 75% das mil maiores empresas do planeta devem oferecer acesso a seus sistemas internos, até o ano 2017, por meio de APIs públicas, acessíveis à uma comunidade de desenvolvedores de software externos a essas empresas. Esse acesso, batizado de ‘Economia das APIs’, pode ser definido como a troca de recursos de TI entre as empresas, que disponibilizam seus recursos internos a um ecosistema de desenvolvedores externos por meio da Internet, com base em protocolos que chamamos de APIs, para produzir novos recursos, serviços e produtos de TI.

Esse movimento tem potencial para transformar todas as empresas, de qualquer setor da economia, em fornecedores de TI, na avaliação de alguns especialistas. Porém, esse tipo de iniciativa possui uma série de desafios (por exemplo, de gestão e tecnológicos, como a segurança) e exige novas arquiteturas e soluções, descritas a seguir.

 

Arquiteturas de Software

Vamos nos concentrar agora nas consequências dessa necessidade para a arquitetura dos softwares envolvidos.

O modelo mais simples de arquitetura de software é chamado de ‘cliente-servidor’. Entretanto, é necessário tomar cuidado para não associar este nome exclusivamente com as aplicações criadas na era do downsizing dos mainframes, que operavam exclusivamente em ambiente local. Usamos o nome ‘cliente-servidor’ para designar qualquer arquitetura onde há apenas dois componentes de software: um deles está instalado em um ambiente acessível ao usuário final, enquanto o outro está instalado em um servidor. Ambos componentes se comunicam para atingir os objetivos propostos, seja através de uma rede local, redes privadas de longo alcance ou da Internet.

Assim, quando um usuário utiliza um browser para ‘navegar’ na Web, o servidor Web e o browser constituem um exemplo de uso desta arquitetura. Esta mesma arquitetura é utilizada por muitos softwares comercializados como serviço (no modelo conhecido como ‘Software as a Service’, ou SaaS).

Da mesma forma, um app desenvolvido para plataformas móveis pode ser parte de uma arquitetura ‘cliente-servidor’, se ele se comunica com um único servidor para entregar os serviços a que se propõe aos usuários. O ponto central a reconhecer é que no mundo da economia das APIs esta arquitetura é inadequada, exceto para as soluções mais simples: se o servidor que a aplicação deve acessar é um servidor de missão crítica (p.ex. o servidor do sistema de ERP da empresa, o servidor que gerencia contas de usuários – financeiras ou de outro tipo – ou um servidor de gestão de logística de um serviço de comércio eletrônico), então apenas a preocupação com a segurança e escalabilidade do servidor apresentam problemas.

Em primeiro lugar, ao conectar um servidor já existente por meio de APIs ao mundo da computação em nuvem, o número potencial de usuários que terão acesso ao servidor será muito maior do que o maior número de usuários imaginados pela maioria dos projetistas do software destes servidores quando os sistemas foram desenvolvidos originalmente. Este problema pode criar efeitos perversos sobre o funcionamento do servidor, análogos aos ataques de ‘Denial of Service’, conhecidos como ‘DOS’ na Web.

Em segundo lugar, toda arquitetura cliente-servidor que execute com algum nível de segurança envolve a inclusão de senhas no componente do lado do cliente para validar os acessos ao servidor (por exemplo, a senha da base de dados no servidor que será utilizada pela solução). Ao incluir estas senhas no componente cliente abre-se o risco de que ela seja usada indevidamente por ‘hackers’ que se dediquem a localizar elas dentro do componente, e passem a usá-la para finalidades ‘não planejadas’.

Finalmente, se almejamos que nossas novas soluções no ambiente de nuvem de fato exijam pagamentos por parte dos usuários que sejam proporcionais ao uso efetivo dos sistemas, no modelo chamado ‘on demand’ (no lugar de valores mensais fixos, ou calculados sem levar em conta o uso efetivo dos servidores), o acesso direto aos servidores de missão crítica diretamente pelas soluções ainda imporia a cada uma delas os processos de cobrança (ou ‘billing’).

Segurança de acesso, proteção contra ataques DOS e serviços de cobrança, entretanto, são alguns exemplos de necessidades comuns a qualquer solução a ser implementada neste novo ambiente.

Concluímos, portanto, que para que estas novas soluções possam ser desenvolvidas com custos viáveis e operar de forma satisfatória, é indispensável usarmos arquiteturas de software que envolvam ao menos três camadas: além do componente cliente, na mão do usuário, e do servidor, é necessário dispor de ao menos uma camada intermediária.

 

Exemplos de soluções baseadas em APIs

Ilustro agora esses conceitos com exemplos concretos de soluções que já existem ou vem sendo projetadas para a nuvem.

A primeira categoria de exemplos resulta de transformar informação já existente nos servidores de missão crítica das empresas em uma nova fonte de receita (ou de melhoria do serviço aos clientes) para as empresas. Exemplos incluídos nesta categoria incluem a disponibilização de dados de presença de atendentes ou vendedores aos clientes (que dependem dos sistemas de controle de acesso das empresas), a disponibilização de informação de estoques dos estabelecimentos comerciais aos consumidores até a comercialização de dados derivados da análise das bases de dados dos sistemas de missão crítica (instituições financeiras ou seguradoras podem mapear potenciais de consumo por região ou áreas ‘negras’ para sinistros de um determinado tipo e comercializar estas informações a terceiros).

Uma segunda categoria de soluções diz respeito à integração dos servidores de missão crítica com novos dispositivos e sistemas de comunicação. Algumas grandes empresas investiram em desenvolver aplicativos móveis para plataformas específicas, criando funcionalidade ‘back-end’ específica em seus servidores para atender as características dessa plataforma (p.ex. o iOS da Apple). Quando houver a decisão de criar aplicações móveis para novas plataformas móveis (por exemplo, Android ou Windows Phone, ou alguma que ainda será lançada), esses investimentos terão que ser feitos novamente. Seria mais racional, do ponto de vista de custos, dispor de uma camada intermediária de acesso para essas plataformas móveis, que não precisasse ser refeita a cada mudança na tecnologia móvel. Analogamente, o uso de canais de comunicação como Skype, WhatsApp ou Facebook de forma integrada com os sistemas corporativos gera o desafio de dispor de uma camada que evite, a cada novo tipo de plataforma de comunicação, reescrever a totalidade do código desses componentes.

Uma terceira categoria de exemplos é baseada na transformação de serviços baseados em servidores, dedicados a uma única aplicação, numa plataforma disponível para qualquer desenvolvedor. Neste grupo se inclui, por exemplo, o Google Maps: na sua primeira versão era um serviço para uso exclusivo no browser, para consultar os mapas. A partir da disponibilização dos serviços do servidor do Google Maps como APIs, a funcionalidade de mapas passou a estar disponível para uso por qualquer aplicação. Esta estratégia de ‘plataformização’ de serviços baseados em servidores também soluciona o dilema vivido por grandes empresas com amplas redes de parceiros comerciais independentes (como é o caso das montadoras de automóveis e suas redes de concessionárias). Para prestar um serviço uniforme e de qualidade ao cliente final, em vez de depender de um único fornecedor, elas obtêm vantagens publicando APIs correspondentes aos processos que devem ser uniformes, para que os fornecedores de sistemas para suas redes compitam entre eles para a criação de soluções cada vez melhores.

Uma quarta categoria de exemplos consiste em disponibilizar informação de grandes bases de dados de forma individual a consumidores interessados. Bancos pagam atualmente por acesso ‘no atacado’ a servidores pertencentes a empresas ditas de ‘proteção ao crédito’. Analogamente, escritórios de advocacia assinam sistemas que detalham ocorrências jurídicas registradas nos sistemas dos tribunais. Essas mesmas informações são de interesse de usuários individuais: qualquer cidadão envolvido numa transação financeira importante para sua vida pessoal (pense na compra ou aluguel de um imóvel ou veículo) gostaria de ter essas informações, mas apenas a respeito dos indivíduos ou empresas com as quais pretende transacionar. Qualquer grande base de dados pode passar por este processo de transformação de consultas em grandes volumes para o modelo de consultas individuais.

Roberto Mayer
Diretor da MBI
LinkedIn | Roberto MayerTwitter| Roberto MayerBiografia Completa
Leia mais artigos deste autor.

 

Partilhe este artigo:
Share on Facebook
Facebook
0Share on LinkedIn
Linkedin
Share on Google+
Google+
0Tweet about this on Twitter
Twitter

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *