jdd 2014 how to rebuild monolithic application to micro services architecture ?
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 serviceTRANSCRIPT
Tomasz Lelek
tomekl007
@tomekl007
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
Monolith
Application Domain
One entity – multiple identities
Same functionality – new architecture
Redirecting request
Url Rewriting
#Apache rewrite url, work for post requestRewriteEngine OnRewriteRule /generate http://reportservice.no/generate [P]
Needs
i
Embedded Container
Starting Service
./sbt>container:start[info] Started [email protected]:8090[success] Total time: 2 s
How microservice looks like?
Using via imported client
Many clients
Scala java - interoperability
Rest, json, http
Architecture
Architecture Evolve
Managing configuration
Configuration Service
Asking for configuration
Switching configuration dynamically
Services monitoring - status
Monitoring of dependencies
Graph visualization
Visualization of dependencies
Where is service with configuration?
etcd
Circuit Breaker
Hystrix
Implementation
Many services = many logs
One aggregation point
+ logstash
Configuration of Logstash
/_search?pretty&type=batch-staging
Amazon EC2
vagrant plugin install vagrant-aws
vagrant up --provider=aws
vagrant ssh <MACHINE NAME>
Technology stack
Proper documentation
Documentation
Generated json
Swagger-ui
https://github.com/wordnik/swagger-ui
Documentation as a client
Time for building microservices !
Thank You, Questions ?