SlideShare a Scribd company logo
1 of 82
Download to read offline
#mm19de
Riccardo Tempesta
CTO – MageSpecialist
Top 5 contributor 2018
Top 4% Magento Stack Exchange
Magento Professional Developer
Magento Master 2019
Certified NERD and professional GEEK
1
#mm19de
DISCLAIMER 1:
The next slides contain a
personal interpretation
that may differ from the
official Magento architects
position
2
#mm19de
DISCLAIMER 2:
My english is bad, but my
german is even worst…
3
#mm19de
Awesome
architectures
in Magento 2.3
4
Today there is confusion on
Magento development
@RicTempesta - #mm19de
Being a Magento2 developer
is not stressful at all
-- Mark, 23 years old
«confusion» comes from latin:
«cum + fusus»
It means:
«Bonded with» or «Fused with»
@RicTempesta - #mm19de
Because we are still trying to «fuse» Magento 1 and Magento 2 togheter, while they are different!
MAGENTO2 evolved its
architecture
Approaching Magento 2 as it was
the same of Magento 1 can be
frustrating and pointless
Evolution of software architecture
from 1990’s to 2010’s
@RicTempesta - #mm19de
Software architecture evolution:
1990’s
Spaghetti coding (aka Copy & Paste)
@RicTempesta - #mm19de
Software architecture evolution:
1990’s
Spaghetti coding (aka Copy & Paste)
2000’s
Lasagna coding (aka Layered Monolith)
@RicTempesta - #mm19de
Software architecture evolution:
1990’s
Spaghetti coding (aka Copy & Paste)
2000’s
Lasagna coding (aka Layered Monolith)
2010’s
Ravioli coding (aka Microservices)
1990’s
the «Spaghetti coding era»
@RicTempesta - #mm19de
User Interface A blackbox working somehow
@RicTempesta - #mm19de
… inside the box:
… everything coupled with everything
Code production over code maintainability
@RicTempesta - #mm19de
Fragile architecture
Touching a single piece has unpredictable consequences
Hard to evolve and maintain
@RicTempesta - #mm19de
Why?
• No standards at that time
• Industry was asking for a fast software
development
• Most of the people did not think about
maintenance of the code being released
2000’s
the «Lasagna coding era»
@RicTempesta - #mm19de
Every layer depends on
underneath layers
Layered approach:
@RicTempesta - #mm19de
DBA
PHP
HTML
Layered approach:
@RicTempesta - #mm19de
The application becomes a N-
layered monolyth requiring every
single layer to be working.
Only bing releases because we
were not able to to deploy each
layer separately.
Unable to scale layers separately.
Layered monolith… the drawback
@RicTempesta - #mm19de
Softwares became more complex
and modular, but we could not
scale each module independently.
Some modules could became
bottlenecks for scalability.
Magento 1 is a good example.
Layered monolith… the drawback
2010’s
the «Ravioli coding era»
@RicTempesta - #mm19de
The final application is a
composition
of multiple «small» features.
Microservices approach:
@RicTempesta - #mm19de
We treat every single
component like an
independent application.
Microservices approach:
@RicTempesta - #mm19de
Each component can be
deployed separately.
Each component can be
scaled independently from
the whole application.
Microservices approach:
In what direction is the Magento2
architecture going?
MICROSERVICES?
NOT EXACTLY…
SERVICE ISOLATION
@RicTempesta - #mm19de
When speaking with Magento architects:
@RicTempesta - #mm19de
Today’s condition:
• Magento1 legacy
• Modules, but not modularity
• «God modules»
• Modules depending on other modules
implementation rather than abstraction
Typical of layered monolyths
@RicTempesta - #mm19de
Service isolation goals:
REPLACEABILITY:
Ability to replace a component with 3° party services
INDEPENDENT SCALABILITY and RELEASE:
Ability to scale and deploy each component separately
EVOLUTION:
Ability to evolve each component independently
First step:
modularity and contexts isolation
@RicTempesta - #mm19de
Let’s divide Magento in Bounded Contexts
Catalog Inventory CustomerCheckout …
@RicTempesta - #mm19de
Let’s divide Magento in Bounded Contexts
Catalog
Inventory
CustomerCheckout …
We consider each Bonded Context as isolated
and potentially replaceable
Another
Inventory
Cross context interaction
@RicTempesta - #mm19de
The MSI example integrating «sales»
SalesInventory
Interacting with other bounded contexts:
We need to add/change something in the «Sales» bounded context
to make «Sales» correctly working with «Inventory»
@RicTempesta - #mm19de
The MSI example integrating «sales»
SalesInventory
In the old Magento 1 world:
They would have been depending on each other
We would have to modify «Sales» and «Inventory» accordingly their needs
Mutual dependency
@RicTempesta - #mm19de
The MSI example integrating «sales»
SalesInventory
We want to achieve service isolation
They should not have a mutual dependency
Mutual dependency
@RicTempesta - #mm19de
Decoupled dependency
Sales
Inventory
InventorySales
When an interaction is required outside
the bounded context, an additional module
should be created.
«Inventory» is now isolated from «Sales».
Plugin to «Sales»
to modifiy/add
what we need
To make all of this work, we need
SOLID principles as base
@RicTempesta - #mm19de
• Single responsibility
• Open for extensions, Closed for modification
• Liskov substitution
• Interface segregation
• Dependency inversion
SOLID principles
@RicTempesta - #mm19de
• Single responsibility
• Open for extensions, Closed for modification
• Liskov substitution
• Interface segregation
• Dependency inversion
SOLID principles
Clear since Magento 1
@RicTempesta - #mm19de
• Single responsibility
• Open for extensions, Closed for modification
• Liskov substitution
• Interface segregation
• Dependency inversion
SOLID principles
@RicTempesta - #mm19de
• Single responsibility
• Open for extensions, Closed for modification
• Liskov substitution
• Interface segregation
• Dependency inversion
SOLID principles
@RicTempesta - #mm19de
Single responsibility classes
The rule is:
You should be able to
understand the specific
responsibility and
behavior of a class by
simply reading its
name.
Split responsibilities into multiple classes
@RicTempesta - #mm19de
Single responsibility
<?php
…
class GetProductIdsBySkus implements GetProductIdsBySkusInterface
{
…
public function execute(array $skus): array
{
$idsBySkus = $this->productResource->getProductsIdsBySkus($skus);
$notFoundedSkus = array_diff($skus, array_keys($idsBySkus));
…
return $idsBySkus;
}
…
}
A class has a single «atomic» responsibility and must be easy to replace.
This is why Magento «Helpers» should not be used anymore.
@RicTempesta - #mm19de
Single responsibility corollary
Composition over extension:
Class A extends B
Class B extends C
Class A
Class B
Class C
DI
@RicTempesta - #mm19de
Interface segregation
Break into multiple interfaces and let a single class extends multiple interface.
a.k.a: “The single responsibility principles for interfaces”.
Interface A
Interface B
MyClass implements A, B
@RicTempesta - #mm19de
Dependency inversion
Depend on abstractions and not on concretions
MyClass
Interface
Concrete class
Depends on
Dependency inversion leads to:
«API first» approach
@RicTempesta - #mm19de
API first
API / Interface
@RicTempesta - #mm19de
API first
API / Interface Concrete implementation
@RicTempesta - #mm19de
Bring abstraction at module level
MyModuleApi MyModule
@RicTempesta - #mm19de
Bring abstraction at module level
AnotherModule
MyModuleApi
By creating a module API, we define its abstraction.
Other modules should be depending on abstractions only.
MyModule
Easy to replace with 3°
party implementations
@RicTempesta - #mm19de
Bring abstraction at module level
@RicTempesta - #mm19de
@RicTempesta - #mm19de
Anton Kril’s architecture vision of Magento2
Director of architecture at Magento
@RicTempesta - #mm19de
So many modules…
More than 40 only for MSI
@RicTempesta - #mm19de
So many modules…
First reaction:
@RicTempesta - #mm19de
So many modules…
Second reaction:
@RicTempesta - #mm19de
So many modules…
But after diving into the code:
@RicTempesta - #mm19de
Why is so amazing:
• Fully modular system
• Full service isolation
• Clear code writing
• Classes and responsibilities are easy to find
• Each module or class is easy to replace
• Easy to handle in a structured teamwork
• No more «god modules» made of hundreds of
classes
DB isolation
@RicTempesta - #mm19de
The foreign keys problem:
Inventory context Catalog context
Source item Product entity
Product IDProduct ID
Foreign key
@RicTempesta - #mm19de
The foreign keys problem:
Inventory context Catalog context
Source item Product entity
Product IDProduct ID
Foreign key
@RicTempesta - #mm19de
Inventory DB
Inventory context Catalog context
Source item Product entity
SKU SKU
Catalog DB
Use of business keys
No DB dependency
CQRS and Eventual Consistency
in modules isolation
The «salability» example
@RicTempesta - #mm19de
Mind the CAP theorem
@RicTempesta - #mm19de
Mind the CAP theorem
You can have only 2
@RicTempesta - #mm19de
Mind the CAP theorem
Our system must be
available and
distributed.
So, we need to be
eventually consistent.
@RicTempesta - #mm19de
What you read is not what you write
Write representation A Read representation B
projection
Each context may have a different representation of the required information.
They can be also logically isolated other than technically isolated.
Potentially separated databases
@RicTempesta - #mm19de
What you read is not what you write
Write representation A Read representation B
projection
Projection takes time, so you can read an outdated information
that is going to be evtually consistent
@RicTempesta - #mm19de
The reservation mechanism
SKU Qty Reservation Operation
ABC 10 0 Initial status
ABC 10 2 Order placed
ABC 8 -2 Order shipped
… … … …
Because nothing is immediate in the real life
Stock quantity: SUM($sourcesQuantity)
Salable quantity: SUM($sourcesQuantity) – SUM($reservations)
@RicTempesta - #mm19de
The CQRS mechanism behind
Write sources quantity
projection
Stock quantity Reservations
Read salable quantity
BACKEND WRITE FRONTEND READ
Cabin crew, prepare for landing
@RicTempesta - #mm19de
A good example is the MSI project
https://github.com/magento-engcom/msi
@RicTempesta - #mm19de
To be involved in the Magento evolution:
Join the Application design channel in the Magento Community Engineering Slack Channel
magentocommeng.slack.com
#appdesign
#mm19de
Riccardo Tempesta (aka The Rick)
MageSpecialist
Twitter: @RicTempesta, @magespecialist
GitHub: https://github.com/magespecialist
THANK YOU!
#mm19de
QUESTIONS?

More Related Content

Similar to Awesome Architectures in Magento 2.3

Architecture in-the-small-slides
Architecture in-the-small-slidesArchitecture in-the-small-slides
Architecture in-the-small-slidesvinaikopp
 
NoSQL into E-Commerce: lessons learned
NoSQL into E-Commerce: lessons learnedNoSQL into E-Commerce: lessons learned
NoSQL into E-Commerce: lessons learnedLa FeWeb
 
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 coreAlessandro Ronchi
 
Riccardo Tempesta - The right tools for the right job (or: surviving Magento ...
Riccardo Tempesta - The right tools for the right job (or: surviving Magento ...Riccardo Tempesta - The right tools for the right job (or: surviving Magento ...
Riccardo Tempesta - The right tools for the right job (or: surviving Magento ...Meet Magento Italy
 
Headless CMS for Magento using Hyvä and Storyblok
Headless CMS for Magento using Hyvä and StoryblokHeadless CMS for Magento using Hyvä and Storyblok
Headless CMS for Magento using Hyvä and StoryblokMatthias Glitzner-Zeis
 
Old code doesn't stink - Detroit
Old code doesn't stink - DetroitOld code doesn't stink - Detroit
Old code doesn't stink - DetroitMartin Gutenbrunner
 
The right tools for the right job (or: surviving Magento 2 coding)
The right tools for the right job (or: surviving Magento 2 coding)The right tools for the right job (or: surviving Magento 2 coding)
The right tools for the right job (or: surviving Magento 2 coding)MageSpecialist
 
Introduction to Serverless. Oracle Fn Project.
Introduction to Serverless. Oracle Fn Project.Introduction to Serverless. Oracle Fn Project.
Introduction to Serverless. Oracle Fn Project.Rolando Carrasco
 
OrientDB - Perché le tue applicazioni meritano un DB Multi-Model
OrientDB - Perché le tue applicazioni meritano un DB Multi-ModelOrientDB - Perché le tue applicazioni meritano un DB Multi-Model
OrientDB - Perché le tue applicazioni meritano un DB Multi-ModelDevDay
 
OrientDB - the 2nd generation of (Multi-Model) NoSQL - Codemotion Warsaw 2016
OrientDB - the 2nd generation of (Multi-Model) NoSQL - Codemotion Warsaw 2016OrientDB - the 2nd generation of (Multi-Model) NoSQL - Codemotion Warsaw 2016
OrientDB - the 2nd generation of (Multi-Model) NoSQL - Codemotion Warsaw 2016Luigi Dell'Aquila
 
"You don't need a bigger boat": serverless MLOps for reasonable companies
"You don't need a bigger boat": serverless MLOps for reasonable companies"You don't need a bigger boat": serverless MLOps for reasonable companies
"You don't need a bigger boat": serverless MLOps for reasonable companiesData Science Milan
 
A Data Integration Case Study - Avoid Creating a “Franken-Beast”
A Data Integration Case Study - Avoid  Creating a “Franken-Beast”A Data Integration Case Study - Avoid  Creating a “Franken-Beast”
A Data Integration Case Study - Avoid Creating a “Franken-Beast”DATAVERSITY
 
Clean Architecture A Craftsman’s Guide to Software Structure and Design by Ro...
Clean Architecture A Craftsman’s Guide to Software Structure and Design by Ro...Clean Architecture A Craftsman’s Guide to Software Structure and Design by Ro...
Clean Architecture A Craftsman’s Guide to Software Structure and Design by Ro...HbBazan
 
MeetMagento NL 2018 - Riccardo Tempesta - Magento 2 under siege
MeetMagento NL 2018 - Riccardo Tempesta - Magento 2 under siegeMeetMagento NL 2018 - Riccardo Tempesta - Magento 2 under siege
MeetMagento NL 2018 - Riccardo Tempesta - Magento 2 under siegeRiccardo Tempesta
 
Axel Hafner - MakerBot Europe - European Market Entry - Stanford Engineering ...
Axel Hafner - MakerBot Europe - European Market Entry - Stanford Engineering ...Axel Hafner - MakerBot Europe - European Market Entry - Stanford Engineering ...
Axel Hafner - MakerBot Europe - European Market Entry - Stanford Engineering ...Burton Lee
 
Azure Industrial Iot Edge
Azure Industrial Iot EdgeAzure Industrial Iot Edge
Azure Industrial Iot EdgeRiccardo Zamana
 
Monoliths, Myths, and Microservices
Monoliths, Myths, and MicroservicesMonoliths, Myths, and Microservices
Monoliths, Myths, and MicroservicesMichael Ducy
 
Kafka at Scale: Multi-Tier Architectures
Kafka at Scale: Multi-Tier ArchitecturesKafka at Scale: Multi-Tier Architectures
Kafka at Scale: Multi-Tier ArchitecturesTodd Palino
 

Similar to Awesome Architectures in Magento 2.3 (20)

Architecture in-the-small-slides
Architecture in-the-small-slidesArchitecture in-the-small-slides
Architecture in-the-small-slides
 
NoSQL into E-Commerce: lessons learned
NoSQL into E-Commerce: lessons learnedNoSQL into E-Commerce: lessons learned
NoSQL into E-Commerce: lessons learned
 
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
 
Riccardo Tempesta - The right tools for the right job (or: surviving Magento ...
Riccardo Tempesta - The right tools for the right job (or: surviving Magento ...Riccardo Tempesta - The right tools for the right job (or: surviving Magento ...
Riccardo Tempesta - The right tools for the right job (or: surviving Magento ...
 
Headless CMS for Magento using Hyvä and Storyblok
Headless CMS for Magento using Hyvä and StoryblokHeadless CMS for Magento using Hyvä and Storyblok
Headless CMS for Magento using Hyvä and Storyblok
 
Old code doesn't stink - Detroit
Old code doesn't stink - DetroitOld code doesn't stink - Detroit
Old code doesn't stink - Detroit
 
The right tools for the right job (or: surviving Magento 2 coding)
The right tools for the right job (or: surviving Magento 2 coding)The right tools for the right job (or: surviving Magento 2 coding)
The right tools for the right job (or: surviving Magento 2 coding)
 
Introduction to Serverless. Oracle Fn Project.
Introduction to Serverless. Oracle Fn Project.Introduction to Serverless. Oracle Fn Project.
Introduction to Serverless. Oracle Fn Project.
 
OrientDB - Perché le tue applicazioni meritano un DB Multi-Model
OrientDB - Perché le tue applicazioni meritano un DB Multi-ModelOrientDB - Perché le tue applicazioni meritano un DB Multi-Model
OrientDB - Perché le tue applicazioni meritano un DB Multi-Model
 
Micro Frontends
Micro FrontendsMicro Frontends
Micro Frontends
 
OrientDB - the 2nd generation of (Multi-Model) NoSQL - Codemotion Warsaw 2016
OrientDB - the 2nd generation of (Multi-Model) NoSQL - Codemotion Warsaw 2016OrientDB - the 2nd generation of (Multi-Model) NoSQL - Codemotion Warsaw 2016
OrientDB - the 2nd generation of (Multi-Model) NoSQL - Codemotion Warsaw 2016
 
"You don't need a bigger boat": serverless MLOps for reasonable companies
"You don't need a bigger boat": serverless MLOps for reasonable companies"You don't need a bigger boat": serverless MLOps for reasonable companies
"You don't need a bigger boat": serverless MLOps for reasonable companies
 
A Data Integration Case Study - Avoid Creating a “Franken-Beast”
A Data Integration Case Study - Avoid  Creating a “Franken-Beast”A Data Integration Case Study - Avoid  Creating a “Franken-Beast”
A Data Integration Case Study - Avoid Creating a “Franken-Beast”
 
Clean Architecture A Craftsman’s Guide to Software Structure and Design by Ro...
Clean Architecture A Craftsman’s Guide to Software Structure and Design by Ro...Clean Architecture A Craftsman’s Guide to Software Structure and Design by Ro...
Clean Architecture A Craftsman’s Guide to Software Structure and Design by Ro...
 
Life after microservices
Life after microservicesLife after microservices
Life after microservices
 
MeetMagento NL 2018 - Riccardo Tempesta - Magento 2 under siege
MeetMagento NL 2018 - Riccardo Tempesta - Magento 2 under siegeMeetMagento NL 2018 - Riccardo Tempesta - Magento 2 under siege
MeetMagento NL 2018 - Riccardo Tempesta - Magento 2 under siege
 
Axel Hafner - MakerBot Europe - European Market Entry - Stanford Engineering ...
Axel Hafner - MakerBot Europe - European Market Entry - Stanford Engineering ...Axel Hafner - MakerBot Europe - European Market Entry - Stanford Engineering ...
Axel Hafner - MakerBot Europe - European Market Entry - Stanford Engineering ...
 
Azure Industrial Iot Edge
Azure Industrial Iot EdgeAzure Industrial Iot Edge
Azure Industrial Iot Edge
 
Monoliths, Myths, and Microservices
Monoliths, Myths, and MicroservicesMonoliths, Myths, and Microservices
Monoliths, Myths, and Microservices
 
Kafka at Scale: Multi-Tier Architectures
Kafka at Scale: Multi-Tier ArchitecturesKafka at Scale: Multi-Tier Architectures
Kafka at Scale: Multi-Tier Architectures
 

Recently uploaded

Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonApplitools
 
Advantages of Cargo Cloud Solutions.pptx
Advantages of Cargo Cloud Solutions.pptxAdvantages of Cargo Cloud Solutions.pptx
Advantages of Cargo Cloud Solutions.pptxRTS corp
 
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...kalichargn70th171
 
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldRoberto Pérez Alcolea
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?Alexandre Beguel
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesKrzysztofKkol1
 
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdfAndrey Devyatkin
 
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdfPros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdfkalichargn70th171
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorTier1 app
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogueitservices996
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingShane Coughlan
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsJean Silva
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...Bert Jan Schrijver
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfRTS corp
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slidesvaideheekore1
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxRTS corp
 
Understanding Plagiarism: Causes, Consequences and Prevention.pptx
Understanding Plagiarism: Causes, Consequences and Prevention.pptxUnderstanding Plagiarism: Causes, Consequences and Prevention.pptx
Understanding Plagiarism: Causes, Consequences and Prevention.pptxSasikiranMarri
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...OnePlan Solutions
 

Recently uploaded (20)

Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
 
Advantages of Cargo Cloud Solutions.pptx
Advantages of Cargo Cloud Solutions.pptxAdvantages of Cargo Cloud Solutions.pptx
Advantages of Cargo Cloud Solutions.pptx
 
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...
 
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
 
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
 
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdfPros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryError
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogue
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero results
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slides
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
 
Understanding Plagiarism: Causes, Consequences and Prevention.pptx
Understanding Plagiarism: Causes, Consequences and Prevention.pptxUnderstanding Plagiarism: Causes, Consequences and Prevention.pptx
Understanding Plagiarism: Causes, Consequences and Prevention.pptx
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
 

Awesome Architectures in Magento 2.3