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.
CaseFomos 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.
AuditoriaAconteceu 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çosNos 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 tecnologiaEm 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 tarefasPara 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ínuaUm 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 montagemNo 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 errosO 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 processosPara 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çãoTodos 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çãoConforme 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 crescimentoNo 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.