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?

More Related Content

What's hot (20)

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

Similar to PHP Symfony MicroServices Migration @MeeticTech (20)

PDF
Automating API Generation and DevOps Pipeline for On-Prem Systems
DevOps.com
 
DOC
VidyaBhooshanMishra_CV
Landis+Gyr
 
PDF
Hybrid Cloud Integration - Connecting Taleo Enterprise Edition With E-Busines...
Kyle Lambert
 
PDF
.NET Cloud-Native Bootcamp- Los Angeles
VMware Tanzu
 
PDF
DevOps in the Hybrid Cloud
Richard Irving
 
PPTX
DevOps CTO Masterclass | Webinar Oct. 2020
Cyber-Duck
 
PDF
Agile and continuous delivery – How IBM Watson Workspace is built
Vincent Burckhardt
 
PDF
3784_Streamlining_the_development_process_with_feature_flighting_and_Azure_cl...
Crystal Thomas
 
PPT
Three SOA Case Studies
Paul Fremantle
 
PPTX
Cloud Computing for Nonprofits - What's Microsoft Got?
George Durham
 
PDF
Confluent Partner Tech Talk with Reply
confluent
 
PDF
Recruiting Application Developed on Salesforce By Vikas Gupta.pdf
vikas845288
 
DOC
Sai_Resume
Sai vara prasada Rao
 
PPTX
Microsoft Teams Development - Conversational AI
Thomas Gölles
 
PDF
Morphis Technologies Overview
jrhartley62
 
PPT
IT Modernization For Process Modernization
Dheeraj Remella
 
PDF
.NET for Enterprise Apps - Pros and Cons.pdf
JamesEddie2
 
PDF
WebSphere Message Broker Application Development Training
Vijaya Raghava Vuligundam
 
PPTX
Techdays 2011 - Things I will remember
Alexander Vanwynsberghe
 
PPTX
Microservices-101
Subhashish Bhattacharjee
 
Automating API Generation and DevOps Pipeline for On-Prem Systems
DevOps.com
 
VidyaBhooshanMishra_CV
Landis+Gyr
 
Hybrid Cloud Integration - Connecting Taleo Enterprise Edition With E-Busines...
Kyle Lambert
 
.NET Cloud-Native Bootcamp- Los Angeles
VMware Tanzu
 
DevOps in the Hybrid Cloud
Richard Irving
 
DevOps CTO Masterclass | Webinar Oct. 2020
Cyber-Duck
 
Agile and continuous delivery – How IBM Watson Workspace is built
Vincent Burckhardt
 
3784_Streamlining_the_development_process_with_feature_flighting_and_Azure_cl...
Crystal Thomas
 
Three SOA Case Studies
Paul Fremantle
 
Cloud Computing for Nonprofits - What's Microsoft Got?
George Durham
 
Confluent Partner Tech Talk with Reply
confluent
 
Recruiting Application Developed on Salesforce By Vikas Gupta.pdf
vikas845288
 
Microsoft Teams Development - Conversational AI
Thomas Gölles
 
Morphis Technologies Overview
jrhartley62
 
IT Modernization For Process Modernization
Dheeraj Remella
 
.NET for Enterprise Apps - Pros and Cons.pdf
JamesEddie2
 
WebSphere Message Broker Application Development Training
Vijaya Raghava Vuligundam
 
Techdays 2011 - Things I will remember
Alexander Vanwynsberghe
 
Microservices-101
Subhashish Bhattacharjee
 
Ad

Recently uploaded (20)

PPTX
UNIT 1 - INTRODUCTION TO AI and AI tools and basic concept
gokuld13012005
 
PDF
A Brief Introduction About Robert Paul Hardee
Robert Paul Hardee
 
PPTX
darshai cross section and river section analysis
muk7971
 
PDF
MODULE-5 notes [BCG402-CG&V] PART-B.pdf
Alvas Institute of Engineering and technology, Moodabidri
 
PDF
Electrical Machines and Their Protection.pdf
Nabajyoti Banik
 
PDF
3rd International Conference on Machine Learning and IoT (MLIoT 2025)
ClaraZara1
 
PPTX
Biosensors, BioDevices, Biomediccal.pptx
AsimovRiyaz
 
PPTX
template.pptxr4t5y67yrttttttttttttttttttttttttttttttttttt
SithamparanaathanPir
 
PDF
mbse_An_Introduction_to_Arcadia_20150115.pdf
henriqueltorres1
 
PDF
Water Industry Process Automation & Control Monthly July 2025
Water Industry Process Automation & Control
 
PDF
NTPC PATRATU Summer internship report.pdf
hemant03701
 
PDF
Module - 4 Machine Learning -22ISE62.pdf
Dr. Shivashankar
 
PPTX
Introduction to Internal Combustion Engines - Types, Working and Camparison.pptx
UtkarshPatil98
 
PPT
Footbinding.pptmnmkjkjkknmnnjkkkkkkkkkkkkkk
mamadoundiaye42742
 
PDF
Bachelor of information technology syll
SudarsanAssistantPro
 
PPTX
Distribution reservoir and service storage pptx
dhanashree78
 
PDF
REINFORCEMENT LEARNING IN DECISION MAKING SEMINAR REPORT
anushaashraf20
 
PDF
AI TECHNIQUES FOR IDENTIFYING ALTERATIONS IN THE HUMAN GUT MICROBIOME IN MULT...
vidyalalltv1
 
PPTX
How Industrial Project Management Differs From Construction.pptx
jamespit799
 
PPTX
2025 CGI Congres - Surviving agile v05.pptx
Derk-Jan de Grood
 
UNIT 1 - INTRODUCTION TO AI and AI tools and basic concept
gokuld13012005
 
A Brief Introduction About Robert Paul Hardee
Robert Paul Hardee
 
darshai cross section and river section analysis
muk7971
 
MODULE-5 notes [BCG402-CG&V] PART-B.pdf
Alvas Institute of Engineering and technology, Moodabidri
 
Electrical Machines and Their Protection.pdf
Nabajyoti Banik
 
3rd International Conference on Machine Learning and IoT (MLIoT 2025)
ClaraZara1
 
Biosensors, BioDevices, Biomediccal.pptx
AsimovRiyaz
 
template.pptxr4t5y67yrttttttttttttttttttttttttttttttttttt
SithamparanaathanPir
 
mbse_An_Introduction_to_Arcadia_20150115.pdf
henriqueltorres1
 
Water Industry Process Automation & Control Monthly July 2025
Water Industry Process Automation & Control
 
NTPC PATRATU Summer internship report.pdf
hemant03701
 
Module - 4 Machine Learning -22ISE62.pdf
Dr. Shivashankar
 
Introduction to Internal Combustion Engines - Types, Working and Camparison.pptx
UtkarshPatil98
 
Footbinding.pptmnmkjkjkknmnnjkkkkkkkkkkkkkk
mamadoundiaye42742
 
Bachelor of information technology syll
SudarsanAssistantPro
 
Distribution reservoir and service storage pptx
dhanashree78
 
REINFORCEMENT LEARNING IN DECISION MAKING SEMINAR REPORT
anushaashraf20
 
AI TECHNIQUES FOR IDENTIFYING ALTERATIONS IN THE HUMAN GUT MICROBIOME IN MULT...
vidyalalltv1
 
How Industrial Project Management Differs From Construction.pptx
jamespit799
 
2025 CGI Congres - Surviving agile v05.pptx
Derk-Jan de Grood
 
Ad

PHP Symfony MicroServices Migration @MeeticTech