SlideShare a Scribd company logo
1 of 61
Download to read offline
Principles & Advantages
of Hexagonal Architecture
on Magento
June 10/11 2021  Virtual Conference
Alessandro Ronchi
COO  Bitbull
Principles & Advantages of Hexagonal Architecture on Magento
Testing is hard
it is even harder on Magento
Principles & Advantages of Hexagonal Architecture on Magento
There must be a way
to simplify testing
Principles & Advantages of Hexagonal Architecture on Magento
to the rescue
Hexagonal architecture
Principles & Advantages of Hexagonal Architecture on Magento
Decoupling
Focus on the domain
Focus on testability
Advantages
Principles & Advantages of Hexagonal Architecture on Magento
Team mentor at Bitbull
Passionate about Software Design
Magento Master & Maintainer
About me
@aleron75
Principles & Advantages of Hexagonal Architecture on Magento
a different way of layering components
Hexagonal architecture
Principles & Advantages of Hexagonal Architecture on Magento
Decoupling
Core vs Infrastructure
CORE
CODE
DOES NOT DEPEND ON
EXTERNAL SYSTEMS
INFRASTRUCTURE
CODE
DEPENDS ON
EXTERNAL SYSTEMS
INFRASTRUCTURE
CORE
R/W
MODEL
WEB
CONTROLLER
USES
R/W
CORE
CODE
DEFINES & DEPENDS ON
ABSTRACTIONS
INFRASTRUCTURE
CODE
IMPLEMENTS
ABSTRACTIONS
CORE
CODE
DEFINES & DEPENDS ON
ABSTRACTIONS
INFRASTRUCTURE
CODE
IMPLEMENTS
ABSTRACTIONS
MYSQL REPOSITORY
<REPOSITORY>
IMPLEMENTED BY
CORE
CODE
DOES NOT DEPEND ON
CONTEXT
INFRASTRUCTURE
CODE
DEPENDS ON
CONTEXT
WEB CONTROLLER
SERVICE
USED BY
CORE
CODE
DOES NOT DEPEND ON
CONTEXT
INFRASTRUCTURE
CODE
DEPENDS ON
CONTEXT
CLI COMMAND
SERVICE
USED BY
INFRASTRUCTURE
CORE
SERVICE
MYSQL
REPOSITORY
<REPOSITORY>
WEB
CONTROLLER
USES
IMPLEMENTED BY
USES
USES
R/W
CLI
COMMAND
USES
APPLICATION
CARD REPOSITORY
CARD
CONTROLLER
USES
USES
R/W
class Save extends Action implements HttpPostActionInterface
{
// ...
public function execute()
{
$redirectResult =
$this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
$cardNumber = $this->getRequest()->getParam('card_number');
$customerId = (int)$this->currentCustomer->getCustomerId();
// validation and error handling...
$card = $this->cardFactory->create();
$card->setData([
‘card_number’ => $cardNumber,
‘customer_id’ => $customerId,
]);
$this->cardRepository->save($card);
return $redirectResult->setPath('loyalty/card/index');
}
}
class Save extends Action implements HttpPostActionInterface
{
// ...
public function execute()
{
$redirectResult =
$this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
$cardNumber = $this->getRequest()->getParam('card_number');
$customerId = (int)$this->currentCustomer->getCustomerId();
// validation and error handling...
$command = new RegisterCardCommand($customerId, $cardNumber);
$this->application->registerCard($command);
return $redirectResult->setPath('loyalty/card/index');
}
}
class Save extends Action implements HttpPostActionInterface
{
// ...
public function execute() {
// ...
$this->application->registerCard($command); // framework-agnostic
// ...
}
}
class Save extends Action implements HttpPostActionInterface
{
// ...
public function execute() {
// ...
$this->cardRepository->save($card); // framework-coupled
// ...
}
}
vs
CORE
CODE
- FRAMEWORK: AGNOSTIC
- CHANGES: MANAGED
INFRASTRUCTURE
CODE
- FRAMEWORK: BASED ON IT
- CHANGES: UNPREDICTABLE
Principles & Advantages of Hexagonal Architecture on Magento
a better name: Ports & Adapters
Hexagonal architecture
PORT
- WHAT OUR CORE CAN DO
- INTENT OF COMMUNICATION
ADAPTER
...
INFRASTRUCTURE
CORE
SERVICE
MYSQL
REPOSITORY
<REPOSITORY>
WEB
CONTROLLER
USES
IMPLEMENTED BY
USES
USES
R/W
INFRASTRUCTURE
CORE
PORT
MYSQL
REPOSITORY
<PORT>
WEB
CONTROLLER
USES
IMPLEMENTED BY
USES
USES
R/W
PORT
- INCOMING COMMUNICATION
- OUTGOING COMMUNICATION
ADAPTER
...
INFRASTRUCTURE
CORE
INCOMING PORT
MYSQL
REPOSITORY
<OUTGOING PORT>
WEB
CONTROLLER
USES
IMPLEMENTED BY
USES
USES
R/W
PORT
...
ADAPTER
- USES INCOMING PORTS
- IMPLEMENTS OUTGOING PORTS
INFRASTRUCTURE
CORE
INCOMING PORT
MYSQL
REPOSITORY
<OUTGOING PORT>
WEB
CONTROLLER
USES
IMPLEMENTED BY
USES
USES
R/W
INFRASTRUCTURE
CORE
INCOMING PORT
OUTGOING
ADAPTER
<OUTGOING PORT>
INCOMING
ADAPTER
USES
IMPLEMENTED BY
USES
USES
R/W
Principles & Advantages of Hexagonal Architecture on Magento
Focus on the domain
the CORE of our application
INFRASTRUCTURE
CORE
YOU NAME IT
Principles & Advantages of Hexagonal Architecture on Magento
Focus on testability
with framework-agnostic tests
USE-CASE TESTS
UNIT TESTS
USE-CASE TESTS
UNIT TESTS
Registration
✔ The customer can register an unregistered card
✔ The customer can’t register already registered card
✔ The customer can’t register more than one card
✔ The customer can delete a registered card
OK (4 tests)
USE-CASE TESTS
UNIT TESTS
IN-MEMORY
REPOSITORY
FAKE OBJECT USED
JUST FOR TESTING
USE-CASE TESTS
UNIT TESTS
Card Number
✔ It accepts ten digits
✔ It accepts all zeroes
✔ It doesn’t accept an empty string
✔ It doesn’t accept less than ten digits
✔ It doesn’t accept more than ten digits
✔ It doesn’t accept invalid chars
OK (6 tests)
USE-CASE TESTS
UNIT TESTS
NO EXTERNAL
DEPENDENCIES
NO NEED TO USE
MOCK OBJECTS
Principles & Advantages of Hexagonal Architecture on Magento
Test Infrastructure
with integration adapter tests
USE-CASE TESTS
UNIT TESTS
USE-CASE TESTS
UNIT TESTS
MYSQL
REPOSITORY
WEB
CONTROLLER
ADAPTER TESTS
ADAPTER TESTS
Card Controller
✔ It calls Application service getCardByCustomer()
✔ It calls Application service registerCard()
✔ It calls Application service deleteCardByCustomer()
OK (3 tests)
INCOMING TESTS
OUTGOING TESTS
INCOMING TESTS
OUTGOING TESTS
JUST VERIFY THAT AN INCOMING
ADAPTER CALLS THE PROPER SERVICE
CORE
USE APPLICATION
MOCK
Card Repository
✔ It can save a card and load it by its number
✔ It can save a card and load it by its customer
✔ It can delete a card by its customer
OK (3 tests)
INCOMING TESTS
OUTGOING TESTS
INCOMING TESTS
OUTGOING TESTS
JUST VERIFY THAT AN OUTGOING
ADAPTER PROPERLY HANDLES I/O
Principles & Advantages of Hexagonal Architecture on Magento
Increase confidence
with functional end-to-end tests
END-TO-END TESTS
UNIT TESTS
ADAPTER TESTS
E2E TESTS
USE-CASE TESTS
MFTF
Codeception
cypress.io
DOMAIN
LOGIC
I/O
APPLICATION
ddd/
└─ loyalty/
├─ src/
│ ├─ Application/
│ ├─ Controller/
│ ├─ Domain/
│ ├─ etc/
│ ├─ Model/
│ ├─ view/
│ └─ ViewModel/
├─ test/
│ ├─ Adapter/
│ ├─ Unit/
│ └─ UseCase/
├─ composer.json
└─ registration.php
CORE
Principles & Advantages of Hexagonal Architecture on Magento
Complex logic
Long-lasting code
Multi-platform code
When it is worth
Principles & Advantages of Hexagonal Architecture on Magento
Core hacks or fixes
Short-term code
Platform-specific code
When it is not worth
Principles & Advantages of Hexagonal Architecture on Magento
Split Core/Infrastructure
Use own abstractions
Apply a Testing Strategy
Takeaways
Principles & Advantages of Hexagonal Architecture on Magento
http://bit.ly/ddd-loyalty
The project
Principles & Advantages of Hexagonal Architecture on Magento
Inspired by
Principles & Advantages of Hexagonal Architecture on Magento
With a special discount
https://bit.ly/mn-awaa
The book
Principles & Advantages of Hexagonal Architecture on Magento
Thank you!
Questions: @aleron75
June 10/11 2021  Virtual Conference

More Related Content

What's hot

Node.js wrapper for mbed Device Connector REST calls
Node.js wrapper for mbed Device Connector REST callsNode.js wrapper for mbed Device Connector REST calls
Node.js wrapper for mbed Device Connector REST calls艾鍗科技
 
Identifying Hotspots in the PostgreSQL Build Process
Identifying Hotspots in the PostgreSQL Build ProcessIdentifying Hotspots in the PostgreSQL Build Process
Identifying Hotspots in the PostgreSQL Build ProcessShane McIntosh
 
Who Needs Thumbs? Reverse Engineering Scramble with Friends v1.1
Who Needs Thumbs? Reverse Engineering Scramble with Friends v1.1Who Needs Thumbs? Reverse Engineering Scramble with Friends v1.1
Who Needs Thumbs? Reverse Engineering Scramble with Friends v1.1Apkudo
 
Hacking ios-on-the-run-using-cycript-viaforensics-rsa-conference-2014
Hacking ios-on-the-run-using-cycript-viaforensics-rsa-conference-2014Hacking ios-on-the-run-using-cycript-viaforensics-rsa-conference-2014
Hacking ios-on-the-run-using-cycript-viaforensics-rsa-conference-2014viaForensics
 
Criando aplicações RestFul com Zend Framework 2
Criando aplicações RestFul com Zend Framework 2Criando aplicações RestFul com Zend Framework 2
Criando aplicações RestFul com Zend Framework 2Elton Minetto
 
Lecture1: NGS Analysis on Beocat and an introduction to Perl programming for ...
Lecture1: NGS Analysis on Beocat and an introduction to Perl programming for ...Lecture1: NGS Analysis on Beocat and an introduction to Perl programming for ...
Lecture1: NGS Analysis on Beocat and an introduction to Perl programming for ...Jennifer Shelton
 
Devoxx17 - Préparez-vous à la modularité selon Java 9
Devoxx17 - Préparez-vous à la modularité selon Java 9Devoxx17 - Préparez-vous à la modularité selon Java 9
Devoxx17 - Préparez-vous à la modularité selon Java 9Alexis Hassler
 
10thMeetup-20190420-REST API Design Principles 되새기기
10thMeetup-20190420-REST API Design Principles 되새기기10thMeetup-20190420-REST API Design Principles 되새기기
10thMeetup-20190420-REST API Design Principles 되새기기DongHee Lee
 
JDK Mission Control: Where We Are, Where We Are Going [Code One 2019]
JDK Mission Control: Where We Are, Where We Are Going [Code One 2019]JDK Mission Control: Where We Are, Where We Are Going [Code One 2019]
JDK Mission Control: Where We Are, Where We Are Going [Code One 2019]David Buck
 
Service Discovery. Spring Cloud Internals
Service Discovery. Spring Cloud InternalsService Discovery. Spring Cloud Internals
Service Discovery. Spring Cloud InternalsAleksandr Tarasov
 
Essential Tools for Modern PHP
Essential Tools for Modern PHPEssential Tools for Modern PHP
Essential Tools for Modern PHPAlex Weissman
 
Identifying Hotspots in Software Build Processes
Identifying Hotspots in Software Build ProcessesIdentifying Hotspots in Software Build Processes
Identifying Hotspots in Software Build ProcessesShane McIntosh
 
Java Concurrency, A(nother) Peek Under the Hood [Code One 2019]
Java Concurrency, A(nother) Peek Under the Hood [Code One 2019]Java Concurrency, A(nother) Peek Under the Hood [Code One 2019]
Java Concurrency, A(nother) Peek Under the Hood [Code One 2019]David Buck
 
Create a PHP Library the right way
Create a PHP Library the right wayCreate a PHP Library the right way
Create a PHP Library the right wayChristian Varela
 
invokedynamic for Mere Mortals [Code One 2019]
invokedynamic for Mere Mortals [Code One 2019]invokedynamic for Mere Mortals [Code One 2019]
invokedynamic for Mere Mortals [Code One 2019]David Buck
 
Dessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloudDessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloudMassimiliano Dessì
 
Introdot Netc Sharp En
Introdot Netc Sharp EnIntrodot Netc Sharp En
Introdot Netc Sharp EnGregory Renard
 

What's hot (20)

Node.js wrapper for mbed Device Connector REST calls
Node.js wrapper for mbed Device Connector REST callsNode.js wrapper for mbed Device Connector REST calls
Node.js wrapper for mbed Device Connector REST calls
 
Identifying Hotspots in the PostgreSQL Build Process
Identifying Hotspots in the PostgreSQL Build ProcessIdentifying Hotspots in the PostgreSQL Build Process
Identifying Hotspots in the PostgreSQL Build Process
 
Who Needs Thumbs? Reverse Engineering Scramble with Friends v1.1
Who Needs Thumbs? Reverse Engineering Scramble with Friends v1.1Who Needs Thumbs? Reverse Engineering Scramble with Friends v1.1
Who Needs Thumbs? Reverse Engineering Scramble with Friends v1.1
 
Hacking ios-on-the-run-using-cycript-viaforensics-rsa-conference-2014
Hacking ios-on-the-run-using-cycript-viaforensics-rsa-conference-2014Hacking ios-on-the-run-using-cycript-viaforensics-rsa-conference-2014
Hacking ios-on-the-run-using-cycript-viaforensics-rsa-conference-2014
 
Criando aplicações RestFul com Zend Framework 2
Criando aplicações RestFul com Zend Framework 2Criando aplicações RestFul com Zend Framework 2
Criando aplicações RestFul com Zend Framework 2
 
Docker In the Bank
Docker In the BankDocker In the Bank
Docker In the Bank
 
Lecture1: NGS Analysis on Beocat and an introduction to Perl programming for ...
Lecture1: NGS Analysis on Beocat and an introduction to Perl programming for ...Lecture1: NGS Analysis on Beocat and an introduction to Perl programming for ...
Lecture1: NGS Analysis on Beocat and an introduction to Perl programming for ...
 
How to Add Original Library to Android NDK
How to Add Original Library to Android NDKHow to Add Original Library to Android NDK
How to Add Original Library to Android NDK
 
Devoxx17 - Préparez-vous à la modularité selon Java 9
Devoxx17 - Préparez-vous à la modularité selon Java 9Devoxx17 - Préparez-vous à la modularité selon Java 9
Devoxx17 - Préparez-vous à la modularité selon Java 9
 
10thMeetup-20190420-REST API Design Principles 되새기기
10thMeetup-20190420-REST API Design Principles 되새기기10thMeetup-20190420-REST API Design Principles 되새기기
10thMeetup-20190420-REST API Design Principles 되새기기
 
JDK Mission Control: Where We Are, Where We Are Going [Code One 2019]
JDK Mission Control: Where We Are, Where We Are Going [Code One 2019]JDK Mission Control: Where We Are, Where We Are Going [Code One 2019]
JDK Mission Control: Where We Are, Where We Are Going [Code One 2019]
 
Service Discovery. Spring Cloud Internals
Service Discovery. Spring Cloud InternalsService Discovery. Spring Cloud Internals
Service Discovery. Spring Cloud Internals
 
Essential Tools for Modern PHP
Essential Tools for Modern PHPEssential Tools for Modern PHP
Essential Tools for Modern PHP
 
Identifying Hotspots in Software Build Processes
Identifying Hotspots in Software Build ProcessesIdentifying Hotspots in Software Build Processes
Identifying Hotspots in Software Build Processes
 
Java Concurrency, A(nother) Peek Under the Hood [Code One 2019]
Java Concurrency, A(nother) Peek Under the Hood [Code One 2019]Java Concurrency, A(nother) Peek Under the Hood [Code One 2019]
Java Concurrency, A(nother) Peek Under the Hood [Code One 2019]
 
Create a PHP Library the right way
Create a PHP Library the right wayCreate a PHP Library the right way
Create a PHP Library the right way
 
invokedynamic for Mere Mortals [Code One 2019]
invokedynamic for Mere Mortals [Code One 2019]invokedynamic for Mere Mortals [Code One 2019]
invokedynamic for Mere Mortals [Code One 2019]
 
How to Make Android Native Application
How to Make Android Native ApplicationHow to Make Android Native Application
How to Make Android Native Application
 
Dessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloudDessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloud
 
Introdot Netc Sharp En
Introdot Netc Sharp EnIntrodot Netc Sharp En
Introdot Netc Sharp En
 

Similar to Meet Magento IT 2021 - Principles & Advantages of Hexagonal Architecture on Magento

Dnyaneshwar_Anantwar_Resume
Dnyaneshwar_Anantwar_ResumeDnyaneshwar_Anantwar_Resume
Dnyaneshwar_Anantwar_Resumearyan9011079624
 
BlockChain Online Course
BlockChain Online Course BlockChain Online Course
BlockChain Online Course Prasanthi K
 
Oracle Code One San Francisco - Monolith to microservices
Oracle Code One San Francisco - Monolith to microservicesOracle Code One San Francisco - Monolith to microservices
Oracle Code One San Francisco - Monolith to microservicesAlberto Salazar
 
Improving Software quality for the Modern Web
Improving Software quality for the Modern WebImproving Software quality for the Modern Web
Improving Software quality for the Modern WebEuan Garden
 
2019 ibm io t exchange - meeting safety-related software audits
2019   ibm io t exchange - meeting safety-related software audits2019   ibm io t exchange - meeting safety-related software audits
2019 ibm io t exchange - meeting safety-related software auditsM Kevin McHugh
 
Best Practices for Troubleshooting Four Real-world Java Performance Issues
Best Practices for Troubleshooting Four Real-world Java Performance IssuesBest Practices for Troubleshooting Four Real-world Java Performance Issues
Best Practices for Troubleshooting Four Real-world Java Performance IssueseG Innovations
 
Case Study: How CA Went From 40 Days to Three Days Building Crystal-Clear Tes...
Case Study: How CA Went From 40 Days to Three Days Building Crystal-Clear Tes...Case Study: How CA Went From 40 Days to Three Days Building Crystal-Clear Tes...
Case Study: How CA Went From 40 Days to Three Days Building Crystal-Clear Tes...CA Technologies
 
Case Study: How CA Went From 40 Days to Three Days Building Crystal-Clear Tes...
Case Study: How CA Went From 40 Days to Three Days Building Crystal-Clear Tes...Case Study: How CA Went From 40 Days to Three Days Building Crystal-Clear Tes...
Case Study: How CA Went From 40 Days to Three Days Building Crystal-Clear Tes...CA Technologies
 
Building application in a "Microfrontends" way - Matthias Lauf *XConf Manchester
Building application in a "Microfrontends" way - Matthias Lauf *XConf ManchesterBuilding application in a "Microfrontends" way - Matthias Lauf *XConf Manchester
Building application in a "Microfrontends" way - Matthias Lauf *XConf ManchesterThoughtworks
 
Service Virtualization - Next Gen Testing Conference Singapore 2013
Service Virtualization - Next Gen Testing Conference Singapore 2013Service Virtualization - Next Gen Testing Conference Singapore 2013
Service Virtualization - Next Gen Testing Conference Singapore 2013Min Fang
 
7 network programmability concepts python-ansible
7 network programmability concepts python-ansible7 network programmability concepts python-ansible
7 network programmability concepts python-ansibleSagarR24
 
Jithin Eapen Curriculum- Vitae
Jithin Eapen Curriculum- VitaeJithin Eapen Curriculum- Vitae
Jithin Eapen Curriculum- VitaeJithin Eapen
 
SIPfoundry CoLab 2013 - Web Contact Center
SIPfoundry CoLab 2013 - Web Contact CenterSIPfoundry CoLab 2013 - Web Contact Center
SIPfoundry CoLab 2013 - Web Contact CenterSIPfoundry
 
Magento 2 overview. Alan Kent
Magento 2 overview. Alan Kent Magento 2 overview. Alan Kent
Magento 2 overview. Alan Kent MeetMagentoNY2014
 
Limited Budget but Effective End to End MLOps Practices (Machine Learning Mod...
Limited Budget but Effective End to End MLOps Practices (Machine Learning Mod...Limited Budget but Effective End to End MLOps Practices (Machine Learning Mod...
Limited Budget but Effective End to End MLOps Practices (Machine Learning Mod...IRJET Journal
 
IRJET- Front View Identification of Vehicles by using Machine Learning Te...
IRJET-  	  Front View Identification of Vehicles by using Machine Learning Te...IRJET-  	  Front View Identification of Vehicles by using Machine Learning Te...
IRJET- Front View Identification of Vehicles by using Machine Learning Te...IRJET Journal
 
Parth-Resume_1-2[1]
Parth-Resume_1-2[1]Parth-Resume_1-2[1]
Parth-Resume_1-2[1]Parth Rao
 

Similar to Meet Magento IT 2021 - Principles & Advantages of Hexagonal Architecture on Magento (20)

Aniruddha_More_Resume
Aniruddha_More_ResumeAniruddha_More_Resume
Aniruddha_More_Resume
 
Dnyaneshwar_Anantwar_Resume
Dnyaneshwar_Anantwar_ResumeDnyaneshwar_Anantwar_Resume
Dnyaneshwar_Anantwar_Resume
 
BlockChain Online Training
BlockChain Online Training BlockChain Online Training
BlockChain Online Training
 
BlockChain Online Course
BlockChain Online Course BlockChain Online Course
BlockChain Online Course
 
Oracle Code One San Francisco - Monolith to microservices
Oracle Code One San Francisco - Monolith to microservicesOracle Code One San Francisco - Monolith to microservices
Oracle Code One San Francisco - Monolith to microservices
 
Improving Software quality for the Modern Web
Improving Software quality for the Modern WebImproving Software quality for the Modern Web
Improving Software quality for the Modern Web
 
BikramSamaddar
BikramSamaddarBikramSamaddar
BikramSamaddar
 
2019 ibm io t exchange - meeting safety-related software audits
2019   ibm io t exchange - meeting safety-related software audits2019   ibm io t exchange - meeting safety-related software audits
2019 ibm io t exchange - meeting safety-related software audits
 
Best Practices for Troubleshooting Four Real-world Java Performance Issues
Best Practices for Troubleshooting Four Real-world Java Performance IssuesBest Practices for Troubleshooting Four Real-world Java Performance Issues
Best Practices for Troubleshooting Four Real-world Java Performance Issues
 
Case Study: How CA Went From 40 Days to Three Days Building Crystal-Clear Tes...
Case Study: How CA Went From 40 Days to Three Days Building Crystal-Clear Tes...Case Study: How CA Went From 40 Days to Three Days Building Crystal-Clear Tes...
Case Study: How CA Went From 40 Days to Three Days Building Crystal-Clear Tes...
 
Case Study: How CA Went From 40 Days to Three Days Building Crystal-Clear Tes...
Case Study: How CA Went From 40 Days to Three Days Building Crystal-Clear Tes...Case Study: How CA Went From 40 Days to Three Days Building Crystal-Clear Tes...
Case Study: How CA Went From 40 Days to Three Days Building Crystal-Clear Tes...
 
Building application in a "Microfrontends" way - Matthias Lauf *XConf Manchester
Building application in a "Microfrontends" way - Matthias Lauf *XConf ManchesterBuilding application in a "Microfrontends" way - Matthias Lauf *XConf Manchester
Building application in a "Microfrontends" way - Matthias Lauf *XConf Manchester
 
Service Virtualization - Next Gen Testing Conference Singapore 2013
Service Virtualization - Next Gen Testing Conference Singapore 2013Service Virtualization - Next Gen Testing Conference Singapore 2013
Service Virtualization - Next Gen Testing Conference Singapore 2013
 
7 network programmability concepts python-ansible
7 network programmability concepts python-ansible7 network programmability concepts python-ansible
7 network programmability concepts python-ansible
 
Jithin Eapen Curriculum- Vitae
Jithin Eapen Curriculum- VitaeJithin Eapen Curriculum- Vitae
Jithin Eapen Curriculum- Vitae
 
SIPfoundry CoLab 2013 - Web Contact Center
SIPfoundry CoLab 2013 - Web Contact CenterSIPfoundry CoLab 2013 - Web Contact Center
SIPfoundry CoLab 2013 - Web Contact Center
 
Magento 2 overview. Alan Kent
Magento 2 overview. Alan Kent Magento 2 overview. Alan Kent
Magento 2 overview. Alan Kent
 
Limited Budget but Effective End to End MLOps Practices (Machine Learning Mod...
Limited Budget but Effective End to End MLOps Practices (Machine Learning Mod...Limited Budget but Effective End to End MLOps Practices (Machine Learning Mod...
Limited Budget but Effective End to End MLOps Practices (Machine Learning Mod...
 
IRJET- Front View Identification of Vehicles by using Machine Learning Te...
IRJET-  	  Front View Identification of Vehicles by using Machine Learning Te...IRJET-  	  Front View Identification of Vehicles by using Machine Learning Te...
IRJET- Front View Identification of Vehicles by using Machine Learning Te...
 
Parth-Resume_1-2[1]
Parth-Resume_1-2[1]Parth-Resume_1-2[1]
Parth-Resume_1-2[1]
 

More from Alessandro Ronchi

Awesome architectures in Magento 2.3
Awesome architectures in Magento 2.3Awesome architectures in Magento 2.3
Awesome architectures in Magento 2.3Alessandro Ronchi
 
Some lessons learned contributing to #MagentoMSI
Some lessons learned contributing to #MagentoMSISome lessons learned contributing to #MagentoMSI
Some lessons learned contributing to #MagentoMSIAlessandro Ronchi
 
The lessons I learned contributing to #MagentoMSI
The lessons I learned contributing to #MagentoMSIThe lessons I learned contributing to #MagentoMSI
The lessons I learned contributing to #MagentoMSIAlessandro Ronchi
 
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
 
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 coreAlessandro Ronchi
 
B2B & Magento: a long journey tale
B2B & Magento: a long journey taleB2B & Magento: a long journey tale
B2B & Magento: a long journey taleAlessandro Ronchi
 
Need to estimate? Let's play poker!
Need to estimate? Let's play poker!Need to estimate? Let's play poker!
Need to estimate? Let's play poker!Alessandro Ronchi
 
Why I did one step backward to go forward
Why I did one step backward to go forwardWhy I did one step backward to go forward
Why I did one step backward to go forwardAlessandro Ronchi
 
A true story about Magento best practices
A true story about Magento best practicesA true story about Magento best practices
A true story about Magento best practicesAlessandro Ronchi
 
Mageploy presentato al Mage::day() 2013
Mageploy presentato al Mage::day() 2013Mageploy presentato al Mage::day() 2013
Mageploy presentato al Mage::day() 2013Alessandro Ronchi
 

More from Alessandro Ronchi (13)

Awesome architectures in Magento 2.3
Awesome architectures in Magento 2.3Awesome architectures in Magento 2.3
Awesome architectures in Magento 2.3
 
Some lessons learned contributing to #MagentoMSI
Some lessons learned contributing to #MagentoMSISome lessons learned contributing to #MagentoMSI
Some lessons learned contributing to #MagentoMSI
 
The lessons I learned contributing to #MagentoMSI
The lessons I learned contributing to #MagentoMSIThe lessons I learned contributing to #MagentoMSI
The lessons I learned contributing to #MagentoMSI
 
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
 
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
 
B2B & Magento: a long journey tale
B2B & Magento: a long journey taleB2B & Magento: a long journey tale
B2B & Magento: a long journey tale
 
Need to estimate? Let's play poker!
Need to estimate? Let's play poker!Need to estimate? Let's play poker!
Need to estimate? Let's play poker!
 
Why I did one step backward to go forward
Why I did one step backward to go forwardWhy I did one step backward to go forward
Why I did one step backward to go forward
 
A true story about Magento best practices
A true story about Magento best practicesA true story about Magento best practices
A true story about Magento best practices
 
Magento best practices
Magento best practicesMagento best practices
Magento best practices
 
Mageday::2014 - Workshop
Mageday::2014 - WorkshopMageday::2014 - Workshop
Mageday::2014 - Workshop
 
Mageday::2014
Mageday::2014Mageday::2014
Mageday::2014
 
Mageploy presentato al Mage::day() 2013
Mageploy presentato al Mage::day() 2013Mageploy presentato al Mage::day() 2013
Mageploy presentato al Mage::day() 2013
 

Recently uploaded

Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 

Recently uploaded (20)

Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 

Meet Magento IT 2021 - Principles & Advantages of Hexagonal Architecture on Magento