jdd 2014 how to rebuild monolithic application to micro services architecture ?

50
Tomasz Lelek tomekl007 @tomekl007

Upload: tomasz-lelek

Post on 17-Dec-2014

170 views

Category:

Technology


0 download

DESCRIPTION

When creating application based on architecture of micro services, a team needs to face up many challenges. -building easily extensible architecture of micro services. When we creating new service, we always need data from other service. To be able to receive that data, we only need to import light client, which is the interface of another service. -How to use HTTP protocol properly, to change it to our biggest assets, and do not attempt to hide it unnecessarily. -Which functionalities of monolithic application pull out first. How to use domain driven design, to model the business domain specific for each micro service ? -How to manage configuration and deployment of various services ? -implementing Circuit Breaker patter, using Netfix Hystrix library -real time monitoring of micro services -aggregating logs from many servers in one central point, and analysing them -creating documentation, which could be use as a client of each service

TRANSCRIPT

Page 1: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Tomasz Lelek

tomekl007

@tomekl007

Page 2: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

How to rebuild monolithic application to micro services architecture?

Page 3: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Presentation Plan

1. Business context2. Technology3. Architecture4. Configuration management5. Monitoring6. Aggregating logs7. Deploying ( vagrant, docker )8. Modern documentation

Page 4: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Monolith

Page 5: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Application Domain

Page 6: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

One entity – multiple identities

Page 7: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Same functionality – new architecture

Page 8: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Redirecting request

Page 9: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Url Rewriting

#Apache rewrite url, work for post requestRewriteEngine OnRewriteRule /generate http://reportservice.no/generate [P]

Page 10: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Needs

Page 11: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

i

Page 12: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Embedded Container

Page 13: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Starting Service

./sbt>container:start[info] Started [email protected]:8090[success] Total time: 2 s

Page 14: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

How microservice looks like?

Page 15: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Using via imported client

Page 16: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Many clients

Page 17: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Scala java - interoperability

Page 18: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Rest, json, http

Page 19: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Architecture

Page 20: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Architecture Evolve

Page 21: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Managing configuration

Page 22: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Configuration Service

Page 23: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Asking for configuration

Page 24: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Switching configuration dynamically

Page 25: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Services monitoring - status

Page 26: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Monitoring of dependencies

Page 27: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Graph visualization

Page 28: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Visualization of dependencies

Page 29: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Where is service with configuration?

Page 30: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

etcd

Page 31: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Circuit Breaker

Page 32: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Hystrix

Page 33: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Implementation

Page 34: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Many services = many logs

Page 35: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

One aggregation point

Page 36: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

+ logstash

Page 37: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Configuration of Logstash

Page 38: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

/_search?pretty&type=batch-staging

Page 39: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?
Page 40: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Amazon EC2

Page 41: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

vagrant plugin install vagrant-aws

vagrant up --provider=aws

vagrant ssh <MACHINE NAME>

Page 42: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?
Page 43: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Technology stack

Page 44: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Proper documentation

Page 45: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Documentation

Page 46: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Generated json

Page 47: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Swagger-ui

https://github.com/wordnik/swagger-ui

Page 48: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Documentation as a client

Page 49: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Time for building microservices !

Page 50: JDD 2014 HOW TO REBUILD MONOLITHIC APPLICATION TO MICRO SERVICES ARCHITECTURE ?

Thank You, Questions ?