{
    "componentChunkName": "component---src-templates-note-note-js",
    "path": "/notes/choreography-versus-orchestration",
    "result": {"data":{"mdx":{"body":"var _excluded = [\"components\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/notes/saga-pattern\",\n    \"title\": \"saga pattern\"\n  }, \"saga pattern\"), \"\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Choreography-based Saga Pattern\"), \": In this approach, each service in the transaction communicates directly with other services to coordinate their actions. There is no central coordinator or controller managing the transaction. Instead, each service publishes events to notify other services of its actions and subscribes to events to receive notifications from other services. This decentralized approach allows services to act independently, enhancing the system's scalability\", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://bootcamp.uxdesign.cc/saga-patterns-in-microservices-6d7aa38107f4\"\n  }, \"1\"), \".\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Orchestration-based Saga Pattern\"), \": This approach employs a central coordinator or controller service that manages the transaction. The coordinator sends messages to each service, instructing it on what actions to take and in what order. The coordinator is responsible for managing the flow of the transaction and coordinating the execution of each step in the saga. This centralized approach provides better control and visibility over the transaction flow but may introduce a single point of failure and reduce system scalability compared to the choreography-based approach\")), mdx(\"p\", null, \"\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/notes/AI-generated\",\n    \"title\": \"AI generated\"\n  }, \"AI generated\"), \"\"), mdx(\"p\", null, \"personally i prefer choreography for the customer flows(order life cycle) and orchestration for the internal flows(product onboarding and store onboarding).\"));\n}\n;\nMDXContent.isMDXComponent = true;","inboundReferences":[]}},"pageContext":{"slug":"choreography-versus-orchestration","node":{"childMdx":{"slug":"choreography-versus-orchestration"}}}},
    "staticQueryHashes": []}