The document discusses the evolution of software architectures from the 1990s to present day. It covers concepts like bounded contexts, modularity, and service isolation as they relate to Magento 2. The goal of Magento 2's evolution is to achieve independent scalability and deployability of system components through service isolation and loose coupling between contexts. This allows replacing parts of the core independently and scaling different parts separately.
Multi-Source Inventory. Imagine. Las Vegas. 2018Igor Miniailo
Presentation made by
Mark Brinton - Product Owner of MSI
Igor Miniailo - Architect of MSI
who described the story, product backlog, architecture and community contribution on the Multi-Source Inventory project
Multi Source Inventory (MSI) in Magento 2 Igor Miniailo
Multi Source Inventory (MSI) community project for Magento 2 made on MagentoLive UK 2017
MSI project - https://github.com/magento-engcom/msi
MSI project wiki - https://github.com/magento-engcom/msi/wiki
MSI project board - https://github.com/magento-engcom/msi/projects/1
Multi-Source Inventory: The Largest Community-Developed Feature in Magento. Brand new inventory management approach which is about to substitute existing CatalogInventory mechanism in Magento2.
Multi-Source Inventory. Imagine. Las Vegas. 2018Igor Miniailo
Presentation made by
Mark Brinton - Product Owner of MSI
Igor Miniailo - Architect of MSI
who described the story, product backlog, architecture and community contribution on the Multi-Source Inventory project
Multi Source Inventory (MSI) in Magento 2 Igor Miniailo
Multi Source Inventory (MSI) community project for Magento 2 made on MagentoLive UK 2017
MSI project - https://github.com/magento-engcom/msi
MSI project wiki - https://github.com/magento-engcom/msi/wiki
MSI project board - https://github.com/magento-engcom/msi/projects/1
Multi-Source Inventory: The Largest Community-Developed Feature in Magento. Brand new inventory management approach which is about to substitute existing CatalogInventory mechanism in Magento2.
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.
The value of a software comes from implementing particular business requirements. Business is interested neither in correct abstractions nor in code reuse. But business is interested in changes and cost of these changes.
The key to writing easy to evolve, extensible and customizable software is strictly defined component dependencies and boundaries.
This presentation considers several best practices that help to write high-quality maintainable Magento 2 modules as well as increase a value of contributed bug fixes and core improvements delivered by Magento Community with minimal code overhead.
Flamingo presentation at code.talks commerce by Daniel PötzingerAOE
Flamingo is a blazingly fast open source framework based on Go. It consists of two major components Flamingo Core and Flamingo Commerce that can be used independently. AOE CTO Daniel Pötzinger presented the Flamingo framework at code.talks commerce conference 2019 in Berlin.
More info on www.flamingo.me
www.aoe.com
Jacopo Nardiello - From CI to Prod: Running Magento at scale with KubernetesMeet Magento Italy
Developing and running web applications has become much more than just writing code. Business and engineers are now required to solve a new set of challenges which range from microservices architectures to set up software delivery pipelines, while releasing constantly new features. In this context, automation is key.
With Container-based architectures and Kubernetes we are on the verge of a copernican revolution in the way we handle operations and design our applications. The so called Cloud-Native stack open doors to unprecedented resilience, scalability and efficiency but the price to pay is complexity: Containers are a fundamental shift which require to re-think how components of your applications and infrastructure are developed and deployed.
In this talk we discussed the Domain specific concepts that power Kubernetes and how they apply to Magento. We immersed ourselves deeply on the architectural choices and challenges of running a production ready Magento deployment on Kubernetes and we will see hands-on how to fully automate the deployment lifecycle, web applications scaling (reducing scaling time from minutes to seconds), failures handling and self-healing.
The speech has been held with Simone Fantini -System Administrator & Magento Specialist – neen
How Customers are Building and Using their Own ConnectorsMuleSoft
As one of the most popular sessions at CONNECT each year, join our partner, Appnovation, and our customer, StubHub, as they show you how they built their own connector using our SDK, Anypoint Connector DevKit. Not only will each presenter show a demo of how they built the connector, they will also show how it is being used for different use cases, and tips and tricks they learned through experience from using DevKit. Don't miss it!
Flamingo - Inspiring Commerce Frontend made in Go - Meet Magento 2019AOE
Flamingo presentation slides from Daniel Pötzinger and Bastian Ike at Meet Magento 2019 in Leipzig, presenting the new, blazingly fast open source framework Flamingo. More info on www.flamingo.me
If you already worked with the e-commerce software Magento you know it's the same as with folk music or Bayern Munich: you either love it or you hate it. The reason for this is that Magento is both flexible and complex, resource intensive and very capable. Plus it's about 7 years old now and still it's one of the (if not the) most popular cart softwares. But behold! Finally, Magento 2 is on the horizon and should be available by the end of the year. Let's have a look at the foundation of Magento 2, its current state and when you may want to use it.
The Effect of Microservices on API DesignLunchBadger
How has microservices and new architectural style helped to evolve API Design? If you're working with microservices and APIS, this helpful presentation will underscore the important challenges and solutions you can take advantage of right now.
Learn more about:
- Monolith versus Microservices
- How Microservices and APIs interact
- Challenges & Solutions
- How to leverage Express Gateway, an open source API gateway built entirely on Express.js
Presented by Al Tsang, CEO of LunchBadger, at the 2017 SmartBear Conference in Boston, MA.
Intuitive APIs are critical success factors for modern software architectures. APIs should be easy to use, difficult to misuse, consumer friendly, easy to maintain and consistently designed.
In order to achieve these goals, it is important to develop APIs before starting the actual development and in a collaborative approach involving various stakeholders. This API-first design approach is important when it comes to exposing existing functionality in the enterprise, e.g. implemented as microservices, to the outside world.
But what role do APIs play in microservice architectures? How are API and Microservice implementations combined and how do I integrate them with a DevOps approach?
Questions answered in this session. A holistic development approach starting with API development up to the deployment of a microservice is considered. Tools such as Oracle Apiary, which support an API-first design approach or Oracle Wercker for the automation of build and deployment, will be presented.
[API World 2021 ] - Understanding Cloud Native DeploymentWSO2
Microservices and APIs built for digital transformation products require agile, reliable, and scalable cloud native infrastructure to truly meet customer expectations for a great "always there" user experience. Whether deployed on-premises or hosted in a public cloud, understanding and leveraging the right approach is key to success. This session takes up where the development process leaves off, tracking the standardization of containers and container orchestration for automated deployment, including current and future platform trends WSO2 and others are following.
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.
The value of a software comes from implementing particular business requirements. Business is interested neither in correct abstractions nor in code reuse. But business is interested in changes and cost of these changes.
The key to writing easy to evolve, extensible and customizable software is strictly defined component dependencies and boundaries.
This presentation considers several best practices that help to write high-quality maintainable Magento 2 modules as well as increase a value of contributed bug fixes and core improvements delivered by Magento Community with minimal code overhead.
Flamingo presentation at code.talks commerce by Daniel PötzingerAOE
Flamingo is a blazingly fast open source framework based on Go. It consists of two major components Flamingo Core and Flamingo Commerce that can be used independently. AOE CTO Daniel Pötzinger presented the Flamingo framework at code.talks commerce conference 2019 in Berlin.
More info on www.flamingo.me
www.aoe.com
Jacopo Nardiello - From CI to Prod: Running Magento at scale with KubernetesMeet Magento Italy
Developing and running web applications has become much more than just writing code. Business and engineers are now required to solve a new set of challenges which range from microservices architectures to set up software delivery pipelines, while releasing constantly new features. In this context, automation is key.
With Container-based architectures and Kubernetes we are on the verge of a copernican revolution in the way we handle operations and design our applications. The so called Cloud-Native stack open doors to unprecedented resilience, scalability and efficiency but the price to pay is complexity: Containers are a fundamental shift which require to re-think how components of your applications and infrastructure are developed and deployed.
In this talk we discussed the Domain specific concepts that power Kubernetes and how they apply to Magento. We immersed ourselves deeply on the architectural choices and challenges of running a production ready Magento deployment on Kubernetes and we will see hands-on how to fully automate the deployment lifecycle, web applications scaling (reducing scaling time from minutes to seconds), failures handling and self-healing.
The speech has been held with Simone Fantini -System Administrator & Magento Specialist – neen
How Customers are Building and Using their Own ConnectorsMuleSoft
As one of the most popular sessions at CONNECT each year, join our partner, Appnovation, and our customer, StubHub, as they show you how they built their own connector using our SDK, Anypoint Connector DevKit. Not only will each presenter show a demo of how they built the connector, they will also show how it is being used for different use cases, and tips and tricks they learned through experience from using DevKit. Don't miss it!
Flamingo - Inspiring Commerce Frontend made in Go - Meet Magento 2019AOE
Flamingo presentation slides from Daniel Pötzinger and Bastian Ike at Meet Magento 2019 in Leipzig, presenting the new, blazingly fast open source framework Flamingo. More info on www.flamingo.me
If you already worked with the e-commerce software Magento you know it's the same as with folk music or Bayern Munich: you either love it or you hate it. The reason for this is that Magento is both flexible and complex, resource intensive and very capable. Plus it's about 7 years old now and still it's one of the (if not the) most popular cart softwares. But behold! Finally, Magento 2 is on the horizon and should be available by the end of the year. Let's have a look at the foundation of Magento 2, its current state and when you may want to use it.
The Effect of Microservices on API DesignLunchBadger
How has microservices and new architectural style helped to evolve API Design? If you're working with microservices and APIS, this helpful presentation will underscore the important challenges and solutions you can take advantage of right now.
Learn more about:
- Monolith versus Microservices
- How Microservices and APIs interact
- Challenges & Solutions
- How to leverage Express Gateway, an open source API gateway built entirely on Express.js
Presented by Al Tsang, CEO of LunchBadger, at the 2017 SmartBear Conference in Boston, MA.
Intuitive APIs are critical success factors for modern software architectures. APIs should be easy to use, difficult to misuse, consumer friendly, easy to maintain and consistently designed.
In order to achieve these goals, it is important to develop APIs before starting the actual development and in a collaborative approach involving various stakeholders. This API-first design approach is important when it comes to exposing existing functionality in the enterprise, e.g. implemented as microservices, to the outside world.
But what role do APIs play in microservice architectures? How are API and Microservice implementations combined and how do I integrate them with a DevOps approach?
Questions answered in this session. A holistic development approach starting with API development up to the deployment of a microservice is considered. Tools such as Oracle Apiary, which support an API-first design approach or Oracle Wercker for the automation of build and deployment, will be presented.
[API World 2021 ] - Understanding Cloud Native DeploymentWSO2
Microservices and APIs built for digital transformation products require agile, reliable, and scalable cloud native infrastructure to truly meet customer expectations for a great "always there" user experience. Whether deployed on-premises or hosted in a public cloud, understanding and leveraging the right approach is key to success. This session takes up where the development process leaves off, tracking the standardization of containers and container orchestration for automated deployment, including current and future platform trends WSO2 and others are following.
MuleSoft London Community March 2018 - The power of the CrowdPace Integration
Our latest MuleSoft meetup in London showcased features of MuleSoft's Crowd release, our own take on the Connectivity Report 2018, a hands on demo, and as always lots of great networking!
It's easy to say... Microservices! Reality is we need to learn and apply concepts coming from many disciplines like SOA, EDA and DDD just to name a few! Mix them with some ALM and technical processes around Packaging and Deploying... and maybe then you get a true Microservices solution.
Every single developer heard this say more than one time during his professional career, 'KIS' which means 'Keep It Simple', however with the excessive evolvement of the web computing and the continues rise of the distributed systems, the complexity of the systems architecture increases. Building a server enterprise application which is highly scalable with high and reliable availability in addition to great performance which consists of set of independent deployable oriented services can be achieved by Microservice architecture. This session introduces briefly what is the Microservice Architecture and how to build it using one of the most popular server programming languages which is called Go or Golang.
What are different software architectures and where it is used.All pros and cons with basic descriptions.Although each of these architectures needs detail description of its own.
Can low-code overturn this wisdom? Is it possible to simplify the solutions to complex integration problems with better tools? In other words, the right low-code integration
tools – tools like OutSystems Integration
Builder – combine the best of automation
and low-code simplicity, where the software
automatically creates and updates integrations
when possible, while facilitating human
integration actions via low-code
when necessary.
Devnexus - Nowadays Architecture Trends, from Monolith to Microservices and S...Alberto Salazar
In this session, attendees will learn about a real-world evolution to a Distributed Architecture without being involved of a complete Microservices Madness; we will be covering tips and tricks of an experience of a evolution of a huge EAR Core Banking Application and how we evolve to a modern distributed Architecture until the evolution of use 3rd party services and Serverless; tips, tricks, pros, cons and the reasons for being involved on move forward and present sample code as FaaS and explain the pitfalls of Serverless and the security concerns on this evolution. We will be using snippets code based on JAVA, JWT, JWS, Auth0, Spring Boot, Reactor, Webflux, Spring Cloud Gateway and Spring Cloud Functions.
Moving from a monolithic based architecture to a more microservices architecture can be fraught with challenges. This talk covers some of these challenges and some common myths associated with trying to strangle the Monolith. We will also talk a bit about the open source project Habitat (habitat.sh), and how it can help you move towards microservices.
Meet Magento IT 2021 - Principles & Advantages of Hexagonal Architecture on M...Alessandro Ronchi
These are the slides of the presentation of how to apply principles of hexagonal architecture in a Magento extension.
The sample project can be found here: https://github.com/aleron75/ddd_loyaly_card/
This work is based on the book by Matthias Noback: Advanced Web Application Architecture - https://matthiasnoback.nl/book/advanced-web-application-architecture/
The slides of my talk at Meet Magento Netherlands 2016, based on the article published on: https://medium.com/@aleron75/why-i-did-one-step-backward-to-go-forward-79d8316bafc
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfPeter Spielvogel
Building better applications for business users with SAP Fiori.
• What is SAP Fiori and why it matters to you
• How a better user experience drives measurable business benefits
• How to get started with SAP Fiori today
• How SAP Fiori elements accelerates application development
• How SAP Build Code includes SAP Fiori tools and other generative artificial intelligence capabilities
• How SAP Fiori paves the way for using AI in SAP apps
UiPath Test Automation using UiPath Test Suite series, part 5DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 5. In this session, we will cover CI/CD with devops.
Topics covered:
CI/CD with in UiPath
End-to-end overview of CI/CD pipeline with Azure devops
Speaker:
Lyndsey Byblow, Test Suite Sales Engineer @ UiPath, Inc.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
2. Awesome architectures
in Magento 2.3
Alessandro Ronchi
Bitbull
@aleron75
This presentation has been realized with kind permission of Riccardo Tempesta (The
Rick); the original one was presented by him at Meet Magento Germany 2019 and the
slides you are seeing here are just a refactoring of his original work. Most of the
content is the same, especially the jokes :)
3. @MageTitansES @aleron75
And, in turn, most of the work presented here is built standing on the shoulders of
heroes like the Magento architect you see here.
- Igor Miniailo
- Eugene Shakhsuvarov
- Anton Kril
If you are wondering where all this hero culture comes from…
5. - COO at Bitbull
- Mage Titans Italy organizer
- Magento Master 2017, 2019
- Top 50 Contributor 2017, 2018
- Magento Community Maintainer
Alessandro Ronchi
@MageTitansES @aleron75
Never stop exploring!
Just a couple of words about me.
6. Agenda
1. The Magento legacy
2. Software architectures evolution
3. Evolution of Magento 2
4. Some applied concepts
7. Confused about
Magento development?
We’ve heard that someone feels a bit stressed by developing on Magento 2 and this
probably comes from a bit of confusion.
Nevertheless I’ve talked with Mark, a 23yo guy, who told me that developing on
Magento 2 is not stressful at all.
8. “Being a Magento 2 developer
is not stressful at all”
~ Mark, 23 years old
@MageTitansES @aleron75
You can see the quote from Mark…
And yes, you spotted out the joke because, actually, Mark is only 20yo :)
9. CONFUSION
from Latin: “cum” + “fusus”
So where this stress come from?
To understand, let’s see where this confusion comes from.
10. M2 !== M1
It comes from the fact that M2 is not a revolution but an evolution of M1: M1 is our
legacy, merged into M2.
Despite this, we shouldn’t develop on M2 the same way we did on M1, here is where
the confusion likely comes from.
11. Software architecture
evolution: 1990’s to 2010’s
To better understand our legacy and the direction M2 is getting, let me briefly run
through the evolution of software architectures of last decades.
And indulge me to do it like any legit Italian should do it.
13. Software architecture: 1990s
@MageTitansES @aleron75
- no standards
- fast development
- no maintenance
At that time we had very few standards for web applications, the market required fast
development and the concept of software maintenance was pretty new.
As a result, code suffered from high coupling, we couldn’t change one piece of code
without affecting another and, infact, we didn’t do it.
Rather, we preferred to copy logic here and there because applying changes could
have brought undesired side effects (known as regressions).
Without tests, we couldn’t perform refactoring and w/o refactoring we couldn’t clean
the kitchen, we couldn’t increase the quality and maintainability of our code.
15. Software architecture: 2000s
@MageTitansES @aleron75
- bigger complexity
- testability
- scalability (as a whole)
In the 2000s the market required more complex, testable and scalable web
applications.
We realized that we could obtain this by isolating some responsibilities into layers.
So n-layered applications came out.
Typical 3-layered: presentation, business logic, data handling.
This architecture is not bad per se, this is how, for example, M1 was built.
But there are some limitations:
- not possible to scalable separately read/write
- app deployed as a whole (monolithic application)
- layers tend to reflect the data model, UIs are typically CRUD oriented
16. Software architecture: 2010s
@MageTitansES @aleron75
Finally we realized that we could split a monolith into smaller pieces, each with single
specific responsibility, with something good inside exposed through public interfaces
(APIs).
It was time to serve ravioli!
17. Software architecture: 2010s
@MageTitansES @aleron75
- composition
- independent deployability
- independent scalability
This kind of applications allows us to compose functionality, deploy and scale them
independently.
This is what we called Service Oriented Architectures and, more trendily,
microservices.
23. @MageTitansES @aleron75
...that can brings us to situations like the one illustrated.
This comes as a legacy from Magento 1 and it became evident thanks to DI.
Why having all these dependencies (which btw is not good) was not evident before?
24. final class Mage
Because of the infamous “God” class of M1
It allowed a class to easily depend on other classes at the cost of “hiding” this
dependency (while adding more and more responsibilities).
DI made all these dependencies evident in M2 and revealed the architectural
problems of M1: classes had too much responsibilities.
26. MODULES !== MODULARITY
Not quite: having modules doesn’t mean having a real modular architecture.
Real modularity is the very first step towards Service Isolation.
28. @MageTitansES @aleron75
Bounded Contexts
InventoryCatalog Checkout Customer ...
Bounded Contexts is a concept that comes from Domain Driven Design; in brief:
DDD is an approach to software development that helps us taking decisions about
how to design our application speaking the ubiquitous language of the Domain
Experts (our customer) and trying to avoid ambiguity and focusing on design
simplification.
A Bounded Context is a unit in which all the elements that we design have an
ubiquitous meaning and possibly a single responsibility, allowing us to reach
design simplification.
29. Another Inventory
@MageTitansES @aleron75
Bounded Contexts: replaceability
Inventory
Catalog Checkout Customer ...
Isolating elements (concepts) in bounded context easily allows to obtain
replaceability, one of the key goals of Service Isolation.
30. @MageTitansES @aleron75
Bounded Contexts: example
Catalog
- sku
- name
- description
...
Let’s see an example: the representation of a product in different contexts.
31. @MageTitansES @aleron75
Bounded Contexts: example
Catalog
- sku
- name
- description
...
Inventory
- sku
- physical qty
- in stock
...
Here we see that a product in different contexts can have different attributes.
32. @MageTitansES @aleron75
Bounded Contexts: example
Catalog
- sku
- name
- description
...
Inventory
- sku
- physical qty
- in stock
...
Checkout
- sku
- salable qty
- unit price
...
Different responsibilities, different behaviors, no need to generalize in a unique
concept that would be:
- charged with too many responsibilities
- prone to ambiguity: what does a “qty” property represent? Physical
availability? Salable quantity?
33. @MageTitansES @aleron75
Bounded Contexts: example
Catalog
Product
Inventory
Source Item
Checkout
Quote Item
In different contexts, the same concept maps to different entities.
Different entities can be simpler, more specialized, less ambiguous.
40. @MageTitansES @aleron75
Contexts Interaction in M1: coupled
Inventory Sales
MUTUAL DEPENDENCY
This is how context interaction works in M1 (and still works in the majority of M2
codebase): we have mutual dependency between different contexts.
That’s not what we want.
41. @MageTitansES @aleron75
Contexts Interaction in M2: decoupled
Inventory
Sales
Inventory Sales
Uses plugins to
add/change logic
This, instead, is how ideally we can achieve decoupled context interaction in M2:
through the usage of a specific context which makes the connection b/w two isolated
contexts that don’t share anything with each other.
This third element implements specialized business logic and can use plugins to
interact with the other contexts.
43. @MageTitansES @aleron75
Observers: why not
Extension point
Observer
Event
Event
Extension point
- soft dependencies
- rely only on existing extension points
Observers don’t allow us to define hard evident dependencies meaning that, if the
event that is observed is not dispatched, the observer is not triggered.
If something is not working we don’t have evidence of that.
Furthermore, we can only rely on extension points that have been previously defined:
no event triggered, no extension point.
44. @MageTitansES @aleron75
Preferences: why not always
- some classes still do too much
- can be used on single responsibility classes
- all or none
MANY RESPONSIBILITIES
TOO MANY POTENTIAL SIDE EFFECTS
SINGLE RESPONSIBILITY
(WHEN AVAILABLE)
Preferences allow us to replace a core class with our own implementation. That can
work sometimes but the truth is that a lot of classes in M2 still have a lot of
responsibilities; replacing a class means taking the ownership of all its business logic.
Maybe we need to change only a few behaviors.
Through preferences, there can be only one class replacing another at the same time,
no space for others.
45. @MageTitansES @aleron75
Plugins: the best option
- hard & explicit dependencies
- no extension point needed (more or less)
- work at method level
Plugins are the best option, because they don’t have the drawbacks seen:
- dependency is hard and explicit because we declare the class which we are
pluginizing by passing it as the $subject parameter
- we don’t need the core team to have foreseen the possible extension point
because we can pluginize every public method (read more here)
- they work at method level and multiple plugins can coexist on the same class
and even on the same method
46. MODULARITY
API FIRST
Last, but not least, real modularity can be achieved by designing a system that rely
on abstractions, that is, interfaces or, in other words, APIs.
50. @MageTitansES @aleron75
API first: replaceability
MyModuleApi MyModule
AnotherModule
- modules only depend on abstractions
Again, depending on abstractions allows us to obtain replaceability
53. @MageTitansES @aleron75
API first: modules splitting
http://bit.ly/mage2si
This is a picture made among others by Anton Kril, Director of Architecture at
Magento, that summarizes the possible scenarios before and after applying this
approach.
You can find this and other diagrams in the Service Isolation repository linked before:
http://bit.ly/mage2si
54. @MageTitansES @aleron75
Modules splitting: so many modules!
MSI is 40+ modules, so far...
A consequence of this approach is the growing number of modules required to
implement a functionality.
60. FULL MODULAR SYSTEM CLEAR CONTEXT BOUNDARIES
@MageTitansES @aleron75
Service isolation
This approach allows us to have:
- full modularity
- clear context boundaries
61. FULL MODULAR SYSTEM CLEAR CONTEXT BOUNDARIES EASY TO FIND RESPONSIBILITIES
@MageTitansES @aleron75
Service isolation
This approach allows us to have:
- full modularity
- clear context boundaries
- classes that are easier to find because they have fewer responsibilities,
located in proper namespaces
62. FULL MODULAR SYSTEM CLEAR CONTEXT BOUNDARIES EASY TO FIND RESPONSIBILITIES
REPLACEABILITY
@MageTitansES @aleron75
Service isolation
This approach allows us to have:
- full modularity
- clear context boundaries
- classes that are easier to find because they have few responsibilities located
in proper namespaces
- we get replaceability, making it easier to override entire parts of core module
63. FULL MODULAR SYSTEM CLEAR CONTEXT BOUNDARIES EASY TO FIND RESPONSIBILITIES
REPLACEABILITY INDEPENDENT SCALABILITY
@MageTitansES @aleron75
Service isolation
This approach allows us to have:
- full modularity
- clear context boundaries
- classes that are easier to find because they have few responsibilities located
in proper namespaces
- we get replaceability, making it easier to override entire parts of core module
- and finally, we can scale pieces of application independently thanks to DB
isolation
65. @MageTitansES @aleron75
DB isolation: foreign keys?
FK
Source Item
product_id product_id
Product
In Magento 1 (and still in the majority of Magento 2 as well), we can’t split the DB not
to break referential integrity.
66. FK
Source Item
product_id product_id
Product
FK: THE DATABASE MUST BE THE SAME
@MageTitansES @aleron75
DB isolation: foreign keys?
Because of this “internal” link, different parts of the application must share the same
DB.
67. Source Item
sku sku
Product
@MageTitansES @aleron75
DB isolation: foreign keys?
use business keys: no DB dependency
So what can we do to avoid problems with foreign keys?
Get rid of them! Using business keys, instead.
68. Source Item
sku sku
Product
use business keys: no DB dependency
@MageTitansES @aleron75
DB isolation: foreign keys?
Pay attention, this comes at a cost: we lose something, of course, because we are
entering in the field of distributed systems where immediate data consistency is
not always guaranteed.
70. @MageTitansES @aleron75
The CAP theorem
Reference:
https://www.dataversity.net/acid-vs-base-the-shifting-ph-of-database-transaction-proc
essing/
There are three essential system requirements necessary for the successful
design, implementation and deployment of distributed applications.
They are Consistency, Availability and Partition Tolerance – or CAP:
- Consistency: all nodes see the same data at the same time
- Availability: node failures don’t prevent the system to continue working
- Partition Tolerance: network failures don’t prevent the system to
continue working
CA: typical of ACID systems (Atomicity, Consistency, Isolation, Durability: M1) - not
good for scaling
CP: typical of BASE systems (Basically Available, Soft state, Eventual consistency:
M2)
71. in distributed systems
we can guarantee
only two!
@MageTitansES @aleron75
The CAP theorem
The CAP Theorem states that in distributed systems we can guarantee only two of the
three requirements.
Magento 1 is an ACID system where we have Consistency and Availability
guaranteed.
72. in large scalable
distributed systems
we give up on
immediate consistency
@MageTitansES @aleron75
The CAP theorem
The Service Isolated architecture towards which Magento 2 is evolving requires it to
abandon Immediate Consistency shifting from an ACID to a BASE system.
73. in large scalable
distributed systems
we rely on
eventual consistency
@MageTitansES @aleron75
The CAP theorem
Eventual Consistency means that the system will eventually become consistent
once it stops receiving input.
The data will propagate to everywhere it should sooner or later, but the system will
continue to receive input and is not checking the consistency of every transaction
before it moves onto the next one.
Examples of eventual consistency we experience everyday as users:
- Dropbox
- Git
- Google Docs
74. We read data from hereWe write data here
Separate contexts can have different representation of an information.
Data projection doesn’t happen necessarily in real-time and can take some time.
DATA PROJECTION
@MageTitansES @aleron75
Eventual consistency
A diagram illustrating how data becomes consistent b/w different systems.
76. Is this the real life?
Is this just fantasy?
Let me anticipate a question that can come from the audience.
All the ideas expressed here are the result of how Magento Inventory (formerly MSI)
is developed and chances are that the future architecture of Magento 2 (or should we
call it Magento 3?) is going towards this.
As an old Chinese saying tells us: "A journey of a thousand miles begins with a single
step"
77. @MageTitansES @aleron75
Reference: MSI Magento Inventory
http://bit.ly/mageinventory
That’s why I heavily recommend to start looking at the Magento Inventory Project.
78. Good reads
http://bit.ly/dsbook1 http://bit.ly/dsbook2 http://bit.ly/dsbook3
FREE!
Here are some recommended books about distributed systems:
- Designing Data-Intensive Applications http://bit.ly/dsbook1
- Building Microservices http://bit.ly/dsbook2
- Distributed Systems (introductory, easy, free, must read!) http://bit.ly/dsbook3
79. What I learned
1. M2: CONTINUOUS IMPROVEMENT
2. SERVICE ISOLATION
3. DISTRIBUTED SYSTEM (M3?)
4. LEARN BY CONTRIBUTING
To recap the lessons learned:
- Magento is under continuous improvement
- At date, Service Isolation is the number one goal of architectural evolution
- In the future, Magento could become a distributed platform
- All the information provided in this presentation (and many, many more) were
learned by contributing to the Magento core
80. “there’s no better way to learn!”
Paraphrasing a famous flying company, contributing is the better way to learn (in my
opinion).
81. @MageTitansES @aleron75
Get involved in the evolution!
It’s up to you: hate or help!
https://magentocommeng.slack.com/messages#appdesign
Jump in, if you want.
82. I thank you all!
Alessandro Ronchi
Bitbull
@aleron75
“You brought me fame and fortune and everything that goes with it.
I thank you all” ~ Freddy Mercury