how to slice your monolithic webapp using microapps architecture

Post on 09-Jan-2017

618 Views

Category:

Software

1 Downloads

Preview:

Click to see full reader

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?

top related