С прошлого воскресенья вы задали несколько классных вопросов — пора на них ответить!

Если хотите, чтобы ваш вопрос попал в следующий выпуск — смело пишите в комментарии к этому посту. А если стесняетесь — можно и в личные сообщения канала 😉

Первый вопрос Как лучше организовать файловую структуру на сервере для микросервисов?

Тут нет никакого секрета. Каждый микросервис — это отдельное приложение, и логично, что оно должно быть изолировано от остальных. Оптимальное решение (на мой взгляд) — создать на сервере отдельную директорию для всего проекта, а внутри неё разместить папки каждого сервиса.

В каждой папке — свой docker-compose.yaml, свои конфиги, переменные окружения и так далее. Чтобы микросервисы могли «видеть» друг друга, достаточно подключить их к одной общей Docker-сети, например, к сети основного приложения. Так они смогут взаимодействовать по внутренним DNS-именам.

Дополнительно, в корневой директории можно создать общий docker-compose.yaml, который будет объединять docker-compose-файлы всех сервисов через extends или services, при этом каждый сервис останется независимым.

Второй вопрос Есть проект на фастапи, в каком слое надо написать бизнес-логику? Допустим проект "обмен валют", самый главный скрипт, где написан код пересчет курса валют, если в джанго это будет views, то здесь какой?

Неважно, FastAPI это, Django или бот на aiogram — слои (или хотя бы модули) стоит разделять по их логическому назначению. Если взять архитектуру из моих статей по FastAPI, у нас есть модуль routes.py, который отвечает только за приём запроса и отправку ответа. Всё, что происходит между этими действиями, выносится в отдельный модуль services.py. Именно там выполняется основная логика обработки запроса.

Есть также более низкий слой — managers.py, который отвечает только за работу с базой данных.

Такой подход делает код понятнее: ты всегда знаешь, что логика лежит в services.py, работа с БД — в managers.py, а маршруты — в routes.py. Это и есть разделение ответственности: каждый слой занимается своей задачей. Архитектурных вариантов много, но суть остаётся одной — код должен быть структурированным и легко поддерживаемым.


В этом посте были ссылки, но мы их удалили по правилам Сетки

С прошлого воскресенья вы задали несколько классных вопросов — пора на них ответить!
Если хотите, чтобы ваш вопрос попал в следующий выпуск — смело пишите в комментарии к этому посту | Сетка — социальная сеть от hh.ru
repost

50

input message

напишите коммент

еще контент в этом сообществе

еще контент в этом соообществе

войдите, чтобы увидеть

и подписаться на интересных профи

в приложении больше возможностей

пока в веб-версии есть не всё — мы вовсю работаем над ней

сетка — cоциальная сеть для нетворкинга от hh.ru

пересекайтесь с теми, кто повлияет на ваш профессиональный путь