Была поставлена задача разработать backend часть для образовательной платформы LearnFlow. Разработанный backend должен соответствовать всем современным стандартам, иметь распределенную и хорошо масштабируемую микросервисную архитектуру, иметь простой способ развертывания и выдерживать большое количество запросов.
Backend обязан производить регистрацию и аутентификацию пользователей с помощью отправки временного кода на адрес электронной почты. Создавать отдельный профиль для каждого пользователя, с возможностью последующего его редактирования. Также backend обязан хранить пользовательские практические задания.
Мной было решено разбить задачу на 3 независимых сервиса:
1) Auth-service - отвечает за авторизацию и регистрацию пользователей.
2) Users-service - отвечает за CRUD операции с пользовательским профилем.
3) Education-service - отвечает за сохранения пользовательского прогресса, а также размещение задач внутри тренажера.
При успешной регистрации пользователя, что может произойти только один раз, Auth-service направляет event в Kafka, которой затем подхватывает Users-service и создает профиль пользователя.
У каждого сервиса имеется своя отдельная база данных PostgreSQL.
Auth-service также использует Redis для временного хранения OTP.
Все сервисы запускаются внутри Docker контейнеров, и связываются с помощью Nginx API-Gateway.
Результат понравился заказчику. В итоге получилось современное, распределенное backend приложение, которое способно держать высокую нагрузку и полностью закрывает поставленную задачу.
www.learn-flow.ru github.com/WebCraftersGH/User-service github.com/WebCraftersGH/Education-service github.com/WebCraftersGH/Auth-service