{"id":391914,"date":"2023-08-03T08:05:13","date_gmt":"2023-08-03T08:05:13","guid":{"rendered":"https:\/\/webkul.com\/blog\/?p=391914"},"modified":"2025-12-29T10:24:25","modified_gmt":"2025-12-29T10:24:25","slug":"magento-2-architecture","status":"publish","type":"post","link":"https:\/\/webkul.com\/blog\/magento-2-architecture\/","title":{"rendered":"Magento 2 Architecture"},"content":{"rendered":"<div class=\"wk-index-wrap\">\n<h3 class=\"index-title\">Introduction<\/h3>\n<\/div>\n<p>Magento 2 is a powerful, flexible, and extensible e-commerce framework designed to handle small stores and enterprise-level platforms alike.<\/p>\n<p data-start=\"472\" data-end=\"780\">Understanding its architecture is essential for developers <a href=\"https:\/\/webkul.com\/blog\/magento-development-01-module-registration\/\">building custom modules<\/a>, merchants planning complex storefronts, or architects integrating external systems.<\/p>\n<p data-start=\"782\" data-end=\"1092\">At its core, <a href=\"https:\/\/store.webkul.com\/Magento-2.html\">Magento 2<\/a> is built with modern design patterns, modular code organization, and a focus on maintainability and extensibility.<\/p>\n<p data-start=\"782\" data-end=\"1092\">The architecture applies a layered design to clearly separate responsibilities and make customization predictable and safer over time.<\/p>\n\n<div class=\"wk-index-wrap\">\n<h3 class=\"index-title\">1. Architectural Philosophy and Core Principles<\/h3>\n<\/div>\n<p data-start=\"1158\" data-end=\"1243\">Before digging into layers, it helps to know the guiding principles behind Magento 2:<\/p>\n<p><strong>1. Modularity<\/strong><\/p>\n<ul>\n<li>Magento 2\u2019s functionality comes from <strong data-start=\"1305\" data-end=\"1316\">modules<\/strong> \u2014 individual code packages, each responsible for a specific feature (catalog, checkout, sales, etc.).<\/li>\n<li>Modules are <em data-start=\"1433\" data-end=\"1450\">loosely coupled<\/em> and declare explicit dependencies. This improves maintainability and reduces unintended side effects.<\/li>\n<\/ul>\n<p><strong data-start=\"1598\" data-end=\"1624\">2. Separation of Concerns<\/strong><\/p>\n<ul>\n<li>Magento separates <strong data-start=\"1645\" data-end=\"1663\">business logic<\/strong>, <strong data-start=\"1665\" data-end=\"1680\">data access<\/strong>, and <strong data-start=\"1686\" data-end=\"1702\">presentation<\/strong> into distinct layers.<\/li>\n<li>This allows developers to change one part (like the UI) without unintentionally affecting backend logic.<\/li>\n<\/ul>\n<p><strong data-start=\"1839\" data-end=\"1865\">3. Modern Design Patterns<\/strong><\/p>\n<ul>\n<li>The core pattern is <strong data-start=\"1888\" data-end=\"1919\">Model\u2013View\u2013ViewModel (MVVM)<\/strong> \u2014 an evolution of MVC that better isolates data, logic, and presentation.<\/li>\n<li>It also leverages <strong data-start=\"2052\" data-end=\"2081\">Dependency Injection (DI)<\/strong> and <strong data-start=\"2086\" data-end=\"2107\">service contracts<\/strong> for flexible extensibility.<\/li>\n<\/ul>\n\n<div class=\"wk-index-wrap\">\n<h3 class=\"index-title\">2. High-Level Architecture Overview<\/h3>\n<\/div>\n<p>At the highest level, Magento 2\u2019s architecture consists of:<\/p>\n<p><strong>1. Core Product Code<\/strong><\/p>\n<ul>\n<li>The fundamental functionality provided by Magento or Adobe Commerce.<\/li>\n<\/ul>\n<p><strong>2. Optional Modules<\/strong><\/p>\n<ul>\n<li>These extend or override core functionality without modifying the core itself.<\/li>\n<\/ul>\n\n<div class=\"wk-index-wrap\">\n<h3 class=\"index-title\">3. Architectural Layers in Magento 2<\/h3>\n<\/div>\n<p>Magento organizes its application into <strong data-start=\"2632\" data-end=\"2652\">four main layers<\/strong>:<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full-size\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/07\/images-1-1-1200x1000.jpg\" alt=\"architecture-layers\" width=\"1200\" height=\"1000\" loading=\"lazy\" \/><\/p>\n<p><strong>A. Presentation Layer<\/strong><\/p>\n<p>This is the layer responsible for everything the user interacts with \u2014 mostly frontend but also admin screens.<\/p>\n<p><strong>Includes:<\/strong><\/p>\n<ul>\n<li>Frontend themes<\/li>\n<li>Layout XML files defining page structure<\/li>\n<li>Blocks and templates that generate HTML<\/li>\n<li>CSS, JavaScript, UI components<\/li>\n<li>Controllers that orchestrate request\/response handling<\/li>\n<\/ul>\n<p>When a user visits a page, this layer:<\/p>\n<ol>\n<li>Receives the HTTP request<\/li>\n<li>Determines which controllers should handle it<\/li>\n<li>Renders HTML using blocks and templates<\/li>\n<li>Sends the response back to the browser<\/li>\n<\/ol>\n<p>Controllers in Magento use the <strong data-start=\"3242\" data-end=\"3270\">Front Controller pattern<\/strong> \u2014 a single entry point (<code data-start=\"3295\" data-end=\"3306\">index.php<\/code>) that routes requests to the right module and controller action.<\/p>\n<blockquote>\n<p>\ud83d\udca1 <em>The presentation layer may interact directly with business logic for certain tasks, but standard practice is to use service contracts to keep responsibilities clear.<\/em><\/p>\n<\/blockquote>\n<p><strong>B. Service Layer<\/strong><\/p>\n<p>The service layer acts as the <strong data-start=\"3686\" data-end=\"3696\">bridge<\/strong> between presentation and business logic \u2014 offering APIs that define what operations are possible.<\/p>\n<p><strong>Key Concepts:<\/strong><\/p>\n<p><strong data-start=\"3816\" data-end=\"3837\">&#8211;\u00a0 Service Contracts<\/strong>: PHP interfaces that define operations (like <code data-start=\"3883\" data-end=\"3899\">getProductList<\/code>, <code data-start=\"3901\" data-end=\"3913\">placeOrder<\/code>, etc.).<\/p>\n<p><strong>&#8211;<\/strong>\u00a0 Using interfaces instead of concrete classes ensures:<\/p>\n<ul>\n<li>Implementation can change without breaking dependent code<\/li>\n<li>Services are reusable and testable<\/li>\n<li>Clear API boundaries exist between layers<\/li>\n<\/ul>\n<p>This layer also powers Magento\u2019s <strong data-start=\"4197\" data-end=\"4219\">REST and SOAP APIs<\/strong>, enabling headless frontends, mobile apps, and integrations.<\/p>\n<p><strong>C. Domain (Business Logic) Layer<\/strong><\/p>\n<p>This layer contains the <strong data-start=\"4355\" data-end=\"4378\">core business rules<\/strong> \u2014 what types of operations can be performed on data.<\/p>\n<p><strong>Examples:<\/strong><\/p>\n<ul>\n<li>Customer data validation<\/li>\n<li>Sales rules and pricing logic<\/li>\n<li>Catalog and inventory operations<\/li>\n<\/ul>\n<p>Unlike the persistence layer, it <em data-start=\"4575\" data-end=\"4585\">does not<\/em> care how data is stored \u2014 only how it behaves.<\/p>\n<p><strong>D. Persistence Layer<\/strong><\/p>\n<p>This layer handles <strong data-start=\"4728\" data-end=\"4753\">database interactions<\/strong> \u2014 reading and writing data.<\/p>\n<p><strong>Responsibility:<\/strong><\/p>\n<ul>\n<li>Resource models and repositories work with CRUD operations<\/li>\n<li>SQL queries or ORM abstractions are executed here<\/li>\n<li>Data is mapped between objects and database rows<\/li>\n<\/ul>\n<p>Resource models are responsible for translating domain objects into SQL operations and vice versa.<\/p>\n<p>This layer ensures the application interacts efficiently with the database \u2014 whether MySQL, MariaDB, or compatible systems.<\/p>\n\n<div class=\"wk-index-wrap\">\n<h3 class=\"index-title\">4. Design Patterns and Advanced Internals<\/h3>\n<\/div>\n<p><strong>MVVM Architecture<\/strong><\/p>\n<p><img decoding=\"async\" class=\"alignnone\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/07\/Selection_131-1200x636.png\" alt=\"mvvm-architecture\" width=\"1200\" height=\"636\" loading=\"lazy\" \/><\/p>\n<p>Magento\u2019s use of MVVM means the ViewModel:<\/p>\n<ul>\n<li>Fetches data from models<\/li>\n<li>Exposes only what the view needs<\/li>\n<li>Keeps presentation logic out of business logic<\/li>\n<\/ul>\n<p>This pattern reduces coupling and makes templates simpler and safer.<\/p>\n<p><strong>Dependency Injection and Service Contracts<\/strong><\/p>\n<p>Magento uses DI extensively:<\/p>\n<ul>\n<li>Configuration (<code data-start=\"5689\" data-end=\"5697\">di.xml<\/code>) tells Magento which implementation to use for a given interface.<\/li>\n<li>This makes it easy to replace core services with custom ones without editing core code.<\/li>\n<li>DI also supports testing and extensibility.<\/li>\n<\/ul>\n<p><strong>Front Controller and Request Lifecycle<\/strong><\/p>\n<p>The web request flows broadly like this:<\/p>\n<ol>\n<li><strong data-start=\"6041\" data-end=\"6054\">Bootstrap<\/strong> initializes Magento<\/li>\n<li><strong data-start=\"6078\" data-end=\"6098\">Front Controller<\/strong> receives the request<\/li>\n<li>The routing system selects a matching module controller<\/li>\n<li>Controller interacts with service\/domain layers<\/li>\n<li>The response is built and rendered using views<\/li>\n<li>Output is sent to the client<\/li>\n<\/ol>\n<p>Throughout this flow, configuration, cache, and other middleware layers (session, ACL, security) are applied.<\/p>\n\n<div class=\"wk-index-wrap\">\n<h3 class=\"index-title\">5. Modules and Dependencies<\/h3>\n<\/div>\n<p>A module is a self-contained unit of functionality and includes:<\/p>\n<ul>\n<li><code data-start=\"6576\" data-end=\"6588\">module.xml<\/code> \u2014 defines the module name and load priority<\/li>\n<li><code data-start=\"6635\" data-end=\"6650\">composer.json<\/code> \u2014 declares dependencies on other modules<\/li>\n<li>API interfaces, models, controllers, helpers, and UI layouts<\/li>\n<li>Setup scripts or declarative schema for database tables<\/li>\n<\/ul>\n<p>Modules explicitly declare dependencies to avoid hidden coupling \u2014 making Magento robust and predictable.<\/p>\n\n<div class=\"wk-index-wrap\">\n<h3 class=\"index-title\">6. Extensibility and Customization<\/h3>\n<\/div>\n<p>Magento\u2019s architecture is designed for extensibility. You can extend or modify behavior by:<\/p>\n<ul>\n<li><strong data-start=\"7107\" data-end=\"7133\">Plugins (Interceptors)<\/strong> \u2014 alter or wrap existing methods<\/li>\n<li><strong data-start=\"7169\" data-end=\"7184\">Preferences<\/strong> \u2014 replace one class with another<\/li>\n<li><strong data-start=\"7220\" data-end=\"7240\">Observers\/Events<\/strong> \u2014 react to lifecycle events<\/li>\n<li><strong data-start=\"7271\" data-end=\"7292\">Service Contracts<\/strong> \u2014 implement custom business APIs<\/li>\n<\/ul>\n<p data-start=\"7367\" data-end=\"7451\">These techniques let developers add powerful custom logic without editing core code.<\/p>\n\n<div class=\"wk-index-wrap\">\n<h3 class=\"index-title\">7. Why This Architecture Matters<\/h3>\n<\/div>\n<p><strong>Clear Separation of Responsibilities<\/strong><\/p>\n<p>Separating UI, business rules, and data storage makes the platform easier to maintain and customize.<\/p>\n<p><strong>Safe Upgrades<\/strong><\/p>\n<p>Modules can evolve independently. Because core APIs are defined by service contracts and DI, upgrades rarely break extensions \u2014 if they follow best practices.<\/p>\n<p><strong>Scalable and High Performance<\/strong><\/p>\n<p data-start=\"7955\" data-end=\"8103\">Magento\u2019s architecture supports caching, indexing, and integration with CDNs \u2014 enabling fast, scalable storefronts capable of handling high traffic.<\/p>\n<p data-start=\"7955\" data-end=\"8103\"><strong>APIs for Modern Commerce<\/strong><\/p>\n<p data-start=\"7955\" data-end=\"8103\">With built-in REST and GraphQL endpoints, Magento can be used in headless or omnichannel setups \u2014 serving mobile apps, PWA frontends, and external dashboards.<\/p>\n\n<div class=\"wk-index-wrap\">\n<h3 class=\"index-title\">Conclusion<\/h3>\n<\/div>\n<p>Magento 2\u2019s architecture is a thoughtful mix of modern design patterns and practical engineering. It divides responsibilities across layers to:<\/p>\n<ul>\n<li>Promote modularity<\/li>\n<li>Facilitate extensibility<\/li>\n<li>Protect core behavior during upgrades<\/li>\n<li>Encourage scalable, maintainable code<\/li>\n<\/ul>\n<p>For developers, mastering its architecture is the key to building robust custom modules.<\/p>\n<p>For businesses, it\u2019s the foundation that enables complex storefronts, multisite management, and integrations with external systems \u2014 all while remaining maintainable and performant.<\/p>\n\n\n<p>If you\u2019re looking for expert help implementing this architecture, trust a seasoned <a href=\"https:\/\/webkul.com\/magento-development\/\">Magento development company<\/a> to bring your vision to life.<\/p>\n\n\n\n<p>Know more about <a href=\"https:\/\/developer.adobe.com\/commerce\/php\/architecture\/\">Magento 2 architecture<\/a>.<\/p>\n\n\n\n<p>Continue Reading -> <a href=\"https:\/\/webkul.com\/blog\/magento-2-development-02-list-of-magento-important-terminal-commands\/\">Magento 2 Commands List<\/a><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Magento 2 is a powerful, flexible, and extensible e-commerce framework designed to handle small stores and enterprise-level platforms alike. Understanding its architecture is essential for developers building custom modules, merchants planning complex storefronts, or architects integrating external systems. At its core, Magento 2 is built with modern design patterns, modular code organization, and a <a href=\"https:\/\/webkul.com\/blog\/magento-2-architecture\/\">[&#8230;]<\/a><\/p>\n","protected":false},"author":548,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9121],"tags":[15544,14556,2070,590],"class_list":["post-391914","post","type-post","status-publish","format-standard","hentry","category-magento-2","tag-commands-in-magento-2","tag-magento-architecture","tag-magento2","tag-webkul"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Magento 2 Architecture<\/title>\n<meta name=\"description\" content=\"Magento 2 has a Model View ViewModel (MVVM) architecture. This MVVM architecture provides a much more robust separation between...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/webkul.com\/blog\/magento-2-architecture\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Magento 2 Architecture\" \/>\n<meta property=\"og:description\" content=\"Magento 2 has a Model View ViewModel (MVVM) architecture. This MVVM architecture provides a much more robust separation between...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/webkul.com\/blog\/magento-2-architecture\/\" \/>\n<meta property=\"og:site_name\" content=\"Webkul Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webkul\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-03T08:05:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-29T10:24:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2023\/07\/images-1-1-1200x1000.jpg\" \/>\n<meta name=\"author\" content=\"Deepesh Kumar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@webkul\" \/>\n<meta name=\"twitter:site\" content=\"@webkul\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Deepesh Kumar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/webkul.com\/blog\/magento-2-architecture\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/webkul.com\/blog\/magento-2-architecture\/\"},\"author\":{\"name\":\"Deepesh Kumar\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/43552f90bbc8fafb784fe138f6d82a0b\"},\"headline\":\"Magento 2 Architecture\",\"datePublished\":\"2023-08-03T08:05:13+00:00\",\"dateModified\":\"2025-12-29T10:24:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/webkul.com\/blog\/magento-2-architecture\/\"},\"wordCount\":1015,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/webkul.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/magento-2-architecture\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2023\/07\/images-1-1-1200x1000.jpg\",\"keywords\":[\"Commands in Magento 2\",\"Magento Architecture\",\"Magento2\",\"webkul\"],\"articleSection\":[\"Magento 2\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/webkul.com\/blog\/magento-2-architecture\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/webkul.com\/blog\/magento-2-architecture\/\",\"url\":\"https:\/\/webkul.com\/blog\/magento-2-architecture\/\",\"name\":\"Magento 2 Architecture\",\"isPartOf\":{\"@id\":\"https:\/\/webkul.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/webkul.com\/blog\/magento-2-architecture\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/magento-2-architecture\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2023\/07\/images-1-1-1200x1000.jpg\",\"datePublished\":\"2023-08-03T08:05:13+00:00\",\"dateModified\":\"2025-12-29T10:24:25+00:00\",\"description\":\"Magento 2 has a Model View ViewModel (MVVM) architecture. This MVVM architecture provides a much more robust separation between...\",\"breadcrumb\":{\"@id\":\"https:\/\/webkul.com\/blog\/magento-2-architecture\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/webkul.com\/blog\/magento-2-architecture\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/magento-2-architecture\/#primaryimage\",\"url\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/07\/images-1-1.jpg\",\"contentUrl\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/07\/images-1-1.jpg\",\"width\":1280,\"height\":1067,\"caption\":\"images-1-1\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/webkul.com\/blog\/magento-2-architecture\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/webkul.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Magento 2 Architecture\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/webkul.com\/blog\/#website\",\"url\":\"https:\/\/webkul.com\/blog\/\",\"name\":\"Webkul Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/webkul.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/webkul.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/webkul.com\/blog\/#organization\",\"name\":\"WebKul Software Private Limited\",\"url\":\"https:\/\/webkul.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png\",\"contentUrl\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png\",\"width\":380,\"height\":380,\"caption\":\"WebKul Software Private Limited\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webkul\/\",\"https:\/\/x.com\/webkul\",\"https:\/\/www.instagram.com\/webkul\/\",\"https:\/\/www.linkedin.com\/company\/webkul\",\"https:\/\/www.youtube.com\/user\/webkul\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/43552f90bbc8fafb784fe138f6d82a0b\",\"name\":\"Deepesh Kumar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d898f8a790ab5a002f048ad4b4661fda07600235f1338d01ff1fd60152fe4d10?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d898f8a790ab5a002f048ad4b4661fda07600235f1338d01ff1fd60152fe4d10?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g\",\"caption\":\"Deepesh Kumar\"},\"description\":\"Deepesh Kumar, a proficient Software Engineer, excels in PHP, JavaScript, and database management. Mastery of complex eCommerce systems and Magento&rsquo;s architecture drives innovative solutions and optimizes performance for business success.\",\"url\":\"https:\/\/webkul.com\/blog\/author\/deepeshkumar-mg397\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Magento 2 Architecture","description":"Magento 2 has a Model View ViewModel (MVVM) architecture. This MVVM architecture provides a much more robust separation between...","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:\/\/webkul.com\/blog\/magento-2-architecture\/","og_locale":"en_US","og_type":"article","og_title":"Magento 2 Architecture","og_description":"Magento 2 has a Model View ViewModel (MVVM) architecture. This MVVM architecture provides a much more robust separation between...","og_url":"https:\/\/webkul.com\/blog\/magento-2-architecture\/","og_site_name":"Webkul Blog","article_publisher":"https:\/\/www.facebook.com\/webkul\/","article_published_time":"2023-08-03T08:05:13+00:00","article_modified_time":"2025-12-29T10:24:25+00:00","og_image":[{"url":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2023\/07\/images-1-1-1200x1000.jpg","type":"","width":"","height":""}],"author":"Deepesh Kumar","twitter_card":"summary_large_image","twitter_creator":"@webkul","twitter_site":"@webkul","twitter_misc":{"Written by":"Deepesh Kumar","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/webkul.com\/blog\/magento-2-architecture\/#article","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/magento-2-architecture\/"},"author":{"name":"Deepesh Kumar","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/43552f90bbc8fafb784fe138f6d82a0b"},"headline":"Magento 2 Architecture","datePublished":"2023-08-03T08:05:13+00:00","dateModified":"2025-12-29T10:24:25+00:00","mainEntityOfPage":{"@id":"https:\/\/webkul.com\/blog\/magento-2-architecture\/"},"wordCount":1015,"commentCount":0,"publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"image":{"@id":"https:\/\/webkul.com\/blog\/magento-2-architecture\/#primaryimage"},"thumbnailUrl":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2023\/07\/images-1-1-1200x1000.jpg","keywords":["Commands in Magento 2","Magento Architecture","Magento2","webkul"],"articleSection":["Magento 2"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/webkul.com\/blog\/magento-2-architecture\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/webkul.com\/blog\/magento-2-architecture\/","url":"https:\/\/webkul.com\/blog\/magento-2-architecture\/","name":"Magento 2 Architecture","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/webkul.com\/blog\/magento-2-architecture\/#primaryimage"},"image":{"@id":"https:\/\/webkul.com\/blog\/magento-2-architecture\/#primaryimage"},"thumbnailUrl":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2023\/07\/images-1-1-1200x1000.jpg","datePublished":"2023-08-03T08:05:13+00:00","dateModified":"2025-12-29T10:24:25+00:00","description":"Magento 2 has a Model View ViewModel (MVVM) architecture. This MVVM architecture provides a much more robust separation between...","breadcrumb":{"@id":"https:\/\/webkul.com\/blog\/magento-2-architecture\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/webkul.com\/blog\/magento-2-architecture\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/magento-2-architecture\/#primaryimage","url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/07\/images-1-1.jpg","contentUrl":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/07\/images-1-1.jpg","width":1280,"height":1067,"caption":"images-1-1"},{"@type":"BreadcrumbList","@id":"https:\/\/webkul.com\/blog\/magento-2-architecture\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/webkul.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Magento 2 Architecture"}]},{"@type":"WebSite","@id":"https:\/\/webkul.com\/blog\/#website","url":"https:\/\/webkul.com\/blog\/","name":"Webkul Blog","description":"","publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/webkul.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/webkul.com\/blog\/#organization","name":"WebKul Software Private Limited","url":"https:\/\/webkul.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","contentUrl":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","width":380,"height":380,"caption":"WebKul Software Private Limited"},"image":{"@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webkul\/","https:\/\/x.com\/webkul","https:\/\/www.instagram.com\/webkul\/","https:\/\/www.linkedin.com\/company\/webkul","https:\/\/www.youtube.com\/user\/webkul\/"]},{"@type":"Person","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/43552f90bbc8fafb784fe138f6d82a0b","name":"Deepesh Kumar","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d898f8a790ab5a002f048ad4b4661fda07600235f1338d01ff1fd60152fe4d10?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d898f8a790ab5a002f048ad4b4661fda07600235f1338d01ff1fd60152fe4d10?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g","caption":"Deepesh Kumar"},"description":"Deepesh Kumar, a proficient Software Engineer, excels in PHP, JavaScript, and database management. Mastery of complex eCommerce systems and Magento&rsquo;s architecture drives innovative solutions and optimizes performance for business success.","url":"https:\/\/webkul.com\/blog\/author\/deepeshkumar-mg397\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/391914","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/users\/548"}],"replies":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/comments?post=391914"}],"version-history":[{"count":21,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/391914\/revisions"}],"predecessor-version":[{"id":519166,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/391914\/revisions\/519166"}],"wp:attachment":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/media?parent=391914"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/categories?post=391914"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/tags?post=391914"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}