Preparar-se para o crescimento
- 8 minutos
Você provavelmente já ouviu o ditado de que a preparação é a chave para o sucesso. Esse ditado é especialmente verdadeiro em relação ao crescimento suave, bem sucedido e confiável.
Uma das maiores vantagens da computação em nuvem é a capacidade de dimensionar. Essa habilidade levou alguns à suposição errônea de que não há necessidade de preparar ou planejar o crescimento na nuvem porque ela tem escala infinita.
É verdade que provavelmente há recursos mais do que suficientes na nuvem para atender às demandas do aplicativo. No entanto, há algumas razões pelas quais ainda é importante que você entenda suas necessidades de capacidade:
Embora provavelmente haja muitos recursos na nuvem para atender às suas necessidades, nem todos os serviços que você consome dimensionam automaticamente ou são inerentemente escalonáveis. Portanto, você precisa estar ciente dos limites de serviço e saber quando precisará escalar os serviços e recursos.
Os recursos de nuvem podem ser ilimitados, mas seu orçamento provavelmente não é. Você tem que considerar o custo, e seus amigos no departamento de Finanças querem saber seus gastos previstos na nuvem.
Plano de crescimento orgânico
O crescimento orgânico no mundo dos negócios refere-se ao processo pelo qual as organizações expandem sua própria capacidade, contando com recursos e habilidades intrínsecas para alimentar um crescimento mais lento e natural.
A primeira coisa que você deve fazer ao procurar planejar a capacidade na nuvem à medida que sua empresa cresce organicamente é mapear os requisitos de recursos atuais para os componentes maiores em seu aplicativo.
Cenário: Crescimento orgânico
Vamos retornar à arquitetura que analisamos no início deste módulo. A Tailwind Traders está prestes a lançar um novo produto inovador e está antecipando um crescimento dramático como resultado. Só para lembrá-lo, aqui está a aparência do diagrama de arquitetura deles.
Para iniciar o planejamento de capacidade, você precisa identificar os componentes maiores. Nesse exemplo, isso inclui:
- Cluster do Serviço de Kubernetes do Azure
- Aplicativo de recompensas em execução no Serviço de Aplicativo do Azure
- Vários bancos de dados, como Cosmos DB, SQL do Azure e similares.
Para cada um desses componentes grandes, você precisa entender o que é o uso de recursos atual para ajudá-lo a planejar o uso futuro. Vamos percorrer o uso de recursos para um desses componentes grandes.
Medir capacidade no Cosmos DB
No Cosmos DB, o armazenamento é medido em gigabytes e é dimensionado automaticamente, embora você ainda precise estar ciente das medidas por motivos de custo.
A taxa de transferência é pré-provisionada e você usa uma métrica chamada Unidades de Solicitação para medir essa taxa de transferência. As RUs (Unidades de Solicitação) são uma mistura de memória, CPU e IOPS, fornecendo uma única métrica pela qual você pode planejar a capacidade. Você provisiona RUs em incrementos de 100 RUs por segundo.
Cada operação de BD é medida em RU/s. As leituras são simples: uma leitura de 1 KB corresponde a uma única unidade de solicitação. Outras operações são calculadas com base em vários fatores, como tamanho do item, consistência de dados, padrões de consulta e assim por diante.
Ao criar o perfil do seu aplicativo, cada resposta do Cosmos DB contém o cabeçalho de cobrança da solicitação, informando exatamente quantas RUs a solicitação utilizou. Você pode comparar o número de RUs em uso com o número provisionado para verificar se você tem capacidade atual suficiente.
É bom correlacionar o uso de recursos a uma métrica de negócios, como usuários ativos mensais ou receitas. Essa correlação ajuda você a planejar a capacidade com base em como você espera que a empresa cresça. Você pode recuperar essas métricas de capacidade no Azure Monitor. Entender o uso de recursos do sistema ajuda você a saber quando será necessário escalar verticalmente e quais serão seus custos ao longo do tempo.
Vamos ser específicos e examinar os dados do uso do Cosmos DB pela Tailwind Traders. Aqui está um grafo de seu uso.
Neste exemplo, os comerciantes da Tailwind estão crescendo a uma média de 2.500 MAUs (usuários ativos mensais) com uma base de usuários atual de 10.000.
Se examinarmos o armazenamento, poderemos ver que o banco de dados deles está usando 300 GB dos 5 TB disponíveis (6%). Está crescendo a 1% ou 50 GB/mês.
Em termos de produtividade, ele está em 300/1000 e crescendo 10%/mês:
Agora que entendemos nossas métricas de recursos de sistemas, sabemos quando é provável que tenhamos que dimensionar nossa taxa de transferência e também quais serão nossos custos ao longo do tempo.
Agora podemos produzir um grafo que nos ajude com o planejamento de capacidade.
Agora sabemos que em maio atingiremos a capacidade de RUs em nosso banco de dados, então precisamos escalar antes disso. Uma outra visão interessante é que eles podem até diminuir o banco de dados Cosmos DB neste momento, pois não estão usando nem de perto a capacidade pré-provisionada.
Planejar o crescimento inorgânico
No exemplo anterior, você estava planejando o crescimento orgânico. O crescimento inorgânico decorre de fatores externos, em vez de um aumento nas atividades comerciais da própria empresa. Em vez de ser uma progressão natural, tende a envolver um aumento mais repentino e maior no uso.
Às vezes, você realmente não sabe antecipadamente sobre um aumento no tráfego, usuários e assim por diante. Em antecipação a esses casos, você precisa criar seu sistema para ser o mais escalonável possível automaticamente e falhar normalmente quando isso não for possível. Abordaremos isso posteriormente neste módulo.
Por outras vezes, como em um próximo lançamento de produto, você pode experimentar um crescimento inorgânico para o qual você pode planejar e se preparar. Se suas equipes trabalharem juntas em engenharia, produto, marketing e finanças, e você souber como obter seus padrões de uso e crescimento de recursos. Você pode fazer um esforço razoável para prever o impacto desses eventos em seus requisitos de recursos e implementar a alteração adequadamente.
Fazer isso corretamente é específico para sua organização e para o evento em questão. Você pode nem sempre acertar, mas estar tão preparado quanto você pode ser lhe dá uma vantagem.
Cenário: crescimento inorgânico
Vamos examinar outra situação hipotética como um exemplo de planejamento para o crescimento inorgânico. Há um próximo evento de marketing para o lançamento de um novo produto inovador de alto perfil na Tailwind Traders. Eles esperam que isso impulsione mais 5.000 usuários para seu site de vendas.
Usando dados do exemplo anterior de crescimento orgânico e correlacionando-os, espero que com causalidade, a uma métrica de negócios que você obteve de suas equipes de produto/marketing (por exemplo, número de usuários). Você pode começar a planejar o crescimento inorgânico.
Você sabe pelo cenário anterior que para 2500 usuários você precisa de aproximadamente 50 GB de armazenamento e 100 RUs. Agora você pode usar esses dados e determinar se está pronto para esse evento. Se pudermos esperar 5.000 usuários, isso exigirá 100 GB de armazenamento e 200 RU/s.
Podemos ver que as capacidades de armazenamento são mais do que suficientes para o crescimento esperado do evento. Essas capacidades são dimensionadas automaticamente para você, portanto, não há nenhuma preocupação aqui, exceto para entender os novos custos, que são resolvidos posteriormente.
Você também pode prever que suas RUs atingirão apenas 50% da capacidade após o evento. Portanto, eles não se preocupam em termos de capacidade do Cosmos DB para este evento.
No entanto, haverá um impacto no custo.
Você pode ver que os 100 GB de armazenamento extra custarão mais US$ 25/mês. O preço da taxa de transferência permanece o mesmo, pois os clientes pagam pelas RUs provisionadas e eles já têm mais do que o suficiente. A conclusão é que esse evento de marketing provavelmente aumentará sua fatura do CosmosDB em US$ 25.