4developers 2015: microservices and modularity or the difference between treatment and cure! - milen...

51
APRIL 20, 2015 Microservices and Modularity or the difference between treatment and cure Milen Dyankov @milendyankov

Upload: proidea

Post on 28-Jul-2015

66 views

Category:

Software


0 download

TRANSCRIPT

Page 1: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

APRIL 20, 2015

Microservicesand

Modularityor

the difference between

treatmentand

cureMilen Dyankov@milendyankov

Page 2: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

~$ pidof java

Page 3: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

~$ pidof java9927 2151~$

Page 4: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

~$ pidof java9927 2151~$ ps aux | grep java | grep -v grep | awk '{print $2}'

Page 5: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

~$ pidof java9927 2151~$ ps aux | grep java | grep -v grep | awk '{print $2}'21519927~$

Page 6: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

~$ pidof java9927 2151~$ ps aux | grep java | grep -v grep | awk '{print $2}'21519927~$

Monolith

Microservices

Page 7: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

What are

Microservices

Page 8: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

Componentization via ServicesOrganized around Business CapabilitiesProducts not ProjectsSmart endpoints and dumb pipesDecentralized GovernanceDecentralized Data ManagementInfrastructure AutomationDesign for failureEvolutionary Design

Microservices characteristics!

Page 9: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

Componentization via ServicesOrganized around Business CapabilitiesProducts not ProjectsSmart endpoints and dumb pipesDecentralized GovernanceDecentralized Data ManagementInfrastructure AutomationDesign for failureEvolutionary Design

50% not strictly software butrather operations related!

Page 10: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

Why consider

Microservices

Page 11: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

wrong but common answer

Reducing the complexity of Monoliths

Page 12: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov
Page 13: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

. . .

Page 14: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

. . .

Page 15: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

. . .

Page 16: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

. . .or

Page 17: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

. . .or

. . .∞

Page 18: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

. . .or

. . .∞

. . .

Page 19: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

. . .or

. . .

Reduced complexity !!!

. . .

Page 20: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

. . .

then all you are doing is shifting complexity from inside a

component to the connections between components.

. . .

it moves it to a place that's less explicit and harder to

control.

Page 21: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

Microservices

What's cool about

Page 22: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

“The real power ... is the ability for a developer to develop a single entity and then deploy that component multiple times”

“Highly Scalable, Robust, Architecture”

“In very straightforward terms ... is a component model forbuilding portable, reusable and scalable business

components ... for distributed environment.”

Page 23: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

“The real power ... is the ability for a developer to develop a single entity and then deploy that component multiple times”

www.onjava.com/pub/a/onjava/2001/12/19/eejbs.html

“Highly Scalable, Robust, Architecture” www.dhlee.info/computing/ejb/reference/seybold_ejb.pdf

“In very straightforward terms ... is a component model forbuilding portable, reusable and scalable business

components ... for distributed environment.”www.idt.mdh.se/kurser/ct3340/archives/ht08/papersRM08/37.pdf

Quotes from articles about EJB ( 1999 – 2002 )

Page 24: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

. . .

Companies worldwide have overspent about $1 billion

. . .

vendors are encouraging customer to buy

high-end technology that they don't need.

Page 25: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

Who is doing

Microservices

Page 26: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

microservices

Page 27: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

microservices

What do they have in common ?

Page 28: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

microservices

They buildmicroservices for

their own needs!

Page 29: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

microservices

They buildmicroservices for

their own needs!

This makes it easer for them to grow the DevOps culture hire the right people accept “Decentralized” approach automate infrastructure

Page 30: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

. . .

a technique that is more effective for a more skillful team

isn't necessarily going to work for less skillful teams

. . .

A poor team will always create a poor system

. . .

Page 31: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

Should I do

Microservices

Page 32: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

microservices

Does your organization fit into that space?

Page 33: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

. . .

you shouldn't start with a microservices architecture. Instead begin with a monolith,

keep it modular , and split it into microservices

once the monolith becomes a problem.

. . .

Page 34: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

Microservices

What else, if not

Page 35: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

Microservices do not

cure complexity!

Actually nothing does !

Page 36: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

The term "cure" means that, after medical treatment, the patient

no longer has that particular condition anymore .

Some diseases have no cure. The patient will always have the

condition, but treatment can help to manage it.

Page 37: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

Good treatment for complexity is enforcing

clean modular

architecture

Page 38: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

. . .

The Deployment Model is a Detail.. . .

there is no such thing as a micro-service

architecture.Micro-services are a

deployment option . . .

Page 39: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

Interesting !?!

But in my project it's not possible because of . . .

Really ?!?

Modularizing “Duke's forest”

JEE tutorial demo!

https://github.com/azzazzel/modular-dukes-forest

Page 40: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

ModelJPA

StoreJPA, EJB

JSF

Shipping

JPA, EJB

JSF

Payment EJB

Glassfish

Page 41: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

DomainModel

Catalogusecase

Identity

usecase E-com

merc

e

usecaseJ

PA

pe

rsistence

In-memorypersistence

EJBcontrollers

OSGiservices

Portle

tdis

play

JSF

display

JEEcontainer

SpringBoot

OSGiruntime

Liferay

Database

Page 42: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

DomainModel

Catalogusecase

Identity

usecase E-com

merc

e

usecaseJ

PA

pe

rsistence

In-memorypersistence

EJBcontrollers

OSGiservices

Portle

tdis

play

JSF

display

JEEcontainer

SpringBoot

OSGiruntime

Liferay

Database

Page 43: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

DomainModel

Catalogusecase

Identity

usecase E-com

merc

e

usecaseJ

PA

pe

rsistence

In-memorypersistence

EJBcontrollers

OSGiservices

Portle

tdis

play

JSF

display

JEEcontainer

SpringBoot

OSGiruntime

Liferay

Database

Page 44: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

DomainModel

Catalogusecase

Identity

usecase E-com

merc

e

usecaseJ

PA

pe

rsistence

In-memorypersistence

EJBcontrollers

OSGiservices

Portle

tdis

play

JSF

display

JEEcontainer

SpringBoot

OSGiruntime

Liferay

Database

Page 45: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

DomainModel

Catalogusecase

Identity

usecase E-com

merc

e

usecaseJ

PA

pe

rsistence

In-memorypersistence

EJBcontrollers

OSGiservices

Portle

tdis

play

JSF

display

JEEcontainer

SpringBoot

OSGiruntime

Liferay

Database

Page 46: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html

Page 47: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

Microservices

ModularityIs a important software architecture concept!

One can design modular application without

Page 48: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

The OSGi specification describes a modular system and a service platform for the

Java programming language

ConfluenceEclipse

Fuse ESB Glassfish

JbossJIRA

JonASService Mix

WeblogicWebsphere

. . .

The architecture of choice for

and

Page 49: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

Componentization via ServicesOrganized around Business CapabilitiesProducts not ProjectsSmart endpoints and dumb pipesDecentralized GovernanceDecentralized Data ManagementInfrastructure AutomationDesign for failureEvolutionary Design

Same characteristics but more flexible !

Page 50: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

We are transforming a huge code base

into small simple core and OSGi (micro)services!

We have so far extracted over 80 apps and we are

not done yet!

This is not theory! We do this at

Page 51: 4Developers 2015: Microservices and Modularity or the difference between treatment and cure! - Milen Dyankov

[email protected]

http://www.liferay.com/web/milen.dyankov/

@milendyankov@LiferayPL

http://www.liferay.com

@Liferay

http://www.facebook.com/Liferay