Переход на бессерверную архитектуру
Бесшовная миграция приложений на бессерверную архитектуру для снижения затрат на обслуживание инфраструктуры и повышения масштабируемости проекта
Клиент
Под соглашением о неразглашении (NDA)
Проблемы и цели
- Сокращение расходов на обслуживание инфраструктуры
- Повышение стабильности системы
- Устранение уязвимостей Linux и снижение затрат на безопасность
- Бэкэнд находится в изолированной сети
- Повышенная сложность разработки мобильных приложений
Наши решения
- Шлюз API
- Шаблоны для шлюза API
- Лямбда-авторизатор
- Автоматическое сканирование уязвимостей
- Миграция на другого Auth-провайдера
- Ленивая миграция
Описание проекта
В начале проекта мы проанализировали существующую инфраструктуру и предложили несколько вариантов перехода в рамках наших услуг по модернизации. Чтобы подтвердить реализуемость идей, клиенту было предоставлено несколько PoC, включая: Elastic Beanstalk, Lambda-функции, AWS ECS (Forgate), AWS ECS (EC2), API Gateway, AWS App Runner.
Далее мы выполнили миграцию с WSO2 на API Gateway с использованием REST API. В качестве инструментов контейнеризации мы выбрали Docker и AWS Fargate, а для запуска контейнеров - технологию Amazon ECS. Кроме того, мы создали Lambda-функции для выполнения некоторых ежедневных заданий. Мы также создали несколько конвейеров развертывания для API Gateway (REST API), Lambda, AWS ECS (Forgate), чтобы автоматизировать процесс.
После этого мы оценили способы миграции с провайдера аутентификации Gigya на Auth0. Мы разработали решение для конвертации объектов из формата Gigya в формат Auth0. У заказчика был огромный объем данных, около 3,5 миллиона объектов, что создавало дополнительные трудности. Мы разработали стратегию, позволяющую обойти ограничения API Auth0 на импорт не более 150 записей и не более 2 одновременных импортов. Этот процесс миграции занял бы около недели. Чтобы сократить время миграции, мы применяем стратегию "ленивой миграции".
Стек технологий
- AWS ECS Fargate
- AWS App Runner
- Docker
- WSO2
- API Gateway
- REST API
- Lambda functions
- Elastic beanstalk
Основные действия
Результаты
Проект был выполнен нашими облачными инженерами в срок и позволил клиенту достичь следующих результатов:
- Получите бессерверный отказоустойчивый бэкэнд
- Упростить разработку мобильных приложений
- Сократите расходы на инфраструктуру и поддержку
- Масштабировать проект с меньшими затратами