Архитектор с разделением интересов
При построении серверной архитектуры системы разделяйте задачи. Это общий принцип, которому следуют в контейнерных конструкциях, но он применим и к более мелким компонентам. Даже если компонент находится недалеко и отличается от него, распределите обязанности по отдельным файлам или каталогам.
Наиболее важной причиной построения таким образом является функциональная совместимость и модульность. Вы можете поменять вещи, когда это необходимо. Часто требования растут, и другая библиотека может выполнять дополнительные функции, поэтому вы хотите заменить старую. Или, может быть, вы переходите на платную услугу, которая обеспечивает лучшую точность или функции, поэтому вместо этого вам нужно ее поддерживать. Создавая это с учетом этого и сохраняя каждую библиотеку в отдельном огражденном бункере, вы можете с большей легкостью обмениваться вещами. Это подводит нас к следующему пункту о том, как должны взаимодействовать эти отдельные компоненты.
Во многих случаях вам нужен структурированный интерфейс между основными библиотеками и компонентами. Если у вас есть ETL или процесс приема данных, запись в промежуточную структуру часто предпочтительнее. Это может быть файл, база данных или поток данных, например kafka. Таким образом, результаты могут быть получены позже, если нижестоящее событие приведет к сбою или повреждению данных. В противном случае вы можете передавать данные между сервисами и микрокомпонентами с помощью API, хотя без сервиса воспроизведения или записи это обычно теряет воспроизводимость/отслеживаемость. В любом случае, для связи между службами часто рекомендуется хорошо определенный слой структурированного типа данных. Это может принимать разные формы, в зависимости от используемого вами стека технологий или предпочтительных промежуточных звеньев для используемых вами библиотек. Protobuf, JSON, yaml, csv, sql, txt — распространенные форматы.
При проектировании серверной службы нужно помнить о многом. Только один важный принцип — модульность и разделение задач. Обратитесь, если вам нужна помощь в разработке вашего MVP.
Оригинал статьи размещен на