SlideShare a Scribd company logo
Page | 1© 2017 Magento, Inc. Khmelnytskyi Magento Meetup
Best practices in
Magento 2
Based on Multi-Source Inventory (MSI)
project
Page | 2© 2017 Magento, Inc. Khmelnytskyi Magento Meetup
Valeriy Naida
Magento Developer, Multi Source Inventory
Community Engineering Team
Page | 3© 2017 Magento, Inc. Khmelnytskyi Magento Meetup
In one of our directions we have started to work with Community
• Benefit for Magento is creation of new important feature
• Benefit for Community is an increase in knowledge about Magento 2
• Provide a set of best practices how to work with Magento 2 (some
cookbook)
Community Engineering Team
Page | 4© 2017 Magento, Inc. Khmelnytskyi Magento Meetup
• What is API / SPI in Magento 2 (more practice)
• Repository responsibility in Magento 2
• Use Composition instead of Inheritance / Traits
• Object Manager should not be used as a class dependency
…
• There is no silver bullet (Think first!)
Frequently asked questions

Recommended for you

James Zetlen - PWA Studio Integration…With You
James Zetlen - PWA Studio Integration…With YouJames Zetlen - PWA Studio Integration…With You
James Zetlen - PWA Studio Integration…With You

Magento PWA Studio not just for Magento: it’s for making all kinds of Progressive Web Apps. And it’s not just for PWAs: it’s for helping developers to get work done. Though we conceived PWA Studio as the way to create PWAs that belong in the extensible Magento ecosystem, we are building it to be useful for any frontend developer, inside or outside the world of Magento. Our standard app architecture uses beloved modern frontend ingredients. You may already know them; if not, you can learn them from a large online community. As Magento joins the busy world of modern Web frontend, you can join us there too. Come see the many ways you can use PWA Studio tools and the many ways you can contribute to them.

Experience in Magento Community Projects
Experience in Magento Community ProjectsExperience in Magento Community Projects
Experience in Magento Community Projects

This document discusses Oleksandr Lyzun's experience working on several Magento Community projects including Async/Bulk API, GraphQL, PWA, and Asynchronous Import. It provides details on the goals and status of each project, how they improve the Magento experience, and benefits of contributing to open source Magento projects. The document also references resources like the Magento Community Portal and Backlog for finding additional projects to contribute to.

magentomagento meetup kharkovmagento 2
Backward Compatibility Developer's Guide in Magento 2. #MM17CZ
Backward Compatibility Developer's Guide in Magento 2. #MM17CZBackward Compatibility Developer's Guide in Magento 2. #MM17CZ
Backward Compatibility Developer's Guide in Magento 2. #MM17CZ

This document discusses Magento's approach to backward compatibility (BC). It explains that Magento uses semantic versioning to minimize breaking changes. Magento aims to balance keeping the codebase BC while still fixing flaws. The document outlines what constitutes public APIs and SPIs and how modules should depend on these. It provides examples of permitted and prohibited code changes to maintain BC. It acknowledges that BC fixes can look ugly but emphasizes the importance of continuous refactoring to improve code quality over time.

magento2backward compatibilitymagento
Khmelnytskyi Magento Meetup
API / SPI concepts in
Magento 2
Page | 6© 2017 Magento, Inc. Khmelnytskyi Magento Meetup
API - Interfaces for usage (calling) in the client
code
Located in Api subfolder or in the separate module
ApiModule
API
Page | 7© 2017 Magento, Inc. Khmelnytskyi Magento Meetup
SPI - Interfaces that you should extend and
implement to customize current behavior
But NOT expected to be used (called) in the client
code directly
Located near implementation
SPI
Page | 8© 2017 Magento, Inc. Khmelnytskyi Magento Meetup
Q: Can the API and SPI be a single interface?
A: Yes. It often happens. Do not create empty proxy (API to SPI) classes
FAQ

Recommended for you

Magento 2 Declarative Schema
Magento 2 Declarative SchemaMagento 2 Declarative Schema
Magento 2 Declarative Schema

The document discusses Magento 2.3's new declarative schema feature for managing database schemas. Declarative schema provides an alternative to setup scripts that avoids issues like missed SQL operations and makes rollbacks and testing easier. It works by declaring schema elements like tables, columns, indexes in an XML file. Modules can then be installed and uninstalled while maintaining the expected schema state. The document covers how to declare different database elements and use features like dry-run testing and safe mode operations. It also discusses converting existing modules from setup scripts to the new declarative schema.

magento2magentodeclarative schema
Mli 2017 technical EQP & marketplace
Mli 2017 technical EQP & marketplaceMli 2017 technical EQP & marketplace
Mli 2017 technical EQP & marketplace

This document summarizes Magento's Extension Quality Program (EQP) process and findings. It reports that 50% of submitted extensions fail to compile in production mode, and of those that do compile, only 25% pass manual quality assurance testing. The top 5 issues found are extensions not compiling in production mode, compiling but not working properly in production mode, incompatibility with claimed Magento versions, poor error handling, and lack of adherence to coding standards. The document outlines planned improvements to the EQP including increased automation of testing and integration with Magento Marketplace.

hanoi magentomeetupextensionseqp
Mli 2017 technical powering tomorrow_2.2
Mli 2017 technical powering tomorrow_2.2Mli 2017 technical powering tomorrow_2.2
Mli 2017 technical powering tomorrow_2.2

Power Tomorrow: Understanding Magento 2.2 Credit: Magento Live India 2017 Website: http://magentolive.com/in/

magento developermagento 2.2technical
Page | 9© 2017 Magento, Inc. Khmelnytskyi Magento Meetup
Q: Can I call one API from another?
A: Yes. You could create Sugar Service to avoid boilerplate code
=>
• But provide clear DocBlock
• Try to keep a single point of Customization
FAQ
Page | 10© 2017 Magento, Inc. Khmelnytskyi Magento Meetup
Q: What about Resource Model?
A: TBD
Q: When is needed to add SPI?
A: TBD
Q: Why not introduce the @spi annotation?
A: TBD
FAQ
Page | 11© 2017 Magento, Inc. Khmelnytskyi Magento Meetup
1. Main logic is API
2. Steps (strategies) are SPI
Algorithm example
Khmelnytskyi Magento Meetup
Repository responsibility
In Magento 2

Recommended for you

Org-dependent Unlocked Packages for ISVs
Org-dependent Unlocked Packages for ISVsOrg-dependent Unlocked Packages for ISVs
Org-dependent Unlocked Packages for ISVs

For ISVs who are currently providing solutions to individual subscribers or system integration (SI) partners via unmanaged packages, org-dependent unlocked packages can provide a better & faster implementation experience as well as improve stability.

Webinar - Rapise v6.6 | New Features and Enhancements
Webinar - Rapise v6.6 | New Features and EnhancementsWebinar - Rapise v6.6 | New Features and Enhancements
Webinar - Rapise v6.6 | New Features and Enhancements

This presentation was delivered as part of the Rapise webinar series and highlights the latest features in Inflectra's scriptless test automation platform - Rapise v6.6. The presentation covers: - Rapise 6.6 new features: CI/CD integration, Git integration, and Framework building. - Rapise 6.6 system enhancements: Reporting, Rapise Launcher, API Testing; new Actions to already supported Objects. To learn more about Rapise, visit https://www.inflectra.com/Rapise/

inflectrarapise - test automation toolrapise
Manchester Meetup #3
Manchester Meetup #3Manchester Meetup #3
Manchester Meetup #3

The slides from the third Manchester Meetup, this time online. A slide deck explaining the use of RAML and how extensions allow you to separate the code required for service contract or interface and that of the implementation.

#mulesoft#api#raml
Page | 13© 2017 Magento, Inc. Khmelnytskyi Magento Meetup
In Magento 2 Repository is considered as an implementation of Facade
pattern which provides a simplified interface to a larger body of code
responsible for Domain Entity base management
BUT Repository is NOT new kind of “helper”
Facade pattern
Page | 14© 2017 Magento, Inc. Khmelnytskyi Magento Meetup
Repository under hood
Usually typical repository provides the following methods:
Could NOT be wider than methods mentioned above
Page | 15© 2017 Magento, Inc. Khmelnytskyi Magento Meetup
Repository under hood
List of the methods could be shorter if based on the business requirements
particular entity doesn't have some of the operation(-s)
Page | 16© 2017 Magento, Inc. Khmelnytskyi Magento Meetup
Repository under hood
Methods with their own semantic recommended to be put into some dedicated
Services
• Principle Of Least Surprise
• Backward compatibility

Recommended for you

Sustainability Challenge, Postman, Rest sheet and Anypoint provider : MuleSof...
Sustainability Challenge, Postman, Rest sheet and Anypoint provider : MuleSof...Sustainability Challenge, Postman, Rest sheet and Anypoint provider : MuleSof...
Sustainability Challenge, Postman, Rest sheet and Anypoint provider : MuleSof...

Arno Brugman - How to Engage: Customer/Partner Engagement Angel Alberici - DIY API Led with Alexa "The Contest App"

mulesoftmeetupsmulesoftarnobrugman
TRAX technical highlights
TRAX technical highlightsTRAX technical highlights
TRAX technical highlights

Name: Bob Nemec Title: Seaside based custom ERP system youtube: https://youtu.be/ehZtXx-rjx4 Type: Talk Abstract: TRAX is a custom, in-house Seaside ERP system written for, and used by, HTS, an industrial HVAC sales company. We use VisualWorks to build, manage and test the code, and GemStone to deploy it. Running since September 2015, the application continues to be developed and adapted to the changing needs of the business. This talk will highlight some of the design choices and technical decisions we’ve made, and the agile development process we use. Bio: Bob Nemec is the Software Architect of TRAX. Bob has worked with Smalltalk since 1990, and used it exclusively to build commercial systems since 1994.

 
by ESUG
esug17smalltalkseaside
Using the Mule 4 SDK to build a connector : MuleSoft Virtual Muleys Meetups
Using the Mule 4 SDK to build a connector  : MuleSoft Virtual Muleys MeetupsUsing the Mule 4 SDK to build a connector  : MuleSoft Virtual Muleys Meetups
Using the Mule 4 SDK to build a connector : MuleSoft Virtual Muleys Meetups

Speaker: "Using the Mule 4 SDK to build a connector" session with Chris Hughes, Strategic Advisor at MuleSoft Host: Angel Alberici Youtube: Virtual Muleys (https://www.youtube.com/c/VirtualMuleysOnline/videos) Meetups: https://meetups.mulesoft.com/online-group-english/ https://meetups.mulesoft.com/events/details/mulesoft-online-group-english-presents-using-the-mule-4-java-sdk-to-build-a-connector/

mulesoftmeetupsmulesoftmulesoftconnector
Page | 17© 2017 Magento, Inc. Khmelnytskyi Magento Meetup
DDD liked services instead of Repository
Link between Source and Stock doesn’t have sense from business side
Page | 18© 2017 Magento, Inc. Khmelnytskyi Magento Meetup
Repository Implementation
Page | 19© 2017 Magento, Inc. Khmelnytskyi Magento Meetup
1. Repository could be considered as an API - Interface for usage (calling) in
the business logic
2. Separate class-commands to which Repository proxies initial call (like, Get
Save GetList Delete) could be considered as SPI
Repository: API vs SPI segregation
Khmelnytskyi Magento Meetup
Object Manager should
not be used as a class
dependency

Recommended for you

MuleSoft: How to Engage Partners/Customers and API Led with Alexa
MuleSoft: How to Engage Partners/Customers and  API Led with Alexa MuleSoft: How to Engage Partners/Customers and  API Led with Alexa
MuleSoft: How to Engage Partners/Customers and API Led with Alexa

Slide 1 - Arno Brugman - How to Engage Partners/Customers Slide 42 - Angel Alberici - API Led with Alexa Host: Angel Alberici Youtube: Virtual Muleys : https://www.youtube.com/c/VirtualMuleysOnline/videos How to Engage: Customer/Partner Engagements This session is for Developers, Engineers, Architects, C4E & Integration Stakeholders, Partners, SIs and Contractors who want to learn about the prerequisites and requirements for a successful Customer/Partner Engagement. In this session we will answer the following questions: Can you provide basic guidelines to avoid the most common pitfalls? Will our Partner act as a Thought Leader? How do we ensure our Partner designs and implements with reuse in mind? How do we verify the work delivered by our Partner? What information should you share with your Partner? What should you request (ask) from your Partner? How should you Engage with your Partner? Although the slides are presented from the Customer perspective, the session will be of value to Partners, SIs and Contractors too. After this session, you will know what information needs to be shared between Customer and Partner and how Customer and Partner should engage to ensure successful adoption of the Anypoint Platform and consistent generation of Business Outcomes (value). DIY: API Led with Alexa “The Contest App” You saw it and now you want to Do It Yourself (DIY). Session aimed towards Devs/Engineers and enthusiasts/hands-on Architects/Consultants who want to create their own API Led with Alexa application. Agenda: Speedrun on APLC/SDLC Successful stories Participate in the Contest and win prizes! How does it work? How to do it yourself? Where is the value in using API Led for this case?

mulesoftmeetupsmulesoftdevelopers
Major Spira v6.3 Usability & Performance Enhancements Unveiled
Major Spira v6.3 Usability & Performance Enhancements UnveiledMajor Spira v6.3 Usability & Performance Enhancements Unveiled
Major Spira v6.3 Usability & Performance Enhancements Unveiled

Inflectra is proud to bring you a highly anticipated Spira v.6.3 and a webinar to go with it. Presented by Technical Director Adam Sandman, this webinar goes over the major enhancements available in SpiraTest, SpiraTeam and SpiraPlan version 6.3.

technologyspiraplanhigh tech
How I ended up touching Magento core
How I ended up touching Magento coreHow I ended up touching Magento core
How I ended up touching Magento core

These are the annotated slides of the presentation I gave at MageConf 2017 on Dec. 16 in Kiev, Ukraine

magento2msiddd
Page | 21© 2017 Magento, Inc. Khmelnytskyi Magento Meetup
Generally Object Manager should not be used as a class dependency
Problems:
• Class is hard coded and can not be replaced with a different one
• Would require more work to modify the behavior by third parties
Object Manager
Page | 22© 2017 Magento, Inc. Khmelnytskyi Magento Meetup
There is no good possibility to replace Logger object only for this Class
Example - Problem
Page | 23© 2017 Magento, Inc. Khmelnytskyi Magento Meetup
Example - Solution
Page | 24© 2017 Magento, Inc. Khmelnytskyi Magento Meetup
Object Manager could be used in classes which create objects
(Factories, Builders, Pools)
When Object Manager is applicable

Recommended for you

MageConf 2017, Design API Best Practices
MageConf 2017, Design API Best PracticesMageConf 2017, Design API Best Practices
MageConf 2017, Design API Best Practices

Functional Programming for Service Layer architecture. Examples of API evolution on Magento 2 codebase

magentomagento2api
Magento 2 Best Practice MLUK17
Magento 2 Best Practice MLUK17Magento 2 Best Practice MLUK17
Magento 2 Best Practice MLUK17

The best practices around your upgrade from Magento 1 to Magento 2. See example and other factors that will impact your upgrade.

magentolivemagentomagento upgrade
Testing in Magento 2
Testing in Magento 2 Testing in Magento 2
Testing in Magento 2

Testing in Magento 2 by examples of Multi-Source Inventory Project (MSI) - Unit Testing and how to do them right. - Tautological Test Driven Development - Integration Testing - Example of Reservation mechanism in MSI and Integration test coverage for it - Web API testing (REST, SOAP)

magentomagento2magento 2
Page | 25© 2017 Magento, Inc. Khmelnytskyi Magento Meetup
May also be used to maintain Backwards Compatibility
When Object Manager is applicable
Khmelnytskyi Magento Meetup
Composition against
Inheritance
Page | 27© 2017 Magento, Inc. Khmelnytskyi Magento Meetup
Inheritance / trait should not be used. Composition should be used
instead
Problems:
• Inheritance enforces dependency on a specific parent class which can not be
replaced in runtime
• Would require more work to modify the behavior by third parties
Inheritance
Page | 28© 2017 Magento, Inc. Khmelnytskyi Magento Meetup
Requires complete replacement of the
renderer, instead of customizing it
Example - Problem

Recommended for you

How to edit the core
How to edit the coreHow to edit the core
How to edit the core

This document discusses how Magento software is open source and how developers can contribute to its development. It provides background on open source software and outlines Magento's process of becoming more open source over time through transparent commits, public pull requests, and addressing issues. The document encourages developers to validate issues, fix issues by creating pull requests, contribute to patch releases, and conduct innovations. It describes the Magento Multi Source Inventory project and opportunities for developers to get involved through the community Slack channel or contribution days.

magentoopen source
Hyvä from a developer perspective
Hyvä from a developer perspectiveHyvä from a developer perspective
Hyvä from a developer perspective

Presentation for Meet-Magento Indonesia 2021. It describes what the Hyvä Theme for Magento is and how it is working with it from a (mainly backend) developer perspective.

magento 2hyvämm21id
Automated tests in Magento
Automated tests in MagentoAutomated tests in Magento
Automated tests in Magento

Magento automated tests overview: - Advantages/disadvantages of unit testing. - Integration tests in Magento. - Testing Magento WEB API. - Frameworks for functional testing. Tests as XML configuration. - Best practices.

magento 2phpunitunit tests
Page | 29© 2017 Magento, Inc. Khmelnytskyi Magento Meetup
• Price Formatter may be easily
replaced by injecting another
dependency in the constructor
• Allows precise modification of
behavior
Example - Solution
Page | 30© 2017 Magento, Inc. Khmelnytskyi Magento Meetup
• Class is a Subtype of another class
• Template Method pattern (usually with Hollywood Principle: Don't call us,
we'll call you)
• You don’t need replaceability
When Inheritance / trait is applicable
Page | 31© 2017 Magento, Inc. Khmelnytskyi Magento Meetup
Provides possibility of saving entity with predefined/pre-generated id (quick
solution in waiting for the ORM)
IS NOT supposed to be replaced
Khmelnytskyi Magento Meetup
Useful Links

Recommended for you

Magento Function Testing Framework - Intro and Overview
Magento Function Testing Framework - Intro and OverviewMagento Function Testing Framework - Intro and Overview
Magento Function Testing Framework - Intro and Overview

The document discusses Magento's transition from the Magento Testing Framework (MTF) to the new Magento Functional Testing Framework (MFTF). MTF had challenges like reliability, maintainability, and ease of use. MFTF was created to address these and enable lower costs, faster test creation, and support new strategies like bundled extensions. MFTF uses PHP, Composer, XML, Codeception and other tools. It focuses on maintainability, readability, performance and customizability through features like reusable page sections and mergeable test files. The document provides examples of MFTF's code structure and explains how tests are selected and executed through the Robo task runner.

Magento Technical guidelines
Magento Technical guidelinesMagento Technical guidelines
Magento Technical guidelines

The document provides Magento's technical guidelines for developing code. It outlines best practices for strict typing, class design using composition over inheritance, dependency injection, exception handling, and separating application layers. The guidelines are intended to promote extensibility, customizability, and maintenance of Magento code. Key aspects include using interfaces to define dependencies rather than direct object references, single responsibility per class, and limiting coupling between classes.

magentomagento2technical
MageConf 2020 - Deep dive into an Innovations Lab project - Rafael Correa Gomes
MageConf 2020 - Deep dive into an Innovations Lab project - Rafael Correa GomesMageConf 2020 - Deep dive into an Innovations Lab project - Rafael Correa Gomes
MageConf 2020 - Deep dive into an Innovations Lab project - Rafael Correa Gomes

Let's do a deep dive into two Innovations Lab winner projects, check the details, and how to apply your first project. You will be able to check how to get ideas and how my innovation projects works, looking directly into the code.

magentoinnovationadobe
Page | 33© 2017 Magento, Inc. Khmelnytskyi Magento Meetup
• Magento 2 Technical Guidelines
http://devdocs.magento.com/guides/v2.2/coding-standards/technical-
guidelines/technical-guidelines.html
• Backward compatible development
http://devdocs.magento.com/guides/v2.2/contributor-guide/backward-
compatible-development/
• Multi-Source Inventory (MSI) project
https://github.com/magento-engcom/msi/wiki
Useful Links
Page | 34© 2017 Magento, Inc. Khmelnytskyi Magento Meetup
Exchange Ideas
Khmelnytskyi Magento Meetup
How to join us? Send an email to
engcom@magento.com
@_naydav
Thank y’all!

More Related Content

What's hot

Volodymyr Kublytskyi - Develop Product, Design Platform
Volodymyr Kublytskyi - Develop Product, Design PlatformVolodymyr Kublytskyi - Develop Product, Design Platform
Volodymyr Kublytskyi - Develop Product, Design Platform
Meet Magento Italy
 
Awesome architectures in Magento 2.3
Awesome architectures in Magento 2.3Awesome architectures in Magento 2.3
Awesome architectures in Magento 2.3
Alessandro Ronchi
 
Jacopo Nardiello - From CI to Prod: Running Magento at scale with Kubernetes
Jacopo Nardiello - From CI to Prod: Running Magento at scale with KubernetesJacopo Nardiello - From CI to Prod: Running Magento at scale with Kubernetes
Jacopo Nardiello - From CI to Prod: Running Magento at scale with Kubernetes
Meet Magento Italy
 
James Zetlen - PWA Studio Integration…With You
James Zetlen - PWA Studio Integration…With YouJames Zetlen - PWA Studio Integration…With You
James Zetlen - PWA Studio Integration…With You
Meet Magento Italy
 
Experience in Magento Community Projects
Experience in Magento Community ProjectsExperience in Magento Community Projects
Experience in Magento Community Projects
Magecom UK Limited
 
Backward Compatibility Developer's Guide in Magento 2. #MM17CZ
Backward Compatibility Developer's Guide in Magento 2. #MM17CZBackward Compatibility Developer's Guide in Magento 2. #MM17CZ
Backward Compatibility Developer's Guide in Magento 2. #MM17CZ
Igor Miniailo
 
Magento 2 Declarative Schema
Magento 2 Declarative SchemaMagento 2 Declarative Schema
Magento 2 Declarative Schema
atishgoswami
 
Mli 2017 technical EQP & marketplace
Mli 2017 technical EQP & marketplaceMli 2017 technical EQP & marketplace
Mli 2017 technical EQP & marketplace
Hanoi MagentoMeetup
 
Mli 2017 technical powering tomorrow_2.2
Mli 2017 technical powering tomorrow_2.2Mli 2017 technical powering tomorrow_2.2
Mli 2017 technical powering tomorrow_2.2
Hanoi MagentoMeetup
 
Org-dependent Unlocked Packages for ISVs
Org-dependent Unlocked Packages for ISVsOrg-dependent Unlocked Packages for ISVs
Org-dependent Unlocked Packages for ISVs
CodeScience
 
Webinar - Rapise v6.6 | New Features and Enhancements
Webinar - Rapise v6.6 | New Features and EnhancementsWebinar - Rapise v6.6 | New Features and Enhancements
Webinar - Rapise v6.6 | New Features and Enhancements
Inflectra
 
Manchester Meetup #3
Manchester Meetup #3Manchester Meetup #3
Manchester Meetup #3
Francis Edwards
 
Sustainability Challenge, Postman, Rest sheet and Anypoint provider : MuleSof...
Sustainability Challenge, Postman, Rest sheet and Anypoint provider : MuleSof...Sustainability Challenge, Postman, Rest sheet and Anypoint provider : MuleSof...
Sustainability Challenge, Postman, Rest sheet and Anypoint provider : MuleSof...
Angel Alberici
 
TRAX technical highlights
TRAX technical highlightsTRAX technical highlights
TRAX technical highlights
ESUG
 
Using the Mule 4 SDK to build a connector : MuleSoft Virtual Muleys Meetups
Using the Mule 4 SDK to build a connector  : MuleSoft Virtual Muleys MeetupsUsing the Mule 4 SDK to build a connector  : MuleSoft Virtual Muleys Meetups
Using the Mule 4 SDK to build a connector : MuleSoft Virtual Muleys Meetups
Angel Alberici
 
MuleSoft: How to Engage Partners/Customers and API Led with Alexa
MuleSoft: How to Engage Partners/Customers and  API Led with Alexa MuleSoft: How to Engage Partners/Customers and  API Led with Alexa
MuleSoft: How to Engage Partners/Customers and API Led with Alexa
Angel Alberici
 
Major Spira v6.3 Usability & Performance Enhancements Unveiled
Major Spira v6.3 Usability & Performance Enhancements UnveiledMajor Spira v6.3 Usability & Performance Enhancements Unveiled
Major Spira v6.3 Usability & Performance Enhancements Unveiled
Inflectra
 

What's hot (17)

Volodymyr Kublytskyi - Develop Product, Design Platform
Volodymyr Kublytskyi - Develop Product, Design PlatformVolodymyr Kublytskyi - Develop Product, Design Platform
Volodymyr Kublytskyi - Develop Product, Design Platform
 
Awesome architectures in Magento 2.3
Awesome architectures in Magento 2.3Awesome architectures in Magento 2.3
Awesome architectures in Magento 2.3
 
Jacopo Nardiello - From CI to Prod: Running Magento at scale with Kubernetes
Jacopo Nardiello - From CI to Prod: Running Magento at scale with KubernetesJacopo Nardiello - From CI to Prod: Running Magento at scale with Kubernetes
Jacopo Nardiello - From CI to Prod: Running Magento at scale with Kubernetes
 
James Zetlen - PWA Studio Integration…With You
James Zetlen - PWA Studio Integration…With YouJames Zetlen - PWA Studio Integration…With You
James Zetlen - PWA Studio Integration…With You
 
Experience in Magento Community Projects
Experience in Magento Community ProjectsExperience in Magento Community Projects
Experience in Magento Community Projects
 
Backward Compatibility Developer's Guide in Magento 2. #MM17CZ
Backward Compatibility Developer's Guide in Magento 2. #MM17CZBackward Compatibility Developer's Guide in Magento 2. #MM17CZ
Backward Compatibility Developer's Guide in Magento 2. #MM17CZ
 
Magento 2 Declarative Schema
Magento 2 Declarative SchemaMagento 2 Declarative Schema
Magento 2 Declarative Schema
 
Mli 2017 technical EQP & marketplace
Mli 2017 technical EQP & marketplaceMli 2017 technical EQP & marketplace
Mli 2017 technical EQP & marketplace
 
Mli 2017 technical powering tomorrow_2.2
Mli 2017 technical powering tomorrow_2.2Mli 2017 technical powering tomorrow_2.2
Mli 2017 technical powering tomorrow_2.2
 
Org-dependent Unlocked Packages for ISVs
Org-dependent Unlocked Packages for ISVsOrg-dependent Unlocked Packages for ISVs
Org-dependent Unlocked Packages for ISVs
 
Webinar - Rapise v6.6 | New Features and Enhancements
Webinar - Rapise v6.6 | New Features and EnhancementsWebinar - Rapise v6.6 | New Features and Enhancements
Webinar - Rapise v6.6 | New Features and Enhancements
 
Manchester Meetup #3
Manchester Meetup #3Manchester Meetup #3
Manchester Meetup #3
 
Sustainability Challenge, Postman, Rest sheet and Anypoint provider : MuleSof...
Sustainability Challenge, Postman, Rest sheet and Anypoint provider : MuleSof...Sustainability Challenge, Postman, Rest sheet and Anypoint provider : MuleSof...
Sustainability Challenge, Postman, Rest sheet and Anypoint provider : MuleSof...
 
TRAX technical highlights
TRAX technical highlightsTRAX technical highlights
TRAX technical highlights
 
Using the Mule 4 SDK to build a connector : MuleSoft Virtual Muleys Meetups
Using the Mule 4 SDK to build a connector  : MuleSoft Virtual Muleys MeetupsUsing the Mule 4 SDK to build a connector  : MuleSoft Virtual Muleys Meetups
Using the Mule 4 SDK to build a connector : MuleSoft Virtual Muleys Meetups
 
MuleSoft: How to Engage Partners/Customers and API Led with Alexa
MuleSoft: How to Engage Partners/Customers and  API Led with Alexa MuleSoft: How to Engage Partners/Customers and  API Led with Alexa
MuleSoft: How to Engage Partners/Customers and API Led with Alexa
 
Major Spira v6.3 Usability & Performance Enhancements Unveiled
Major Spira v6.3 Usability & Performance Enhancements UnveiledMajor Spira v6.3 Usability & Performance Enhancements Unveiled
Major Spira v6.3 Usability & Performance Enhancements Unveiled
 

Similar to Valeriy Nayda - Best Practices in Magento 2. Based on Multi Source Inventory (msi) project

How I ended up touching Magento core
How I ended up touching Magento coreHow I ended up touching Magento core
How I ended up touching Magento core
Alessandro Ronchi
 
MageConf 2017, Design API Best Practices
MageConf 2017, Design API Best PracticesMageConf 2017, Design API Best Practices
MageConf 2017, Design API Best Practices
Igor Miniailo
 
Magento 2 Best Practice MLUK17
Magento 2 Best Practice MLUK17Magento 2 Best Practice MLUK17
Magento 2 Best Practice MLUK17
Brent W Peterson
 
Testing in Magento 2
Testing in Magento 2 Testing in Magento 2
Testing in Magento 2
Igor Miniailo
 
How to edit the core
How to edit the coreHow to edit the core
How to edit the core
dmanners87
 
Hyvä from a developer perspective
Hyvä from a developer perspectiveHyvä from a developer perspective
Hyvä from a developer perspective
vinaikopp
 
Automated tests in Magento
Automated tests in MagentoAutomated tests in Magento
Automated tests in Magento
Yevhen Sentiabov
 
Magento Function Testing Framework - Intro and Overview
Magento Function Testing Framework - Intro and OverviewMagento Function Testing Framework - Intro and Overview
Magento Function Testing Framework - Intro and Overview
Tom Erskine
 
Magento Technical guidelines
Magento Technical guidelinesMagento Technical guidelines
Magento Technical guidelines
Elogic Magento Development
 
MageConf 2020 - Deep dive into an Innovations Lab project - Rafael Correa Gomes
MageConf 2020 - Deep dive into an Innovations Lab project - Rafael Correa GomesMageConf 2020 - Deep dive into an Innovations Lab project - Rafael Correa Gomes
MageConf 2020 - Deep dive into an Innovations Lab project - Rafael Correa Gomes
Rafael Corrêa Gomes
 
API design best practices
API design best practicesAPI design best practices
API design best practices
Igor Miniailo
 
Monitoring your cache effectiveness in Magento 2
Monitoring your cache effectiveness in Magento 2Monitoring your cache effectiveness in Magento 2
Monitoring your cache effectiveness in Magento 2
Tony Brown
 
Imagine recap-devhub
Imagine recap-devhubImagine recap-devhub
Imagine recap-devhub
Magento Dev
 
12 Things Not to Do on a Portal Project
12 Things Not to Do on a Portal Project12 Things Not to Do on a Portal Project
12 Things Not to Do on a Portal Project
Perficient, Inc.
 
How I ended up contributing to Magento core
How I ended up contributing to Magento coreHow I ended up contributing to Magento core
How I ended up contributing to Magento core
Alessandro Ronchi
 
Backward Compatibility Developer's Guide in Magento 2
Backward Compatibility Developer's Guide in Magento 2Backward Compatibility Developer's Guide in Magento 2
Backward Compatibility Developer's Guide in Magento 2
Igor Miniailo
 
Mli 2017 technical backward compatibility
Mli 2017 technical backward compatibilityMli 2017 technical backward compatibility
Mli 2017 technical backward compatibility
Hanoi MagentoMeetup
 
Magento Meetup Nagpur - Saturday, July 18, 2020 | Performance, AI Product Rec...
Magento Meetup Nagpur - Saturday, July 18, 2020 | Performance, AI Product Rec...Magento Meetup Nagpur - Saturday, July 18, 2020 | Performance, AI Product Rec...
Magento Meetup Nagpur - Saturday, July 18, 2020 | Performance, AI Product Rec...
atishgoswami
 
Mli 2017 technical m2 developer experience
Mli 2017 technical m2 developer experienceMli 2017 technical m2 developer experience
Mli 2017 technical m2 developer experience
Hanoi MagentoMeetup
 
Domain Driven Design Introduction
Domain Driven Design IntroductionDomain Driven Design Introduction
Domain Driven Design Introduction
wojtek_s
 

Similar to Valeriy Nayda - Best Practices in Magento 2. Based on Multi Source Inventory (msi) project (20)

How I ended up touching Magento core
How I ended up touching Magento coreHow I ended up touching Magento core
How I ended up touching Magento core
 
MageConf 2017, Design API Best Practices
MageConf 2017, Design API Best PracticesMageConf 2017, Design API Best Practices
MageConf 2017, Design API Best Practices
 
Magento 2 Best Practice MLUK17
Magento 2 Best Practice MLUK17Magento 2 Best Practice MLUK17
Magento 2 Best Practice MLUK17
 
Testing in Magento 2
Testing in Magento 2 Testing in Magento 2
Testing in Magento 2
 
How to edit the core
How to edit the coreHow to edit the core
How to edit the core
 
Hyvä from a developer perspective
Hyvä from a developer perspectiveHyvä from a developer perspective
Hyvä from a developer perspective
 
Automated tests in Magento
Automated tests in MagentoAutomated tests in Magento
Automated tests in Magento
 
Magento Function Testing Framework - Intro and Overview
Magento Function Testing Framework - Intro and OverviewMagento Function Testing Framework - Intro and Overview
Magento Function Testing Framework - Intro and Overview
 
Magento Technical guidelines
Magento Technical guidelinesMagento Technical guidelines
Magento Technical guidelines
 
MageConf 2020 - Deep dive into an Innovations Lab project - Rafael Correa Gomes
MageConf 2020 - Deep dive into an Innovations Lab project - Rafael Correa GomesMageConf 2020 - Deep dive into an Innovations Lab project - Rafael Correa Gomes
MageConf 2020 - Deep dive into an Innovations Lab project - Rafael Correa Gomes
 
API design best practices
API design best practicesAPI design best practices
API design best practices
 
Monitoring your cache effectiveness in Magento 2
Monitoring your cache effectiveness in Magento 2Monitoring your cache effectiveness in Magento 2
Monitoring your cache effectiveness in Magento 2
 
Imagine recap-devhub
Imagine recap-devhubImagine recap-devhub
Imagine recap-devhub
 
12 Things Not to Do on a Portal Project
12 Things Not to Do on a Portal Project12 Things Not to Do on a Portal Project
12 Things Not to Do on a Portal Project
 
How I ended up contributing to Magento core
How I ended up contributing to Magento coreHow I ended up contributing to Magento core
How I ended up contributing to Magento core
 
Backward Compatibility Developer's Guide in Magento 2
Backward Compatibility Developer's Guide in Magento 2Backward Compatibility Developer's Guide in Magento 2
Backward Compatibility Developer's Guide in Magento 2
 
Mli 2017 technical backward compatibility
Mli 2017 technical backward compatibilityMli 2017 technical backward compatibility
Mli 2017 technical backward compatibility
 
Magento Meetup Nagpur - Saturday, July 18, 2020 | Performance, AI Product Rec...
Magento Meetup Nagpur - Saturday, July 18, 2020 | Performance, AI Product Rec...Magento Meetup Nagpur - Saturday, July 18, 2020 | Performance, AI Product Rec...
Magento Meetup Nagpur - Saturday, July 18, 2020 | Performance, AI Product Rec...
 
Mli 2017 technical m2 developer experience
Mli 2017 technical m2 developer experienceMli 2017 technical m2 developer experience
Mli 2017 technical m2 developer experience
 
Domain Driven Design Introduction
Domain Driven Design IntroductionDomain Driven Design Introduction
Domain Driven Design Introduction
 

More from Atwix

Yaroslav Rogoza - Development Environment: Local or Remote?
Yaroslav Rogoza - Development Environment: Local or Remote?Yaroslav Rogoza - Development Environment: Local or Remote?
Yaroslav Rogoza - Development Environment: Local or Remote?
Atwix
 
Magento 2 performance comparison in different environments by Yaroslav Rogoza...
Magento 2 performance comparison in different environments by Yaroslav Rogoza...Magento 2 performance comparison in different environments by Yaroslav Rogoza...
Magento 2 performance comparison in different environments by Yaroslav Rogoza...
Atwix
 
Viacheslav Kravchuk. Working as a distributed company. Our journey. Meet Mage...
Viacheslav Kravchuk. Working as a distributed company. Our journey. Meet Mage...Viacheslav Kravchuk. Working as a distributed company. Our journey. Meet Mage...
Viacheslav Kravchuk. Working as a distributed company. Our journey. Meet Mage...
Atwix
 
Сергей Иващенко - Meet Magento Ukraine - Цены в Magento 2
Сергей Иващенко - Meet Magento Ukraine - Цены в Magento 2Сергей Иващенко - Meet Magento Ukraine - Цены в Magento 2
Сергей Иващенко - Meet Magento Ukraine - Цены в Magento 2
Atwix
 
Александр Смага, Юрий Муратов - Meet Magento Ukraine - Технический обзор OroCRM
Александр Смага, Юрий Муратов - Meet Magento Ukraine - Технический обзор OroCRM Александр Смага, Юрий Муратов - Meet Magento Ukraine - Технический обзор OroCRM
Александр Смага, Юрий Муратов - Meet Magento Ukraine - Технический обзор OroCRM
Atwix
 
Иван Чепурный - Meet Magento Ukraine - Varnish Cache and its usage in the rea...
Иван Чепурный - Meet Magento Ukraine - Varnish Cache and its usage in the rea...Иван Чепурный - Meet Magento Ukraine - Varnish Cache and its usage in the rea...
Иван Чепурный - Meet Magento Ukraine - Varnish Cache and its usage in the rea...
Atwix
 
Владимир Дубина - Meet Magento Ukraine - Data consistency
Владимир Дубина - Meet Magento Ukraine - Data consistencyВладимир Дубина - Meet Magento Ukraine - Data consistency
Владимир Дубина - Meet Magento Ukraine - Data consistency
Atwix
 
Андрей Самиляк - Meet Magento Ukraine - Как мы играли в DevOps и как получилс...
Андрей Самиляк - Meet Magento Ukraine - Как мы играли в DevOps и как получилс...Андрей Самиляк - Meet Magento Ukraine - Как мы играли в DevOps и как получилс...
Андрей Самиляк - Meet Magento Ukraine - Как мы играли в DevOps и как получилс...
Atwix
 
Сергей Кибиткин - Meet Magento Ukraine - Что вы никогда не сделаете в Magento
Сергей Кибиткин - Meet Magento Ukraine - Что вы никогда не сделаете в MagentoСергей Кибиткин - Meet Magento Ukraine - Что вы никогда не сделаете в Magento
Сергей Кибиткин - Meet Magento Ukraine - Что вы никогда не сделаете в Magento
Atwix
 
Макс Екатериненко - Meet Magento Ukraine - Magento 2 Overview
Макс Екатериненко - Meet Magento Ukraine - Magento 2 OverviewМакс Екатериненко - Meet Magento Ukraine - Magento 2 Overview
Макс Екатериненко - Meet Magento Ukraine - Magento 2 Overview
Atwix
 
Александр Каранда - Meet Magento Ukraine - Реальность нереальных вещей
Александр Каранда - Meet Magento Ukraine - Реальность нереальных вещейАлександр Каранда - Meet Magento Ukraine - Реальность нереальных вещей
Александр Каранда - Meet Magento Ukraine - Реальность нереальных вещей
Atwix
 
Антон Капля - Meet Magento Ukraine - Кодогенератор в Magento
Антон Капля - Meet Magento Ukraine - Кодогенератор в MagentoАнтон Капля - Meet Magento Ukraine - Кодогенератор в Magento
Антон Капля - Meet Magento Ukraine - Кодогенератор в Magento
Atwix
 
Анатолій Денис - Meet Magento Ukraine - Migration to Magento - mission possible
Анатолій Денис - Meet Magento Ukraine - Migration to Magento - mission possibleАнатолій Денис - Meet Magento Ukraine - Migration to Magento - mission possible
Анатолій Денис - Meet Magento Ukraine - Migration to Magento - mission possible
Atwix
 
Артем Кузнецов - Meet Magento Ukraine - инструменты для отдела поддержки, опы...
Артем Кузнецов - Meet Magento Ukraine - инструменты для отдела поддержки, опы...Артем Кузнецов - Meet Magento Ukraine - инструменты для отдела поддержки, опы...
Артем Кузнецов - Meet Magento Ukraine - инструменты для отдела поддержки, опы...
Atwix
 
Александр Стельмах - Meet Magento Ukraine - Прибыльная e-mail рассылка за 5 ш...
Александр Стельмах - Meet Magento Ukraine - Прибыльная e-mail рассылка за 5 ш...Александр Стельмах - Meet Magento Ukraine - Прибыльная e-mail рассылка за 5 ш...
Александр Стельмах - Meet Magento Ukraine - Прибыльная e-mail рассылка за 5 ш...
Atwix
 
Владимир Галика - Meet Magento Ukraine - Чудесный Новый Мир – почему продвиже...
Владимир Галика - Meet Magento Ukraine - Чудесный Новый Мир – почему продвиже...Владимир Галика - Meet Magento Ukraine - Чудесный Новый Мир – почему продвиже...
Владимир Галика - Meet Magento Ukraine - Чудесный Новый Мир – почему продвиже...
Atwix
 
Александр Колб - Meet Magento Ukraine - психология потребления онлайн
Александр Колб - Meet Magento Ukraine - психология потребления онлайнАлександр Колб - Meet Magento Ukraine - психология потребления онлайн
Александр Колб - Meet Magento Ukraine - психология потребления онлайн
Atwix
 
Елена Леонова - Meet Magento Ukraine - Трасформация в e-commerce с Magento
Елена Леонова - Meet Magento Ukraine - Трасформация в e-commerce с MagentoЕлена Леонова - Meet Magento Ukraine - Трасформация в e-commerce с Magento
Елена Леонова - Meet Magento Ukraine - Трасформация в e-commerce с Magento
Atwix
 
Thomas Fleck - Meet Magento Ukraine - How Magento and open source change the ...
Thomas Fleck - Meet Magento Ukraine - How Magento and open source change the ...Thomas Fleck - Meet Magento Ukraine - How Magento and open source change the ...
Thomas Fleck - Meet Magento Ukraine - How Magento and open source change the ...
Atwix
 
Артем Сухорослов - Meet Magento Ukraine - Коммерсанты vs. инженеры как помир...
Артем Сухорослов - Meet Magento Ukraine -  Коммерсанты vs. инженеры как помир...Артем Сухорослов - Meet Magento Ukraine -  Коммерсанты vs. инженеры как помир...
Артем Сухорослов - Meet Magento Ukraine - Коммерсанты vs. инженеры как помир...
Atwix
 

More from Atwix (20)

Yaroslav Rogoza - Development Environment: Local or Remote?
Yaroslav Rogoza - Development Environment: Local or Remote?Yaroslav Rogoza - Development Environment: Local or Remote?
Yaroslav Rogoza - Development Environment: Local or Remote?
 
Magento 2 performance comparison in different environments by Yaroslav Rogoza...
Magento 2 performance comparison in different environments by Yaroslav Rogoza...Magento 2 performance comparison in different environments by Yaroslav Rogoza...
Magento 2 performance comparison in different environments by Yaroslav Rogoza...
 
Viacheslav Kravchuk. Working as a distributed company. Our journey. Meet Mage...
Viacheslav Kravchuk. Working as a distributed company. Our journey. Meet Mage...Viacheslav Kravchuk. Working as a distributed company. Our journey. Meet Mage...
Viacheslav Kravchuk. Working as a distributed company. Our journey. Meet Mage...
 
Сергей Иващенко - Meet Magento Ukraine - Цены в Magento 2
Сергей Иващенко - Meet Magento Ukraine - Цены в Magento 2Сергей Иващенко - Meet Magento Ukraine - Цены в Magento 2
Сергей Иващенко - Meet Magento Ukraine - Цены в Magento 2
 
Александр Смага, Юрий Муратов - Meet Magento Ukraine - Технический обзор OroCRM
Александр Смага, Юрий Муратов - Meet Magento Ukraine - Технический обзор OroCRM Александр Смага, Юрий Муратов - Meet Magento Ukraine - Технический обзор OroCRM
Александр Смага, Юрий Муратов - Meet Magento Ukraine - Технический обзор OroCRM
 
Иван Чепурный - Meet Magento Ukraine - Varnish Cache and its usage in the rea...
Иван Чепурный - Meet Magento Ukraine - Varnish Cache and its usage in the rea...Иван Чепурный - Meet Magento Ukraine - Varnish Cache and its usage in the rea...
Иван Чепурный - Meet Magento Ukraine - Varnish Cache and its usage in the rea...
 
Владимир Дубина - Meet Magento Ukraine - Data consistency
Владимир Дубина - Meet Magento Ukraine - Data consistencyВладимир Дубина - Meet Magento Ukraine - Data consistency
Владимир Дубина - Meet Magento Ukraine - Data consistency
 
Андрей Самиляк - Meet Magento Ukraine - Как мы играли в DevOps и как получилс...
Андрей Самиляк - Meet Magento Ukraine - Как мы играли в DevOps и как получилс...Андрей Самиляк - Meet Magento Ukraine - Как мы играли в DevOps и как получилс...
Андрей Самиляк - Meet Magento Ukraine - Как мы играли в DevOps и как получилс...
 
Сергей Кибиткин - Meet Magento Ukraine - Что вы никогда не сделаете в Magento
Сергей Кибиткин - Meet Magento Ukraine - Что вы никогда не сделаете в MagentoСергей Кибиткин - Meet Magento Ukraine - Что вы никогда не сделаете в Magento
Сергей Кибиткин - Meet Magento Ukraine - Что вы никогда не сделаете в Magento
 
Макс Екатериненко - Meet Magento Ukraine - Magento 2 Overview
Макс Екатериненко - Meet Magento Ukraine - Magento 2 OverviewМакс Екатериненко - Meet Magento Ukraine - Magento 2 Overview
Макс Екатериненко - Meet Magento Ukraine - Magento 2 Overview
 
Александр Каранда - Meet Magento Ukraine - Реальность нереальных вещей
Александр Каранда - Meet Magento Ukraine - Реальность нереальных вещейАлександр Каранда - Meet Magento Ukraine - Реальность нереальных вещей
Александр Каранда - Meet Magento Ukraine - Реальность нереальных вещей
 
Антон Капля - Meet Magento Ukraine - Кодогенератор в Magento
Антон Капля - Meet Magento Ukraine - Кодогенератор в MagentoАнтон Капля - Meet Magento Ukraine - Кодогенератор в Magento
Антон Капля - Meet Magento Ukraine - Кодогенератор в Magento
 
Анатолій Денис - Meet Magento Ukraine - Migration to Magento - mission possible
Анатолій Денис - Meet Magento Ukraine - Migration to Magento - mission possibleАнатолій Денис - Meet Magento Ukraine - Migration to Magento - mission possible
Анатолій Денис - Meet Magento Ukraine - Migration to Magento - mission possible
 
Артем Кузнецов - Meet Magento Ukraine - инструменты для отдела поддержки, опы...
Артем Кузнецов - Meet Magento Ukraine - инструменты для отдела поддержки, опы...Артем Кузнецов - Meet Magento Ukraine - инструменты для отдела поддержки, опы...
Артем Кузнецов - Meet Magento Ukraine - инструменты для отдела поддержки, опы...
 
Александр Стельмах - Meet Magento Ukraine - Прибыльная e-mail рассылка за 5 ш...
Александр Стельмах - Meet Magento Ukraine - Прибыльная e-mail рассылка за 5 ш...Александр Стельмах - Meet Magento Ukraine - Прибыльная e-mail рассылка за 5 ш...
Александр Стельмах - Meet Magento Ukraine - Прибыльная e-mail рассылка за 5 ш...
 
Владимир Галика - Meet Magento Ukraine - Чудесный Новый Мир – почему продвиже...
Владимир Галика - Meet Magento Ukraine - Чудесный Новый Мир – почему продвиже...Владимир Галика - Meet Magento Ukraine - Чудесный Новый Мир – почему продвиже...
Владимир Галика - Meet Magento Ukraine - Чудесный Новый Мир – почему продвиже...
 
Александр Колб - Meet Magento Ukraine - психология потребления онлайн
Александр Колб - Meet Magento Ukraine - психология потребления онлайнАлександр Колб - Meet Magento Ukraine - психология потребления онлайн
Александр Колб - Meet Magento Ukraine - психология потребления онлайн
 
Елена Леонова - Meet Magento Ukraine - Трасформация в e-commerce с Magento
Елена Леонова - Meet Magento Ukraine - Трасформация в e-commerce с MagentoЕлена Леонова - Meet Magento Ukraine - Трасформация в e-commerce с Magento
Елена Леонова - Meet Magento Ukraine - Трасформация в e-commerce с Magento
 
Thomas Fleck - Meet Magento Ukraine - How Magento and open source change the ...
Thomas Fleck - Meet Magento Ukraine - How Magento and open source change the ...Thomas Fleck - Meet Magento Ukraine - How Magento and open source change the ...
Thomas Fleck - Meet Magento Ukraine - How Magento and open source change the ...
 
Артем Сухорослов - Meet Magento Ukraine - Коммерсанты vs. инженеры как помир...
Артем Сухорослов - Meet Magento Ukraine -  Коммерсанты vs. инженеры как помир...Артем Сухорослов - Meet Magento Ukraine -  Коммерсанты vs. инженеры как помир...
Артем Сухорослов - Meet Magento Ukraine - Коммерсанты vs. инженеры как помир...
 

Recently uploaded

Founders Of Digital World Social Media..
Founders Of Digital World Social Media..Founders Of Digital World Social Media..
Founders Of Digital World Social Media..
jom pom
 
SlideEgg_200767-ICC Mens T20 World Cup 2024.pptx
SlideEgg_200767-ICC Mens T20 World Cup 2024.pptxSlideEgg_200767-ICC Mens T20 World Cup 2024.pptx
SlideEgg_200767-ICC Mens T20 World Cup 2024.pptx
NandakumarP24
 
一比一原版澳洲巴拉特大学毕业证(utas毕业证书)如何办理
一比一原版澳洲巴拉特大学毕业证(utas毕业证书)如何办理一比一原版澳洲巴拉特大学毕业证(utas毕业证书)如何办理
一比一原版澳洲巴拉特大学毕业证(utas毕业证书)如何办理
taqyea
 
Steps involved in the implementation of EDI in a company
Steps involved in the implementation of EDI in a companySteps involved in the implementation of EDI in a company
Steps involved in the implementation of EDI in a company
sivaraman163206
 
Tarun Gaur On Data Breaches and Privacy Fears
Tarun Gaur On Data Breaches and Privacy FearsTarun Gaur On Data Breaches and Privacy Fears
Tarun Gaur On Data Breaches and Privacy Fears
Tarun Gaur
 
very nice project on internet class 10.pptx
very nice project on internet class 10.pptxvery nice project on internet class 10.pptx
very nice project on internet class 10.pptx
bazukagaming6
 
Future Trends What's Next for UI UX Design on Websites
Future Trends What's Next for UI UX Design on WebsitesFuture Trends What's Next for UI UX Design on Websites
Future Trends What's Next for UI UX Design on Websites
Serva AppLabs
 
10th International Conference on Networks, Mobile Communications and Telema...
10th International Conference on Networks, Mobile Communications and   Telema...10th International Conference on Networks, Mobile Communications and   Telema...
10th International Conference on Networks, Mobile Communications and Telema...
ijp2p
 
一比一原版(oregon毕业证书)俄勒冈大学毕业证如何办理
一比一原版(oregon毕业证书)俄勒冈大学毕业证如何办理一比一原版(oregon毕业证书)俄勒冈大学毕业证如何办理
一比一原版(oregon毕业证书)俄勒冈大学毕业证如何办理
taqyea
 
202254.com全网最高清影视香蕉影视,热门电影推荐,热门电视剧在线观看,免费电影,电影在线,在线观看。球华人在线電視劇,免费点播,免费提供最新高清的...
202254.com全网最高清影视香蕉影视,热门电影推荐,热门电视剧在线观看,免费电影,电影在线,在线观看。球华人在线電視劇,免费点播,免费提供最新高清的...202254.com全网最高清影视香蕉影视,热门电影推荐,热门电视剧在线观看,免费电影,电影在线,在线观看。球华人在线電視劇,免费点播,免费提供最新高清的...
202254.com全网最高清影视香蕉影视,热门电影推荐,热门电视剧在线观看,免费电影,电影在线,在线观看。球华人在线電視劇,免费点播,免费提供最新高清的...
ffg01100
 
Lincoln University degree offer diploma Transcript
Lincoln University degree offer diploma TranscriptLincoln University degree offer diploma Transcript
Lincoln University degree offer diploma Transcript
ubufe
 
Jarren Duran Fuck EM T shirts Jarren Duran Fuck EM T shirts
Jarren Duran Fuck EM T shirts Jarren Duran Fuck EM T shirtsJarren Duran Fuck EM T shirts Jarren Duran Fuck EM T shirts
Jarren Duran Fuck EM T shirts Jarren Duran Fuck EM T shirts
exgf28
 
一比一原版(greenwich毕业证书)英国格林威治大学毕业证如何办理
一比一原版(greenwich毕业证书)英国格林威治大学毕业证如何办理一比一原版(greenwich毕业证书)英国格林威治大学毕业证如何办理
一比一原版(greenwich毕业证书)英国格林威治大学毕业证如何办理
taqyea
 
一比一原版(heriotwatt毕业证书)英国赫瑞瓦特大学毕业证如何办理
一比一原版(heriotwatt毕业证书)英国赫瑞瓦特大学毕业证如何办理一比一原版(heriotwatt毕业证书)英国赫瑞瓦特大学毕业证如何办理
一比一原版(heriotwatt毕业证书)英国赫瑞瓦特大学毕业证如何办理
taqyea
 
seo proposal | Kiyado Innovations LLP pdf
seo proposal | Kiyado Innovations LLP  pdfseo proposal | Kiyado Innovations LLP  pdf
seo proposal | Kiyado Innovations LLP pdf
diyakiyado
 
一比一原版(uom毕业证)曼彻斯特大学毕业证如何办理
一比一原版(uom毕业证)曼彻斯特大学毕业证如何办理一比一原版(uom毕业证)曼彻斯特大学毕业证如何办理
一比一原版(uom毕业证)曼彻斯特大学毕业证如何办理
taqyea
 
一比一原版(bristol毕业证书)英国布里斯托大学毕业证如何办理
一比一原版(bristol毕业证书)英国布里斯托大学毕业证如何办理一比一原版(bristol毕业证书)英国布里斯托大学毕业证如何办理
一比一原版(bristol毕业证书)英国布里斯托大学毕业证如何办理
taqyea
 
Quiz Quiz Hota Hai (School Quiz 2018-19)
Quiz Quiz Hota Hai (School Quiz 2018-19)Quiz Quiz Hota Hai (School Quiz 2018-19)
Quiz Quiz Hota Hai (School Quiz 2018-19)
Kashyap J
 
一比一原版(爱大毕业证书)爱丁堡大学毕业证如何办理
一比一原版(爱大毕业证书)爱丁堡大学毕业证如何办理一比一原版(爱大毕业证书)爱丁堡大学毕业证如何办理
一比一原版(爱大毕业证书)爱丁堡大学毕业证如何办理
taqyea
 
一比一原版(brunel毕业证书)英国布鲁内尔大学毕业证如何办理
一比一原版(brunel毕业证书)英国布鲁内尔大学毕业证如何办理一比一原版(brunel毕业证书)英国布鲁内尔大学毕业证如何办理
一比一原版(brunel毕业证书)英国布鲁内尔大学毕业证如何办理
taqyea
 

Recently uploaded (20)

Founders Of Digital World Social Media..
Founders Of Digital World Social Media..Founders Of Digital World Social Media..
Founders Of Digital World Social Media..
 
SlideEgg_200767-ICC Mens T20 World Cup 2024.pptx
SlideEgg_200767-ICC Mens T20 World Cup 2024.pptxSlideEgg_200767-ICC Mens T20 World Cup 2024.pptx
SlideEgg_200767-ICC Mens T20 World Cup 2024.pptx
 
一比一原版澳洲巴拉特大学毕业证(utas毕业证书)如何办理
一比一原版澳洲巴拉特大学毕业证(utas毕业证书)如何办理一比一原版澳洲巴拉特大学毕业证(utas毕业证书)如何办理
一比一原版澳洲巴拉特大学毕业证(utas毕业证书)如何办理
 
Steps involved in the implementation of EDI in a company
Steps involved in the implementation of EDI in a companySteps involved in the implementation of EDI in a company
Steps involved in the implementation of EDI in a company
 
Tarun Gaur On Data Breaches and Privacy Fears
Tarun Gaur On Data Breaches and Privacy FearsTarun Gaur On Data Breaches and Privacy Fears
Tarun Gaur On Data Breaches and Privacy Fears
 
very nice project on internet class 10.pptx
very nice project on internet class 10.pptxvery nice project on internet class 10.pptx
very nice project on internet class 10.pptx
 
Future Trends What's Next for UI UX Design on Websites
Future Trends What's Next for UI UX Design on WebsitesFuture Trends What's Next for UI UX Design on Websites
Future Trends What's Next for UI UX Design on Websites
 
10th International Conference on Networks, Mobile Communications and Telema...
10th International Conference on Networks, Mobile Communications and   Telema...10th International Conference on Networks, Mobile Communications and   Telema...
10th International Conference on Networks, Mobile Communications and Telema...
 
一比一原版(oregon毕业证书)俄勒冈大学毕业证如何办理
一比一原版(oregon毕业证书)俄勒冈大学毕业证如何办理一比一原版(oregon毕业证书)俄勒冈大学毕业证如何办理
一比一原版(oregon毕业证书)俄勒冈大学毕业证如何办理
 
202254.com全网最高清影视香蕉影视,热门电影推荐,热门电视剧在线观看,免费电影,电影在线,在线观看。球华人在线電視劇,免费点播,免费提供最新高清的...
202254.com全网最高清影视香蕉影视,热门电影推荐,热门电视剧在线观看,免费电影,电影在线,在线观看。球华人在线電視劇,免费点播,免费提供最新高清的...202254.com全网最高清影视香蕉影视,热门电影推荐,热门电视剧在线观看,免费电影,电影在线,在线观看。球华人在线電視劇,免费点播,免费提供最新高清的...
202254.com全网最高清影视香蕉影视,热门电影推荐,热门电视剧在线观看,免费电影,电影在线,在线观看。球华人在线電視劇,免费点播,免费提供最新高清的...
 
Lincoln University degree offer diploma Transcript
Lincoln University degree offer diploma TranscriptLincoln University degree offer diploma Transcript
Lincoln University degree offer diploma Transcript
 
Jarren Duran Fuck EM T shirts Jarren Duran Fuck EM T shirts
Jarren Duran Fuck EM T shirts Jarren Duran Fuck EM T shirtsJarren Duran Fuck EM T shirts Jarren Duran Fuck EM T shirts
Jarren Duran Fuck EM T shirts Jarren Duran Fuck EM T shirts
 
一比一原版(greenwich毕业证书)英国格林威治大学毕业证如何办理
一比一原版(greenwich毕业证书)英国格林威治大学毕业证如何办理一比一原版(greenwich毕业证书)英国格林威治大学毕业证如何办理
一比一原版(greenwich毕业证书)英国格林威治大学毕业证如何办理
 
一比一原版(heriotwatt毕业证书)英国赫瑞瓦特大学毕业证如何办理
一比一原版(heriotwatt毕业证书)英国赫瑞瓦特大学毕业证如何办理一比一原版(heriotwatt毕业证书)英国赫瑞瓦特大学毕业证如何办理
一比一原版(heriotwatt毕业证书)英国赫瑞瓦特大学毕业证如何办理
 
seo proposal | Kiyado Innovations LLP pdf
seo proposal | Kiyado Innovations LLP  pdfseo proposal | Kiyado Innovations LLP  pdf
seo proposal | Kiyado Innovations LLP pdf
 
一比一原版(uom毕业证)曼彻斯特大学毕业证如何办理
一比一原版(uom毕业证)曼彻斯特大学毕业证如何办理一比一原版(uom毕业证)曼彻斯特大学毕业证如何办理
一比一原版(uom毕业证)曼彻斯特大学毕业证如何办理
 
一比一原版(bristol毕业证书)英国布里斯托大学毕业证如何办理
一比一原版(bristol毕业证书)英国布里斯托大学毕业证如何办理一比一原版(bristol毕业证书)英国布里斯托大学毕业证如何办理
一比一原版(bristol毕业证书)英国布里斯托大学毕业证如何办理
 
Quiz Quiz Hota Hai (School Quiz 2018-19)
Quiz Quiz Hota Hai (School Quiz 2018-19)Quiz Quiz Hota Hai (School Quiz 2018-19)
Quiz Quiz Hota Hai (School Quiz 2018-19)
 
一比一原版(爱大毕业证书)爱丁堡大学毕业证如何办理
一比一原版(爱大毕业证书)爱丁堡大学毕业证如何办理一比一原版(爱大毕业证书)爱丁堡大学毕业证如何办理
一比一原版(爱大毕业证书)爱丁堡大学毕业证如何办理
 
一比一原版(brunel毕业证书)英国布鲁内尔大学毕业证如何办理
一比一原版(brunel毕业证书)英国布鲁内尔大学毕业证如何办理一比一原版(brunel毕业证书)英国布鲁内尔大学毕业证如何办理
一比一原版(brunel毕业证书)英国布鲁内尔大学毕业证如何办理
 

Valeriy Nayda - Best Practices in Magento 2. Based on Multi Source Inventory (msi) project

  • 1. Page | 1© 2017 Magento, Inc. Khmelnytskyi Magento Meetup Best practices in Magento 2 Based on Multi-Source Inventory (MSI) project
  • 2. Page | 2© 2017 Magento, Inc. Khmelnytskyi Magento Meetup Valeriy Naida Magento Developer, Multi Source Inventory Community Engineering Team
  • 3. Page | 3© 2017 Magento, Inc. Khmelnytskyi Magento Meetup In one of our directions we have started to work with Community • Benefit for Magento is creation of new important feature • Benefit for Community is an increase in knowledge about Magento 2 • Provide a set of best practices how to work with Magento 2 (some cookbook) Community Engineering Team
  • 4. Page | 4© 2017 Magento, Inc. Khmelnytskyi Magento Meetup • What is API / SPI in Magento 2 (more practice) • Repository responsibility in Magento 2 • Use Composition instead of Inheritance / Traits • Object Manager should not be used as a class dependency … • There is no silver bullet (Think first!) Frequently asked questions
  • 5. Khmelnytskyi Magento Meetup API / SPI concepts in Magento 2
  • 6. Page | 6© 2017 Magento, Inc. Khmelnytskyi Magento Meetup API - Interfaces for usage (calling) in the client code Located in Api subfolder or in the separate module ApiModule API
  • 7. Page | 7© 2017 Magento, Inc. Khmelnytskyi Magento Meetup SPI - Interfaces that you should extend and implement to customize current behavior But NOT expected to be used (called) in the client code directly Located near implementation SPI
  • 8. Page | 8© 2017 Magento, Inc. Khmelnytskyi Magento Meetup Q: Can the API and SPI be a single interface? A: Yes. It often happens. Do not create empty proxy (API to SPI) classes FAQ
  • 9. Page | 9© 2017 Magento, Inc. Khmelnytskyi Magento Meetup Q: Can I call one API from another? A: Yes. You could create Sugar Service to avoid boilerplate code => • But provide clear DocBlock • Try to keep a single point of Customization FAQ
  • 10. Page | 10© 2017 Magento, Inc. Khmelnytskyi Magento Meetup Q: What about Resource Model? A: TBD Q: When is needed to add SPI? A: TBD Q: Why not introduce the @spi annotation? A: TBD FAQ
  • 11. Page | 11© 2017 Magento, Inc. Khmelnytskyi Magento Meetup 1. Main logic is API 2. Steps (strategies) are SPI Algorithm example
  • 12. Khmelnytskyi Magento Meetup Repository responsibility In Magento 2
  • 13. Page | 13© 2017 Magento, Inc. Khmelnytskyi Magento Meetup In Magento 2 Repository is considered as an implementation of Facade pattern which provides a simplified interface to a larger body of code responsible for Domain Entity base management BUT Repository is NOT new kind of “helper” Facade pattern
  • 14. Page | 14© 2017 Magento, Inc. Khmelnytskyi Magento Meetup Repository under hood Usually typical repository provides the following methods: Could NOT be wider than methods mentioned above
  • 15. Page | 15© 2017 Magento, Inc. Khmelnytskyi Magento Meetup Repository under hood List of the methods could be shorter if based on the business requirements particular entity doesn't have some of the operation(-s)
  • 16. Page | 16© 2017 Magento, Inc. Khmelnytskyi Magento Meetup Repository under hood Methods with their own semantic recommended to be put into some dedicated Services • Principle Of Least Surprise • Backward compatibility
  • 17. Page | 17© 2017 Magento, Inc. Khmelnytskyi Magento Meetup DDD liked services instead of Repository Link between Source and Stock doesn’t have sense from business side
  • 18. Page | 18© 2017 Magento, Inc. Khmelnytskyi Magento Meetup Repository Implementation
  • 19. Page | 19© 2017 Magento, Inc. Khmelnytskyi Magento Meetup 1. Repository could be considered as an API - Interface for usage (calling) in the business logic 2. Separate class-commands to which Repository proxies initial call (like, Get Save GetList Delete) could be considered as SPI Repository: API vs SPI segregation
  • 20. Khmelnytskyi Magento Meetup Object Manager should not be used as a class dependency
  • 21. Page | 21© 2017 Magento, Inc. Khmelnytskyi Magento Meetup Generally Object Manager should not be used as a class dependency Problems: • Class is hard coded and can not be replaced with a different one • Would require more work to modify the behavior by third parties Object Manager
  • 22. Page | 22© 2017 Magento, Inc. Khmelnytskyi Magento Meetup There is no good possibility to replace Logger object only for this Class Example - Problem
  • 23. Page | 23© 2017 Magento, Inc. Khmelnytskyi Magento Meetup Example - Solution
  • 24. Page | 24© 2017 Magento, Inc. Khmelnytskyi Magento Meetup Object Manager could be used in classes which create objects (Factories, Builders, Pools) When Object Manager is applicable
  • 25. Page | 25© 2017 Magento, Inc. Khmelnytskyi Magento Meetup May also be used to maintain Backwards Compatibility When Object Manager is applicable
  • 27. Page | 27© 2017 Magento, Inc. Khmelnytskyi Magento Meetup Inheritance / trait should not be used. Composition should be used instead Problems: • Inheritance enforces dependency on a specific parent class which can not be replaced in runtime • Would require more work to modify the behavior by third parties Inheritance
  • 28. Page | 28© 2017 Magento, Inc. Khmelnytskyi Magento Meetup Requires complete replacement of the renderer, instead of customizing it Example - Problem
  • 29. Page | 29© 2017 Magento, Inc. Khmelnytskyi Magento Meetup • Price Formatter may be easily replaced by injecting another dependency in the constructor • Allows precise modification of behavior Example - Solution
  • 30. Page | 30© 2017 Magento, Inc. Khmelnytskyi Magento Meetup • Class is a Subtype of another class • Template Method pattern (usually with Hollywood Principle: Don't call us, we'll call you) • You don’t need replaceability When Inheritance / trait is applicable
  • 31. Page | 31© 2017 Magento, Inc. Khmelnytskyi Magento Meetup Provides possibility of saving entity with predefined/pre-generated id (quick solution in waiting for the ORM) IS NOT supposed to be replaced
  • 33. Page | 33© 2017 Magento, Inc. Khmelnytskyi Magento Meetup • Magento 2 Technical Guidelines http://devdocs.magento.com/guides/v2.2/coding-standards/technical- guidelines/technical-guidelines.html • Backward compatible development http://devdocs.magento.com/guides/v2.2/contributor-guide/backward- compatible-development/ • Multi-Source Inventory (MSI) project https://github.com/magento-engcom/msi/wiki Useful Links
  • 34. Page | 34© 2017 Magento, Inc. Khmelnytskyi Magento Meetup Exchange Ideas
  • 35. Khmelnytskyi Magento Meetup How to join us? Send an email to engcom@magento.com @_naydav Thank y’all!