[Parte 1 de 2]

O blog Hike apareceu em 12 de dezembro de 2012 e havia muito poucos leitores na época. Até 2016, atingimos 100 milhões de usuários registrados e 40 bilhões de postagens mensais. Mas esse crescimento destacou o problema de ampliar nossa infraestrutura. Para eliminá-lo, precisávamos de uma plataforma de alto desempenho a um preço acessível. Em 2016 e 2017, enfrentamos inúmeras interrupções no trabalho, tivemos que fazer algo urgentemente com isso, e começamos a considerar várias opções.
Precisávamos de uma plataforma em nuvem que pudesse criar, testar e implantar aplicativos rapidamente em um ambiente em nuvem escalável e confiável. À primeira vista, pode parecer que todas as principais plataformas de nuvem são semelhantes em muitos aspectos, mas têm várias diferenças fundamentais.
Dividiremos esta publicação em 2 partes:
- Motivo para escolher o GCP
- Mude para o GCP sem tempo de inatividade
Prova de conceito
Começamos comprovando a exatidão do conceito, no qual examinamos a compatibilidade da infraestrutura existente com os serviços oferecidos pela plataforma em nuvem Google Cloud e também planejamos elementos para desenvolvimento futuro.
Áreas-chave para validação de conceito:
⊹ balanceador de carga
Machine máquina de computação
⊹ Rede e firewalls
⊹ Segurança
⊹ Disponibilidade na nuvem
⊹ Big data
⊹ Faturamento
A confirmação do conceito incluiu teste e verificação da largura de banda de máquinas virtuais / balanceador de rede / carga, além de estabilidade, escalabilidade, segurança, monitoramento, cobrança, big data e serviços de aprendizado de máquina. Em junho de 2017, tomamos uma decisão importante de migrar toda a infraestrutura para a plataforma em nuvem do Google Cloud.
Queríamos escolher uma plataforma em nuvem que pudesse lidar com os inúmeros desafios que encontramos:
⊹ balanceador de carga:
Tivemos muitos problemas associados ao gerenciamento de clusters HAProxy locais para lidar com dezenas de milhões de conexões de usuários ativos diariamente. O Global Load Balancer (GLB) resolveu muitos de nossos problemas.

Usando o balanceamento de carga global do GCP, um único endereço IP da anycast pode encaminhar até 1 milhão de solicitações por segundo para vários servidores GCP, como MIGs (Managed Instance Groups), sem a necessidade de "pré-aquecimento". Nosso tempo de resposta geral melhorou 1,7 a 2 vezes desde que o GLB usa uma implementação de pool que permite distribuir o tráfego entre várias fontes.

Machine máquina de computação:
Não havia grandes problemas nos próprios computadores, mas precisávamos de uma plataforma de alto desempenho a um preço acessível. A taxa de transferência total das máquinas virtuais do Google aumentou de 1,3 a 1,5 vezes, o que permitiu reduzir o número total de instâncias de máquinas virtuais em execução.
Os testes Redis foram conduzidos com um cluster de 6 cópias (8 núcleos, 30 GB cada). Com base nos resultados abaixo, concluímos que o GCP fornece até 48% (médio) de melhorias de desempenho para a maioria das operações de REDIS e até 77% para operações específicas de REDIS.
redis-benchmark -h -p 6379 -d 2048 -r 15 -q -n 10000000 -c 100

O serviço de computação em nuvem do Google Compute Engine (GCE) forneceu benefícios adicionais no gerenciamento de nossa infraestrutura, usando o seguinte:
● Grupo de Instâncias Gerenciadas (MIG): o MIG nos ajuda a manter os serviços de aplicativos em um ambiente robusto com recursos de várias zonas, em vez de alocar recursos para cada zona. A MIG identifica e corrige automaticamente instâncias inoperantes em um grupo para garantir a operação ideal de todas as instâncias.
● Migração dinâmica: a migração dinâmica ajuda a manter as instâncias da máquina virtual, mesmo quando um sistema host falha, como na atualização de software ou hardware. Trabalhando com nosso parceiro de nuvem anterior, recebemos uma notificação sobre um evento de manutenção agendada e fomos forçados a parar e iniciar a máquina virtual para mudar para uma máquina virtual em funcionamento.
● Máquinas virtuais personalizadas: na estrutura do GCP, podemos criar nossas próprias máquinas virtuais com o poder de processamento do processador e a quantidade de memória necessária para cargas de trabalho específicas.
⊹ Rede e firewalls:
Gerenciar várias redes e regras de firewall não é fácil e pode ser arriscado. A VPC da rede GCP é global por padrão e fornece comunicação inter-regional sem configuração adicional e sem alterar a largura de banda da rede. As regras de firewall fornecem flexibilidade de VPC para projetos que usam o nome da regra de marca.
Para uma rede com baixa latência e maior largura de banda, fomos forçados a selecionar instâncias caras com uma largura de banda de 10 Gbit / se ativamos redes estendidas nessas instâncias.

⊹ Segurança:
A segurança é o aspecto mais importante para qualquer provedor de serviços em nuvem. No passado, a segurança não estava disponível para a maioria dos serviços ou era apenas uma opção adicional.
Os serviços em nuvem do Google são criptografados por padrão. O GCP usa vários níveis de criptografia para proteger os dados. O uso de vários níveis de criptografia fornece proteção para dados de backup e permite escolher a melhor abordagem com base nos requisitos do aplicativo, por exemplo, usando o serviço Proxy Identity-Aware Proxy e criptografando dados inativos por padrão.
Além disso, o GCP fecha vulnerabilidades catastróficas recentes baseadas em execução catastrófica na grande maioria dos processadores modernos (Meltdown, Spectre). O Google desenvolveu um novo método de modificação binária chamado Retpoline , que permite contornar esse problema e fazer alterações transparentes em toda a infraestrutura de trabalho de forma invisível para os usuários.
⊹ Disponibilidade na nuvem:
A disponibilidade dos recursos de GCP difere da de outros provedores de soluções em nuvem, pois a maioria dos recursos de GCP, incluindo o painel de controle, é zonal ou regional. Tivemos que gerenciar várias VPCs para projetos individuais a partir de contas separadas que precisavam emparelhar uma conexão VPC ou VPN para uma conexão privada. Também tivemos que manter uma cópia da imagem em uma conta separada.
No Google Cloud, a maioria dos recursos é global ou regional. Esses recursos incluem o painel de controle (onde podemos ver todas as máquinas virtuais do nosso projeto em uma tela), imagens de disco, contêineres para armazenamento de dados (várias regiões do continente), VPC (mas sub-redes separadas são regionais), balanceamento de carga global, publicação e assinatura etc.

⊹ Big data:
Passamos de uma configuração analítica monolítica e difícil de gerenciar para um sistema BQ totalmente gerenciado, o que levou a melhorias em três áreas:
● Maior velocidade de processamento de consultas em até 50 vezes.
● Sistemas de processamento de dados totalmente gerenciados com escala automática.
● O tempo de processamento de dados foi reduzido de horas para 15 minutos.
⊹ Carregamento:
Era difícil comparar diferentes provedores de serviços em nuvem, pois muitos serviços não eram semelhantes ou comparáveis, diferiam em diferentes cenários de uso e dependiam de cenários de uso exclusivos.
Benefícios do GCP:
● Descontos de uso a longo prazo: aplicados ao aumento do uso de máquinas virtuais quando determinados limites são atingidos. Podemos receber automaticamente um desconto de até 30% nas cargas de trabalho executadas durante a maior parte do mês contábil.
● Faturamento por minuto: ao alocar uma máquina virtual no GCE, é cobrada uma taxa por um período mínimo de 10 minutos, após o qual um faturamento por minuto para o uso real da máquina virtual é iniciado. Isso fornece uma redução significativa nos custos, pois não precisamos pagar uma hora inteira, mesmo que a instância da máquina esteja em execução menos de uma hora.
● Equipamento superior, menos instâncias: descobrimos que em quase todos os níveis e aplicativos, usando o GCP, você pode executar a mesma carga de trabalho com o mesmo desempenho, mas com menos instâncias.
● Compromisso em vez de redundância: outro fator é a abordagem da GCP ao preço das instâncias de máquinas virtuais. Na AWS, a principal maneira de reduzir o custo de uma instância de uma máquina virtual é comprar instâncias reservadas por um período de 1 a 3 anos. Se a carga de trabalho exigisse alterar a configuração da máquina virtual ou não precisássemos dessa instância, teríamos de vendê-la no mercado por instâncias reservadas a um preço mais baixo. O GCP possui um "Desconto de compromisso de compromisso" que se aplica ao reservar recursos de processador e memória, independentemente de quais instâncias de máquina virtual usamos.
Conclusão:
Com base nessa análise detalhada, decidimos mudar para o GCP e começamos a trabalhar no esquema de transição e nas listas de verificação. No próximo artigo, falaremos sobre o que aprendemos durante a implementação deste projeto.