PHP-разработчик
Коротко
Migrates PHP backend services and MySQL databases to MosBilet infrastructure, decouples from contractor package repo via Satis, bridges RabbitMQ buses, sets up · Needs: PHP 7.4, Yii2, Symfony, MySQL, RabbitMQ, Satis, Sentry, Graylog, Grafana, Rancher
Описание от работодателя
Департамент информационных технологий создает и развивает цифровые проекты, которые делают столицу комфортнее, а жизнь горожан — удобнее и мобильнее. Для системы управления столицей технологии — это незаменимый инструмент, который применяется во всех отраслях экономики, городского хозяйства и социальной сферы. А для миллионов горожан — повседневный помощник, который позволяет получать сотни услуг и сервисов в удобном цифровом формате в режиме 24/7.
МосБилет обеспечивает городу единую управляемую билетную экосистему для культурной отрасли: от покупки на сайте bilet.mos.ru и использования билета до сервисного сопровождения и отраслевой аналитики.
Что нужно делать:
переносить backend-сервисы и их базы из инфраструктуры портала в инфраструктуру Мосбилета: миграция данных, перенастройка конфигураций, проверка сохранности связей
разрывать зависимости от инфраструктуры сборки подрядчика: сейчас все PHP-сервисы собираются из репозитория пакетов подрядчика: нужно поднять собственный Satis и вычистить зашитые в пакеты данные
настраивать мост между нашей шиной RabbitMQ и шиной портала: есть внешние потребители, которые остаются на стороне портала, им нужно доставлять события с фильтрацией
переводить сервисы на собственный контур наблюдаемости: Sentry, Graylog, Grafana, Rancher
работать с миграцией данных: центральный сервис контура написан на PHP 7.4 и Yii2 с компонентами Symfony использует одну базу MySQL ещё с двумя сервисами, эти данные нужно разделить. Это главная архитектурная задача, и решать её вам
устранять последствия связанности: импорт из внешней билетной системы по таймеру генерирует тысячи операций записи, что может приводить перегрузкам БД по вводу-выводу
развивать сервисы контура на Symfony 6.4 и 7.4 с API Platform, поддерживать REST-контракты и Swagger по каждому сервису
поддерживать машину состояний редакционного конвейера
вести интеграции с внешней билетной системой, файловым хранилищем, поисковым индексом города, системой авторизации и контуром лояльности
поднимать замороженные интерфейсы, которые не обновлялись долгое время
покрывать тестами изменяемую бизнес-логику, поддерживать статический анализ
проводить код-ревью, в том числе кода внешних подрядных команд
разбирать продуктивные инциденты до корневой причины и внедрять меры против повторения
Какие знания и навыки важны:
отвечали за работающий сервис в продуктиве, а не только за задачи в спринт
был опыт принятия системы, автора которой рядом не было — от другой команды, от ушедшего подрядчика, из легаси
опыт изменений, которые нельзя было выкатить одним куском: миграция базы, переезд между средами или инфраструктурами, распил монолита, изменение контракта API с внешними потребителями
Symfony в бою — проектирование и сопровождение сервиса, а не отдельные задачи. Версии от 5.4 и выше, текущие в проекте 6.4 и 7.4
реляционная база на уровне «почему медленно» — PostgreSQL или MySQL: читаете планы запросов, работаете с индексами, проектируете схему
Будет плюсом:
Yii2 в боевом опыте. Центральный сервис контура на нём. Опыт в нем будет большим плюсом
опыт в билетных, платёжных, бронирующих или иных транзакционных системах: возврат, сверка, синхронизация статусов с внешней системой, пиковая нагрузка при открытии продаж
вы уже переносили работающий сервис вместе с базой между инфраструктурами и знаете, где это обычно ломается
API Platform — у нас версии 2.6 и 4.1, и есть задача перевода со старой на новую
расшивка сервисов, сидящих на общей базе, с миграцией данных и сохранением совместимости на время перехода
проектирование и сопровождение машин состояний с ролевой моделью
опыт работы приёмщиком по отношению к внешней команде разработки: ревью чужого кода, замечания, приёмка
государственные информационные системы, ГОСТ-документация, аттестованные контуры
Kubernetes и Rancher на уровне пользователя: понимать, что такое реплики, лимиты и автомасштабирование, и как это влияет на код
Graylog, Sentry, Jaeger, Swagger/OpenAPI, PHPStan или Psalm
наставничество, технические интервью, ведение код-ревью
Что предлагаем:
уютный офис в самом центре города (сейчас м. Таганская, но в скором времени будет м. Смоленская), где есть зоны для настольных игр, спортивные тренажеры, массажные кресла, своя кухня
мягкий график - старт работы варьируется с 9 до 11, 5/2, гибридный формат (3 дня в офисе)
работу в молодом, потрясающе дружном и профессиональном коллективе, где нет бюрократии, но есть мощное комьюнити по самым разным направлениям — от спорта до творчества/благотворительности
возможность повышения квалификации – внутреннее/внешнее обучение, наставничество внутри команды, онлайн библиотека, планирование индивидуального карьерного трека
социальный пакет — питание в офисе (молочная каша по утрам), материальная помощь в случае важных событий, скидки от партнеров на ДМС, связь, развлечения, подарки, спорт и т. д.
льготные преимущества аккредитованной IT-компании
ежегодное финансовое стимулирование по результатам работы
Стань частью команды ДИТ Москвы и воплощай в жизнь цифровые проекты столицы!