Единый портал государственных услуг Туркменистана. Я был одним из двух backend-разработчиков платформы, на которой к началу 2024 года работало более 40 онлайн-услуг.
Моя роль
Один из двух backend-разработчиков (июнь 2022 – декабрь 2023). Работал над backend на Go и PostgreSQL, интеграциями с государственными и платёжными сервисами и развитием платформы.
Стек
Go
PostgreSQL
Задача
Каждая онлайн-услуга портала зависит от внешних систем — государственных ведомств и платёжных провайдеров, у каждого свой протокол, формат данных и уровень доступности. Платформе нужно было постоянно добавлять новые услуги так, чтобы каждая интеграция не превращалась в уникальный частный случай.
Архитектура
Граждане пользуются веб-порталом, который обращается к backend на Go. Backend хранит заявления и их статусы в PostgreSQL и взаимодействует с системами государственных ведомств и платёжными провайдерами через отдельные интеграции.
Ключевые решения
01Каждая внешняя система — за своим интеграционным модулем
Почему
Системы ведомств и платёжных провайдеров различаются протоколами и надёжностью. Изоляция каждой из них за единым внутренним интерфейсом — со своими таймаутами, обработкой ошибок и логированием — отделяет бизнес-логику услуг от деталей провайдеров и делает добавление новой услуги рутинной задачей.
Компромисс
Дополнительный слой абстракции; специфичные возможности провайдеров иногда требуют отдельной обработки.
02Изменения статуса оплаты — внутри транзакций
Почему
Callback-и от платёжных систем могут приходить с задержкой, дважды или не по порядку. Транзакционная запись переходов состояний в PostgreSQL сохраняет согласованность статуса заявления и статуса оплаты.
Компромисс
Более строгую модель статусов нужно поддерживать, а для крайних случаев всё равно нужна сверка.
03Go для сервисного слоя
Почему
Предсказуемая производительность, простая конкурентность для параллельных обращений к нескольким внешним системам и деплой одним бинарником.
Компромисс
Более явный и многословный код по сравнению с динамическими языками.
Что я сделал
Backend-разработка на Go и PostgreSQL
Интеграция сервисов государственных ведомств
Интеграция платёжных сервисов
Развитие платформы до 40+ онлайн-услуг к началу 2024 года