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

Recently uploaded (20)

PPT
PPT2_Metal formingMECHANICALENGINEEIRNG .ppt
Praveen Kumar
 
PPTX
Introduction to Design of Machine Elements
PradeepKumarS27
 
PDF
Basic_Concepts_in_Clinical_Biochemistry_2018كيمياء_عملي.pdf
AdelLoin
 
PDF
Ethics and Trustworthy AI in Healthcare – Governing Sensitive Data, Profiling...
AlqualsaDIResearchGr
 
PPTX
原版一样(Acadia毕业证书)加拿大阿卡迪亚大学毕业证办理方法
Taqyea
 
PPTX
Shinkawa Proposal to meet Vibration API670.pptx
AchmadBashori2
 
PPTX
GitOps_Without_K8s_Training_detailed git repository
DanialHabibi2
 
PPTX
GitOps_Repo_Structure for begeinner(Scaffolindg)
DanialHabibi2
 
PPTX
MobileComputingMANET2023 MobileComputingMANET2023.pptx
masterfake98765
 
PPTX
VITEEE 2026 Exam Details , Important Dates
SonaliSingh127098
 
PPTX
Green Building & Energy Conservation ppt
Sagar Sarangi
 
PPTX
Evaluation and thermal analysis of shell and tube heat exchanger as per requi...
shahveer210504
 
PDF
Reasons for the succes of MENARD PRESSUREMETER.pdf
majdiamz
 
PPTX
265587293-NFPA 101 Life safety code-PPT-1.pptx
chandermwason
 
PPTX
美国电子版毕业证南卡罗莱纳大学上州分校水印成绩单USC学费发票定做学位证书编号怎么查
Taqyea
 
PDF
PORTFOLIO Golam Kibria Khan — architect with a passion for thoughtful design...
MasumKhan59
 
DOCX
CS-802 (A) BDH Lab manual IPS Academy Indore
thegodhimself05
 
PDF
Biomechanics of Gait: Engineering Solutions for Rehabilitation (www.kiu.ac.ug)
publication11
 
PPTX
Lecture 1 Shell and Tube Heat exchanger-1.pptx
mailforillegalwork
 
PDF
MAD Unit - 2 Activity and Fragment Management in Android (Diploma IT)
JappanMavani
 
PPT2_Metal formingMECHANICALENGINEEIRNG .ppt
Praveen Kumar
 
Introduction to Design of Machine Elements
PradeepKumarS27
 
Basic_Concepts_in_Clinical_Biochemistry_2018كيمياء_عملي.pdf
AdelLoin
 
Ethics and Trustworthy AI in Healthcare – Governing Sensitive Data, Profiling...
AlqualsaDIResearchGr
 
原版一样(Acadia毕业证书)加拿大阿卡迪亚大学毕业证办理方法
Taqyea
 
Shinkawa Proposal to meet Vibration API670.pptx
AchmadBashori2
 
GitOps_Without_K8s_Training_detailed git repository
DanialHabibi2
 
GitOps_Repo_Structure for begeinner(Scaffolindg)
DanialHabibi2
 
MobileComputingMANET2023 MobileComputingMANET2023.pptx
masterfake98765
 
VITEEE 2026 Exam Details , Important Dates
SonaliSingh127098
 
Green Building & Energy Conservation ppt
Sagar Sarangi
 
Evaluation and thermal analysis of shell and tube heat exchanger as per requi...
shahveer210504
 
Reasons for the succes of MENARD PRESSUREMETER.pdf
majdiamz
 
265587293-NFPA 101 Life safety code-PPT-1.pptx
chandermwason
 
美国电子版毕业证南卡罗莱纳大学上州分校水印成绩单USC学费发票定做学位证书编号怎么查
Taqyea
 
PORTFOLIO Golam Kibria Khan — architect with a passion for thoughtful design...
MasumKhan59
 
CS-802 (A) BDH Lab manual IPS Academy Indore
thegodhimself05
 
Biomechanics of Gait: Engineering Solutions for Rehabilitation (www.kiu.ac.ug)
publication11
 
Lecture 1 Shell and Tube Heat exchanger-1.pptx
mailforillegalwork
 
MAD Unit - 2 Activity and Fragment Management in Android (Diploma IT)
JappanMavani
 
Ad

PHP Symfony MicroServices Migration @MeeticTech