Чому прямий доступ до БД іншого сервісу - антипатерн?
Прямий доступ до бази даних іншого сервісу - антипатерн, тому що він порушує ключові принципи мікросервісної архітектури: ізоляцію, слабку зв'язаність і незалежність розгортання.
1. Порушення меж відповідальності
Кожен мікросервіс володіє своїми даними і бізнес-логікою. Якщо інший сервіс напряму звертається до його БД, він фактично втручається у внутрішній устрій - втрачається незалежність і безпека.
Приклад: сервіс «Доставка» напряму читає таблиці «Замовлень». Якщо «Замовлення» змінюють схему, «Доставка» ламається.
2. Неможливість незалежного оновлення
Спільні таблиці створюють жорстку зв'язаність. Не можна змінити структуру БД, не зачепивши чужий код - це вбиває ідею незалежних релізів.
3. Проблеми з консистентністю і транзакціями
За прямого доступу неможливо безпечно синхронізувати зміни між сервісами. Кожен сервіс повинен керувати лише своїми транзакціями, а не глобальними.
4. Втрата безпеки і контролю
Спільний доступ до БД відкриває ризик несанкціонованих змін і помилок: один сервіс може зіпсувати дані іншого.
5. Відсутність версіювання і контрактів
API можна версіювати і контролювати. Базу - ні. Будь-яка зміна схеми миттєво ламає споживачів.
Підсумок:
Прямий доступ до БД іншого сервісу - це як лізти у «нутрощі» чужого модуля. Спілкування має йти лише через публічний API або події, щоб зберігалася ізоляція і стійкість усієї системи.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.