Описание проекта, цели и задачи Ссылка на заголовок

Проект представлял собой разработку Чат-бота для крупной международной фармацевтической компании MERCK. Я работал в роли DevOps-инженера в кросс-функциональной команде. Основной задачей было обеспечение стабильного CI/CD, автоматизация процессов разработки и бизнес-операций, а также взаимодействие с внешними инфраструктурными командами компании.

Ключевые цели:

  • Развернуть новое окружение
  • Перенести CI/CD с Jenkins на GitHub Actions
  • Автоматизировать ручные бизнес-процессы (ETL)
  • Поддерживать и расширять инфраструктуру проекта через Terraform

Команда:

  • Техлид
  • ML-инженер
  • Фронтенд-инженер
  • Backend/Search-инженер
  • Project Manager
  • Business Analyst
  • DevOps (я)

📈 Ключевые результаты и дальнейшее развитие Ссылка на заголовок

  • Настроил VPC endpoint для API Gateway и интеграцию с CloudFront — публикация интерфейса происходила через внешнюю команду, в чьё окружение нужно было встраиваться.
  • Выполнил полный переход CI/CD-процессов на GitHub Actions, включая рефакторинг пайплайнов и интеграцию с Artifactory для хранения артефактов Lambda-функций.
  • Автоматизировал загрузку отчетов из SharePoint в базу данных MySQL через AWS Lambda.
  • Реализовал Jenkins-задачу как интерфейс запуска — раньше разработчики вручную вызывали SQL-процедуры, теперь достаточно указать имя отчета, и процесс полностью автоматизирован.
  • 📉 Сократил ручной труд команды разработки на ~4 часа в неделю.
  • Расширил и отрефакторил Terraform-модули.
  • Учитывал ограничения по безопасности и авторизации через Amazon Cognito и CloudFront-политику.
  • Повышена стабильность и воспроизводимость инфраструктуры за счёт полной декларации через Terraform
  • Ускорен цикл поставки за счёт перехода на GitHub Actions
  • Упрощены и автоматизированы ручные процессы, что позволило снизить риски ошибок и сократить нагрузку на команду
  • Обеспечено бесшовное взаимодействие с инфраструктурой смежных команд

🏗 Архитектура решения и процесс разработки Ссылка на заголовок

  • AWS-окружение: API Gateway, Lambda, S3, MySQL, Cognito, CloudFront
  • Пайплайны: сначала Jenkins, затем миграция на GitHub Actions с учётом новых требований
  • Инфраструктура: Terraform-модули с учётом ограничений безопасности MERCK (например, управление доступом к интернету через CloudFront)
  • ETL: Lambda-функция + Jenkins-задача, интеграция с SharePoint и MySQL

⚙️ Детали реализации, особенности и сложности Ссылка на заголовок

Во время проекта я поддерживал пайплайны Jenkins для CI/CD и других автоматизированных задач. Я также выполнил миграцию пайплайнов с Jenkins на GitHub Actions, что потребовало рефакторинга процессов CI/CD. В рамках этой миграции я настроил интеграцию пайплайна с Artifactory для хранения артефактов Lambda-функций.

Я создал новую тестовую среду с нуля. Согласно политикам безопасности MERCK, существуют определённые ограничения. Например, доступ в интернет осуществляется через отдельную команду CloudFront. Чтобы опубликовать наш новый пользовательский интерфейс, мне нужно было предоставить этой команде доступ к нашему S3-бакету и вставить полученную от них политику в настройки бакета UI. Кроме того, авторизация осуществляется через кастомные пуулы Amazon Cognito, настройки которых также были переопределены инфраструктурным кодом команды CloudFront. Я также запросил и настроил новый VPC Endpoint для API Gateway.

В проекте использовался сложный ручной процесс регулярной загрузки данных из отчётов SharePoint в базу данных. Я разработал Lambda-функцию, которая умеет парсить эти данные и загружать их в базу. Также я создал отдельную Jenkins-задачу, которая служит интерфейсом для запуска Lambda. Это значительно упростило процесс. Ранее разработчики запускали SQL-процедуры вручную через MySQL Workbench. Теперь, при добавлении нового отчёта в SharePoint, мы получаем уведомление по email, запускаем Jenkins-задачу с указанием имени отчёта, и Lambda-функция автоматически скачивает, обрабатывает и загружает данные в MySQL.