Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Microservices and OSGi
running with Apache Karaf
•No free Lunch - microservices
•microservices or µService?
•Free Lunch? - OSGi µServices
•µServices in the Apache Karaf ec...
3
@anierbeck
Senior IT-Consultant @codecentric
Apache Karaf PMC
Apache Member
OPS4j Pax Web Project lead
Co-Author Apache ...
No Free Lunch - with micro services_
4
01
No Free Lunch - with micro services_
Operations overhead
Instead of one Application (cluster)
micro applications that n...
01
No Free Lunch - with micro services_
DevOps Skills Required
old school: One AppServer one
application
now: applications...
01
No Free Lunch - with micro services_
Implicit Interfaces
Changes in:
•syntax
•semantics
01
No Free Lunch - with micro services_
Distributed System
Complexity
network latency
fault tolerance
message serializatio...
01
No Free Lunch - with micro services_
A/Synchronicity

is Difficult!
communication is much more
asynchronous
it gets com...
01
No Free Lunch - with micro services_
Testability Challenges
testing a single service is easy
monitoring the dynamic env...
µService - comparison of two definition_
11
—Peter Kriens, March 2010
http://blog.osgi.org/2010/03/services.html
“What I am promoting is the idea of
µServices, the co...
–Martin Fowler, March 2014
“In short, the microservice architectural style is an
approach to developing a single applicati...
•One main reason for using services as components (rather than libraries) is that
services are independently deployable 

...
Free Lunch? OSGi µServices_
15
01
Free Lunch? OSGi µServices_
Operations Overhead
OSGi Bundles - containing services
One container vessel
One Server to k...
Apache_
17
OSGi Framework
18
JAAS
Deployer
Console
Blueprint
LoggingConfig
HttpWAR
Features
Instance
OBR
KAR
JMX
JPA JTA Cellar
CoreSt...
01
Free Lunch? OSGi µServices_
DevOps Skills Required
requirements are reduced!
- Karaf - Ops
- OSGi - Devs
01
Free Lunch? OSGi µServices_
Implicit Interfaces
semantic versioning
OSGi supports multiple versions
multiple service im...
21
Semantic Versioning_
1. major
Packages with versions that have different major parts are not compatible both for provide...
22
maven-bundle-plugin
Semantic Versioning - Tools_
01
Semantic Versioning - Tools_
Release - Baselining
Fix version 1.0.0
Baseline new version with 1.0.0
version
•Comparing bundle service-api version 1.0.0-SNAPSHOT to version 1.0.0-SNAPSHOT

PACKAGE_NAME DELTA CUR_VER BASE_VER REC_VE...
01
Free Lunch? OSGi µServices_
Distributed System
Complexity
complexity reduced -> one container
no network traffic
service...
01
Free Lunch? OSGi µServices_
A/Synchronicity

is Difficult!
in JVM communication
service calls - transparent call
statel...
01
Free Lunch? OSGi µServices_
Testability Challenges
POJO tests for business logic
Pax EXAM - Integration tests of OSGi
s...
28
Service tests - Pax EXAM - Continous Integration_
µServices in the Apache Karaf ecosystem_
29
30
µServices in the Apache Karaf ecosystem_
microservices made of µServices …
01
µServices in the Apache Karaf ecosystem_
Apache Karaf Cellar
Hazelcast based cluster
Groups and Nodes
Services across C...
01
µServices in the Apache Karaf ecosystem_
Apache Karaf Cave
OSGi Repository
Bundle
Requirements
Capabilities
01
µServices in the Apache Karaf ecosystem_
Apache Karaf Decanter
Monitor
Elasticsearch
Kibana
Continous Delivery with Apache Karaf_
34
Continous Deployment_
35
36
{
"type":"EXEC",
"mbean":"org.apache.karaf:type=bundle,name=root",
"operation":"install(java.lang.String,boolean)",
"ar...
µServices - sum of all services_
37
01
µServices - sum of all services_
Should I do
microservices
YES!
Monolithic blocks are bad
Use:
- Low Coupling
- High Co...
01
µServices - sum of all services_
The Silver Bullet?
NO!
OSGi isn’t the silver Bullet
A lot of issues which exist with
µ...
01
µServices - sum of all services_
Blueprint?
YES!
Use it as blueprint for transition to
microservices
OSGi - µServices w...
01
µServices - sum of all services_
microservice based on
µServices
instead of building micro-monolith
base on OSGi servic...
Questions ?
•images found at flickr - thanks to that
•No Free Lunch with Microservices

http://highscalability.com/blog/2014/4/8/micros...
44
Nächste SlideShare
Wird geladen in …5
×

Microservices OSGi-running-with-apache-karaf

4.890 Aufrufe

Veröffentlicht am

Doing microservices with OSGi and Apache Karaf

Veröffentlicht in: Software

Microservices OSGi-running-with-apache-karaf

  1. 1. Microservices and OSGi running with Apache Karaf
  2. 2. •No free Lunch - microservices •microservices or µService? •Free Lunch? - OSGi µServices •µServices in the Apache Karaf ecosystem •https://github.com/ANierbeck/Karaf-Microservices-Tooling •https://github.com/ANierbeck/Karaf-Microservices 2 Agenda Showcase:
  3. 3. 3 @anierbeck Senior IT-Consultant @codecentric Apache Karaf PMC Apache Member OPS4j Pax Web Project lead Co-Author Apache Karaf Cookbook
  4. 4. No Free Lunch - with micro services_ 4
  5. 5. 01 No Free Lunch - with micro services_ Operations overhead Instead of one Application (cluster) micro applications that need to be clustered / Orchestrated / Operated
  6. 6. 01 No Free Lunch - with micro services_ DevOps Skills Required old school: One AppServer one application now: applications that might run on different infrastructure Instead of bigger boats, more boats are needed
  7. 7. 01 No Free Lunch - with micro services_ Implicit Interfaces Changes in: •syntax •semantics
  8. 8. 01 No Free Lunch - with micro services_ Distributed System Complexity network latency fault tolerance message serialization distributed transactions
  9. 9. 01 No Free Lunch - with micro services_ A/Synchronicity
 is Difficult! communication is much more asynchronous it gets complex when you need to correlate messages or distributed transactions
  10. 10. 01 No Free Lunch - with micro services_ Testability Challenges testing a single service is easy monitoring the dynamic environment is hard —> less testing, more monitoring
  11. 11. µService - comparison of two definition_ 11
  12. 12. —Peter Kriens, March 2010 http://blog.osgi.org/2010/03/services.html “What I am promoting is the idea of µServices, the concepts of an OSGi service as a design primitive.” 12
  13. 13. –Martin Fowler, March 2014 “In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare mininum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.” 13
  14. 14. •One main reason for using services as components (rather than libraries) is that services are independently deployable 
 OSGi Bundle •you can expect many single service changes to only require that service to be redeployed
 OSGi Service / Bundle •cohesive service boundaries and evolution mechanisms in the service contracts 
 OSGi Versioning •Often it's only documentation and discipline that prevents clients breaking a component's encapsulation, leading to overly-tight coupling between components.
 OSGi Container enforces this in detail_ 14
  15. 15. Free Lunch? OSGi µServices_ 15
  16. 16. 01 Free Lunch? OSGi µServices_ Operations Overhead OSGi Bundles - containing services One container vessel One Server to know
  17. 17. Apache_ 17
  18. 18. OSGi Framework 18 JAAS Deployer Console Blueprint LoggingConfig HttpWAR Features Instance OBR KAR JMX JPA JTA Cellar CoreStandardApache Karaf_ JNDI JMS JDBC µServices µServices µServices JAX-RS µServices
  19. 19. 01 Free Lunch? OSGi µServices_ DevOps Skills Required requirements are reduced! - Karaf - Ops - OSGi - Devs
  20. 20. 01 Free Lunch? OSGi µServices_ Implicit Interfaces semantic versioning OSGi supports multiple versions multiple service implementations tools help
  21. 21. 21 Semantic Versioning_ 1. major Packages with versions that have different major parts are not compatible both for providers as well as consumers. For example, 1.2 and 2.3 are completely incompatible. 2. minor API consumers are compatible with exporters that have the same major number and an equal or higher minor version. API providers are compatible with exporters that have the same major and minor version number. For example, 1.2 is backward compatible with 1.1 for consumers but for providers it is incompatible. Consumers should therefore import [1.2,2) and providers should import [1.2,1.3). 3. micro A difference in the micro part does not signal any backward compatibility issues. The micro number is used to fix bugs that do not affect either consumers or providers of the API. 4. qualifier The qualifier is usually used to indicate a build identity, for example a time stamp. Different qualifiers do not signal any backward compatibility issues.
  22. 22. 22 maven-bundle-plugin Semantic Versioning - Tools_
  23. 23. 01 Semantic Versioning - Tools_ Release - Baselining Fix version 1.0.0 Baseline new version with 1.0.0 version
  24. 24. •Comparing bundle service-api version 1.0.0-SNAPSHOT to version 1.0.0-SNAPSHOT
 PACKAGE_NAME DELTA CUR_VER BASE_VER REC_VER WARNINGS
 = ================================================== ========== ========== ========== ========== ==========
 de.nierbeck.microservices.karaf.calculator unchanged 1.0.0 1.0.0 1.0.0 -
 -----------------------------------------------------------------------------------------------------------
 de.nierbeck.microservices.karaf.calculator.values unchanged 1.0.0 1.0.0 1.0.0 -
 -----------------------------------------------------------------------------------------------------------
 Baseline analysis complete, 0 error(s), 0 warning(s) Semantic Versioning - Baselining_ 24 Baselining
  25. 25. 01 Free Lunch? OSGi µServices_ Distributed System Complexity complexity reduced -> one container no network traffic service calls -> method calls from services found in service registry. Clustering: Apache Karaf Cellar Remote: DOSGi —> CXF, Cellar
  26. 26. 01 Free Lunch? OSGi µServices_ A/Synchronicity
 is Difficult! in JVM communication service calls - transparent call stateless services event communication Out-Of-The-Box
  27. 27. 01 Free Lunch? OSGi µServices_ Testability Challenges POJO tests for business logic Pax EXAM - Integration tests of OSGi services. Shift Focus: More Testing, less monitoring
  28. 28. 28 Service tests - Pax EXAM - Continous Integration_
  29. 29. µServices in the Apache Karaf ecosystem_ 29
  30. 30. 30 µServices in the Apache Karaf ecosystem_ microservices made of µServices …
  31. 31. 01 µServices in the Apache Karaf ecosystem_ Apache Karaf Cellar Hazelcast based cluster Groups and Nodes Services across Clusters Failover Load balanced
  32. 32. 01 µServices in the Apache Karaf ecosystem_ Apache Karaf Cave OSGi Repository Bundle Requirements Capabilities
  33. 33. 01 µServices in the Apache Karaf ecosystem_ Apache Karaf Decanter Monitor Elasticsearch Kibana
  34. 34. Continous Delivery with Apache Karaf_ 34
  35. 35. Continous Deployment_ 35
  36. 36. 36 { "type":"EXEC", "mbean":"org.apache.karaf:type=bundle,name=root", "operation":"install(java.lang.String,boolean)", "arguments":["mvn:${project.groupId}/${project.artifactId}/${project.version}", true] } •deployment via REST •Jolokia - REST •JMX Management •Maven Plugin Continous Deployment_
  37. 37. µServices - sum of all services_ 37
  38. 38. 01 µServices - sum of all services_ Should I do microservices YES! Monolithic blocks are bad Use: - Low Coupling - High Cohesion
  39. 39. 01 µServices - sum of all services_ The Silver Bullet? NO! OSGi isn’t the silver Bullet A lot of issues which exist with µ-Services are already solved in the OSGi - Eco system
  40. 40. 01 µServices - sum of all services_ Blueprint? YES! Use it as blueprint for transition to microservices OSGi - µServices will help in breaking up the Monolith
  41. 41. 01 µServices - sum of all services_ microservice based on µServices instead of building micro-monolith base on OSGi services.
  42. 42. Questions ?
  43. 43. •images found at flickr - thanks to that •No Free Lunch with Microservices
 http://highscalability.com/blog/2014/4/8/microservices-not-a- free-lunch.html •http://karaf.apache.org/ •http://blog.osgi.org/2010/03/services.html •https://github.com/ANierbeck/Karaf-Microservices-Tooling •https://github.com/ANierbeck/Karaf-Microservices END_ 43 Links: Showcase:
  44. 44. 44

×