Quando Considerar uma Nuvem Privada?
A ideia de executar uma nuvem privada, hospedada ou local, para uma única empresa está rapidamente se tornando algo comum. Cada vez mais empresas estão conhecendo a computação em nuvem e percebendo que executar sua própria plataforma de nuvem é tanto viável quanto potencialmente valioso para o negócio. Mas, devido a uma falta geral de conhecimento sobre nuvem, está se tornando cada vez mais comum que nuvens sejam recomendadas quando não atendem de forma alguma às necessidades do negócio, sendo, em vez disso, confundidas com sistemas tradicionais de gerenciamento de virtualização.
Uma nuvem é um tipo especial de plataforma de virtualização e preenche um nicho único. A computação em nuvem pega a virtualização tradicional e a sobrepõe com escalonamento e provisionamento automatizados que permitem o escalonamento rápido e horizontal de aplicações. Essa não é uma necessidade comum dos negócios. A nuvem também se presta, e frequentemente está atrelada, ao autosserviço de provisionamento de recursos, mas isso por si só não torna algo uma nuvem nem justifica a migração para uma plataforma de nuvem, embora possa ser um incentivo adicional. O que torna a nuvem interessante é a capacidade de fornecer portais de autosserviço aos usuários finais e a capacidade de as aplicações se autoprovisionarem. Esses são os aspectos críticos que distinguem uma plataforma de nuvem da virtualização tradicional.
O que uma nuvem não implica são recursos como o gerenciamento simplificado de sistemas de todo um domínio a partir de um único painel, a consolidação em larga escala, a migração fácil entre sistemas de hardware, o provisionamento rápido de novos sistemas, a virtualização, a alta disponibilidade, o overcommitment de recursos, etc. Todos esses recursos estão disponíveis de outras formas, principalmente por meio ou sobre a virtualização de plataforma padrão (VMware vSphere, HyperV da Microsoft, Xen, entre outros). Não é que esses recursos não possam ser disponibilizados em uma nuvem privada, mas eles não são aspectos da nuvem, e sim da plataforma de virtualização subjacente. A camada de nuvem está acima destas e simplesmente repassa os benefícios das camadas subjacentes.
Frequentemente, a nuvem é buscada por causa de um mal-entendido de que muitos dos recursos comumente associados a nuvens privadas não estão disponíveis em alguma outra forma mais simples. Esse raramente é o caso. As plataformas de virtualização comuns, mais frequentemente o vSphere da VMware e o HyperV da Microsoft, oferecem todas essas opções. Elas podem ser usadas para criar clusters robustos de servidores físicos, gerenciados a partir de uma única interface, com confiabilidade incrivelmente alta e provisionamento rápido de novos sistemas que exigem o mínimo de conhecimento especializado do departamento de TI e mantêm os fluxos de trabalho tradicionais do negócio. Na maioria das vezes, quando converso com empresas que acreditam estar interessadas em buscar a propriedade de sua própria nuvem, os recursos que elas realmente querem não são recursos de nuvem de forma alguma.
O termo “nuvem” simplesmente se tornou tão popular recentemente que as pessoas começam a presumir que recursos importantes para quase todos devem ser atribuídos a ele para explicar o súbito aumento de importância, mas isso simplesmente não é verdade. A nuvem permanece, e permanecerá, uma solução predominantemente de nicho, apropriada para que apenas um número muito pequeno de empresas a possua por conta própria. O uso de nuvens públicas ou o uso de serviços hospedados entregues a partir de plataformas de nuvem se tornará, e de fato já se tornou, quase onipresente. Mas a propriedade de uma nuvem privada para uso de uma única empresa está longe de ser uma necessidade de negócio para a maioria das empresas ou unidades de negócio e, em muitos casos, suspeito que nunca se tornará.
As nuvens privadas se destacam em duas áreas principais. A primeira é uma empresa que precisa de um grande número de sistemas temporários ou ad hoc “levantados” regularmente. Isso ocorre frequentemente com grandes equipes de desenvolvimento e grupos de teste de aplicações, especialmente se esses grupos visam múltiplos sistemas operacionais. A capacidade de provisionar rapidamente sistemas temporários de teste ou sistemas de laboratório pode ser muito vantajosa, e a natureza da computação em nuvem de expor facilmente ferramentas de provisionamento que permitem que clientes corporativos criem, gerenciem e destruam suas próprias instâncias de sistema com, esperaríamos, mecanismos de cobrança integrados, pode ser muito benéfica para a eficiência corporativa, à medida que a interação entre o departamento de TI e os usuários finais se torna quase sem atrito para essa transação. A responsabilidade pela manutenção da nuvem como um todo pode ser facilmente segregada das responsabilidades de manutenção dos sistemas individuais. Raramente usado dessa forma para cargas de trabalho de produção, isso permite uma abordagem de autosserviço que muitas unidades de negócio buscam desesperadamente hoje. Impraticável em pequena escala devido à sobrecarga de criar e manter a própria plataforma de nuvem, mas em larga escala pode ser enormemente produtivo. Além das vantagens técnicas, esse aspecto da computação em nuvem pode servir como um modelo para pensar a TI como um provedor de serviços interno e os departamentos como clientes. Há muito discutimos a TI e outras unidades de negócio nesses termos, mas raramente pensamos verdadeiramente nelas dessa forma.
A segunda área em que a computação em nuvem realmente se destaca, e aquela para a qual o conceito foi originalmente desenvolvido, é lidar com o provisionamento automático para aplicações com escalonamento horizontal. Ou seja, cargas de trabalho de aplicações capazes de aumentar sua capacidade de processamento gerando novas instâncias de si mesmas. Em pequena escala, muitas aplicações web, devido à sua natureza sem estado, fazem isso dentro de um único sistema gerando novos workers de thread para lidar com conexões adicionais. Um servidor web Apache pode iniciar com oito listeners prontos para atender requisições, mas, à medida que essas threads se esgotam, ele inicia automaticamente novas threads para lidar com conexões adicionais de entrada, de modo que consiga escalar dentro dos limites de um único servidor. Para expandir esse conceito, aplicado à computação em nuvem, essa mesma aplicação, ao detectar o esgotamento de threads se aproximando em nível de todo o sistema (ou com base em outras métricas, como a falta de memória livre ou uma perda de desempenho), usaria uma API exposta pela plataforma de computação em nuvem para sinalizar ao sistema de gerenciamento de nuvem para provisionar uma nova cópia do sistema que a estava chamando – essencialmente clonando a si mesma em tempo real. Em questão de segundos, um novo servidor virtual, idêntico ao primeiro, estaria em funcionamento e se juntando ao seu predecessor para atender às requisições de entrada. Esse sistema filho ou clone, da mesma forma, geraria novas threads internamente, conforme necessário, e então, se também detectasse esgotamento, chamaria a plataforma de nuvem para criar ainda outro novo sistema para lidar com ainda mais threads. Dessa forma, a aplicação pode crescer quase infinitamente (dentro dos limites de hardware de toda a plataforma de nuvem) conforme necessário, em tempo real, automaticamente. Então, à medida que sistemas individuais ficam ociosos e as cargas de trabalho diminuem, um sistema de cada vez pode sinalizar ao sistema de gerenciamento de nuvem que não é mais necessário, e o sistema será desligado e destruído, pois era simplesmente um clone sem estado, liberando capacidade do sistema para outras aplicações e cargas de trabalho que possam precisar aproveitar a capacidade ociosa.
Como podemos ver, a computação em nuvem é extraordinariamente poderosa, especialmente com a maior parte das aplicações públicas e corporativas de hoje sendo escritas de maneira sem estado a fim de aproveitar os protocolos web e as interfaces de usuário final. As aplicações web são especialmente hábeis em alavancar o modelo de escalabilidade da computação em nuvem, e a maioria das aplicações web de larga escala alavanca essa expansão e contração elástica de capacidade hoje. Muitos novos modelos NoSQL estão começando a surgir, sinalizando que os bancos de dados, além dos nós de processamento de front-end das aplicações, podem em breve se beneficiar de modelos semelhantes em larga escala. Isso certamente pode ser alavancado para aplicações internas, bem como para as voltadas ao público; no entanto, as aplicações internas raramente precisam escalar além de um único sistema e, portanto, é bastante raro encontrar nuvens privadas sendo alavancadas exatamente dessa forma.
Os perigos em torno da computação em nuvem vêm na forma de complexidade adicional acima e além da virtualização comum. Há o potencial de armazenamento complexo necessário para dar suporte à plataforma e mais camadas para aprender e manter. A capacidade da computação em nuvem de criar e destruir sistemas rapidamente pode tornar tentador para os usuários tentarem usar os recursos da nuvem como se fossem sistemas persistentes, o que eles podem ser configurados para ser, o que pode resultar em perda de dados quando os usuários recebem um comportamento muito diferente do que é tradicional e esperado. Possivelmente, a maior preocupação com a nuvem é uma preocupação humana, e essa é a probabilidade aumentada de experimentar a proliferação descontrolada de sistemas, à medida que os usuários finais levantam descontroladamente cada vez mais novos sistemas que, por serem criados por usuários finais e não pela TI, provavelmente não são rigorosamente controlados e monitorados, deixando sistemas em um estado descontrolado e, muitas vezes, esquecido. Isso pode levar a um pesadelo de manutenção e segurança, à medida que os sistemas ficam sem correções de segurança e sem cuidado, aumentando o risco e esgotando recursos. E o mais preocupante é a possibilidade de que sistemas sejam criados e esquecidos e potencialmente existam sem o licenciamento adequado. Rastrear e relatar sistemas provisionados automaticamente carrega um risco de processo causado pela enorme mudança em como os sistemas são criados. Os departamentos de TI estão acostumados aos pesados processos de licenciamento necessários para manter a conformidade, mas com a computação em nuvem há um potencial de que esse processo seja exposto às unidades de negócio de uma forma que elas não estão de modo algum equipadas para lidar. Existem acomodações para as necessidades de licenciamento da computação em nuvem, mas isso é complexidade e gerenciamento extras que precisam ser endereçados. Permitir que sistemas existam sem a supervisão direta do departamento de TI claramente carrega um risco de natureza potencialmente imprevista.
A propriedade de uma nuvem privada traz muitas possibilidades empolgantes, mas está claro que esses benefícios e oportunidades não são para todos. Eles atendem a empresas maiores, àquelas com bom controle de processos, a empresas que executam aplicações especialmente adaptadas que são capazes de aproveitar a elasticidade dos recursos em nível de sistema e àquelas que precisam de criação e destruição de sistemas ad hoc em larga escala fornecidas, como um serviço, para que os usuários finais se autoprovisionem. A maioria das grandes corporações encontrará um uso limitado para a computação em nuvem internamente. Organizações menores raramente acharão a computação em nuvem vantajosa no futuro próximo, se é que algum dia acharão.