{"id":671,"date":"2021-04-02T17:43:39","date_gmt":"2021-04-02T12:13:39","guid":{"rendered":"https:\/\/www.ninjacart.in\/blog\/?p=671"},"modified":"2022-05-26T12:50:57","modified_gmt":"2022-05-26T07:20:57","slug":"ninjacarts-journey-of-creating-an-event-driven-architecture-eda","status":"publish","type":"post","link":"https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/","title":{"rendered":"Ninjacart\u2019s journey of creating an Event Driven Architecture (EDA)"},"content":{"rendered":"<p><em>In this article, we will talk about our journey of creating Event Driven Architecture (EDA). We\u2019ll cover the issues we faced before our EDA, things to keep in mind while designing it, and some technologies and\/or solutions for EDA. To understand the rationale behind EDA, we must first understand how we reached there and the choices we made leading up to it.<\/em><\/p>\n<h3>Story so far<\/h3>\n<p>Being a startup, in the early years of product development Ninjacart\u2019s main aim was rapid iteration and fast releases. With a small development team, it wasn\u2019t possible to focus on building a sprawling expanse of microservices because a lot of time would be unnecessarily spent on solving a problem that didn\u2019t exist yet. Therefore, we went ahead with a <strong>monolith-first approach.<\/strong><\/p>\n<p>This approach helped us focus on understanding the domain without paying an extra premium for a complex system design. In a monolith, deployment is straightforward, there are no network calls between parts of code and most things can be bound by a transaction. This was important for a team that was just breaking into a domain like B2B agritech where the entire business and product model was unknown.<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"alignleft size-full wp-image-674\" src=\"https:\/\/www.ninjacart.in\/blog\/wp-content\/uploads\/2021\/04\/Monolith-vs-Microservices-edited.png\" alt=\"\" width=\"1200\" height=\"666\" srcset=\"https:\/\/ninjacart.com\/blog\/wp-content\/uploads\/2021\/04\/Monolith-vs-Microservices-edited.png 1200w, https:\/\/ninjacart.com\/blog\/wp-content\/uploads\/2021\/04\/Monolith-vs-Microservices-edited-300x167.png 300w, https:\/\/ninjacart.com\/blog\/wp-content\/uploads\/2021\/04\/Monolith-vs-Microservices-edited-1024x568.png 1024w, https:\/\/ninjacart.com\/blog\/wp-content\/uploads\/2021\/04\/Monolith-vs-Microservices-edited-768x426.png 768w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/><\/p>\n<h3><\/h3>\n<h3><\/h3>\n<h3>Trouble in paradise<\/h3>\n<p>The monolithic approach soon started to break. As our team size increased, more product flows had to be taken care of, and there were requirements that were not always completely comprehensible. Hence, it suffered from uncontrolled complexity growth.<\/p>\n<p>As we started breaking down the complex system into simpler parts that were interacting with each other, the complexity was not reduced. It just moved to a \u2018macro\u2019 level, which created a \u2018distributed monolith\u2019. Fundamentally, systems must communicate with each other and that creates a degree of interdependence <em>&#8211;<\/em><strong><em> coupling<\/em><\/strong>.<\/p>\n<p>Moving further, ensuring a state of <strong>consistency<\/strong> in a distributed system was perhaps the most difficult aspect to get right. When parts of the distributed system eventually failed, all ephemeral states got lost, leaving the system in an inconsistent state that had somehow persisted, which could go wrong.<\/p>\n<h3>So, what do we do about it?<\/h3>\n<p>EDA is a paradigm promoting the production, detection, consumption of, and reaction to events. An event is any change in state that may be of interest to any participants or stakeholders in the system or outside the system.<\/p>\n<p>EDA consists of 3 main parts:<\/p>\n<ol>\n<li>Emitters<\/li>\n<li>Consumers<\/li>\n<li>Channels<\/li>\n<\/ol>\n<p><img decoding=\"async\" class=\"size-full wp-image-675 aligncenter\" src=\"https:\/\/www.ninjacart.in\/blog\/wp-content\/uploads\/2021\/04\/blog-dgm1-01.png\" alt=\"\" width=\"803\" height=\"514\" srcset=\"https:\/\/ninjacart.com\/blog\/wp-content\/uploads\/2021\/04\/blog-dgm1-01.png 803w, https:\/\/ninjacart.com\/blog\/wp-content\/uploads\/2021\/04\/blog-dgm1-01-300x192.png 300w, https:\/\/ninjacart.com\/blog\/wp-content\/uploads\/2021\/04\/blog-dgm1-01-768x492.png 768w\" sizes=\"(max-width: 803px) 100vw, 803px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>An emitter of an event is not made aware of any of the event\u2019s downstream consumers. Every event raised should be like a radio or a newspaper-broadcast. Similarly, a consumer should react to an event without basing it on what particular emitter created it.<\/p>\n<p>Another thing to keep in mind is that events are <strong>immutable<\/strong>. Once an event is raised, it cannot be altered. One can raise more events in reaction to it, but the original event remains the same.<\/p>\n<h3><\/h3>\n<h3>Some use Cases<\/h3>\n<p>A way EDA can be used and one that we are moving towards is managing the entire system state through various events being raised by parts of the system.<\/p>\n<p>For example \u2014<\/p>\n<ol>\n<li>Every time status of an order placed by customer changes (<em>placed, pending, processing, out-for-delivery, delivered<\/em>), an event can be raised that triggers:<br \/>\na.\u00a0Finance module &#8211; to create invoice<br \/>\nb. Inventory management &#8211; to add or subtract stock<br \/>\nc. Communication modules &#8211; to send an email\/SMS to customer<\/li>\n<li>A delivery vehicle can send a location ping back to the system periodically which raises an event to alert the customer when order delivery is about to be made.<\/li>\n<li>The relational database can raise an event every time certain tables are written to, that trigger the analytics system to refresh dashboards or adjust projections.<\/li>\n<\/ol>\n<h3><\/h3>\n<h3>Technologies<\/h3>\n<p>We use a mix of AWS SQS for simple use cases that need events raised as one-to-one fast messages. For publisher-subscriber use cases, a self-hosted Apache Kafka cluster is used.<\/p>\n<p>Another popular tool is RabbitMQ that has fast, reliable queues with built-in user-friendly monitoring and management tools. It is a good fit if you don\u2019t need a durable message broker to keep your events stored and the ability to replay them later.<\/p>\n<p><img decoding=\"async\" class=\"alignleft size-full wp-image-676\" src=\"https:\/\/www.ninjacart.in\/blog\/wp-content\/uploads\/2021\/04\/blog-dgm2-01.png\" alt=\"\" width=\"2463\" height=\"1011\" srcset=\"https:\/\/ninjacart.com\/blog\/wp-content\/uploads\/2021\/04\/blog-dgm2-01.png 2463w, https:\/\/ninjacart.com\/blog\/wp-content\/uploads\/2021\/04\/blog-dgm2-01-300x123.png 300w, https:\/\/ninjacart.com\/blog\/wp-content\/uploads\/2021\/04\/blog-dgm2-01-1024x420.png 1024w, https:\/\/ninjacart.com\/blog\/wp-content\/uploads\/2021\/04\/blog-dgm2-01-768x315.png 768w, https:\/\/ninjacart.com\/blog\/wp-content\/uploads\/2021\/04\/blog-dgm2-01-1536x630.png 1536w, https:\/\/ninjacart.com\/blog\/wp-content\/uploads\/2021\/04\/blog-dgm2-01-2048x841.png 2048w\" sizes=\"(max-width: 2463px) 100vw, 2463px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>To avoid the effort of doing it all in-house or to begin with EDA for small projects, it might make sense to use a fully managed Kafka cluster as a service. There are solutions available like AWS and Confluent, among others. In such cases, one needs to keep in mind the trade between ease of use and cost. Without proper care and management, such services can quickly run up to hundreds of dollars in monthly bills.<\/p>\n<p><em>This was only a brief introduction to the vast expanse of EDA. For more information, feel free to connect back to us and we would be happy to help.<\/em><\/p>\n<p style=\"text-align: center;\"><strong>. . .<\/strong><\/p>\n<p><em>Written by<\/em><br \/>\n<strong>Saurabh Sharma<\/strong><br \/>\nSDE-II (Logistics)<br \/>\nTech Team &#8211; Ninjacart<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this article, we will talk about our journey of creating Event Driven Architecture (EDA). We\u2019ll cover the issues we faced before our EDA, things to keep in mind while designing it, and some technologies and\/or solutions for EDA.<\/p>\n","protected":false},"author":1,"featured_media":673,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_wp_applaud_exclude":false,"footnotes":""},"categories":[167,5],"tags":[22,107,20,46,108,13,15,34,19,25,10],"class_list":["post-671","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-architecture","category-technology","tag-agritech","tag-architecture","tag-coding","tag-data-science","tag-event-driven-architecture","tag-logistics","tag-ninjacart","tag-startup","tag-supply-chain","tag-tech","tag-technology"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Ninjacart\u2019s journey of creating an Event Driven Architecture (EDA) - Ninjacart Blogs<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ninjacart\u2019s journey of creating an Event Driven Architecture (EDA) - Ninjacart Blogs\" \/>\n<meta property=\"og:description\" content=\"In this article, we will talk about our journey of creating Event Driven Architecture (EDA). We\u2019ll cover the issues we faced before our EDA, things to keep in mind while designing it, and some technologies and\/or solutions for EDA.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/\" \/>\n<meta property=\"og:site_name\" content=\"Ninjacart Blogs\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ninjacart\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-04-02T12:13:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-05-26T07:20:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ninjacart.com\/blog\/wp-content\/uploads\/2021\/04\/EDA_Blog-01.png\" \/>\n\t<meta property=\"og:image:width\" content=\"5000\" \/>\n\t<meta property=\"og:image:height\" content=\"2417\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ninjacart\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ninjacart\" \/>\n<meta name=\"twitter:site\" content=\"@ninjacart\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ninjacart\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/\"},\"author\":{\"name\":\"Ninjacart\",\"@id\":\"https:\/\/ninjacart.com\/blog\/#\/schema\/person\/7e7721235305597f394ea9ce642e38b2\"},\"headline\":\"Ninjacart\u2019s journey of creating an Event Driven Architecture (EDA)\",\"datePublished\":\"2021-04-02T12:13:39+00:00\",\"dateModified\":\"2022-05-26T07:20:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/\"},\"wordCount\":811,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/ninjacart.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ninjacart.com\/blog\/wp-content\/uploads\/2021\/04\/EDA_Blog-01.png\",\"keywords\":[\"Agritech\",\"Architecture\",\"Coding\",\"Data Science\",\"Event Driven Architecture\",\"Logistics\",\"Ninjacart\",\"startup\",\"Supply Chain\",\"Tech\",\"Technology\"],\"articleSection\":[\"Architecture\",\"Technology\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/\",\"url\":\"https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/\",\"name\":\"Ninjacart\u2019s journey of creating an Event Driven Architecture (EDA) - Ninjacart Blogs\",\"isPartOf\":{\"@id\":\"https:\/\/ninjacart.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ninjacart.com\/blog\/wp-content\/uploads\/2021\/04\/EDA_Blog-01.png\",\"datePublished\":\"2021-04-02T12:13:39+00:00\",\"dateModified\":\"2022-05-26T07:20:57+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/#primaryimage\",\"url\":\"https:\/\/ninjacart.com\/blog\/wp-content\/uploads\/2021\/04\/EDA_Blog-01.png\",\"contentUrl\":\"https:\/\/ninjacart.com\/blog\/wp-content\/uploads\/2021\/04\/EDA_Blog-01.png\",\"width\":5000,\"height\":2417},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ninjacart.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ninjacart\u2019s journey of creating an Event Driven Architecture (EDA)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/ninjacart.com\/blog\/#website\",\"url\":\"https:\/\/ninjacart.com\/blog\/\",\"name\":\"Ninjacart Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/ninjacart.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/ninjacart.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/ninjacart.com\/blog\/#organization\",\"name\":\"Ninjacart\",\"url\":\"https:\/\/ninjacart.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ninjacart.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.ninjacart.in\/blog\/wp-content\/uploads\/2022\/03\/NC-Logo-_white-BG-01.png\",\"contentUrl\":\"https:\/\/www.ninjacart.in\/blog\/wp-content\/uploads\/2022\/03\/NC-Logo-_white-BG-01.png\",\"width\":200,\"height\":200,\"caption\":\"Ninjacart\"},\"image\":{\"@id\":\"https:\/\/ninjacart.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/ninjacart\/\",\"https:\/\/x.com\/ninjacart\",\"https:\/\/www.instagram.com\/ninjacart_official\/\",\"https:\/\/www.linkedin.com\/company\/ninja-cart\/mycompany\/verification\/\",\"https:\/\/www.youtube.com\/channel\/UCYjRMgDjCp6wat86aUt_5aw\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/ninjacart.com\/blog\/#\/schema\/person\/7e7721235305597f394ea9ce642e38b2\",\"name\":\"Ninjacart\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ninjacart.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/eacac7946a311112e83632dcb71e01dc953b8bef0b34114e79588c100608437d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/eacac7946a311112e83632dcb71e01dc953b8bef0b34114e79588c100608437d?s=96&d=mm&r=g\",\"caption\":\"Ninjacart\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Ninjacart\u2019s journey of creating an Event Driven Architecture (EDA) - Ninjacart Blogs","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/","og_locale":"en_US","og_type":"article","og_title":"Ninjacart\u2019s journey of creating an Event Driven Architecture (EDA) - Ninjacart Blogs","og_description":"In this article, we will talk about our journey of creating Event Driven Architecture (EDA). We\u2019ll cover the issues we faced before our EDA, things to keep in mind while designing it, and some technologies and\/or solutions for EDA.","og_url":"https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/","og_site_name":"Ninjacart Blogs","article_publisher":"https:\/\/www.facebook.com\/ninjacart\/","article_published_time":"2021-04-02T12:13:39+00:00","article_modified_time":"2022-05-26T07:20:57+00:00","og_image":[{"width":5000,"height":2417,"url":"https:\/\/ninjacart.com\/blog\/wp-content\/uploads\/2021\/04\/EDA_Blog-01.png","type":"image\/png"}],"author":"Ninjacart","twitter_card":"summary_large_image","twitter_creator":"@ninjacart","twitter_site":"@ninjacart","twitter_misc":{"Written by":"Ninjacart","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/#article","isPartOf":{"@id":"https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/"},"author":{"name":"Ninjacart","@id":"https:\/\/ninjacart.com\/blog\/#\/schema\/person\/7e7721235305597f394ea9ce642e38b2"},"headline":"Ninjacart\u2019s journey of creating an Event Driven Architecture (EDA)","datePublished":"2021-04-02T12:13:39+00:00","dateModified":"2022-05-26T07:20:57+00:00","mainEntityOfPage":{"@id":"https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/"},"wordCount":811,"commentCount":0,"publisher":{"@id":"https:\/\/ninjacart.com\/blog\/#organization"},"image":{"@id":"https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/#primaryimage"},"thumbnailUrl":"https:\/\/ninjacart.com\/blog\/wp-content\/uploads\/2021\/04\/EDA_Blog-01.png","keywords":["Agritech","Architecture","Coding","Data Science","Event Driven Architecture","Logistics","Ninjacart","startup","Supply Chain","Tech","Technology"],"articleSection":["Architecture","Technology"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/","url":"https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/","name":"Ninjacart\u2019s journey of creating an Event Driven Architecture (EDA) - Ninjacart Blogs","isPartOf":{"@id":"https:\/\/ninjacart.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/#primaryimage"},"image":{"@id":"https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/#primaryimage"},"thumbnailUrl":"https:\/\/ninjacart.com\/blog\/wp-content\/uploads\/2021\/04\/EDA_Blog-01.png","datePublished":"2021-04-02T12:13:39+00:00","dateModified":"2022-05-26T07:20:57+00:00","breadcrumb":{"@id":"https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/#primaryimage","url":"https:\/\/ninjacart.com\/blog\/wp-content\/uploads\/2021\/04\/EDA_Blog-01.png","contentUrl":"https:\/\/ninjacart.com\/blog\/wp-content\/uploads\/2021\/04\/EDA_Blog-01.png","width":5000,"height":2417},{"@type":"BreadcrumbList","@id":"https:\/\/ninjacart.com\/blog\/ninjacarts-journey-of-creating-an-event-driven-architecture-eda\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ninjacart.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ninjacart\u2019s journey of creating an Event Driven Architecture (EDA)"}]},{"@type":"WebSite","@id":"https:\/\/ninjacart.com\/blog\/#website","url":"https:\/\/ninjacart.com\/blog\/","name":"Ninjacart Blog","description":"","publisher":{"@id":"https:\/\/ninjacart.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ninjacart.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/ninjacart.com\/blog\/#organization","name":"Ninjacart","url":"https:\/\/ninjacart.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ninjacart.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.ninjacart.in\/blog\/wp-content\/uploads\/2022\/03\/NC-Logo-_white-BG-01.png","contentUrl":"https:\/\/www.ninjacart.in\/blog\/wp-content\/uploads\/2022\/03\/NC-Logo-_white-BG-01.png","width":200,"height":200,"caption":"Ninjacart"},"image":{"@id":"https:\/\/ninjacart.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/ninjacart\/","https:\/\/x.com\/ninjacart","https:\/\/www.instagram.com\/ninjacart_official\/","https:\/\/www.linkedin.com\/company\/ninja-cart\/mycompany\/verification\/","https:\/\/www.youtube.com\/channel\/UCYjRMgDjCp6wat86aUt_5aw"]},{"@type":"Person","@id":"https:\/\/ninjacart.com\/blog\/#\/schema\/person\/7e7721235305597f394ea9ce642e38b2","name":"Ninjacart","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ninjacart.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/eacac7946a311112e83632dcb71e01dc953b8bef0b34114e79588c100608437d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/eacac7946a311112e83632dcb71e01dc953b8bef0b34114e79588c100608437d?s=96&d=mm&r=g","caption":"Ninjacart"}}]}},"_links":{"self":[{"href":"https:\/\/ninjacart.com\/blog\/wp-json\/wp\/v2\/posts\/671","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ninjacart.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ninjacart.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ninjacart.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ninjacart.com\/blog\/wp-json\/wp\/v2\/comments?post=671"}],"version-history":[{"count":4,"href":"https:\/\/ninjacart.com\/blog\/wp-json\/wp\/v2\/posts\/671\/revisions"}],"predecessor-version":[{"id":679,"href":"https:\/\/ninjacart.com\/blog\/wp-json\/wp\/v2\/posts\/671\/revisions\/679"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ninjacart.com\/blog\/wp-json\/wp\/v2\/media\/673"}],"wp:attachment":[{"href":"https:\/\/ninjacart.com\/blog\/wp-json\/wp\/v2\/media?parent=671"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ninjacart.com\/blog\/wp-json\/wp\/v2\/categories?post=671"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ninjacart.com\/blog\/wp-json\/wp\/v2\/tags?post=671"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}