SlideShare a Scribd company logo
Symfony
Micro-services
@Meetic
Who am I ?
Joined Meetic in 2014
Interested by their volumes,
functionnal richness and experience
Etienne Broutin
Software Architect
Started in 2001
•
Active in 15 countries
•
Dating leader in Europe
•
Millions of Monthly Active Users
•
150 people in IT teams
Back again
2013 Reasons for refactoring plan
Unmaintainable code
Duplicates
Untestable
Need elders validation
Unable to monitor
Continue on failure policy
Based on global log volume
2013 Initial project
Webservices
Backoffices
Mobile Web
WAP
Desktop
Cronjobs
…
Exposition Layer
Private webservices
Started
So cute in the
beginning !
But new issues
Duplicated business logic
Merge conflicts
Longer tests (40min)
Refactorings started to become more and more difficult
We were building a new monolith !
Only 15% of business features
Only 10 developers, target 40
Micro-service pros
• Simpler design phase
• Manage refactoring impacts
• Faster feedbacks by software factory
• Faster deployments
• Real ownership by developers, easier upgrades
Micro-service cons
• Implementation of interfaces
• Response time
• CPU and network usage
• Time to setup a new application
• Can also become hard to understand
New stack
Exposition Layer
Event bus
Consumers
Micro-services
BackOffices
Webservices
2 years later....
Micro-service design
Dependencies
Team
Production
Micro-service design
How to split ?
Functionnal splitting
Built around a concept
Pictures Right
What size ?
25 micro-services
9 avg route count
7k avg NLOC
4 avg relationnal tables
to understand
a micro-service
1 to 2
days
Testability
Build in 3minSimpler functionnal
tests
Modelization
POST /photos/{accountId}
GET /photos/{accountId}/{photoId}
PUT /photos/{accountId}/{photoId}
DELETE /photos/{accountId}/{photoId}
POST /boost/{boostId}/increment
REST approach Commands
Data isolation
Strong and difficult choice But
• brings scalability
• brings visibility
• data consistency
• enables caching
• manage data migration
Limits of data isolation
Build a denormalized
database
OLTP
Reactive (event bus)
Batch processing
BI
How to deal with
dependencies ?
Product team has a new idea...
In practice
2/3 of our micro-services
do not depend
on another micro-service
took several
refactorings for that
Defining perimeter is the key
Messages Authentication
nickname
business model
account status
Photo Announce Moderation
Photo +
Moderation
Announce +
Moderation
Event bus to manage dependency
Event bus
Consumer
Consumer
Profile Mailing Optin
get photos
Pattern 1 : Pull data
- performance
- reusability
does have a
photo itself ?can see photos ?
+ hides complexity for clients
+ fast change of business rules
Exposition Layer
Rights Photo
Pattern 2 : Push data from client
+ mutualize data fetching - harder to change if multiple clients
send message
Exposition Layer
Rights
Message
conversation
already started ?
can start
a new conversation ?
Pattern 3 : Store data
Event bus
read message
Exposition Layer
Message
get visible
messages
Blacklist
+ performance
+ reusable
- long to implement
blacklist added
hide messages
Other tips
Batch calls
GET /photos/{accountId}/14,15,21
Parallelize calls
using Guzzle promise
Working together
Context
Several independent agile teams
No strong synchronization
Continuous deployment
15 deployments
per day
How do you manage compatibility ?
No versioning
• used internally
• less maintenance
• interface backward compatible
Automated environment
Scripts with docker
compose
Can I use any
framework ?
Any
langage ?
Any database ?
Common interface
• REST + JSON
• Naming conventions
• Security
• Common build
• Common deployment chain
Don’t waste time : need a common basis
Micro-services chassis
• Security
• Logging
• HTTP Interface
• DB & cache components
Share knowledge with non-tech teams
Talkative names
Visibility for project management
profile will be
updated soon
changes on
message are
ready
thanks
Documentation
Inventory
<<<
Call graph generated
from Elastic Search
GET /profile/{accountId}
Profile
Exposition Layer
Right
Backoffice
4%
85%
11%
Ownership
More initiatives
More refactorings
More upgrades
More monitoring
Production
Hosting concerns
It will overload the network !
It will take time to configure !
We will need much more
servers !
Figures
1B calls / day
25ms response time
100 servers
Who calls micro-services ?
Exposition LayerEvent Bus
Micro-services
Networking
• Every Micro-services deployed on
each server
• Affinity for inter micro-service call
Have not experienced need for :
• Service isolation
• Network constraints
8 ms
Symfony boostrap overhead
limited by application size
17 ms
25ms
Cost : 25%
Monitoring Alerting
Elastic Search + Logstash +
Kibana
• Easy to locate errors
• Performance analysis
Monitoring route for every
dependency
GET /profile/{accountId} 11ms 100%
POST /profile/ 42ms 99.992%
...
P
P
Design for failure
Objective 99.999%
Internally : analyse logs
Externally : implement fallback behavior
Exposition Layer
99.9% 98.3% 99.2%
Reliability < 97.4%
Conclusion
Re-usability
Re-used micro-services
from acquisition fusion
Used for several products
Huge opportunity for Data
Best Database for each
Scalability
Feedback on that choice
For Meetic, this architecture was a good choice :
• Symfony helps standardization
• Can scale teams
• Clear implementation of all features
• Answer business needs
Any questions?
Ad

Recommended

REX Meetic, Comment la qualité reflète-t-elle nos organisations ?
REX Meetic, Comment la qualité reflète-t-elle nos organisations ?
meeticTech
 
Meetic Backend Mutation With Symfony
Meetic Backend Mutation With Symfony
meeticTech
 
Multiplatform
Multiplatform
Prabhat gangwar
 
Local development environment for micro services with docker
Local development environment for micro services with docker
LINE Corporation
 
Symantec I3 - Inquire & Cluster
Symantec I3 - Inquire & Cluster
sebastian.guerrero
 
Sergii Bielskyi "Azure Logic App and building modern cloud native apps"
Sergii Bielskyi "Azure Logic App and building modern cloud native apps"
Fwdays
 
Symantec I3 Presentation
Symantec I3 Presentation
sebastian.guerrero
 
Component Based Development
Component Based Development
Ben McCormick
 
3-18-11
3-18-11
MDuckinson
 
Building loosely coupled integrations with Logic Apps
Building loosely coupled integrations with Logic Apps
BizTalk360
 
Java Restart with WebFX
Java Restart with WebFX
Nikita Lipsky
 
Dev ops, from theory to practice, by vahid rahimian
Dev ops, from theory to practice, by vahid rahimian
Vahid Rahimian
 
Dylan Beattie "Architecture: The Stuff That's Hard to Change"
Dylan Beattie "Architecture: The Stuff That's Hard to Change"
Fwdays
 
Mete Atamel "An app modernization story with Cloud Run"
Mete Atamel "An app modernization story with Cloud Run"
Fwdays
 
Web UI Tests: Introduce UI tests using Selenium
Web UI Tests: Introduce UI tests using Selenium
Peyman Fakharian
 
Your App Deserves More – The Art of App Modernization
Your App Deserves More – The Art of App Modernization
Klaus Bild
 
Testing Microservices
Testing Microservices
Anil Allewar
 
SharePoint Framework
SharePoint Framework
Vitaly Zhukov
 
Understanding Microservices
Understanding Microservices
M A Hossain Tonu
 
Low-Code Testing Tool
Low-Code Testing Tool
Niels de Bruijn
 
Grokking TechTalk #19: Software Development Cycle In The International Moneta...
Grokking TechTalk #19: Software Development Cycle In The International Moneta...
Grokking VN
 
EVOLVE'15 | Enhance | Loyola Baskar | Cisco - Multi-tenancy AEM Architectur...
EVOLVE'15 | Enhance | Loyola Baskar | Cisco - Multi-tenancy AEM Architectur...
Evolve The Adobe Digital Marketing Community
 
TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015
DotNetCampus
 
API Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid Rahimian
API Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid Rahimian
Vahid Rahimian
 
Mvvw patterns
Mvvw patterns
eleksdev
 
.NET Conf 2019 高雄場 - .NET Core 3.0
.NET Conf 2019 高雄場 - .NET Core 3.0
Jeff Chu
 
Microservices and the Cloud based future of integration final
Microservices and the Cloud based future of integration final
BizTalk360
 
Introduction to SharePoint Framework
Introduction to SharePoint Framework
Kirti Prajapati
 
Microservice Architecture
Microservice Architecture
Engin Yoeyen
 
Webinar : Microservices and Containerization
Webinar : Microservices and Containerization
Newt Global Consulting LLC
 

More Related Content

What's hot (20)

3-18-11
3-18-11
MDuckinson
 
Building loosely coupled integrations with Logic Apps
Building loosely coupled integrations with Logic Apps
BizTalk360
 
Java Restart with WebFX
Java Restart with WebFX
Nikita Lipsky
 
Dev ops, from theory to practice, by vahid rahimian
Dev ops, from theory to practice, by vahid rahimian
Vahid Rahimian
 
Dylan Beattie "Architecture: The Stuff That's Hard to Change"
Dylan Beattie "Architecture: The Stuff That's Hard to Change"
Fwdays
 
Mete Atamel "An app modernization story with Cloud Run"
Mete Atamel "An app modernization story with Cloud Run"
Fwdays
 
Web UI Tests: Introduce UI tests using Selenium
Web UI Tests: Introduce UI tests using Selenium
Peyman Fakharian
 
Your App Deserves More – The Art of App Modernization
Your App Deserves More – The Art of App Modernization
Klaus Bild
 
Testing Microservices
Testing Microservices
Anil Allewar
 
SharePoint Framework
SharePoint Framework
Vitaly Zhukov
 
Understanding Microservices
Understanding Microservices
M A Hossain Tonu
 
Low-Code Testing Tool
Low-Code Testing Tool
Niels de Bruijn
 
Grokking TechTalk #19: Software Development Cycle In The International Moneta...
Grokking TechTalk #19: Software Development Cycle In The International Moneta...
Grokking VN
 
EVOLVE'15 | Enhance | Loyola Baskar | Cisco - Multi-tenancy AEM Architectur...
EVOLVE'15 | Enhance | Loyola Baskar | Cisco - Multi-tenancy AEM Architectur...
Evolve The Adobe Digital Marketing Community
 
TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015
DotNetCampus
 
API Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid Rahimian
API Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid Rahimian
Vahid Rahimian
 
Mvvw patterns
Mvvw patterns
eleksdev
 
.NET Conf 2019 高雄場 - .NET Core 3.0
.NET Conf 2019 高雄場 - .NET Core 3.0
Jeff Chu
 
Microservices and the Cloud based future of integration final
Microservices and the Cloud based future of integration final
BizTalk360
 
Introduction to SharePoint Framework
Introduction to SharePoint Framework
Kirti Prajapati
 
Building loosely coupled integrations with Logic Apps
Building loosely coupled integrations with Logic Apps
BizTalk360
 
Java Restart with WebFX
Java Restart with WebFX
Nikita Lipsky
 
Dev ops, from theory to practice, by vahid rahimian
Dev ops, from theory to practice, by vahid rahimian
Vahid Rahimian
 
Dylan Beattie "Architecture: The Stuff That's Hard to Change"
Dylan Beattie "Architecture: The Stuff That's Hard to Change"
Fwdays
 
Mete Atamel "An app modernization story with Cloud Run"
Mete Atamel "An app modernization story with Cloud Run"
Fwdays
 
Web UI Tests: Introduce UI tests using Selenium
Web UI Tests: Introduce UI tests using Selenium
Peyman Fakharian
 
Your App Deserves More – The Art of App Modernization
Your App Deserves More – The Art of App Modernization
Klaus Bild
 
Testing Microservices
Testing Microservices
Anil Allewar
 
SharePoint Framework
SharePoint Framework
Vitaly Zhukov
 
Understanding Microservices
Understanding Microservices
M A Hossain Tonu
 
Grokking TechTalk #19: Software Development Cycle In The International Moneta...
Grokking TechTalk #19: Software Development Cycle In The International Moneta...
Grokking VN
 
TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015
DotNetCampus
 
API Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid Rahimian
API Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid Rahimian
Vahid Rahimian
 
Mvvw patterns
Mvvw patterns
eleksdev
 
.NET Conf 2019 高雄場 - .NET Core 3.0
.NET Conf 2019 高雄場 - .NET Core 3.0
Jeff Chu
 
Microservices and the Cloud based future of integration final
Microservices and the Cloud based future of integration final
BizTalk360
 
Introduction to SharePoint Framework
Introduction to SharePoint Framework
Kirti Prajapati
 

Similar to PHP Symfony MicroServices Migration @MeeticTech (20)

Microservice Architecture
Microservice Architecture
Engin Yoeyen
 
Webinar : Microservices and Containerization
Webinar : Microservices and Containerization
Newt Global Consulting LLC
 
micro services architecture (FrosCon2014)
micro services architecture (FrosCon2014)
smancke
 
Ledingkart Meetup #1: Monolithic to microservices in action
Ledingkart Meetup #1: Monolithic to microservices in action
Mukesh Singh
 
MicroServices architecture @ Ctrip v1.1
MicroServices architecture @ Ctrip v1.1
William Yang
 
The Reality of Managing Microservices in Your CD Pipeline
The Reality of Managing Microservices in Your CD Pipeline
DevOps.com
 
Building Microservices Software practics
Building Microservices Software practics
muhammed84essa
 
Move fast and make things with microservices
Move fast and make things with microservices
Mithun Arunan
 
Monolithic to Microservices Architecture
Monolithic to Microservices Architecture
Vin Dahake
 
An introduction to Microservices
An introduction to Microservices
Cisco DevNet
 
Microservice architecture
Microservice architecture
Žilvinas Kuusas
 
meetPHP#8 - PHP startups prototypes
meetPHP#8 - PHP startups prototypes
Max Małecki
 
Think Small To Go Big - Introduction To Microservices
Think Small To Go Big - Introduction To Microservices
Ryan Baxter
 
Merging micrservices architecture with SOA Practices
Merging micrservices architecture with SOA Practices
WSO2
 
µServices Architecture @ EPAM WOW 2015
µServices Architecture @ EPAM WOW 2015
Izzet Mustafaiev
 
Microservices - Hitchhiker's guide to cloud native applications
Microservices - Hitchhiker's guide to cloud native applications
Stijn Van Den Enden
 
Running microservice environments is no free lunch
Running microservice environments is no free lunch
Alois Mayr
 
Monolithic to Microservices Architecture - STM 6
Monolithic to Microservices Architecture - STM 6
Tricode (part of Dept)
 
Kenzan: Architecting for Microservices
Kenzan: Architecting for Microservices
Darren Bathgate
 
Microservices on a budget meetup
Microservices on a budget meetup
Matthew Reynolds
 
Microservice Architecture
Microservice Architecture
Engin Yoeyen
 
micro services architecture (FrosCon2014)
micro services architecture (FrosCon2014)
smancke
 
Ledingkart Meetup #1: Monolithic to microservices in action
Ledingkart Meetup #1: Monolithic to microservices in action
Mukesh Singh
 
MicroServices architecture @ Ctrip v1.1
MicroServices architecture @ Ctrip v1.1
William Yang
 
The Reality of Managing Microservices in Your CD Pipeline
The Reality of Managing Microservices in Your CD Pipeline
DevOps.com
 
Building Microservices Software practics
Building Microservices Software practics
muhammed84essa
 
Move fast and make things with microservices
Move fast and make things with microservices
Mithun Arunan
 
Monolithic to Microservices Architecture
Monolithic to Microservices Architecture
Vin Dahake
 
An introduction to Microservices
An introduction to Microservices
Cisco DevNet
 
meetPHP#8 - PHP startups prototypes
meetPHP#8 - PHP startups prototypes
Max Małecki
 
Think Small To Go Big - Introduction To Microservices
Think Small To Go Big - Introduction To Microservices
Ryan Baxter
 
Merging micrservices architecture with SOA Practices
Merging micrservices architecture with SOA Practices
WSO2
 
µServices Architecture @ EPAM WOW 2015
µServices Architecture @ EPAM WOW 2015
Izzet Mustafaiev
 
Microservices - Hitchhiker's guide to cloud native applications
Microservices - Hitchhiker's guide to cloud native applications
Stijn Van Den Enden
 
Running microservice environments is no free lunch
Running microservice environments is no free lunch
Alois Mayr
 
Monolithic to Microservices Architecture - STM 6
Monolithic to Microservices Architecture - STM 6
Tricode (part of Dept)
 
Kenzan: Architecting for Microservices
Kenzan: Architecting for Microservices
Darren Bathgate
 
Microservices on a budget meetup
Microservices on a budget meetup
Matthew Reynolds
 
Ad

Recently uploaded (20)

Water demand - Types , variations and WDS
Water demand - Types , variations and WDS
dhanashree78
 
362 Alec Data Center Solutions-Slysium Data Center-AUH-Adaptaflex.pdf
362 Alec Data Center Solutions-Slysium Data Center-AUH-Adaptaflex.pdf
djiceramil
 
Center Enamel can Provide Aluminum Dome Roofs for diesel tank.docx
Center Enamel can Provide Aluminum Dome Roofs for diesel tank.docx
CenterEnamel
 
362 Alec Data Center Solutions-Slysium Data Center-AUH-Adaptaflex.pdf
362 Alec Data Center Solutions-Slysium Data Center-AUH-Adaptaflex.pdf
djiceramil
 
Pavement and its types, Application of rigid and Flexible Pavements
Pavement and its types, Application of rigid and Flexible Pavements
Sakthivel M
 
David Boutry - Mentors Junior Developers
David Boutry - Mentors Junior Developers
David Boutry
 
Deep Learning for Natural Language Processing_FDP on 16 June 2025 MITS.pptx
Deep Learning for Natural Language Processing_FDP on 16 June 2025 MITS.pptx
resming1
 
362 Alec Data Center Solutions-Slysium Data Center-AUH-ABB Furse.pdf
362 Alec Data Center Solutions-Slysium Data Center-AUH-ABB Furse.pdf
djiceramil
 
Fundamentals of Digital Design_Class_12th April.pptx
Fundamentals of Digital Design_Class_12th April.pptx
drdebarshi1993
 
IntroSlides-June-GDG-Cloud-Munich community [email protected]
IntroSlides-June-GDG-Cloud-Munich community [email protected]
Luiz Carneiro
 
COMPOSITE COLUMN IN STEEL CONCRETE COMPOSITES.ppt
COMPOSITE COLUMN IN STEEL CONCRETE COMPOSITES.ppt
ravicivil
 
Understanding Amplitude Modulation : A Guide
Understanding Amplitude Modulation : A Guide
CircuitDigest
 
WIRELESS COMMUNICATION SECURITY AND IT’S PROTECTION METHODS
WIRELESS COMMUNICATION SECURITY AND IT’S PROTECTION METHODS
samueljackson3773
 
最新版美国圣莫尼卡学院毕业证(SMC毕业证书)原版定制
最新版美国圣莫尼卡学院毕业证(SMC毕业证书)原版定制
Taqyea
 
OCS Group SG - HPHT Well Design and Operation - SN.pdf
OCS Group SG - HPHT Well Design and Operation - SN.pdf
Muanisa Waras
 
VARICELLA VACCINATION: A POTENTIAL STRATEGY FOR PREVENTING MULTIPLE SCLEROSIS
VARICELLA VACCINATION: A POTENTIAL STRATEGY FOR PREVENTING MULTIPLE SCLEROSIS
ijab2
 
60 Years and Beyond eBook 1234567891.pdf
60 Years and Beyond eBook 1234567891.pdf
waseemalazzeh
 
Industry 4.o the fourth revolutionWeek-2.pptx
Industry 4.o the fourth revolutionWeek-2.pptx
KNaveenKumarECE
 
362 Alec Data Center Solutions-Slysium Data Center-AUH-Glands & Lugs, Simplex...
362 Alec Data Center Solutions-Slysium Data Center-AUH-Glands & Lugs, Simplex...
djiceramil
 
Rigor, ethics, wellbeing and resilience in the ICT doctoral journey
Rigor, ethics, wellbeing and resilience in the ICT doctoral journey
Yannis
 
Water demand - Types , variations and WDS
Water demand - Types , variations and WDS
dhanashree78
 
362 Alec Data Center Solutions-Slysium Data Center-AUH-Adaptaflex.pdf
362 Alec Data Center Solutions-Slysium Data Center-AUH-Adaptaflex.pdf
djiceramil
 
Center Enamel can Provide Aluminum Dome Roofs for diesel tank.docx
Center Enamel can Provide Aluminum Dome Roofs for diesel tank.docx
CenterEnamel
 
362 Alec Data Center Solutions-Slysium Data Center-AUH-Adaptaflex.pdf
362 Alec Data Center Solutions-Slysium Data Center-AUH-Adaptaflex.pdf
djiceramil
 
Pavement and its types, Application of rigid and Flexible Pavements
Pavement and its types, Application of rigid and Flexible Pavements
Sakthivel M
 
David Boutry - Mentors Junior Developers
David Boutry - Mentors Junior Developers
David Boutry
 
Deep Learning for Natural Language Processing_FDP on 16 June 2025 MITS.pptx
Deep Learning for Natural Language Processing_FDP on 16 June 2025 MITS.pptx
resming1
 
362 Alec Data Center Solutions-Slysium Data Center-AUH-ABB Furse.pdf
362 Alec Data Center Solutions-Slysium Data Center-AUH-ABB Furse.pdf
djiceramil
 
Fundamentals of Digital Design_Class_12th April.pptx
Fundamentals of Digital Design_Class_12th April.pptx
drdebarshi1993
 
COMPOSITE COLUMN IN STEEL CONCRETE COMPOSITES.ppt
COMPOSITE COLUMN IN STEEL CONCRETE COMPOSITES.ppt
ravicivil
 
Understanding Amplitude Modulation : A Guide
Understanding Amplitude Modulation : A Guide
CircuitDigest
 
WIRELESS COMMUNICATION SECURITY AND IT’S PROTECTION METHODS
WIRELESS COMMUNICATION SECURITY AND IT’S PROTECTION METHODS
samueljackson3773
 
最新版美国圣莫尼卡学院毕业证(SMC毕业证书)原版定制
最新版美国圣莫尼卡学院毕业证(SMC毕业证书)原版定制
Taqyea
 
OCS Group SG - HPHT Well Design and Operation - SN.pdf
OCS Group SG - HPHT Well Design and Operation - SN.pdf
Muanisa Waras
 
VARICELLA VACCINATION: A POTENTIAL STRATEGY FOR PREVENTING MULTIPLE SCLEROSIS
VARICELLA VACCINATION: A POTENTIAL STRATEGY FOR PREVENTING MULTIPLE SCLEROSIS
ijab2
 
60 Years and Beyond eBook 1234567891.pdf
60 Years and Beyond eBook 1234567891.pdf
waseemalazzeh
 
Industry 4.o the fourth revolutionWeek-2.pptx
Industry 4.o the fourth revolutionWeek-2.pptx
KNaveenKumarECE
 
362 Alec Data Center Solutions-Slysium Data Center-AUH-Glands & Lugs, Simplex...
362 Alec Data Center Solutions-Slysium Data Center-AUH-Glands & Lugs, Simplex...
djiceramil
 
Rigor, ethics, wellbeing and resilience in the ICT doctoral journey
Rigor, ethics, wellbeing and resilience in the ICT doctoral journey
Yannis
 
Ad

PHP Symfony MicroServices Migration @MeeticTech