This post is sponsored by VMware. Learn about VMware virtualization and cloud solutions for small & mid-size business visit info.vmware.com



This article is available in other languages:

This article is available in other languages:

Germany Vantagens de um sistema híbrido cloud/virtualizaçãoFrance Vantagens de um sistema híbrido cloud/virtualizaçãoChina Vantagens de um sistema híbrido cloud/virtualizaçãoNetherlands Vantagens de um sistema híbrido cloud/virtualizaçãoEngland Vantagens de um sistema híbrido cloud/virtualizaçãoPortugal Vantagens de um sistema híbrido cloud/virtualização

No nosso último post eu escrevi sobre algumas diferenças entre rodar o seu app em uma nuvem pública de hospedagem de comodidade e construir a sua própria rede privada e rodá-la nessa nuvem, e como você deve escolher entre as duas.

Agora eu quero dizer que você não precisa necessariamente escolher entre as duas. Ao explicar sobre como escolher o seu ambiente de hospedagem, deixei de fora a ideia chave que transformou a proposição em uma alternativa, a ideia de que o seu aplicativo como um todo tem um conjunto heterogêneo de restrições de desempenho, disponibilidade e orçamento.

Essa é uma suposição fácil de se ter, já que a maioria dos aplicativos é geralmente desenvolvida de um modo monolítico, com uma base de código, um ambiente de desenvolvimento padrão e, finalmente, apenas uma implantação. Ao dividir o seu app monolítico em componentes menores, você fica livre para hospedar cada componente no ambiente ideal que atenda às suas próprias limitações.

Arquitetura Orientada a Serviços ou Recursos

Esse processo de dividir o seu aplicativo é geralmente chamado de Arquitetura Orientada a Serviços, ou Arquitetura Orientada a Recursos. O nome correto a ser usado depende do modo como você divide seu aplicativo, e isso não nos interessa por enquanto.

Neste artigo estou falando sobre as vantagens e desvantagens de AOS especificamente em relação à hospedagem. O campo da mudança para AOS é muito maior que isso, e eu recomendo que você faça uma boa leitura sobre o tema antes de se comprometer à mudança.

Um Exemplo Específico

No último artigo, eu usei o exemplo do mercado de conteúdo digital e como nós o transferimos da nuvem para um ambiente privado virtualizado, principalmente por querer um desempenho mais rápido e um controle maior.

Com o tempo, enquanto abríamos novos mercados, o perfil de carregamento do aplicativo mudou drasticamente. Nós ainda tínhamos o mesmo fluxo estável de clientes de e-commerce esperando serviço rápido, mas, com cada novo mercado, novos tipos de arquivos passaram a ser enviados, com requisitos de pós-processamento amplamente diferentes, e que apareciam em janelas muito esporádicas.

Neste ponto, nosso ambiente de produção estava trabalhando duro para ser “tudo para todos”. Se olhássemos para o app como algo projetado primariamente para tornar a compra de produtos o mais fácil possível, a decisão de hospedar em nossa nuvem privada ainda era boa. Se, entretanto, olhássemos para o app como uma plataforma criada primariamente para que as pessoas contribuíssem com conteúdo (o que então estava disponível para venda) em larga escala, mas com um padrão de carregamento muito imprevisível, então a natureza elástica da nuvem pública faria mais sentido para o app.

Dividir o aplicativo em dois

Como custo de manter capacidade de reserva suficiente para administrar os grandes influxos de novo conteúdo, e a complexidade montada para manter a hospedagem de arquivos segurando tudo, nós dividimos os aplicativos e movemos 100% do armazenamento e processamento de ativos para a nuvem.

O ambiente de produção principal guardaria qualquer conteúdo enviado durante o tempo suficiente para movê-lo para a nuvem de hospedagem e notificar o novo serviço de processamento de ativos que havia conteúdo novo disponível. O serviço de ativos faria toda a validação, transformação, publicação CDN etc. necessária dos arquivos, e então notificaria o website principal de que o conteúdo já estava pronto para uso.

Vantagens

A primeira grande vantagem estava no resultado final. Reduzindo a quantidade de capacidade de reserva na nossa nuvem privada, e transferindo o trabalho para nuvem pública, onde poderíamos acrescentar ou remover capacidade conforme o necessário, gastávamos menos conseguindo “trabalhar” mais.

A próxima vantagem era a complexidade reduzida no ambiente primário. O ambiente primário agora estava 100% concentrado em servir ao website, e tinha menos partes móveis para manter. Como o desempenho foi um dos fatores principais na escolha da nuvem privada, a simplificação desse ambiente nos gerou menos engarrafamentos em potencial, e tornou muito mais fácil a resolução dos problemas que fossem aparecendo.

Finalmente, a manutenção de uma grande disponibilidade para os nossos clientes ficou mais fácil. Mantendo uma separação estrita entre o website e o processamento de ativos, ficou muito difícil que os problemas no nosso sistema de ativos chegassem até o website.

Desvantagens

Infelizmente, você não recebe todos os benefícios de graça.

A primeira desvantagem é que, tendo componentes diferentes em centros de dados diferentes, ou até no mesmo centro de dados, já que alguns fornecedores ofertam hospedagem em nuvem e hospedagem física, você introduzirá latência no seu sistema geral, e ela será altamente variável.

Você terá que investir uma quantidade razoável de esforços de engenharia para tornar todas as interações entre os dois sistemas assíncronas e tolerantes a falhas. Existe agora muito hardware de rede que não está sob o seu controle entre os seus dois sistemas. Pacotes chegarão tarde, ou simplesmente não chegarão. Se o seu website só funciona quando o outro serviço retorna prontamente com os dados, o website irá parar de funcionar.

A segurança também é um problema, já que as comunicações anteriormente “internas” dos sistemas agora passarão pela perigosa internet. Configurar uma VPN é uma boa escolha, ou, caso você esteja fazendo as comunicações interserviços por HTTP, é bom se certificar de que todos os seus serviços tenham autenticação robusta e rodem em SSL.

Finalmente, a complexidade do desenvolvimento e instalação aumenta quando você muda de um app monolítico para serviços múltiplos hospedados independentemente. Lançar novas funcionalidades irá exigir um esforço coordenado significativo para se assegurar de que todos os serviços continuem a funcionar juntos.

Conclusão

Se você está tendo problemas em identificar se uma nuvem pública ou privada é a certa para o seu app, a resposta pode ser ambas.

Examine cuidadosamente o seu aplicativo. Pode haver dois (ou mais) aplicativos menores lutando para se libertar, e quando conseguirem, encontrar o ambiente de hospedagem certo para cada um deve ficar bem mais fácil.