how to slice your monolithic webapp using microapps architecture
TRANSCRIPT
How to slice your monolithic webapp
using
value.quality.scale
MicroApps architecture
@yonatanm
value.quality.scale
Outbrain
0.5B> 200BUnique Visitors Recommendations
per Month
once upon a time
* Multiple teams
* Multiple products
* More and more features
* Multiple teams
* Multiple products
* More and more features
After few years ...
* High Technology debt
* High Complexity
* High Technology debt
* High Complexity
How to handle – quality, ownership
autonomy, velocity ???
But...
Want to buy a MicroService?
* Hiding impl. details
* Deploy independently
* Isolation failures
* Independence / Autonomy
* Hiding impl. details
* Deploy independently
* Isolation failures
* Independence / Autonomy
* Sessions
* Security
* Cross apps links
* Allow-Origin CORS
* User experience
* Sessions
* Security
* Cross apps links
* Allow-Origin CORS
* User experience
MicroServices to the rescue?
* Define your areas
* Map the areas
* Change routs if needed
* Define your areas
* Map the areas
* Change routs if neededapp1/
/**app2/
/**
MicroApps to the rescue!
LEGACY
webapp
Authentication && Session Management
app1/ /**Proxy
app2/ /**Proxy
app1
Auth
APP2
Auth
LoginLogout
PasswordProfile
Auth
app3/ /**Proxy
MicroApp
FACADE
SERVICE
MicroApps overview
Proxy and all that Jazzapp1
Auth
MicroApp
App1Proxy
* Routing
* Handles inbound request
* Handles outbound responses
* Routing
* Handles inbound request
* Handles outbound responses
LegaCYWeb App
app1/
/**
The Proxy Protocol
App1Proxy
app1
Auth
MicroApp
* Session header
* Specific cookie
* User's IP
* Session header
* Specific cookie
* User's IP
* Body
* Encoding
* HTTP Status
* Body
* Encoding
* HTTP StatusFACADESERVICE
Know your Proxy
* The Proxy Protocol
* Connection pool
* Performance metrics
* Failures metrics
* logs
* The Proxy Protocol
* Connection pool
* Performance metrics
* Failures metrics
* logs
Infrastructure as a service
* SSL
* Access logs
* Security
* Monitoring
* CDN integration
* SSL
* Access logs
* Security
* Monitoring
* CDN integration
Authentication && Session Management
app1/ /**Proxy
app2/ /**Proxy
app3/ /**Proxy
FACADE
SERVICE
Technology
* one session for all microApps
* Better technology stack
* Reducing tech debt
* Gradual upgrade
* Quality
* one session for all microApps
* Better technology stack
* Reducing tech debt
* Gradual upgrade
* Quality
Culture
* Autonomy and Freedom
* Ownership
* Separation of concern
* Focus
* Autonomy and Freedom
* Ownership
* Separation of concern
* Focus
I did it my Way
Giving ppl as much as possible to do their jobGiving ppl as much as possible to do their jobfreedom
* Another moving part
* Latency
* hard to compete HAProxy
* no more one CSS to rule them all
* Another moving part
* Latency
* hard to compete HAProxy
* no more one CSS to rule them all
* Initiated on Jan '15 (well, not really)
* Started with one microApp
* Gradual rollout
* We have now 4 (and keep growing)
Managed by different teams
Each has a different technology stack
* Highly monitored
* Initiated on Jan '15 (well, not really)
* Started with one microApp
* Gradual rollout
* We have now 4 (and keep growing)
Managed by different teams
Each has a different technology stack
* Highly monitored
In MicroApps
Future work
* circuit breaker
* Rewrite Facade Service
* reusing web resources
* open source it ?
* circuit breaker
* Rewrite Facade Service
* reusing web resources
* open source it ?
Thank You
Q && A
value.quality.scale
Want to know more about
Contact me
Want to know more about
Contact me
Outbrain's Architecture?