Модульная модель данных в EF Core
The latest piece in a series on building modular applications in ASP.NET turns from services to data. An earlier article covered how each module registers its own services and exposes its own endpoints and pages, and the new one notes that each module also keeps its own data. In practice, even when every module is given a separate database, those databases still run on a single server or cluster. The author says there are several reasons for this and begins to set them out, starting with the practicalities of running database servers.
В прошлой статье мы разобрали какие средства для создания модульных приложений есть в ASP.NET. Каждый модуль может регистрировать свои сервисы и использовать свои эндпоинты и страницы. Но данные у каждого модуля свои. На практике даже если у каждого модуля своя база данных, то живут они все на одном сервере (кластере). Причин этому несколько. Во-первых серверы баз данных гораздо проще и дешевле масштабировать горизонтально, чем вертикально. Во-вторых один сервер баз данных вполне может обслужить десяток веб-серверов сравнимой мощности, если запросы оптимальные, на веб-серверы используют кэширование, а аналитическая нагрузка идет на реплики. Поддерживать разные хранилища данных для разных модулей когда у вас весь проект пилит одна команда, а в эпоху ИИ — один AI-инженер, выглядит совсем плохой идеей. Поэтому сегодня разберем как сделать модульную модель данных, когда каждый модуль видит свое подмножество сущностей, а хост собирает это все в одну базу данных. Читать далее