How to slice your monolithic webapp using MicroApps architecture

20
How to slice your monolithic webapp using value.quality.scale MicroApps architecture

Transcript of How to slice your monolithic webapp using MicroApps architecture

Page 1: How to slice your monolithic webapp using MicroApps architecture

How to slice your monolithic webapp

using

value.quality.scale

MicroApps architecture

Page 2: How to slice your monolithic webapp using MicroApps architecture

@yonatanm

value.quality.scale

Page 3: How to slice your monolithic webapp using MicroApps architecture

Outbrain

0.5B> 200BUnique Visitors Recommendations

per Month

Page 4: How to slice your monolithic webapp using MicroApps architecture

once upon a time

Page 5: How to slice your monolithic webapp using MicroApps architecture

* Multiple teams

* Multiple products

* More and more features

* Multiple teams

* Multiple products

* More and more features

After few years ...

Page 6: How to slice your monolithic webapp using MicroApps architecture

* High Technology debt

* High Complexity

* High Technology debt

* High Complexity

How to handle – quality, ownership

autonomy, velocity ???

But...

Page 7: How to slice your monolithic webapp using MicroApps architecture

Want to buy a MicroService?

* Hiding impl. details

* Deploy independently

* Isolation failures

* Independence / Autonomy

* Hiding impl. details

* Deploy independently

* Isolation failures

* Independence / Autonomy

Page 8: How to slice your monolithic webapp using MicroApps architecture

* Sessions

* Security

* Cross apps links

* Allow-Origin CORS

* User experience

* Sessions

* Security

* Cross apps links

* Allow-Origin CORS

* User experience

MicroServices to the rescue?

Page 9: How to slice your monolithic webapp using MicroApps architecture

* 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

Page 10: How to slice your monolithic webapp using MicroApps architecture

Authentication && Session Management

app1/ /**Proxy

app2/ /**Proxy

app1

Auth

APP2

Auth

LoginLogout

PasswordProfile

Auth

app3/ /**Proxy

MicroApp

FACADE

SERVICE

MicroApps overview

Page 11: How to slice your monolithic webapp using MicroApps architecture

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/

/**

Page 12: How to slice your monolithic webapp using MicroApps architecture

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

Page 13: How to slice your monolithic webapp using MicroApps architecture

Know your Proxy

* The Proxy Protocol

* Connection pool

* Performance metrics

* Failures metrics

* logs

* The Proxy Protocol

* Connection pool

* Performance metrics

* Failures metrics

* logs

Page 14: How to slice your monolithic webapp using MicroApps architecture

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

Page 15: How to slice your monolithic webapp using MicroApps architecture

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

Page 16: How to slice your monolithic webapp using MicroApps architecture

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

Page 17: How to slice your monolithic webapp using MicroApps architecture

* 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

Page 18: How to slice your monolithic webapp using MicroApps architecture

* 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

Page 19: How to slice your monolithic webapp using MicroApps architecture

Future work

* circuit breaker

* Rewrite Facade Service

* reusing web resources

* open source it ?

* circuit breaker

* Rewrite Facade Service

* reusing web resources

* open source it ?

Page 20: How to slice your monolithic webapp using MicroApps architecture

Thank You

Q && A

value.quality.scale

Want to know more about

Contact me

Want to know more about

Contact me

Outbrain's Architecture?