[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-mikroservisy-chto-takoe-bounded-context-i-kak-on-svyazan-s-mikroservisami":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":16,"progress":17,"seo":18},820,"chto-takoe-bounded-context-i-kak-on-svyazan-s-mikroservisami",23,"mikroservisy","Микросервисы","🔗","Что такое Bounded Context и как он связан с микросервисами?","Bounded Context (ограниченный контекст) — это центральная концепция Domain-Driven Design, обозначающая границу, внутри которой определённая модель предметной области является согласованной и единообразной.\n\n> Аналогия из жизни: в разных отделах банка слово «клиент» означает разное. Для отдела продаж — это лид с контактами, для кредитного — заёмщик со скоринговым баллом, для платёжного — владелец счёта. Каждый отдел — это свой Bounded Context.\n\nВ разных контекстах одно и то же понятие может иметь разное значение. Например, «Клиент» в банковской системе:\n- В контексте продаж — это лид с контактными данными и историей взаимодействий.\n- В контексте кредитования — это заёмщик с кредитной историей и скоринговым баллом.\n- В контексте платежей — это владелец счёта с реквизитами.\n\nКаждый контекст имеет свою модель «Клиента», и это нормально. Попытка создать единую модель для всех контекстов приводит к «Большому комку грязи» (Big Ball of Mud).\n\nСвязь с микросервисами: один Bounded Context, как правило, соответствует одному микросервису (или группе тесно связанных сервисов).\n\n\u003Cdetails>\u003Csummary>Пример кода: разные модели клиента в разных контекстах\u003C\u002Fsummary>\n\n```java\n\u002F\u002F Контекст \"Платежи\" — своя модель клиента\npackage com.bank.payment.domain;\n\npublic class PaymentCustomer {\n    private Long id;\n    private String accountNumber;\n    private BigDecimal balance;\n    \u002F\u002F Здесь нет данных о кредитной истории — они не нужны\n}\n\n\u002F\u002F Контекст \"Кредитование\" — своя модель клиента\npackage com.bank.credit.domain;\n\npublic class CreditCustomer {\n    private Long id;\n    private CreditScore creditScore;\n    private List\u003CCreditHistory> history;\n    \u002F\u002F Здесь нет данных о балансе счёта\n}\n```\n\n\u003C\u002Fdetails>\n\n### Context Map\n\nContext Map — диаграмма, показывающая взаимосвязи между контекстами:\n- Shared Kernel — общий код между контекстами (минимизировать!).\n- Customer-Supplier — один контекст является потребителем данных другого.\n- Anti-Corruption Layer (ACL) — слой адаптации между контекстами, предотвращающий загрязнение модели чужими концепциями.\n- Published Language — формальный язык обмена данными (например, события в Kafka).\n\n> **На собеседовании:** связка «Bounded Context = микросервис» — это ключевой инсайт. Также упомяните Anti-Corruption Layer — он показывает, что вы понимаете, как защитить свою модель от чужих абстракций.","","middle",[15],"microservices",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Что такое Bounded Context и как он связан с микросервисами? — Gymterview","Bounded Context (ограниченный контекст) — это центральная концепция Domain-Driven Design, обозначающая границу, внутри которой определённая модель предметной об","Bounded Context (ограниченный контекст) — это центральная концепция Domain-Driven Design, обозначающая границу, внутри к",[15,13],"Bounded Context (ограниченный контекст) — это центральная концепция Domain-Driven Design, обозначающая границу, внутри которой определённая модель предметной области является согласованной и единообразной.",true]