Microservices and OSGi running with Apache Karaf Agenda No free - - PowerPoint PPT Presentation

microservices and osgi
SMART_READER_LITE
LIVE PREVIEW

Microservices and OSGi running with Apache Karaf Agenda No free - - PowerPoint PPT Presentation

Microservices and OSGi running with Apache Karaf Agenda No free Lunch - microservices microservices or Service? Free Lunch? - OSGi Services Services in the Apache Karaf ecosystem Showcase: https:/


slide-1
SLIDE 1

Microservices and OSGi

running with Apache Karaf

slide-2
SLIDE 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:

slide-3
SLIDE 3

3

@anierbeck

Senior IT-Consultant @codecentric Apache Karaf PMC Apache Member OPS4j Pax Web Project lead Co-Author Apache Karaf Cookbook

slide-4
SLIDE 4

No Free Lunch - with micro services_

4

slide-5
SLIDE 5

01

No Free Lunch - with micro services_

Operations overhead

Instead of one Application (cluster) micro applications that need to be clustered / Orchestrated / Operated

slide-6
SLIDE 6

01

No Free Lunch - with micro services_

DevOps Skills Required

  • ld school: One AppServer one

application now: applications that might run on different infrastructure

Instead of bigger boats, more boats are needed

slide-7
SLIDE 7

01

No Free Lunch - with micro services_

Implicit Interfaces

Changes in:

  • syntax
  • semantics
slide-8
SLIDE 8

01

No Free Lunch - with micro services_

Distributed System Complexity

network latency fault tolerance message serialization distributed transactions

slide-9
SLIDE 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

  • r distributed transactions
slide-10
SLIDE 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

slide-11
SLIDE 11

µService - comparison of two definition_

11

slide-12
SLIDE 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

slide-13
SLIDE 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

slide-14
SLIDE 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

slide-15
SLIDE 15

Free Lunch? OSGi µServices_

15

slide-16
SLIDE 16

01

Free Lunch? OSGi µServices_

Operations Overhead

OSGi Bundles - containing services One container vessel One Server to know

slide-17
SLIDE 17

Apache_

17

slide-18
SLIDE 18

OSGi Framework

18

JAAS Deployer Console Blueprint Logging Config Http WAR Features Instance OBR KAR JMX JPA JTA Cellar Core

Standard

Apache Karaf_

JNDI JMS JDBC µServices µServices µServices JAX-RS µServices

slide-19
SLIDE 19

01

Free Lunch? OSGi µServices_

DevOps Skills Required

requirements are reduced!

  • Karaf - Ops
  • OSGi - Devs
slide-20
SLIDE 20

01

Free Lunch? OSGi µServices_

Implicit Interfaces

semantic versioning OSGi supports multiple versions multiple service implementations tools help

slide-21
SLIDE 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.

slide-22
SLIDE 22

22

maven-bundle-plugin

Semantic Versioning - Tools_

slide-23
SLIDE 23

01

Semantic Versioning - Tools_

Release - Baselining

Fix version 1.0.0 Baseline new version with 1.0.0 version

slide-24
SLIDE 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

slide-25
SLIDE 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

slide-26
SLIDE 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

slide-27
SLIDE 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

slide-28
SLIDE 28

28

Service tests - Pax EXAM - Continous Integration_

slide-29
SLIDE 29

µServices in the Apache Karaf ecosystem_

29

slide-30
SLIDE 30

30

µServices in the Apache Karaf ecosystem_ microservices made of µServices …

slide-31
SLIDE 31

01

µServices in the Apache Karaf ecosystem_

Apache Karaf Cellar

Hazelcast based cluster Groups and Nodes Services across Clusters Failover Load balanced

slide-32
SLIDE 32

01

µServices in the Apache Karaf ecosystem_

Apache Karaf Cave

OSGi Repository Bundle Requirements Capabilities

slide-33
SLIDE 33

01

µServices in the Apache Karaf ecosystem_

Apache Karaf Decanter

Monitor Elasticsearch Kibana

slide-34
SLIDE 34

Continous Delivery with Apache Karaf_

34

slide-35
SLIDE 35

Continous Deployment_

35

slide-36
SLIDE 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_

slide-37
SLIDE 37

µServices - sum of all services_

37

slide-38
SLIDE 38

01

µServices - sum of all services_

Should I do microservices YES!

Monolithic blocks are bad Use:

  • Low Coupling
  • High Cohesion
slide-39
SLIDE 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

slide-40
SLIDE 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

slide-41
SLIDE 41

01

µServices - sum of all services_

microservice based on µServices

instead of building micro-monolith base on OSGi services.

slide-42
SLIDE 42

Questions ?

slide-43
SLIDE 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:

slide-44
SLIDE 44

44