Миграция VPN сервиса
с PHP на Python

Технологии
Python
PyTest
Pydantic
Django
Описание проекта
Перенос сервиса с PHP на Python для ускорения работы, уменьшения количества багов и возможности быстро наращивать функционал.
Команда
Длительность
5 человек
в работе
Yostate
API
Django Ninja
Jupyter

О заказчике

Наш клиент — крупный сервис под NDA по продаже и управлению VPN и прокси-серверами. Изначально сервис был написан на PHP и его код был довольно громоздким.
PHP — хороший язык, на котором работает множество приложений, но его сложно структурировать. Со временем в код добавляют новые функции, он становится длинным и запутанным. Из-за этого сервис работает медленно. Его сложно поддерживать и масштабировать.
Заказчик обратился к нам, чтобы перевести свой сервис на Python. Python более структурирован, его код разбит на файлы. В процессе развития сервиса, можно без проблем заменять отдельные части на новые без влияния на остальные. Это помогает быстро масштабировать и развивать проект и сам сервис работает значительно быстрее.

Как решали проблему

Мы быстро провели переговоры, поняли проблему заказчика и приступили к работе. Команду сформировали моментально и масштабировали её от потребности на всем протяжении работ.
Нужно было проанализировать весь PHP-код и разработать стратегию его переноса на Python так, чтобы свести к минимуму простой сервиса при миграции. Этот процесс занял около трех месяцев. В результате мы разработали несколько детализированных планов миграции.
С помощью тщательного планирования мы определили последовательность работ, которая обеспечила бесперебойную работу сервиса на всех этапах.
Наладили тесное сотрудничество с командой разработчиков заказчика, чтобы избежать конфликтов и обеспечить слаженную работу во время переезда.
Провели работы поэтапно:
  • Перенесли инфраструктуру в облако;
  • Переработали Телеграм-бота — сначала бесшовно переключили, потом добавили функционал массовой рассылки пользователям;
  • Подключили нестандартные платежные системы;
  • Переработали корзину для заказа;
  • Разработали систему персональных счетов.
Переключали элементы сервиса постепенно и в результате у бизнеса заказчика ни разу не было простоя из-за переезда и пользователи его не заметили. Сайт ни на секунду не переставал работать и старые сервера не отключались. Например, есть корзина для покупки VPN на PHP. В один момент мы заменили ее на корзину на Python и никто этого не заметил.
В процессе использовали Python:
  • Pydantic,
  • PyTest,
  • Django,
  • Django Ninja,
  • Yostate,
  • собственные библиотеки API,
  • Jupyter.
Помимо перехода на Python, мы перенесли весь сервис на инфраструктуру в Digital Ocean с дублированием в Яндекс.Облаке. Настроили систему безопасных бэкапов, чтобы исключить вероятность сбоев в работе. Система стала надежнее и быстрее, с меньшим количеством багов. Также мы сделали простую и понятную админ-панель.

Результат

Сейчас сервис еще в процессе переезда, но сделана уже довольно большая часть работ. Значительная часть сервиса уже работает на Python, остальное нам предстоит перенести. Уже сейчас все программное решение работает значительно быстрее, его код систематизирован, в него заложены возможности быстрого масштабирования.

Другие проекты

Разработка индивидуальной CRM для Investmann. Компания сопровождает получение тендеров и банковских гарантий
Разработали сложную high-load систему для крупной AgroTech компании в формате аутстаф.
Рассказываем, как с нуля разработали CRM-систему для маркетплейсов с AI. Система может определять тональность отзывов и отвечать на них