how to slice your monolithic webapp using microapps architecture

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

Upload: yonatan-maman

Post on 09-Jan-2017

616 views

Category:

Software


1 download

TRANSCRIPT

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?