Prepare-se para o crescimento
- 8 minutos
Você provavelmente já ouviu o ditado que diz que a preparação é a chave para o sucesso. Este 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 escalar. Essa capacidade levou alguns à suposição errônea de que não há necessidade de se 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 seu aplicativo. No entanto, há algumas razões pelas quais ainda é importante para você entender suas necessidades de capacidade:
Embora provavelmente haja muitos recursos na nuvem para atender às suas necessidades, nem todos os serviços que você consome são dimensionados automaticamente ou são inerentemente escaláveis. Assim, você precisa estar ciente dos limites de serviço e saber quando precisará escalar serviços e recursos.
Os recursos da nuvem podem ser ilimitados, mas o seu orçamento provavelmente não é. Você tem que considerar o custo, e seus amigos no departamento financeiro querem saber seu gasto previsto na nuvem.
Plano de crescimento orgânico
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 voltar à arquitetura que revisamos no início deste módulo. Tailwind Traders está prestes a lançar um novo produto inovador, e está antecipando um crescimento dramático como resultado. Apenas para lembrá-lo, aqui está como é o diagrama de arquitetura deles.
Para iniciar o planejamento de capacidade, você precisa identificar os componentes maiores. Neste exemplo, isso inclui:
- Cluster do Serviço Kubernetes do Azure
- Aplicativo de recompensas em execução no Serviço de Aplicativo do Azure
- Vários bancos de dados, como Cosmos DB, Azure SQL e similares.
Para cada um desses componentes grandes, você precisa entender qual é o uso atual de recursos, para ajudá-lo a planejar o uso futuro. Vamos analisar o uso de recursos para um desses grandes componentes.
Medir a capacidade no Cosmos DB
No Cosmos DB, o armazenamento é medido em gigabytes e dimensionado automaticamente, embora você ainda precise estar ciente das medições 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 unidades de solicitação (RUs) são uma mistura de memória, CPU e IOPS, oferecendo 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 banco de dados é medida em RU/s. As leituras são simples: uma leitura de 1 KB é 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.
Quando o utilizador faz o perfil da sua aplicação, cada resposta do Cosmos DB contém o cabeçalho de carga de pedido, informando exatamente quantos RUs essa solicitação utilizou. Você pode comparar o número de RUs que estão a ser utilizados com o número aprovisionado para verificar se tem atualmente capacidade mais do que 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 o negócio cresça. Você pode recuperar essas métricas de capacidade no Azure Monitor. Compreender o uso de recursos do sistema ajuda você a saber quando precisará aumentar a escala e quais serão seus custos ao longo do tempo.
Vamos ser concretos e olhar para os dados do uso do Cosmos DB pela Tailwind Traders. Aqui está um gráfico de seu uso.
Neste exemplo, os traders Tailwind estão crescendo a uma média de 2.500 usuários ativos mensais (MAUs) com uma base de usuários atual de 10.000.
Se olharmos para o armazenamento, podemos ver que seu banco de dados está usando 300 GB dos 5 TB disponíveis (6%). Está a crescer a 1% ou 50 GB/mês.
Do ponto de vista da taxa de transferência, encontra-se em 300/1000 e está a crescer 10%por mês.
Agora que entendemos nossas métricas de recursos de sistemas, sabemos quando provavelmente teremos que escalar nossa taxa de transferência e também quais serão nossos custos ao longo do tempo.
Agora podemos produzir um gráfico que nos ajuda com o planejamento de capacidade.
Agora sabemos que, em maio, vamos atingir a capacidade de RUs em nosso banco de dados, então precisamos escalar antes disso. Uma outra perceção interessante é que eles poderiam até reduzir seu banco de dados do Cosmos DB agora, pois não estão usando nem perto da capacidade pré-provisionada.
Plano de crescimento inorgânico
No exemplo anterior, você estava planejando o crescimento orgânico. 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 com antecedência sobre um aumento no tráfego, usuários e assim por diante. Em antecipação a esses casos, você precisa construir seu sistema para ser o mais escalável possível automaticamente, e falhar graciosamente quando isso não for possível. Abordaremos isso mais adiante neste módulo.
Para 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 trabalham juntas em engenharia, produto, marketing e finanças, e você sabe 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 alterações de acordo.
Acertar isto é específico para a sua organização e para o evento em particular. Você pode nem sempre acertar, mas estar o mais preparado possível lhe dá uma vantagem inicial.
Cenário: Crescimento inorgânico
Vejamos outra situação hipotética como exemplo de planeamento 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 direcione mais 5000 usuários para seu site de vendas.
Usando dados do exemplo anterior de crescimento orgânico e correlacionando-os, esperançosamente com a 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 5000 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ê, então não há nenhuma preocupação aqui, exceto para entender os novos custos, que serão abordados mais tarde.
Você também pode prever que os seus RUs atingem só 50% de capacidade após o evento. Então, eles não têm preocupações em termos de capacidade do Cosmos DB para este evento.
Haverá, no entanto, um impacto nos custos.
Você pode ver que os 100 GB de armazenamento extra vai custar um extra de US $ 25 / mês. O preço da taxa de transferência permanece o mesmo que os clientes pagam pelas RUs provisionadas, e eles já têm mais do que o suficiente. A conclusão é que este evento de marketing provavelmente aumentará sua conta do CosmosDB em US$ 25.