How to slice your
monolithic webapp
using
value.quality.scale
MicroApps architecture
@yonatanm
value.quality.scale
Outbrain
0.5B> 200B
Unique 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 needed
app1
/
/**
app2
/
/**
MicroApps to the rescue!
LEGACY
webapp
Authentication && Session Management
app1/ /**
Proxy
app2/ /**
Proxy
app1
Auth
APP2
Auth
Login
Logout
Password
Profile
Auth
app3/ /**
Proxy
MicroApp
FACADE
SERVICE
MicroApps overview
Proxy and all that Jazz
app1
Auth
MicroApp
App1
Proxy
* Routing
* Handles inbound request
* Handles outbound responses
* Routing
* Handles inbound request
* Handles outbound responses
LegaCYWeb App
app1
/
/**
The Proxy Protocol
App1
Proxy
app1
Auth
MicroApp
* Session header
* Specific cookie
* User's IP
* Session header
* Specific cookie
* User's IP
* Body
* Encoding
* HTTP Status
* Body
* Encoding
* HTTP Status
FACADESERVICE
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 job
freedom
* 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
InMicroApps
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?

How to slice your monolithic webapp using MicroApps architecture

  • 1.
    How to sliceyour monolithic webapp using value.quality.scale MicroApps architecture
  • 2.
  • 3.
    Outbrain 0.5B> 200B Unique VisitorsRecommendations per Month
  • 4.
  • 5.
    * Multiple teams *Multiple products * More and more features * Multiple teams * Multiple products * More and more features After few years ...
  • 6.
    * High Technologydebt * High Complexity * High Technology debt * High Complexity How to handle – quality, ownership autonomy, velocity ??? But...
  • 7.
    Want to buya MicroService? * Hiding impl. details * Deploy independently * Isolation failures * Independence / Autonomy * Hiding impl. details * Deploy independently * Isolation failures * Independence / Autonomy
  • 8.
    * Sessions * Security *Cross apps links * Allow-Origin CORS * User experience * Sessions * Security * Cross apps links * Allow-Origin CORS * User experience MicroServices to the rescue?
  • 9.
    * Define yourareas * Map the areas * Change routs if needed * Define your areas * Map the areas * Change routs if needed app1 / /** app2 / /** MicroApps to the rescue! LEGACY webapp
  • 10.
    Authentication && SessionManagement app1/ /** Proxy app2/ /** Proxy app1 Auth APP2 Auth Login Logout Password Profile Auth app3/ /** Proxy MicroApp FACADE SERVICE MicroApps overview
  • 11.
    Proxy and allthat Jazz app1 Auth MicroApp App1 Proxy * Routing * Handles inbound request * Handles outbound responses * Routing * Handles inbound request * Handles outbound responses LegaCYWeb App app1 / /**
  • 12.
    The Proxy Protocol App1 Proxy app1 Auth MicroApp *Session header * Specific cookie * User's IP * Session header * Specific cookie * User's IP * Body * Encoding * HTTP Status * Body * Encoding * HTTP Status FACADESERVICE
  • 13.
    Know your Proxy *The Proxy Protocol * Connection pool * Performance metrics * Failures metrics * logs * The Proxy Protocol * Connection pool * Performance metrics * Failures metrics * logs
  • 14.
    Infrastructure as aservice * 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
  • 15.
    Technology * one sessionfor 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
  • 16.
    Culture * Autonomy andFreedom * 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 job freedom
  • 17.
    * Another movingpart * 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
  • 18.
    * Initiated onJan '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 InMicroApps
  • 19.
    Future work * circuitbreaker * Rewrite Facade Service * reusing web resources * open source it ? * circuit breaker * Rewrite Facade Service * reusing web resources * open source it ?
  • 20.
    Thank You Q &&A value.quality.scale Want to know more about Contact me Want to know more about Contact me Outbrain's Architecture?