Header Ads

Movendo seu aplicativo para a nuvem? Aqui está o que você precisa saber

Shutterstock / phloxii

Todo mundo está movendo seus aplicativos para a nuvem hoje em dia. Começar do zero é fácil, mas e se você tiver uma infraestrutura existente que precise migrar? Recriar sua rede na nuvem oferece a você a chance de modernizar sua arquitetura e aproveitar os muitos benefícios de provedores de nuvem, como a AWS.

O que torna a nuvem tão útil?

Em sua forma mais básica, a “ nuvem ” é apenas qualquer provedor de infraestrutura como serviço que permite alugar hardware para executar seus aplicativos. Muitas empresas executam suas redes a partir de seus próprios servidores locais. Alugá-los de terceiros permite maior flexibilidade e a opção de escalonar conforme necessário.

No entanto, provedores de nuvem modernos como Amazon Web Services (AWS), Google Cloud Platform, Microsoft Azure e Digital Ocean (DO) oferecem muito mais do que apenas servidores mediante o pagamento de uma taxa. Eles trabalharam para melhorar a eficiência de suas operações e fornecer aos desenvolvedores ferramentas fáceis de usar que tornam a criação de aplicativos muito mais fácil.

Por exemplo, executar seus servidores na nuvem pode realmente economizar seu dinheiro. Embora os servidores dedicados sejam, obviamente, mais caros core-a-core (já que todo mundo vai marcar um pouco seus produtos), provedores como a AWS têm sistemas avançados de escalonamento automático. Isso permite que você automatize totalmente o processo de ciclo de vida do servidor, criando e destruindo novos servidores conforme a demanda flutua, muitas vezes várias vezes ao dia. Em vez de pagar pela capacidade de pico, você pode reduzir fora do expediente e economizar dinheiro em geral.

RELACIONADO: Primeiros passos com escalonamento automático da AWS

A configuração do escalonamento automático também permite que você crie servidores adicionais automaticamente no caso de uma carga inesperadamente alta. Isso torna sua rede altamente escalonável e significa que você não terá realmente tempo de inatividade devido ao alto tráfego. Essa mentalidade escalonável se aplica a todos os serviços. Por exemplo, as funções Lambda da AWS são infinitamente escalonáveis ​​fora da caixa. Seus sistemas controlam a execução do código para você; não importa quantas vezes você chame a função por segundo, ela não causará um gargalo.

Publicidade

A nuvem também economiza dinheiro por meio da automação de tarefas. Por exemplo, o Relational Database Service (RDS) da AWS é um serviço SQL totalmente gerenciado que automatiza grande parte do trabalho de gerenciamento de bancos de dados. Você já pode pagar alguém para fazer essas tarefas por você em seus próprios servidores; se você estivesse usando RDS, essa pessoa poderia gerenciar mais bancos de dados e passar o resto do tempo com mais eficiência.

E, finalmente, a infraestrutura em nuvem costuma ser muito mais durável do que as soluções locais. Em parte, isso se deve a serviços como o S3, que são incrivelmente redundantes para armazenamento de dados, mas também se aplica a projetos de rede de alta disponibilidade. É fácil criar casos de failover em que um servidor de backup pode assumir o controle em caso de falha de hardware. E, na pior das hipóteses, fazer backup de tudo em sua rede é muito fácil, pois serviços como o EBS, que alimentam o armazenamento de seus servidores, podem ser configurados para fazer backup automaticamente no S3.

Por exemplo, o serviço DNS da AWS, Route 53, oferece suporte a verificações de integridade que monitoram seu hardware e alternam o tráfego automaticamente no nível DNS se um servidor deixar de responder. Os grupos de escalonamento automático também suportam verificações de saúde e podem encerrar e substituir completamente um servidor se ele estiver tendo problemas.

Modernizando sua arquitetura com soluções em nuvem

Shutterstock / Ashalatha

Mover para a nuvem é um grande passo, mas com as ferramentas adicionais fornecidas a você, é um bom motivo para examinar sua arquitetura para ver se alguma parte dela pode se beneficiar de uma mudança no design.

Por exemplo, muitos aplicativos mais antigos são projetados para serem “ monolíticos, ” ou seja, empacotado em um grande programa que é executado em seu servidor. Este programa pode se comunicar com um banco de dados local ou remoto, lidar com solicitações da Web recebidas, realizar consultas, pesquisar informações, processar filas e tudo o mais que seu caso de uso desejar.

Isso pode ser bom para colocar as coisas em funcionamento rapidamente, mas, eventualmente, começa a representar um problema — não é eficiente. Enquanto estiver tentando lidar com muitas tarefas complexas ao mesmo tempo, sempre haverá um aspecto de um grande aplicativo monolítico que se tornará o gargalo para o restante do aplicativo. O que geralmente acontece então é que você é forçado a dimensionar, provisionando mais servidores e executando mais instâncias. Isso pode ser um desperdício incrível se os demais componentes do programa não estiverem sendo tão estressados.

Publicidade

Portanto, a solução que muitos engenheiros estão buscando são os “ microsserviços. ” Esses são serviços individuais, cada um com um objetivo claro e fixo. Talvez um elemento de seu aplicativo da web lide com o processamento de vídeo, e isso fica particularmente estressado em comparação quando os usuários enviam vídeos longos. Você pode mover essa parte para seu próprio microsserviço, manipulá-lo externamente e simplesmente chamá-lo quando necessário. Agora, esse componente pode ser dimensionado inteiramente por conta própria; você pode precisar de três servidores executando o serviço de processamento de vídeo, mas apenas de dois servidores executando o restante do aplicativo. Isso torna mais eficiente o uso de seus recursos e é um design mais escalonável em geral.

Quais serviços devo procurar?

Independentemente de você optar por um design de microsserviços, outras soluções em nuvem podem ser muito úteis.

Discutiremos alguns dos serviços da AWS, já que eles são líderes do setor, especialmente no número de serviços que oferecem. No entanto, a maioria dos principais tem produtos equivalentes disponíveis em outros provedores de nuvem, como Azure, GCP e Digital Ocean.

Cloud Object Storage (S3)

A maioria das soluções locais usa armazenamento em nível de bloco, o que significa que os objetos são armazenados como arquivos em discos e disponibilizados na rede. No entanto, a escala de provedores como a AWS permite que grandes quantidades de arquivos sejam armazenadas em seu Simple Storage Service (S3).

S3 não tem pastas tradicionais, embora tenham chaves de objeto que funcionam principalmente como elas. Em vez de oferecer acesso direto ao drive subjacente, o S3 simplesmente permite que você armazene um arquivo, na nuvem, com um nome e local. É isso, mas este padrão de design simples permite grande flexibilidade.

Publicidade

Por exemplo, digamos que seu aplicativo permita conteúdo carregado pelo usuário. Armazenar imagens no S3 seria uma ótima opção, e você pode até mesmo disponibilizá-las na Internet usando a rede de entrega de conteúdo CloudFront da AWS.

Mudar para o armazenamento baseado em S3 é um pouco complicado, mas existem soluções híbridas, como o gateway de armazenamento da AWS.

RELACIONADO: Precisa de desempenho NAS no local? Use o gateway de armazenamento S3 da AWS

Cloud Functions

Funções em nuvem como Lambda são incrivelmente úteis — elas permitem que você execute código na nuvem sem pensar em servidores. Basta solicitar a execução de uma função, diretamente ou de uma API, como o API Gateway da AWS, e ela será enfileirada e executada em servidores Lambda.

Você simplesmente paga uma taxa pela quantidade de segundos de CPU e memória que sua função usa. Não importa o quanto você chame a função, ela será dimensionada para lidar com ela.

As funções da nuvem podem automatizar facilmente tarefas simples em sua rede. Se você tiver um script de tarefa cron que é executado em um de seus servidores, considere movê-lo para o Lambda. Claro, Lambda não está limitado apenas a scripts simples. É muito poderoso e pode ser usado para criar back-ends de aplicativos robustos.

RELACIONADO: O que são funções Lambda e como usá-las?

Balanceadores de carga & Escala automática

Os balanceadores de carga são dispositivos de rede que dividem o tráfego entre os servidores. Tradicionalmente, você teria que configurar um servidor e configurá-lo sozinho usando um programa como o HAProxy. Na AWS, eles são integrados à rede e você simplesmente precisa ativá-los e pagar uma taxa mensal por um.

O escalonamento automático é outro recurso que se baseia nos balanceadores de carga. Em vez de ter sua lista de servidores estática, ela se baseia nas demandas de tráfego. Os servidores serão adicionados e removidos do pool conforme necessário.

Publicidade

Isso traz muitos benefícios, como já cobrimos, mas também tem impactos de longo alcance sobre como você usa e atualiza sua rede. Como o processo de instalação do seu servidor é automatizado, você pode fazer implantações de código azul / verde, que é quando os servidores são atualizados criando servidores totalmente novos, esperando o serviço ficar online e alternando o tráfego para eles lentamente para eliminar quaisquer problemas.

Se houver algo que recomendamos a todos que configurem com certeza, é o escalonamento automático de seus principais serviços EC2.

RELACIONADO: Como começar a usar os balanceadores de carga elástica da AWS

Pipelines automatizados de CI / CD

Shutterstock / Ribkhan

Integração / implantação contínua é o processo de configuração de uma compilação automatizada de seu aplicativo que implanta no servidor sempre que você faz alterações no controle de origem.

Basicamente, você envia um commit para o Github (ou qualquer outro repositório que você &’ está usando), e um serviço como o AWS CodePipeline inicia um servidor de compilação. Esse servidor cria e testa seu aplicativo e, se for bem-sucedido, envia a versão finalizada para seus servidores para atualização. Se você tiver configurado o escalonamento automático, isso pode ser feito com uma implantação azul / verde com a opção de reversão rápida e fácil, se necessário.

RELACIONADO: Como começar com os pipelines de CI / CD da AWS

Rede de distribuição de conteúdo integrada (CDN)

Ter um CDN pode acelerar muito os seus prazos de entrega. Como a AWS é basicamente uma superpotência de computação mundial, seu CDN possui nós de extremidade em todo o mundo. Muitos outros provedores de nuvem têm soluções semelhantes; O Cloud CDN do Google é um dos mais rápidos e flexíveis porque o Google realmente controla grande parte da infraestrutura que compõe a Internet.

RELACIONADO: Primeiros passos com o CDN do CloudFront da AWS

RELACIONADO: Como usar o Cloud CDN do Google para acelerar seu site

Você pode migrar sem tempo de inatividade?

A migração será um processo longo e complicado, mas não precisa significar um tempo de inatividade prolongado. É provável que você tenha um pouco de tempo de inatividade, mas o processo pode ser bastante simples.

Publicidade

Você pode adotar uma das duas estratégias — mover todos os seus servidores de uma vez e alternar toda a rede ou mover partes e partes de seus aplicativos para a nuvem e atualizar seus aplicativos para usar os novos serviços.

A segunda opção resultará em uma abordagem híbrida e é o que a maioria das grandes empresas opta por fazer, pois é mais econômico mover apenas o que mais se beneficia . A AWS tem muitos serviços que funcionam integrando hardware local à nuvem.

A primeira opção é fácil para pequenas implantações e é simplificada por serviços como o Application Migration Service da AWS, que pode mover rapidamente uma frota de servidores para o EC2. Você provavelmente ainda precisará de atualizações e configurações de código, mas isso pode mover toda a sua rede para um ambiente de teste onde você pode configurar tudo e, em seguida, realizar a transição quando estiver pronto.

RELACIONADO: Como migrar servidores para a nuvem facilmente com o serviço de migração de aplicativos da AWS

De qualquer forma, mudar para a nuvem é uma decisão longa que você deve verificar se foi bem pesquisada com um plano claro. Sua configuração específica irá variar muito, então você precisará examinar as práticas recomendadas para o tipo de aplicativo que deseja executar.

Nenhum comentário