SlideShare a Scribd company logo
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
OSGi R7 – microservices never looked simpler. October 2017
Tim Ward

tim.ward@paremus.com
OSGi R7 – microservices never looked
simpler.
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
Who is Tim Ward?
Chief Technology Officer at Paremus
9 years developing OSGi specifications
Co-chair of the OSGi IoT Expert Group
Interested in Asynchronous Distributed Systems
Author of Manning’s Enterprise OSGi in Action
http://www.manning.com/cummins
@TimothyWard
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
Services, Microservices
and µServices
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
What do we mean by “service”?
Simply put, a service is software that does something!
Retrieving/updating stored data
Transforming data from one form to another
Providing access to real time sensors/actuators
10-15 years ago these services were Web Services
Web Services tended to be large and coarse grained
Usually HTTP front ends bolted on to an existing system
Microservices were an evolution of (or reaction to) Web Services
Smaller, fine-grained services with a dedicated process
Applications built from many Microservices
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
What do we mean by “service”? (2)
In OSGi Services have existed for even longer
A way to maintain loose coupling between modules
A dynamic representation of a changing physical environment
OSGi services are ultra-lightweight microservices
Just a call from one object to another
OSGi services are usually in-process
OSGi Services are an excellent way to build microservices
It’s turtles all the way down!
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
The Basics of an OSGi Service
An OSGi service is a Java Object
It’s registered in the OSGi Service Registry
The registration includes the Service’s API
OSGi services also have properties
These provide additional information
They can help clients when multiple services exist
They can also communicate other information…
ProviderConsumer
MyService
foo = bar
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
Easy ways to Publish an
OSGi Service
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
Declarative Services
Declarative Services is an OSGi Compendium Specification
A container for registering and consuming OSGi Services
Automatic dependency and lifecycle management
Annotation driven metadata
Providing a Service:
Referencing a Service:
@Component
public class MyServiceImpl
implements MyService {
…
}
@Reference
private MyService myService
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
Declarative Services (New for R7)
Constructor Injection!
Previously only fields or bind methods were supported
Activation Fields!
Inject configuration and/or other types without an activate method
Component Property Types
Custom annotations that can define service properties
You’ll be seeing more of these later!
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
Service Whiteboards
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
What is a whiteboard?
OSGi services usually communicate between bundles
Sometimes they are also used to register extensions
A whiteboard service is designed to be “extended” in some way
Service properties are used to identify and configure the services
There are several Whiteboard compendium specifications
The Http Service Whiteboard exposes Servlet services
New in Release 7 - the JAX-RS Service Whiteboard
The R7 updates include Component Property annotations
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
The Http Whiteboard
The Http Whiteboard is a simple way to provide Servlets
Service properties for things you would normally find in web.xml
Write a normal Servlet
Make it a service
Add the osgi.http.whiteboard.servlet.pattern property
In R7 this property is much easier to define
@HttpWhiteboardServletPattern(“/foo”)
You can also use the whiteboard for static resources
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
The JAX-RS Whiteboard (new in R7)
JAX-RS was created to simplify writing RESTful services
The whiteboard uses OSGi services to add JAX-RS resources
It is dynamic, resources can be added and removed at runtime
Write a normal JAX-RS resource
Make it a service
Add the osgi.jaxrs.resource property
With DS and component property types this is really simple!
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
JAX-RS whiteboard example
Time for some code!
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
API Versions
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
Managing your API versions
Yes, this is a boring topic, so I’ll keep it short!
API versions are really important
They are a statement about backward (and future) compatibility
Always version your API properly
Baselining tools (such as the ones in bnd) can help you do this
Some public APIs are really badly versioned
Google use a single incrementing version number for Guava
Java EE specification versions jump around randomly
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
Coping with badly versioned APIs
We can’t stop Java Specs from using bad versions
I tried *really* hard!
We can work around the problem by defining “contracts”
A contract is an OSGi capability representing an API version
Clients require the contract at a particular version
Clients import the API packages *without* versions
Bnd can detect contracts on your build path and use them
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
JAX-RS contract example
Back to the IDE…
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
Data Access
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
CRUD services
Many RESTful services use CRUD operations
Create, Read, Update, Delete
This typically requires a persistent back end
SQL / NoSQL / whatever
JDBC and JPA specifications already exist for OSGi
R7 adds automatic lifecycle and transaction management
This is defined by the Transaction Control specification
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
Transaction Control
Transaction Control manages resources using scopes
Scopes can also be transactional, guaranteeing atomicity
Managed resources are bound to the scope
They are therefore automatically cleaned up and disposed
Managed resources are created using a ResourceProvider
Resource Providers also offer pooling and other features
Standard resource providers exist for JDBC and JPA
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
Wiring it all together
It’s not good practice to do persistence in the REST service
What if you want to change persistence store?
What if you want to access the data in another way?
OSGi services are perfect for reusable modules!
Microservices all the way down remember!
Declarative Services is even better for consuming services
Just annotate your fields and away you go
You can also have activation/deactivation callbacks
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
Persistent REST service example
Back to the IDE…
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
Oh No!!
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
So why didn’t it work this time?
Our REST Service @Provides(APPLICATION_JSON)
JSON support is not built into the JAX-RS spec
We need to tell the whiteboard our requirement!
There is a standard annotation we can use
@JaxrsExtensionSelect(“(media.type=JSON)")
But we can do even more by building our own annotations!
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
Writing a custom annotation
Writing a Component Property Annotation is easy
Using Target “TYPE” and “CLASS” retention is sufficient
Then annotate your annotation with @ComponentPropertyType
For single element annotations (using value())
UnCamelCase the annotation name and add dots (e.g. un.camel.case)
The value is either the default, or whatever the user supplied
For other annotation types
Take the property name and replace ‘_’ with ‘.’
The value is either the default, or whatever the user supplied
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
But wait, there’s more!
You have seen me resolving my OSGi runtime
This uses bundle metadata to build my whole demo
A whiteboard property is a runtime requirement
We need to tell the resolver about the resolve time requirement
There are @Requirement and @Capability annotations
These are meta-annotations that add to the bundle manifest
We can add these to our component property annotations too
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
Putting it all together
Back to the IDE for one last time…
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
Some more advanced things to think about
The JAX-RS whiteboard can host Application services
Scoping and targeting features for multi-tenant servers
More advanced Transaction Control behaviours
Controlling rollback, nested transactions, XA recovery…
OSGi PushStreams for asynchronous and reactive data
These fit really well with Server Sent Events in JAX-RS
Dynamic Services, Remote Services, Asynchronous Services
There’s a whole ecosystem of cool stuff to play with!
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
Questions?
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017
For more about OSGi...
Specifications at http://www.osgi.org
Enterprise OSGi in Action
For more about the R7 specs and APIs
https://www.osgi.org/developer/specifications/
http://oss.sonatype.org/content/groups/osgi/
For more about Aries JAX-RS Whiteboard
https://github.com/apache/aries-jax-rs-whiteboard
http://repository.apache.org/content/repositories/snapshots
Thanks!
http://www.paremus.com
info@paremus.com
http://www.manning.com/
cummins
Copyright © 2017 Paremus Ltd.

May not be reproduced by any means without express permission. All rights reserved.
Reactive OSGi meets Reactive Java October 2017

More Related Content

What's hot

To be or not to be serverless
To be or not to be serverlessTo be or not to be serverless
To be or not to be serverless
Steve Houël
 
Asynchronous OSGi – Promises for the Masses - T Ward
Asynchronous OSGi – Promises for the Masses - T WardAsynchronous OSGi – Promises for the Masses - T Ward
Asynchronous OSGi – Promises for the Masses - T Ward
mfrancis
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React Native
Amazon Web Services
 
Introduction to React Native - Nader Dabit
Introduction to React Native - Nader DabitIntroduction to React Native - Nader Dabit
Introduction to React Native - Nader Dabit
Amazon Web Services
 
GeeCON Microservices 2015 scaling micro services at gilt
GeeCON Microservices 2015   scaling micro services at giltGeeCON Microservices 2015   scaling micro services at gilt
GeeCON Microservices 2015 scaling micro services at gilt
Adrian Trenaman
 
Polyglot on the JVM with Graal (Japanese)
Polyglot on the JVM with Graal (Japanese)Polyglot on the JVM with Graal (Japanese)
Polyglot on the JVM with Graal (Japanese)
Logico
 
London Oracle Developer Meetup April 18
London Oracle Developer Meetup April 18London Oracle Developer Meetup April 18
London Oracle Developer Meetup April 18
Phil Wilkins
 
在 AWS 上建構基於事件驅動的應用
在 AWS 上建構基於事件驅動的應用在 AWS 上建構基於事件驅動的應用
在 AWS 上建構基於事件驅動的應用
Amazon Web Services
 
Scaling micro services at gilt
Scaling micro services at giltScaling micro services at gilt
Scaling micro services at gilt
Adrian Trenaman
 
Oracle Developer Tour Latam Nowadays Architecture Trends, from Monolith to Mi...
Oracle Developer Tour Latam Nowadays Architecture Trends, from Monolith to Mi...Oracle Developer Tour Latam Nowadays Architecture Trends, from Monolith to Mi...
Oracle Developer Tour Latam Nowadays Architecture Trends, from Monolith to Mi...
Alberto Salazar
 
Reactive Microservices with Quarkus
Reactive Microservices with QuarkusReactive Microservices with Quarkus
Reactive Microservices with Quarkus
Niklas Heidloff
 
Building Mobile Apps with AWS Amplify - Nader Dabit
Building Mobile Apps with AWS Amplify - Nader DabitBuilding Mobile Apps with AWS Amplify - Nader Dabit
Building Mobile Apps with AWS Amplify - Nader Dabit
Amazon Web Services
 
Dirigible @ Skyscanner
Dirigible @ SkyscannerDirigible @ Skyscanner
Dirigible @ Skyscanner
Jordan Pavlov
 
Jakarta Tech Talk: How to develop your first cloud-native Application with Java
Jakarta Tech Talk: How to develop your first cloud-native Application with JavaJakarta Tech Talk: How to develop your first cloud-native Application with Java
Jakarta Tech Talk: How to develop your first cloud-native Application with Java
Niklas Heidloff
 
Spring Cloud Kubernetes - Spencer Gibb
Spring Cloud Kubernetes - Spencer GibbSpring Cloud Kubernetes - Spencer Gibb
Spring Cloud Kubernetes - Spencer Gibb
VMware Tanzu
 
Introduction to Kitura - Swift Hong Kong Meetup 2016 July
Introduction to Kitura - Swift Hong Kong Meetup 2016 JulyIntroduction to Kitura - Swift Hong Kong Meetup 2016 July
Introduction to Kitura - Swift Hong Kong Meetup 2016 July
Patrick C.S. Fan
 
Erica Cooksey Reactathon 2018
Erica Cooksey Reactathon 2018Erica Cooksey Reactathon 2018
Erica Cooksey Reactathon 2018
🏡 Erica Cooksey
 
Building Microservices with the Twelve Factor App Pattern on AWS
Building Microservices with the Twelve Factor App Pattern on AWSBuilding Microservices with the Twelve Factor App Pattern on AWS
Building Microservices with the Twelve Factor App Pattern on AWS
Amazon Web Services
 
Accelerating Infrastructure as Code with CI in AWS.
Accelerating Infrastructure as Code with CI in AWS.Accelerating Infrastructure as Code with CI in AWS.
Accelerating Infrastructure as Code with CI in AWS.
Will Hall
 
Security & Compliance in the Cloud
Security & Compliance in the CloudSecurity & Compliance in the Cloud
Security & Compliance in the Cloud
Amazon Web Services
 

What's hot (20)

To be or not to be serverless
To be or not to be serverlessTo be or not to be serverless
To be or not to be serverless
 
Asynchronous OSGi – Promises for the Masses - T Ward
Asynchronous OSGi – Promises for the Masses - T WardAsynchronous OSGi – Promises for the Masses - T Ward
Asynchronous OSGi – Promises for the Masses - T Ward
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React Native
 
Introduction to React Native - Nader Dabit
Introduction to React Native - Nader DabitIntroduction to React Native - Nader Dabit
Introduction to React Native - Nader Dabit
 
GeeCON Microservices 2015 scaling micro services at gilt
GeeCON Microservices 2015   scaling micro services at giltGeeCON Microservices 2015   scaling micro services at gilt
GeeCON Microservices 2015 scaling micro services at gilt
 
Polyglot on the JVM with Graal (Japanese)
Polyglot on the JVM with Graal (Japanese)Polyglot on the JVM with Graal (Japanese)
Polyglot on the JVM with Graal (Japanese)
 
London Oracle Developer Meetup April 18
London Oracle Developer Meetup April 18London Oracle Developer Meetup April 18
London Oracle Developer Meetup April 18
 
在 AWS 上建構基於事件驅動的應用
在 AWS 上建構基於事件驅動的應用在 AWS 上建構基於事件驅動的應用
在 AWS 上建構基於事件驅動的應用
 
Scaling micro services at gilt
Scaling micro services at giltScaling micro services at gilt
Scaling micro services at gilt
 
Oracle Developer Tour Latam Nowadays Architecture Trends, from Monolith to Mi...
Oracle Developer Tour Latam Nowadays Architecture Trends, from Monolith to Mi...Oracle Developer Tour Latam Nowadays Architecture Trends, from Monolith to Mi...
Oracle Developer Tour Latam Nowadays Architecture Trends, from Monolith to Mi...
 
Reactive Microservices with Quarkus
Reactive Microservices with QuarkusReactive Microservices with Quarkus
Reactive Microservices with Quarkus
 
Building Mobile Apps with AWS Amplify - Nader Dabit
Building Mobile Apps with AWS Amplify - Nader DabitBuilding Mobile Apps with AWS Amplify - Nader Dabit
Building Mobile Apps with AWS Amplify - Nader Dabit
 
Dirigible @ Skyscanner
Dirigible @ SkyscannerDirigible @ Skyscanner
Dirigible @ Skyscanner
 
Jakarta Tech Talk: How to develop your first cloud-native Application with Java
Jakarta Tech Talk: How to develop your first cloud-native Application with JavaJakarta Tech Talk: How to develop your first cloud-native Application with Java
Jakarta Tech Talk: How to develop your first cloud-native Application with Java
 
Spring Cloud Kubernetes - Spencer Gibb
Spring Cloud Kubernetes - Spencer GibbSpring Cloud Kubernetes - Spencer Gibb
Spring Cloud Kubernetes - Spencer Gibb
 
Introduction to Kitura - Swift Hong Kong Meetup 2016 July
Introduction to Kitura - Swift Hong Kong Meetup 2016 JulyIntroduction to Kitura - Swift Hong Kong Meetup 2016 July
Introduction to Kitura - Swift Hong Kong Meetup 2016 July
 
Erica Cooksey Reactathon 2018
Erica Cooksey Reactathon 2018Erica Cooksey Reactathon 2018
Erica Cooksey Reactathon 2018
 
Building Microservices with the Twelve Factor App Pattern on AWS
Building Microservices with the Twelve Factor App Pattern on AWSBuilding Microservices with the Twelve Factor App Pattern on AWS
Building Microservices with the Twelve Factor App Pattern on AWS
 
Accelerating Infrastructure as Code with CI in AWS.
Accelerating Infrastructure as Code with CI in AWS.Accelerating Infrastructure as Code with CI in AWS.
Accelerating Infrastructure as Code with CI in AWS.
 
Security & Compliance in the Cloud
Security & Compliance in the CloudSecurity & Compliance in the Cloud
Security & Compliance in the Cloud
 

Similar to OSGi R7 - Microservices never looked simpler

Dynamically assembled REST Microservices using JAX-RS and... Microservices? -...
Dynamically assembled REST Microservices using JAX-RS and... Microservices? -...Dynamically assembled REST Microservices using JAX-RS and... Microservices? -...
Dynamically assembled REST Microservices using JAX-RS and... Microservices? -...
mfrancis
 
Deep learning systems model serving
Deep learning systems   model servingDeep learning systems   model serving
Deep learning systems model serving
Hagay Lupesko
 
Building Serverless Microservices with AWS
Building Serverless Microservices with AWSBuilding Serverless Microservices with AWS
Building Serverless Microservices with AWS
Donnie Prakoso
 
NEW LAUNCH! Introducing AWS Cloud9, a cloud IDE to write, run, & debug your c...
NEW LAUNCH! Introducing AWS Cloud9, a cloud IDE to write, run, & debug your c...NEW LAUNCH! Introducing AWS Cloud9, a cloud IDE to write, run, & debug your c...
NEW LAUNCH! Introducing AWS Cloud9, a cloud IDE to write, run, & debug your c...
Amazon Web Services
 
NEW LAUNCH! Introducing AWS Cloud9, a cloud IDE to write, run, & debug your c...
NEW LAUNCH! Introducing AWS Cloud9, a cloud IDE to write, run, & debug your c...NEW LAUNCH! Introducing AWS Cloud9, a cloud IDE to write, run, & debug your c...
NEW LAUNCH! Introducing AWS Cloud9, a cloud IDE to write, run, & debug your c...
Amazon Web Services
 
Case Study: Ola Cabs Uses Amazon EBS and Elastic Volumes to Maximize MySQL De...
Case Study: Ola Cabs Uses Amazon EBS and Elastic Volumes to Maximize MySQL De...Case Study: Ola Cabs Uses Amazon EBS and Elastic Volumes to Maximize MySQL De...
Case Study: Ola Cabs Uses Amazon EBS and Elastic Volumes to Maximize MySQL De...
Amazon Web Services
 
Servereless Jobs with AWS Lambda
Servereless Jobs with AWS LambdaServereless Jobs with AWS Lambda
Servereless Jobs with AWS Lambda
Jon Gear
 
CON203_Driving Innovation with Containers
CON203_Driving Innovation with ContainersCON203_Driving Innovation with Containers
CON203_Driving Innovation with Containers
Amazon Web Services
 
Driving Innovation with Containers - CON203 - re:Invent 2017
Driving Innovation with Containers - CON203 - re:Invent 2017Driving Innovation with Containers - CON203 - re:Invent 2017
Driving Innovation with Containers - CON203 - re:Invent 2017
Amazon Web Services
 
Technological Accelerants for Organizational Transformation - DVC303 - re:Inv...
Technological Accelerants for Organizational Transformation - DVC303 - re:Inv...Technological Accelerants for Organizational Transformation - DVC303 - re:Inv...
Technological Accelerants for Organizational Transformation - DVC303 - re:Inv...
Amazon Web Services
 
DVC303-Technological Accelerants for Organizational Transformation
DVC303-Technological Accelerants for Organizational TransformationDVC303-Technological Accelerants for Organizational Transformation
DVC303-Technological Accelerants for Organizational Transformation
Amazon Web Services
 
MySQL InnoDB Cluster and Group Replication - OSI 2017 Bangalore
MySQL InnoDB Cluster and Group Replication - OSI 2017 BangaloreMySQL InnoDB Cluster and Group Replication - OSI 2017 Bangalore
MySQL InnoDB Cluster and Group Replication - OSI 2017 Bangalore
Sujatha Sivakumar
 
Build Cloud-Connected Apps in React Native for iOS & Android.pdf
Build Cloud-Connected Apps in React Native for iOS & Android.pdfBuild Cloud-Connected Apps in React Native for iOS & Android.pdf
Build Cloud-Connected Apps in React Native for iOS & Android.pdf
Amazon Web Services
 
Reactive Architectures with Microservices
Reactive Architectures with MicroservicesReactive Architectures with Microservices
Reactive Architectures with Microservices
AWS Germany
 
Data Design for Microservices - DevDay Austin 2017 Day 2
Data Design for Microservices - DevDay Austin 2017 Day 2Data Design for Microservices - DevDay Austin 2017 Day 2
Data Design for Microservices - DevDay Austin 2017 Day 2Amazon Web Services
 
RET304_Rapidly Respond to Demanding Retail Customers with the Same Serverless...
RET304_Rapidly Respond to Demanding Retail Customers with the Same Serverless...RET304_Rapidly Respond to Demanding Retail Customers with the Same Serverless...
RET304_Rapidly Respond to Demanding Retail Customers with the Same Serverless...
Amazon Web Services
 
Patterns and Considerations in Service Discovery - Con327 - re:Invent 2017
Patterns and Considerations in Service Discovery - Con327 - re:Invent 2017Patterns and Considerations in Service Discovery - Con327 - re:Invent 2017
Patterns and Considerations in Service Discovery - Con327 - re:Invent 2017
Amazon Web Services
 
REST Development made Easy with ColdFusion Aether
REST Development made Easy with ColdFusion AetherREST Development made Easy with ColdFusion Aether
REST Development made Easy with ColdFusion Aether
Pavan Kumar
 
You Don’t Need A Mobile App! Responsive Web Apps Using AWS
You Don’t Need A Mobile App! Responsive Web Apps Using AWSYou Don’t Need A Mobile App! Responsive Web Apps Using AWS
You Don’t Need A Mobile App! Responsive Web Apps Using AWS
Amazon Web Services
 
Building with Containers on AWS
Building with Containers on AWSBuilding with Containers on AWS
Building with Containers on AWS
Amazon Web Services
 

Similar to OSGi R7 - Microservices never looked simpler (20)

Dynamically assembled REST Microservices using JAX-RS and... Microservices? -...
Dynamically assembled REST Microservices using JAX-RS and... Microservices? -...Dynamically assembled REST Microservices using JAX-RS and... Microservices? -...
Dynamically assembled REST Microservices using JAX-RS and... Microservices? -...
 
Deep learning systems model serving
Deep learning systems   model servingDeep learning systems   model serving
Deep learning systems model serving
 
Building Serverless Microservices with AWS
Building Serverless Microservices with AWSBuilding Serverless Microservices with AWS
Building Serverless Microservices with AWS
 
NEW LAUNCH! Introducing AWS Cloud9, a cloud IDE to write, run, & debug your c...
NEW LAUNCH! Introducing AWS Cloud9, a cloud IDE to write, run, & debug your c...NEW LAUNCH! Introducing AWS Cloud9, a cloud IDE to write, run, & debug your c...
NEW LAUNCH! Introducing AWS Cloud9, a cloud IDE to write, run, & debug your c...
 
NEW LAUNCH! Introducing AWS Cloud9, a cloud IDE to write, run, & debug your c...
NEW LAUNCH! Introducing AWS Cloud9, a cloud IDE to write, run, & debug your c...NEW LAUNCH! Introducing AWS Cloud9, a cloud IDE to write, run, & debug your c...
NEW LAUNCH! Introducing AWS Cloud9, a cloud IDE to write, run, & debug your c...
 
Case Study: Ola Cabs Uses Amazon EBS and Elastic Volumes to Maximize MySQL De...
Case Study: Ola Cabs Uses Amazon EBS and Elastic Volumes to Maximize MySQL De...Case Study: Ola Cabs Uses Amazon EBS and Elastic Volumes to Maximize MySQL De...
Case Study: Ola Cabs Uses Amazon EBS and Elastic Volumes to Maximize MySQL De...
 
Servereless Jobs with AWS Lambda
Servereless Jobs with AWS LambdaServereless Jobs with AWS Lambda
Servereless Jobs with AWS Lambda
 
CON203_Driving Innovation with Containers
CON203_Driving Innovation with ContainersCON203_Driving Innovation with Containers
CON203_Driving Innovation with Containers
 
Driving Innovation with Containers - CON203 - re:Invent 2017
Driving Innovation with Containers - CON203 - re:Invent 2017Driving Innovation with Containers - CON203 - re:Invent 2017
Driving Innovation with Containers - CON203 - re:Invent 2017
 
Technological Accelerants for Organizational Transformation - DVC303 - re:Inv...
Technological Accelerants for Organizational Transformation - DVC303 - re:Inv...Technological Accelerants for Organizational Transformation - DVC303 - re:Inv...
Technological Accelerants for Organizational Transformation - DVC303 - re:Inv...
 
DVC303-Technological Accelerants for Organizational Transformation
DVC303-Technological Accelerants for Organizational TransformationDVC303-Technological Accelerants for Organizational Transformation
DVC303-Technological Accelerants for Organizational Transformation
 
MySQL InnoDB Cluster and Group Replication - OSI 2017 Bangalore
MySQL InnoDB Cluster and Group Replication - OSI 2017 BangaloreMySQL InnoDB Cluster and Group Replication - OSI 2017 Bangalore
MySQL InnoDB Cluster and Group Replication - OSI 2017 Bangalore
 
Build Cloud-Connected Apps in React Native for iOS & Android.pdf
Build Cloud-Connected Apps in React Native for iOS & Android.pdfBuild Cloud-Connected Apps in React Native for iOS & Android.pdf
Build Cloud-Connected Apps in React Native for iOS & Android.pdf
 
Reactive Architectures with Microservices
Reactive Architectures with MicroservicesReactive Architectures with Microservices
Reactive Architectures with Microservices
 
Data Design for Microservices - DevDay Austin 2017 Day 2
Data Design for Microservices - DevDay Austin 2017 Day 2Data Design for Microservices - DevDay Austin 2017 Day 2
Data Design for Microservices - DevDay Austin 2017 Day 2
 
RET304_Rapidly Respond to Demanding Retail Customers with the Same Serverless...
RET304_Rapidly Respond to Demanding Retail Customers with the Same Serverless...RET304_Rapidly Respond to Demanding Retail Customers with the Same Serverless...
RET304_Rapidly Respond to Demanding Retail Customers with the Same Serverless...
 
Patterns and Considerations in Service Discovery - Con327 - re:Invent 2017
Patterns and Considerations in Service Discovery - Con327 - re:Invent 2017Patterns and Considerations in Service Discovery - Con327 - re:Invent 2017
Patterns and Considerations in Service Discovery - Con327 - re:Invent 2017
 
REST Development made Easy with ColdFusion Aether
REST Development made Easy with ColdFusion AetherREST Development made Easy with ColdFusion Aether
REST Development made Easy with ColdFusion Aether
 
You Don’t Need A Mobile App! Responsive Web Apps Using AWS
You Don’t Need A Mobile App! Responsive Web Apps Using AWSYou Don’t Need A Mobile App! Responsive Web Apps Using AWS
You Don’t Need A Mobile App! Responsive Web Apps Using AWS
 
Building with Containers on AWS
Building with Containers on AWSBuilding with Containers on AWS
Building with Containers on AWS
 

More from mfrancis

Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
mfrancis
 
OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)
mfrancis
 
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
mfrancis
 
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank LyaruuOSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
mfrancis
 
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
mfrancis
 
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
mfrancis
 
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
mfrancis
 
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
mfrancis
 
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
mfrancis
 
OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)
mfrancis
 
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
mfrancis
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
mfrancis
 
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
mfrancis
 
Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)
mfrancis
 
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
mfrancis
 
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
mfrancis
 
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
mfrancis
 
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
mfrancis
 
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
mfrancis
 
How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)
mfrancis
 

More from mfrancis (20)

Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
 
OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)
 
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
 
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank LyaruuOSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
 
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
 
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
 
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
 
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
 
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
 
OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)
 
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
 
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
 
Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)
 
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
 
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
 
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
 
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
 
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
 
How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)
 

Recently uploaded

Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
g2nightmarescribd
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 

Recently uploaded (20)

Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 

OSGi R7 - Microservices never looked simpler

  • 1. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. OSGi R7 – microservices never looked simpler. October 2017 Tim Ward
 tim.ward@paremus.com OSGi R7 – microservices never looked simpler.
  • 2. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 Who is Tim Ward? Chief Technology Officer at Paremus 9 years developing OSGi specifications Co-chair of the OSGi IoT Expert Group Interested in Asynchronous Distributed Systems Author of Manning’s Enterprise OSGi in Action http://www.manning.com/cummins @TimothyWard
  • 3. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 Services, Microservices and µServices
  • 4. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 What do we mean by “service”? Simply put, a service is software that does something! Retrieving/updating stored data Transforming data from one form to another Providing access to real time sensors/actuators 10-15 years ago these services were Web Services Web Services tended to be large and coarse grained Usually HTTP front ends bolted on to an existing system Microservices were an evolution of (or reaction to) Web Services Smaller, fine-grained services with a dedicated process Applications built from many Microservices
  • 5. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 What do we mean by “service”? (2) In OSGi Services have existed for even longer A way to maintain loose coupling between modules A dynamic representation of a changing physical environment OSGi services are ultra-lightweight microservices Just a call from one object to another OSGi services are usually in-process OSGi Services are an excellent way to build microservices It’s turtles all the way down!
  • 6. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 The Basics of an OSGi Service An OSGi service is a Java Object It’s registered in the OSGi Service Registry The registration includes the Service’s API OSGi services also have properties These provide additional information They can help clients when multiple services exist They can also communicate other information… ProviderConsumer MyService foo = bar
  • 7. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 Easy ways to Publish an OSGi Service
  • 8. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 Declarative Services Declarative Services is an OSGi Compendium Specification A container for registering and consuming OSGi Services Automatic dependency and lifecycle management Annotation driven metadata Providing a Service: Referencing a Service: @Component public class MyServiceImpl implements MyService { … } @Reference private MyService myService
  • 9. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 Declarative Services (New for R7) Constructor Injection! Previously only fields or bind methods were supported Activation Fields! Inject configuration and/or other types without an activate method Component Property Types Custom annotations that can define service properties You’ll be seeing more of these later!
  • 10. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 Service Whiteboards
  • 11. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 What is a whiteboard? OSGi services usually communicate between bundles Sometimes they are also used to register extensions A whiteboard service is designed to be “extended” in some way Service properties are used to identify and configure the services There are several Whiteboard compendium specifications The Http Service Whiteboard exposes Servlet services New in Release 7 - the JAX-RS Service Whiteboard The R7 updates include Component Property annotations
  • 12. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 The Http Whiteboard The Http Whiteboard is a simple way to provide Servlets Service properties for things you would normally find in web.xml Write a normal Servlet Make it a service Add the osgi.http.whiteboard.servlet.pattern property In R7 this property is much easier to define @HttpWhiteboardServletPattern(“/foo”) You can also use the whiteboard for static resources
  • 13. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 The JAX-RS Whiteboard (new in R7) JAX-RS was created to simplify writing RESTful services The whiteboard uses OSGi services to add JAX-RS resources It is dynamic, resources can be added and removed at runtime Write a normal JAX-RS resource Make it a service Add the osgi.jaxrs.resource property With DS and component property types this is really simple!
  • 14. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 JAX-RS whiteboard example Time for some code!
  • 15. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 API Versions
  • 16. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 Managing your API versions Yes, this is a boring topic, so I’ll keep it short! API versions are really important They are a statement about backward (and future) compatibility Always version your API properly Baselining tools (such as the ones in bnd) can help you do this Some public APIs are really badly versioned Google use a single incrementing version number for Guava Java EE specification versions jump around randomly
  • 17. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 Coping with badly versioned APIs We can’t stop Java Specs from using bad versions I tried *really* hard! We can work around the problem by defining “contracts” A contract is an OSGi capability representing an API version Clients require the contract at a particular version Clients import the API packages *without* versions Bnd can detect contracts on your build path and use them
  • 18. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 JAX-RS contract example Back to the IDE…
  • 19. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 Data Access
  • 20. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 CRUD services Many RESTful services use CRUD operations Create, Read, Update, Delete This typically requires a persistent back end SQL / NoSQL / whatever JDBC and JPA specifications already exist for OSGi R7 adds automatic lifecycle and transaction management This is defined by the Transaction Control specification
  • 21. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 Transaction Control Transaction Control manages resources using scopes Scopes can also be transactional, guaranteeing atomicity Managed resources are bound to the scope They are therefore automatically cleaned up and disposed Managed resources are created using a ResourceProvider Resource Providers also offer pooling and other features Standard resource providers exist for JDBC and JPA
  • 22. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 Wiring it all together It’s not good practice to do persistence in the REST service What if you want to change persistence store? What if you want to access the data in another way? OSGi services are perfect for reusable modules! Microservices all the way down remember! Declarative Services is even better for consuming services Just annotate your fields and away you go You can also have activation/deactivation callbacks
  • 23. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 Persistent REST service example Back to the IDE…
  • 24. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 Oh No!!
  • 25. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 So why didn’t it work this time? Our REST Service @Provides(APPLICATION_JSON) JSON support is not built into the JAX-RS spec We need to tell the whiteboard our requirement! There is a standard annotation we can use @JaxrsExtensionSelect(“(media.type=JSON)") But we can do even more by building our own annotations!
  • 26. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 Writing a custom annotation Writing a Component Property Annotation is easy Using Target “TYPE” and “CLASS” retention is sufficient Then annotate your annotation with @ComponentPropertyType For single element annotations (using value()) UnCamelCase the annotation name and add dots (e.g. un.camel.case) The value is either the default, or whatever the user supplied For other annotation types Take the property name and replace ‘_’ with ‘.’ The value is either the default, or whatever the user supplied
  • 27. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 But wait, there’s more! You have seen me resolving my OSGi runtime This uses bundle metadata to build my whole demo A whiteboard property is a runtime requirement We need to tell the resolver about the resolve time requirement There are @Requirement and @Capability annotations These are meta-annotations that add to the bundle manifest We can add these to our component property annotations too
  • 28. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 Putting it all together Back to the IDE for one last time…
  • 29. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 Some more advanced things to think about The JAX-RS whiteboard can host Application services Scoping and targeting features for multi-tenant servers More advanced Transaction Control behaviours Controlling rollback, nested transactions, XA recovery… OSGi PushStreams for asynchronous and reactive data These fit really well with Server Sent Events in JAX-RS Dynamic Services, Remote Services, Asynchronous Services There’s a whole ecosystem of cool stuff to play with!
  • 30. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 Questions?
  • 31. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017 For more about OSGi... Specifications at http://www.osgi.org Enterprise OSGi in Action For more about the R7 specs and APIs https://www.osgi.org/developer/specifications/ http://oss.sonatype.org/content/groups/osgi/ For more about Aries JAX-RS Whiteboard https://github.com/apache/aries-jax-rs-whiteboard http://repository.apache.org/content/repositories/snapshots Thanks! http://www.paremus.com info@paremus.com http://www.manning.com/ cummins
  • 32. Copyright © 2017 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Reactive OSGi meets Reactive Java October 2017