Никита Кулижников Написал и запостил

Мои любимые проекты в студии М18

За пять лет работы в студии М18 у меня было немало проектов разной степени удачности. Были сложные технические проекты и красивые дизайнерские продукты.

Первый большой проект — телеграм-бот

Одна из первых больших и ответственных задач — внедрение телеграм-бота во внутренние процессы. Раньше в студии использовали Джаббер, но с появлением хорошего Telegram Bot API ребята запланировали переезд, оставалось найти свободные руки. Мне было очень интересно ещё глубже погрузиться в инфраструктуру компании, поэтому я нырнул в работу и изучение возможностей.

Первая версия была готова через неделю, я зарелизил её в субботу. Эта версия была синхронной — скрипты отправки ждали ответа от эндпойнта — поэтому в понедельник у ребят дико тормозили все внутренние сервисы, работать было невозможно. Бота пришлось отключить. Кроме того, я не учёл, что все работают в разное время, и лучше бы не получать важные уведомления в нерабочее время — на это мне недвусмысленно намекнули коллеги.

В следующих итерациях за пару месяцев решил многие проблемы — асинхронность, отложенную отправку уведомлений, широковещательные сообщения и проч. С тех пор бот стал незаменимым инструментом в работе студии, во времена блокировок мы даже поднимали прокси-серверы, чтобы работа не останавливалсь.

Разработка внутреннего бота вдохновила меня на написание фреймворка, который я по сей день использую при создании ботов — как коммерческих, так и личных.

Сервисы для российского сегмента финского застройщика YIT

За 2,5 месяца мы с командой создали мультисайтовую систему (семь сайтов), которая построена на одном движке с единой базой квартир и объектов недвижимости. Я отвечал за написание кода движка и модуля мультидоменности.

Полностью отвечал за этот реализацию двустороннего обмена между сайтом и системой управления квартирографией — спроектировал, задокументировал и реализовал REST API, на который клиент отправлял асинхронные пуши с обновлением данных.

Построили продакшен-окружение из балансировщика, веб-серверов, CDN и сервера-бэкапов. Курировал проект, считал стоимость и занимался непосредственно администрированием.

Реализовали модуль бронирования квартир в реальном времени. Писал код серверной части модуля, проводил ревью фронтенда.

Также выполнял стандартные обязанности лида — проводил код-ревью, ставил задачи разработчикам.

На старте работ я спроектировал модульную архитектуру для ускорения разработки (работы велись параллельно) и не прогадал — весной Эталон выкупил российский сегмент YIT и мы за четыре недели полностью переписали код модулей, которые «смотрят наружу», заменив обращения к сервисам YIT на службы Эталона.

Проект закрыт.

Развитие сайта ЦДС

Проект появился в студии ещё до начала моей работы, поэтому я присоединился к нему на стадии развития и сопровождения. Наиболее интересные задачи, которые я решил:

  1. Полный рефакторинг кода — PHP 5.6 → PHP 7.1 → PHP 7.4.
  2. Создание личного кабинета дольщика с двухфакторной аутентификацией, статистикой и журналом событий. Все данные хранятся в защищённом контуре клиента, с закрытым доступом через АПИ.
  3. Кэширование в redis данных о квартирах. Нетривиальность задачи в том, что закэшированы должны быть все поля, кроме статусов и цен — они должны обновляться в режиме реального времени.
  4. Совместно с техническим директором клиента спроектировали систему четырёх окружений — local, dev, preprod, prod. Реализовал многоуровневый деплой с зеркалированием репозиториев кода — мы разрабатываем во внутреннем гитлабе, код тестируется и раскатывается на наш dev-сервер, затем пушится на препрод, тестируется и собирается там, затем отправляется на продакшен.
  5. Модуль имейл-рассылки через почтовый сервер клиента. Написал собственный конструктор писем на основе маркдаун-разметки, а также реализовал очередь отправки (около 20 тысяч писем в сутки) с учётом таймаутов и правил рассылок. Вывожу статистику в реальном времени.

В настоящий момент занимаюсь написанием микросервисов конвертации видео на Python.

Развитие сайта Design Prosmotr

В этом проекте я отвечаю за сервис биллинга и оплаты билетов, а также за их квотирование. Так, стоимость билетов может меняться в реальном времени в зависимости от количества проданных мест и текущей даты. Также между сезонами регулярно оптимизирую код из-за высокой нагрузки на старте продаж.

Модуль генерации билетов тоже написан мной с нуля — я создаю билет в PDF и наношу на него штрихкод, который вследствие считывается на входе чекером, подключённым к сервису проверки статусов.

Для этого проекта написал бота-регистратора, основанного на моём фреймворке.

Административные задачи

Отвечаю за техническую часть всех проектов студии — от сайтов банков до небольших сайтов жилых комплексов. Плотно работаю с командой:

Пишу библиотеки под нужды проектов. Ниже — пара репозиториев из открытых: