1. С чего начать? (Платёжный шлюз: от идеи до production)

🧭 Чтобы лучше понять, какую задачу будет решать платёжный шлюз, обратимся к DDD — предметно-ориентированному проектированию. Этот подход предлагает сначала разобраться в работе бизнеса вместе с людьми, которые её знают, и договориться о значении основных понятий.

🛒 Представим интернет-магазин. Сегодня он принимает оплату через одного платёжного провайдера. Завтра потребуется подключить ещё одного — например, чтобы у покупателей было больше способов оплатить заказ. Но у каждого провайдера свои правила подключения и свой способ сообщать, прошёл платёж или нет. Магазину придётся разбираться с ними по отдельности.

Платёжный шлюз берёт эти различия на себя. Магазин отправляет ему данные заказа, шлюз создаёт платёж, выбирает провайдера и возвращает ссылку на страницу оплаты. После попытки оплаты провайдер сообщает результат шлюзу, а шлюз — магазину. Для магазина это единый способ работать с оплатой, независимо от выбранного провайдера.

🔎 Что здесь является предметной областью, или доменом? В рамках нашей серии это организация онлайн-платежей через различных провайдеров.

💼 Что такое поддомены и какие будем выделять? Поддомен — это логически выделенная часть домена, которая выполняет определённую функцию или решает конкретную задачу. Для нашего шлюза предварительно наметим поддомены: управление платежами, обработка платежей, отчётность и управление пользователями.

Ещё один принцип DDD, который нам пригодится, — единый язык. Это общие слова и выражения, которыми люди бизнеса и разработчики описывают понятия, действия и правила. Например, вместе уточняют, что означает «платёж прошёл» и при каких условиях об этом можно сообщить магазину. Так участникам проекта проще понимать друг друга.

Мы затронули первые понятия DDD на примере шлюза: определили предметную область, предварительно наметили поддомены и разобрали, зачем нужен единый язык.

В следующей части выясним, кому нужен шлюз, что от него ждут и что должно войти в первую версию 😉