Movendo o portal da Web: da arquitetura de monólito para microsserviço

Compartilhamos a experiência de modernizar a arquitetura do portal da Web, o que tornou possível tornar o produto conveniente, estável e tolerante a falhas: o tráfego aumentou de 350 mil para 7 milhões de usuários! A história será útil para quem planeja expandir seu produto. Primeiro, veremos quais fatores podem interferir no trabalho e no desenvolvimento do portal da web:

  • Obsolescência. A abordagem de usabilidade, adaptação a diferentes dispositivos, aparência e estrutura elementares deixam de atender às necessidades do público ao longo do tempo.
  • Obsolescência tecnológica. Os padrões e a tecnologia da Web estão em constante evolução. As mudanças afetam as ferramentas do desenvolvedor (por exemplo, estruturas, bancos de dados, outros softwares) e os fundamentos fundamentais da web. Do relativamente recente - uma transição maciça de http para https e o abandono do suporte ao DNS herdado.
  • Erros e falhas. Os desenvolvedores podem lidar imperfeitamente com suas tarefas e permitir falhas. Como resultado disso, podem ocorrer violações do site - começando com o fato de os botões não funcionarem na primeira vez, até que os sistemas falhem completamente.

Case

Fomos abordados por um cliente cujo portal da web precisava de mais desenvolvimento. A certa altura, era atingido um limite de 350 mil visitantes únicos todos os meses. Isso parecia insuficiente - o projeto claramente tinha perspectivas e tivemos que descobrir o que exatamente estava no caminho de ampliar ainda mais o recurso.

Auditoria

Aconteceu que o antigo mecanismo Bitrix não estava adaptado às cargas e à escala. Cada componente do sistema se cruzava estreitamente e dependia um do outro. A correção constante de bugs era uma tarefa tão torturante que propusemos uma arquitetura de microsserviço flexível e compreensível. Neles, cada componente é independente o suficiente para que os erros dentro dele não "danifiquem" os elementos restantes do sistema.

O Bitrix permaneceu a base da arquitetura - pelo menos, a autorização está vinculada a ela, mas onde era possível e prometia uma grande eficiência, transferimos a funcionalidade para os microsserviços. Eles se tornaram a pedra angular do projeto.

A nova arquitetura combinada nos proporcionou uma operação estável e mais rápida dos sistemas e uma quase completa ausência de erros em alguns módulos. Também serviu de base para o trabalho eficaz dos profissionais de marketing. Graças à arquitetura aprimorada, os especialistas em promoção conseguiram aumentar em 20 vezes o comparecimento do recurso.



Microsserviços

Nos microsserviços independentes, distinguimos módulos como carregador de arquivos, pesquisa e feed de notícias. Além dessas coisas óbvias e fáceis de usar, muitos outros elementos funcionais foram implementados na forma de microsserviços:

  • Descarregamento, armazenamento e gerenciamento de dados de projetos de código aberto;
  • Criação dinâmica de feeds RSS;
  • Criação dinâmica de um sistema de blocos, layout de materiais de quaisquer serviços em blocos estruturais;
  • Adicionando dados adicionais aos materiais de serviço;
  • Serviço de suporte técnico;
  • Um único catálogo de vários dados.

Além de todas as opções acima, criamos muitos microsserviços para um trabalho conveniente com o painel de administração.



Cada bloco funcional do site se tornou uma unidade bastante autônoma. Um processo dedicado é usado para carregar e renderizar, minimizando a interseção com outros serviços.

Concordo: quando um usuário faz um pagamento, ele não quer esperar muito tempo para carregar um script responsável por reproduzir um vídeo desnecessário em outra parte da página. De fato, é isso que acontece nos sistemas monolíticos - as funcionalidades laterais às vezes interferem no trabalho de componentes realmente importantes.

Demos o primeiro passo e facilitamos a vida de usuários e desenvolvedores, lançando mais de 20 novos serviços por ano. Como resultado:

  • Resolvemos o problema de dimensionamento.
  • Implementou um processo de desenvolvimento mais eficiente por equipes distribuídas.
  • Configure o gerenciamento dinâmico de recursos para uma operação rápida e suave do sistema.


Atualização da pilha de tecnologia

Em paralelo, atualizamos a pilha de tecnologia. Se o portal era originalmente baseado no php 5.6 e no MySQL 5.6, então, no aprimoramento do mecanismo, nós o mudamos para o php 7.0 e o MySQL 5.7. Implementou a estrutura Yii2, fornecendo o cache do memcache.



Fila de tarefas

Para melhor paralelizar as tarefas, transferimos trabalhadores da Web - manipuladores internos - para a fila do RabbitMQ. Otimiza a sequência de eventos acionadores, o que reduz a carga no sistema. Trabalhar com o site se tornou muito mais rápido e mais confortável.

Integração contínua

Um processo de desenvolvimento transparente e gerenciável é suportado usando o GitLab CI. Esse é um desenvolvimento contínuo e verdadeiramente contínuo, que deixa os programadores e testadores mais tempo com perguntas importantes em vez de corrigir os buracos.

Para minimizar erros, introduzimos loops de desenvolvimento adicionais. A cadeia consiste em vários loops de teste de aplicativos e infraestrutura: pré-lançamento, onde são realizados os últimos testes de montagem (pré-prod), combate (prod), vários loops de teste para testar várias construções de uma só vez, bem como um loop para desenvolvedores.

Sistema de montagem

No estágio inicial, as compilações são criadas a partir das fontes do projeto. Em vez de um conjunto diferente de classes, estilos e manipuladores, entidades combinadas são usadas - cada uma no shell de um arquivo executável. Somente construções necessárias são colocadas na montagem para executar eventos na página. Além disso, fornece flexibilidade e velocidade do site.

Monitoramento de erros

O GitLab CI fornece recursos avançados para validação de código e testes automatizados. Na menor discrepância de montagens com os parâmetros fornecidos, o sistema notifica os desenvolvedores e não permite iniciar o processo adicional de implementação de componentes até a correção dos erros. Além disso, instalamos o Sentry, uma ferramenta completa de monitoramento de erros.



Otimização de processos

Para manter o sistema em um estado de alto desempenho, otimizamos consistentemente os processos e a infraestrutura de negócios. Bibliotecas compartilhadas e protótipos de serviços tornaram-se a base para a rápida implementação de novas funções - tomamos modelos prontos e em pouco tempo obtemos um produto funcional.

Monitoramento e operação

Todos os processos estão à vista completa. Monitorando o status de cada nó, fornecemos o Zabbix - um sistema abrangente de rastreamento. Tivemos a oportunidade de analisar o núcleo da estrutura do projeto e vê-lo de forma compacta.

Também conectamos a plataforma Grafana, que transforma dados secos em um painel visual para a conveniência dos funcionários dos clientes.

Estabilização e refatoração

Conforme necessário, refatoramos o sistema - o código é simplificado e se torna conciso. Ao mesmo tempo, sempre há espaço para crescer, pois o doping regular dos sistemas acelera o local. Como resultado, o recurso se tornou mais amigável para os mecanismos de pesquisa e usuários.

Nova arquitetura é a base para o crescimento

No início do trabalho, o recurso tinha um potencial modesto de promoção e não era conveniente o suficiente para os clientes, o que impedia os processos de negócios da empresa. Para melhorar o processo de interação do usuário com o site, atualizamos quase completamente a arquitetura do portal e sua estrutura, criando um mecanismo flexível que se integra a um grande número de serviços e aplicativos, graças à nossa própria API. Muitos serviços estão funcionando de maneira ideal há mais de um ano, sem a necessidade de intervenção - o número de erros em seu trabalho diminuiu para quase zero.

O novo site é uma ferramenta poderosa para o desenvolvimento de negócios, com potencial para expansão adicional. Usando a arquitetura atualizada do aplicativo Web, os profissionais de marketing do projeto conseguiram implementar sua gama de atividades promocionais e aumentar o tráfego de 350 mil visitantes únicos por mês para mais de 7 milhões. Além disso, após um aumento múltiplo de audiência, o portal continua funcionando de forma estável.

Source: https://habr.com/ru/post/pt449538/


All Articles