SlideShare une entreprise Scribd logo
1  sur  36
OSGi Cloud Ecosystems



                    David Bosschaert
    Principal Engineer, JBoss/Red Hat
                   david@redhat.com
                       December 2012
Agenda

●   PaaS today
●   OSGi Cloud Ecosystems
●   'Demo'
PaaS offerings today (1)
●   General deployment containers
    –   Application Servers
        ●   i.e. deploy .WAR files in the cloud
    –   Continuous Build Jenkins/Hudson
●   Dynamic Language based
    –   e.g. Python/Ruby/JavaScript
    –   Often come with a Cloud-based IDE
●   Support for specific technology
    –   E.g. deploy Google App Engine on my own
        cloud
Paas offerings today (2)
●   Typically per cloud-VM instance
    –   you need to do your own scaling
    –   sometimes it can dynamically add replicas
        ●   of your entire deployment
    –   instances don't know much about others
        ●   although they might connect to a cloud data store
●   Today's PaaS
    –   suitable if you can deploy multiple instances of the
        same app
    –   harder to use if you have a composite application
        ●   with a variety of components
        ●   across different nodes
We need a better cloud!
●   Where things are more dynamic
●   Where not every cloud VM image has just one purpose
●   Where a bunch of different nodes work together
       to form one logical application
●   Where each cloud image could play different roles over time
●   Where we can easily migrate from one cloud vendor to another
Example cloud-based Application (1)
●   Has a web front-end
    –   host needs to be accessible from outside
         ●   (well known hostname)
●   Uses messaging
    –   replicated message broker
●   Has a data store
●   And a back end
    –   does the heavy lifting, computation
    –   integrates with 3rd party providers
●   Each entity on a different node
Example cloud-based Application (2)
                                               Every entity runs on a
                                                different cloud node



                      Back End
                      Back End
                                                Read and update
        Notifies                                request data




                                         Database
          Message
                                           Database
           Queue




                       Web
                        Web
    Submit request       Web
                         Web                    Store request data
                     Front-end
                          Web
                     Front-end
                          Web
                      Front-end
                      Front-end
                       Front-end
                        Front-end



                              User interacts
Dynamic Scaling
                    and correction
●   I want all these elements to scale
    dynamically
    –   possibly based on some domain-specific rules
●   I want the system to be able to correct itself
    –   e.g. when a Cloud VM dies/becomes inaccessible
●   I don't want to worry about reconfiguring clients
    –   when a service moves to another node
●   I want the system to be portable
    –   so I can move to another cloud
    –   in case of entire cloud failure
How do I get all this?
I need an entity that orchestrates, a Provisioner
●   Needs to be able to remotely deploy
    –   to the nodes in the system
    –   decide at runtime what the role of a certain VM is
●   Needs to know the topology
    –   as well as the application specifics
I need a flexible cloud platform
●   repurpose a Cloud VM
●   without sending the whole image to a machine again
Portability: I want to shield myself from cloud-vendor specific APIs
●   as much as possible
●   standards based
OSGi Cloud Ecosystems
●   A number of OSGi frameworks
    –   great because of their dynamic capabilities
●   Each in a separate VM/cloud node
●   Bound together to form a logical ecosystem
    –   via ecosystem-wide discovery mechanism

●   Environment
    –   OSGi Frameworks can find out about other frameworks
    –   Can easily communicate with other frameworks
    –   and services running on these frameworks
OSGi Cloud Ecosystems




A highly dynamic OSGi environment where Cloud
nodes/VMs, bundles and services come and go
How does this work?
●   Start off with a number of 'empty'
    OSGi frameworks in the cloud
    –   basic infrastructure provided
         ●   remote services capability
         ●   ecosystem support
    –   no application logic
●   A provisioner decides what goes where
    –   knows about your application
    –   and reacts to changes in topology / runtime system health
●   Discovery component provides OSGi service visibility
    across frameworks
    –   deals with service migrations
Ecosystem Support
●   Each framework registers
    –   FrameworkStatus service
    –   Remote Deployment service
●   These are visible across the Ecosystem
    –   as OSGi services
    –   (via OSGi Remote Services specs)
●   But not outside
FrameworkStatus Service
●   One per running Framework in the Ecosystem
    –   Available via Remote Services
●   Provides information about the framework
    public interface FrameworkStatus {
      String getFrameworkVariable(String name);
    }

●   Static metadata as Service Registration properties
●   Dynamic metadata via getFrameworkVariable()
                  static metadata           dynamic metadata
            cloud type/version        available memory

            location (country code)   available diskspace

            OSGi framework version    machine load factor

            processor architecture    network throughput

            Java version              ...

            IP address

            app-defined (custom)
Provisioning
●   Need a Remote Deployment API
    –   with Java client API
    –   that spans the Ecosystem
    –   works in the cloud
    –   possibly an RFC 182 (REST)-based solution
A sample Provisioner (1/2)
// Listen for the FrameworkStatus service
ServiceTracker st = new ServiceTracker(context, FrameworkStatus.class.getName(),
                                       null) {
    public Object addingService(ServiceReference reference) {
        topologyChanged();
        return super.addingService(reference);
    }

     public void removedService(ServiceReference reference, Object service) {
         topologyChanged();
         super.removedService(reference, service);
     }
};

// React to changes in the topology
void topologyChanged() {
    // Deploy the web front-end
    if (getDeployments(WEB).size() == 0)
        addDeployment(WEB);

     // Deploy the Service two times.
     if (getDeployments(SERVICE).size() < 2)
         addDeployment(SERVICE);
}
A sample Provisioner (2/2)
void addDeployment(DeploymentType type) {
    ServiceReference[] possibleFrameworks = getFrameworkReferences();
    ServiceReference target = getMostSuitableFramework(type, possibleFrameworks);
    if (target == null) {
        // No suitable framework found
        return null;
    }

    String[] bundles = getDeploymentBundles(type, target);
    deployToFramework(target, bundles);
}

ServiceReference   getMostSuitableFramework(DeploymentType type,
                                            ServiceReference... frameworks) {
    for (ServiceReference ref : frameworks) {
        if (type.equals(WEB)) {
            Object prop = ref.getProperty("...framework.ip");
            if (prop instanceof String)
                 if (((String) prop).startsWith("web"))
                     return ref;
        } else if (type.equals(...) {
            // ...
        }
    }
    return null;
}
How do my distributed
        business components interact?
●   Develop them as OSGi Services
    –   then use them via OSGi Remote Services...
●   To publish a service in the ecosystem
        MyService ms = new MyServiceImpl();
        Dictionary msProps = new Hashtable();
        msProps.put("service.exported.interfaces", "*");
        msProps.put("service.exported.configs", "...configtype.ecosystem");
        context.registerService(MyService.class.getName(), ms, msProps);

●   Discovery component gives visibility across ecosystem
    –   System will react automatically to services moving to
        other VMs/nodes
    –   New instances appearing
●   Client simply uses OSGi services as normal
        MyService ms = ... // Obtained from Service Registry
        ms.doit();
OSGi Cloud Ecosystem
●   A fluid system where deployments can come and go
●   Provisioner decides what goes where
    –   Cloud nodes get added, removed
        ● Bundles might get deployed, moved
    –   Ecosystem-wide services appear, disappear
        ●   0, 1, many instances
    –   Service consumers don't need to be reconfigured
        ●   react automatically to changes
        ●   handled by OSGi Remote Services + Discovery
●   System can be repurposed
    –   thanks to OSGi dynamics
    –   no need to send VM images over again
See it in action
●   Pilot on Red Hat's OpenShift cloud
    –   get your own free dev instances
●   All source code available in github
●   For more details see
        http://coderthoughts.blogspot.com
Demo Setup

                           Back End
                           Back End                      Back End
                                                         Back End




Provisioner rules:
● servlet needs to go on

  specific hostname
● exactly 1 testservice               Web Front-end
                                      Web Front-end      ●     displays available frameworks
                                        (Servlet)
                                         (Servlet)
  ● not on servlet host                                  ●     invokes TestService

                                              User interacts
Demo Setup

                           Back End
                           Back End
                                                            Back End
                                                            Back End
                           TestService
                           TestService




Provisioner rules:
● servlet needs to go on

  specific hostname
● exactly 1 testservice                  Web Front-end
                                         Web Front-end      ●     displays available frameworks
                                           (Servlet)
                                            (Servlet)
  ● not on servlet host                                     ●     invokes TestService

                                                 User interacts
Demo Setup

                           Back End
                           Back End                         Back End
                                                            Back End

                           TestService
                           TestService                     TestService
                                                           TestService




Provisioner rules:
● servlet needs to go on

  specific hostname
● exactly 1 testservice                  Web Front-end
                                         Web Front-end      ●     displays available frameworks
                                           (Servlet)
                                            (Servlet)
  ● not on servlet host                                     ●     invokes TestService

                                                 User interacts
Demo Setup – The Servlet
FrameworkStatus             and TestService
                                      from Service Registry
●   lists available frameworks
    void printFrameworks(PrintWriter out) {
        // frameworkRefs list all FrameworkStatus services from the OSGi Service Registry
        for (ServiceReference ref : frameworkRefs) {
            for (String key : ref.getPropertyKeys()) {
                out.println(key + " - " + ref.getProperty(key));
            }
        }
    }

●   invokes a 'computation' service
    void printTestService(PrintWriter out) {
        out.println("<H2>TestService invocation</H2>");
        TestService svc = ... // from the OSGi Service Registry
        if (svc != null)
            out.println("TestService Result: " + svc.doit());
    }
Demo Setup – Services
FrameworkStatus             is provided by the Ecosystem
TestService          is a simple OSGi Service
public interface TestService {
    String doit();
}


Registered with Remote Service props
public class Activator implements BundleActivator {
    public void start(BundleContext context) throws Exception {
        TestService ts = new TestServiceImpl();
        Dictionary tsProps = new Hashtable();
        tsProps.put("service.exported.interfaces", "*");
        tsProps.put("service.exported.configs", "...configtype.ecosystem");
        context.registerService(TestService.class.getName(), ts, tsProps);
    }
}
Demo
●   Real demo available online:
      http://www.youtube.com/watch?v=8-9deWm67w0
●   Following is a set of screenshots that capture
    the essence of the demo...
Questions?
Acknowledgements
●   Cloud image Wikimedia Commons
    –   Stratocumuli by de:Benutzer:LivingShadow

Contenu connexe

Tendances

Scalable Object Storage with Apache CloudStack and Apache Hadoop
Scalable Object Storage with Apache CloudStack and Apache HadoopScalable Object Storage with Apache CloudStack and Apache Hadoop
Scalable Object Storage with Apache CloudStack and Apache HadoopChiradeep Vittal
 
Brief Introduction To Kubernetes
Brief Introduction To KubernetesBrief Introduction To Kubernetes
Brief Introduction To KubernetesAvinash Ketkar
 
CloudStack vs OpenStack vs Eucalyptus: IaaS Private Cloud Brief Comparison
CloudStack vs OpenStack vs Eucalyptus: IaaS Private Cloud Brief ComparisonCloudStack vs OpenStack vs Eucalyptus: IaaS Private Cloud Brief Comparison
CloudStack vs OpenStack vs Eucalyptus: IaaS Private Cloud Brief Comparisonbizalgo
 
Kubernetes - A Comprehensive Overview
Kubernetes - A Comprehensive OverviewKubernetes - A Comprehensive Overview
Kubernetes - A Comprehensive OverviewBob Killen
 
NetflixOSS season 2 episode 2 - Reactive / Async
NetflixOSS   season 2 episode 2 - Reactive / AsyncNetflixOSS   season 2 episode 2 - Reactive / Async
NetflixOSS season 2 episode 2 - Reactive / AsyncRuslan Meshenberg
 
Introduction to kubernetes
Introduction to kubernetesIntroduction to kubernetes
Introduction to kubernetesRishabh Indoria
 
Kubernetes Overview - Deploy your app with confidence
Kubernetes Overview - Deploy your app with confidenceKubernetes Overview - Deploy your app with confidence
Kubernetes Overview - Deploy your app with confidenceOmer Barel
 
Evolution of containers to kubernetes
Evolution of containers to kubernetesEvolution of containers to kubernetes
Evolution of containers to kubernetesKrishna-Kumar
 
Kubernetes a comprehensive overview
Kubernetes   a comprehensive overviewKubernetes   a comprehensive overview
Kubernetes a comprehensive overviewGabriel Carro
 
Who carries your container? Zun or Magnum?
Who carries your container? Zun or Magnum?Who carries your container? Zun or Magnum?
Who carries your container? Zun or Magnum?Madhuri Kumari
 
Getting started with kubernetes
Getting started with kubernetesGetting started with kubernetes
Getting started with kubernetesBob Killen
 
CloudStack Best Practice in PPTV
CloudStack Best Practice in PPTVCloudStack Best Practice in PPTV
CloudStack Best Practice in PPTVgavin_lee
 
OpenStack Best Practices and Considerations - terasky tech day
OpenStack Best Practices and Considerations  - terasky tech dayOpenStack Best Practices and Considerations  - terasky tech day
OpenStack Best Practices and Considerations - terasky tech dayArthur Berezin
 
Cloudstack vs Openstack
Cloudstack vs OpenstackCloudstack vs Openstack
Cloudstack vs OpenstackHuzefa Husain
 
Service Discovery In Kubernetes
Service Discovery In KubernetesService Discovery In Kubernetes
Service Discovery In KubernetesKnoldus Inc.
 
Kubernetes #1 intro
Kubernetes #1   introKubernetes #1   intro
Kubernetes #1 introTerry Cho
 

Tendances (19)

Scalable Object Storage with Apache CloudStack and Apache Hadoop
Scalable Object Storage with Apache CloudStack and Apache HadoopScalable Object Storage with Apache CloudStack and Apache Hadoop
Scalable Object Storage with Apache CloudStack and Apache Hadoop
 
kubernetes 101
kubernetes 101kubernetes 101
kubernetes 101
 
Brief Introduction To Kubernetes
Brief Introduction To KubernetesBrief Introduction To Kubernetes
Brief Introduction To Kubernetes
 
CloudStack vs OpenStack vs Eucalyptus: IaaS Private Cloud Brief Comparison
CloudStack vs OpenStack vs Eucalyptus: IaaS Private Cloud Brief ComparisonCloudStack vs OpenStack vs Eucalyptus: IaaS Private Cloud Brief Comparison
CloudStack vs OpenStack vs Eucalyptus: IaaS Private Cloud Brief Comparison
 
Kubernetes - A Comprehensive Overview
Kubernetes - A Comprehensive OverviewKubernetes - A Comprehensive Overview
Kubernetes - A Comprehensive Overview
 
NetflixOSS season 2 episode 2 - Reactive / Async
NetflixOSS   season 2 episode 2 - Reactive / AsyncNetflixOSS   season 2 episode 2 - Reactive / Async
NetflixOSS season 2 episode 2 - Reactive / Async
 
Introduction to kubernetes
Introduction to kubernetesIntroduction to kubernetes
Introduction to kubernetes
 
Kubernetes Overview - Deploy your app with confidence
Kubernetes Overview - Deploy your app with confidenceKubernetes Overview - Deploy your app with confidence
Kubernetes Overview - Deploy your app with confidence
 
Evolution of containers to kubernetes
Evolution of containers to kubernetesEvolution of containers to kubernetes
Evolution of containers to kubernetes
 
141204 upload
141204 upload141204 upload
141204 upload
 
Kubernetes a comprehensive overview
Kubernetes   a comprehensive overviewKubernetes   a comprehensive overview
Kubernetes a comprehensive overview
 
Who carries your container? Zun or Magnum?
Who carries your container? Zun or Magnum?Who carries your container? Zun or Magnum?
Who carries your container? Zun or Magnum?
 
Getting started with kubernetes
Getting started with kubernetesGetting started with kubernetes
Getting started with kubernetes
 
CloudStack Best Practice in PPTV
CloudStack Best Practice in PPTVCloudStack Best Practice in PPTV
CloudStack Best Practice in PPTV
 
OpenStack Best Practices and Considerations - terasky tech day
OpenStack Best Practices and Considerations  - terasky tech dayOpenStack Best Practices and Considerations  - terasky tech day
OpenStack Best Practices and Considerations - terasky tech day
 
QtQuick Day 1
QtQuick Day 1QtQuick Day 1
QtQuick Day 1
 
Cloudstack vs Openstack
Cloudstack vs OpenstackCloudstack vs Openstack
Cloudstack vs Openstack
 
Service Discovery In Kubernetes
Service Discovery In KubernetesService Discovery In Kubernetes
Service Discovery In Kubernetes
 
Kubernetes #1 intro
Kubernetes #1   introKubernetes #1   intro
Kubernetes #1 intro
 

En vedette

Kartu tes (15211200838)
Kartu tes (15211200838)Kartu tes (15211200838)
Kartu tes (15211200838)suslinasanjaya
 
Nikiforos Georgiou Consultant Chirurgien Orthopédique
Nikiforos Georgiou Consultant Chirurgien OrthopédiqueNikiforos Georgiou Consultant Chirurgien Orthopédique
Nikiforos Georgiou Consultant Chirurgien OrthopédiqueNikiforos Georgiou, MD
 
Brandmanager English
Brandmanager EnglishBrandmanager English
Brandmanager EnglishThomas Grund
 
Saw 3d Marketing Campaign
Saw 3d Marketing CampaignSaw 3d Marketing Campaign
Saw 3d Marketing CampaignCarlos Reyes
 
Social Media - Transforming B2B Organizations: Contemporary Concerns Study
Social Media - Transforming B2B Organizations: Contemporary Concerns StudySocial Media - Transforming B2B Organizations: Contemporary Concerns Study
Social Media - Transforming B2B Organizations: Contemporary Concerns StudyVishrut Shukla
 
Usabilità vuol dire fiducia?
Usabilità vuol dire fiducia?Usabilità vuol dire fiducia?
Usabilità vuol dire fiducia?Gianpaolo Lorusso
 
Как нас найти - площадка IQOS@Artplay
Как нас найти - площадка IQOS@ArtplayКак нас найти - площадка IQOS@Artplay
Как нас найти - площадка IQOS@ArtplayLeonid Eliseev
 
Papa - An introduction to China's SoundCloud/Instagram
Papa - An introduction to China's SoundCloud/InstagramPapa - An introduction to China's SoundCloud/Instagram
Papa - An introduction to China's SoundCloud/InstagramChris Baker
 
Viewership Analysis Of IPL 2016
Viewership Analysis Of IPL 2016Viewership Analysis Of IPL 2016
Viewership Analysis Of IPL 2016Abhishek Behera
 
Class 8 bangladesh & global studies chapter 7, lesson-2
Class 8 bangladesh & global studies chapter 7, lesson-2Class 8 bangladesh & global studies chapter 7, lesson-2
Class 8 bangladesh & global studies chapter 7, lesson-2Abdulláh Mámun
 

En vedette (13)

wcms1p-133560
wcms1p-133560wcms1p-133560
wcms1p-133560
 
Kartu tes (15211200838)
Kartu tes (15211200838)Kartu tes (15211200838)
Kartu tes (15211200838)
 
абылкасым галия+алатау+идея
абылкасым галия+алатау+идеяабылкасым галия+алатау+идея
абылкасым галия+алатау+идея
 
Nikiforos Georgiou Consultant Chirurgien Orthopédique
Nikiforos Georgiou Consultant Chirurgien OrthopédiqueNikiforos Georgiou Consultant Chirurgien Orthopédique
Nikiforos Georgiou Consultant Chirurgien Orthopédique
 
Brandmanager English
Brandmanager EnglishBrandmanager English
Brandmanager English
 
Install CMS
Install CMSInstall CMS
Install CMS
 
Saw 3d Marketing Campaign
Saw 3d Marketing CampaignSaw 3d Marketing Campaign
Saw 3d Marketing Campaign
 
Social Media - Transforming B2B Organizations: Contemporary Concerns Study
Social Media - Transforming B2B Organizations: Contemporary Concerns StudySocial Media - Transforming B2B Organizations: Contemporary Concerns Study
Social Media - Transforming B2B Organizations: Contemporary Concerns Study
 
Usabilità vuol dire fiducia?
Usabilità vuol dire fiducia?Usabilità vuol dire fiducia?
Usabilità vuol dire fiducia?
 
Как нас найти - площадка IQOS@Artplay
Как нас найти - площадка IQOS@ArtplayКак нас найти - площадка IQOS@Artplay
Как нас найти - площадка IQOS@Artplay
 
Papa - An introduction to China's SoundCloud/Instagram
Papa - An introduction to China's SoundCloud/InstagramPapa - An introduction to China's SoundCloud/Instagram
Papa - An introduction to China's SoundCloud/Instagram
 
Viewership Analysis Of IPL 2016
Viewership Analysis Of IPL 2016Viewership Analysis Of IPL 2016
Viewership Analysis Of IPL 2016
 
Class 8 bangladesh & global studies chapter 7, lesson-2
Class 8 bangladesh & global studies chapter 7, lesson-2Class 8 bangladesh & global studies chapter 7, lesson-2
Class 8 bangladesh & global studies chapter 7, lesson-2
 

Similaire à OSGi Cloud Ecosystems: Dynamic Scaling and Portability Across Clouds

OSGi Cloud Ecosystems - David Bosschaert
OSGi Cloud Ecosystems - David BosschaertOSGi Cloud Ecosystems - David Bosschaert
OSGi Cloud Ecosystems - David Bosschaertmfrancis
 
OSGi and Cloud Computing - David Bosschaert
OSGi and Cloud Computing - David BosschaertOSGi and Cloud Computing - David Bosschaert
OSGi and Cloud Computing - David Bosschaertmfrancis
 
Open shift and docker - october,2014
Open shift and docker - october,2014Open shift and docker - october,2014
Open shift and docker - october,2014Hojoong Kim
 
SALSA: A Framework for Dynamic Configuration of Cloud Services
SALSA: A Framework for Dynamic Configuration of Cloud ServicesSALSA: A Framework for Dynamic Configuration of Cloud Services
SALSA: A Framework for Dynamic Configuration of Cloud ServicesDuc-Hung LE
 
What’s new in Nuxeo 5.2?
What’s new in Nuxeo 5.2?What’s new in Nuxeo 5.2?
What’s new in Nuxeo 5.2?Nuxeo
 
Multi-Tenant SOA Middleware for Cloud Computing
Multi-Tenant SOA Middleware for Cloud ComputingMulti-Tenant SOA Middleware for Cloud Computing
Multi-Tenant SOA Middleware for Cloud ComputingWSO2
 
Horizontal scaling with Galaxy
Horizontal scaling with GalaxyHorizontal scaling with Galaxy
Horizontal scaling with GalaxyEnis Afgan
 
2013 05-multicloud-paas-interop-scenarios-fia-dublin
2013 05-multicloud-paas-interop-scenarios-fia-dublin2013 05-multicloud-paas-interop-scenarios-fia-dublin
2013 05-multicloud-paas-interop-scenarios-fia-dublinAlex Heneveld
 
Meteor South Bay Meetup - Kubernetes & Google Container Engine
Meteor South Bay Meetup - Kubernetes & Google Container EngineMeteor South Bay Meetup - Kubernetes & Google Container Engine
Meteor South Bay Meetup - Kubernetes & Google Container EngineKit Merker
 
Introduction to PaaS and Heroku
Introduction to PaaS and HerokuIntroduction to PaaS and Heroku
Introduction to PaaS and HerokuTapio Rautonen
 
Developer Experience Cloud Native - Become Efficient and Achieve Parity
Developer Experience Cloud Native - Become Efficient and Achieve ParityDeveloper Experience Cloud Native - Become Efficient and Achieve Parity
Developer Experience Cloud Native - Become Efficient and Achieve ParityMichael Hofmann
 
JJUG CCC 2018 : Lessons Learned: Spring Cloud -> Docker -> Kubernetes
JJUG CCC 2018 : Lessons Learned: Spring Cloud ->  Docker -> KubernetesJJUG CCC 2018 : Lessons Learned: Spring Cloud ->  Docker -> Kubernetes
JJUG CCC 2018 : Lessons Learned: Spring Cloud -> Docker -> KubernetesMauricio (Salaboy) Salatino
 
SpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSASpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSAOracle Korea
 
Microservices with kubernetes @190316
Microservices with kubernetes @190316Microservices with kubernetes @190316
Microservices with kubernetes @190316Jupil Hwang
 
msnos: a cool and cozy blanket for your microservices - Bruno Bossola - Codem...
msnos: a cool and cozy blanket for your microservices - Bruno Bossola - Codem...msnos: a cool and cozy blanket for your microservices - Bruno Bossola - Codem...
msnos: a cool and cozy blanket for your microservices - Bruno Bossola - Codem...Codemotion
 
Advanced web application architecture - Talk
Advanced web application architecture - TalkAdvanced web application architecture - Talk
Advanced web application architecture - TalkMatthias Noback
 
AWS September Webinar Series - Visual Effects Rendering in the AWS Cloud with...
AWS September Webinar Series - Visual Effects Rendering in the AWS Cloud with...AWS September Webinar Series - Visual Effects Rendering in the AWS Cloud with...
AWS September Webinar Series - Visual Effects Rendering in the AWS Cloud with...Amazon Web Services
 
Introduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azureIntroduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azureColin Mackay
 
[WSO2Con Asia 2018] Architecting for Container-native Environments
[WSO2Con Asia 2018] Architecting for Container-native Environments[WSO2Con Asia 2018] Architecting for Container-native Environments
[WSO2Con Asia 2018] Architecting for Container-native EnvironmentsWSO2
 

Similaire à OSGi Cloud Ecosystems: Dynamic Scaling and Portability Across Clouds (20)

OSGi Cloud Ecosystems - David Bosschaert
OSGi Cloud Ecosystems - David BosschaertOSGi Cloud Ecosystems - David Bosschaert
OSGi Cloud Ecosystems - David Bosschaert
 
OSGi and Cloud Computing - David Bosschaert
OSGi and Cloud Computing - David BosschaertOSGi and Cloud Computing - David Bosschaert
OSGi and Cloud Computing - David Bosschaert
 
Open shift and docker - october,2014
Open shift and docker - october,2014Open shift and docker - october,2014
Open shift and docker - october,2014
 
SALSA: A Framework for Dynamic Configuration of Cloud Services
SALSA: A Framework for Dynamic Configuration of Cloud ServicesSALSA: A Framework for Dynamic Configuration of Cloud Services
SALSA: A Framework for Dynamic Configuration of Cloud Services
 
What’s new in Nuxeo 5.2?
What’s new in Nuxeo 5.2?What’s new in Nuxeo 5.2?
What’s new in Nuxeo 5.2?
 
Multi-Tenant SOA Middleware for Cloud Computing
Multi-Tenant SOA Middleware for Cloud ComputingMulti-Tenant SOA Middleware for Cloud Computing
Multi-Tenant SOA Middleware for Cloud Computing
 
Horizontal scaling with Galaxy
Horizontal scaling with GalaxyHorizontal scaling with Galaxy
Horizontal scaling with Galaxy
 
2013 05-multicloud-paas-interop-scenarios-fia-dublin
2013 05-multicloud-paas-interop-scenarios-fia-dublin2013 05-multicloud-paas-interop-scenarios-fia-dublin
2013 05-multicloud-paas-interop-scenarios-fia-dublin
 
Meteor South Bay Meetup - Kubernetes & Google Container Engine
Meteor South Bay Meetup - Kubernetes & Google Container EngineMeteor South Bay Meetup - Kubernetes & Google Container Engine
Meteor South Bay Meetup - Kubernetes & Google Container Engine
 
Introduction to PaaS and Heroku
Introduction to PaaS and HerokuIntroduction to PaaS and Heroku
Introduction to PaaS and Heroku
 
Developer Experience Cloud Native - Become Efficient and Achieve Parity
Developer Experience Cloud Native - Become Efficient and Achieve ParityDeveloper Experience Cloud Native - Become Efficient and Achieve Parity
Developer Experience Cloud Native - Become Efficient and Achieve Parity
 
JJUG CCC 2018 : Lessons Learned: Spring Cloud -> Docker -> Kubernetes
JJUG CCC 2018 : Lessons Learned: Spring Cloud ->  Docker -> KubernetesJJUG CCC 2018 : Lessons Learned: Spring Cloud ->  Docker -> Kubernetes
JJUG CCC 2018 : Lessons Learned: Spring Cloud -> Docker -> Kubernetes
 
SpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSASpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSA
 
Microservices with kubernetes @190316
Microservices with kubernetes @190316Microservices with kubernetes @190316
Microservices with kubernetes @190316
 
msnos: a cool and cozy blanket for your microservices - Bruno Bossola - Codem...
msnos: a cool and cozy blanket for your microservices - Bruno Bossola - Codem...msnos: a cool and cozy blanket for your microservices - Bruno Bossola - Codem...
msnos: a cool and cozy blanket for your microservices - Bruno Bossola - Codem...
 
Intro to Sails.js
Intro to Sails.jsIntro to Sails.js
Intro to Sails.js
 
Advanced web application architecture - Talk
Advanced web application architecture - TalkAdvanced web application architecture - Talk
Advanced web application architecture - Talk
 
AWS September Webinar Series - Visual Effects Rendering in the AWS Cloud with...
AWS September Webinar Series - Visual Effects Rendering in the AWS Cloud with...AWS September Webinar Series - Visual Effects Rendering in the AWS Cloud with...
AWS September Webinar Series - Visual Effects Rendering in the AWS Cloud with...
 
Introduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azureIntroduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azure
 
[WSO2Con Asia 2018] Architecting for Container-native Environments
[WSO2Con Asia 2018] Architecting for Container-native Environments[WSO2Con Asia 2018] Architecting for Container-native Environments
[WSO2Con Asia 2018] Architecting for Container-native Environments
 

Plus de David Bosschaert

Maximize the power of OSGi
Maximize the power of OSGiMaximize the power of OSGi
Maximize the power of OSGiDavid Bosschaert
 
Provisioning with OSGi Subsystems and Repository using Apache Aries and Felix
Provisioning with OSGi Subsystems and Repository using Apache Aries and FelixProvisioning with OSGi Subsystems and Repository using Apache Aries and Felix
Provisioning with OSGi Subsystems and Repository using Apache Aries and FelixDavid Bosschaert
 
What's cool in the new and updated OSGi Specs (EclipseCon 2014)
What's cool in the new and updated OSGi Specs (EclipseCon 2014)What's cool in the new and updated OSGi Specs (EclipseCon 2014)
What's cool in the new and updated OSGi Specs (EclipseCon 2014)David Bosschaert
 
What's cool in the new and updated OSGi Specs (2013)
What's cool in the new and updated OSGi Specs (2013)What's cool in the new and updated OSGi Specs (2013)
What's cool in the new and updated OSGi Specs (2013)David Bosschaert
 
Benefits of OSGi in Practise
Benefits of OSGi in PractiseBenefits of OSGi in Practise
Benefits of OSGi in PractiseDavid Bosschaert
 
OSGi Enterprise Expert Group (OSGi Users Forum Germany)
OSGi Enterprise Expert Group (OSGi Users Forum Germany)OSGi Enterprise Expert Group (OSGi Users Forum Germany)
OSGi Enterprise Expert Group (OSGi Users Forum Germany)David Bosschaert
 
OpenJDK Penrose Presentation (JavaOne 2012)
OpenJDK Penrose Presentation (JavaOne 2012)OpenJDK Penrose Presentation (JavaOne 2012)
OpenJDK Penrose Presentation (JavaOne 2012)David Bosschaert
 
What's new in the OSGi Enterprise Release 5.0
What's new in the OSGi Enterprise Release 5.0What's new in the OSGi Enterprise Release 5.0
What's new in the OSGi Enterprise Release 5.0David Bosschaert
 
Update on the OSGi Enterprise Expert Group
Update on the OSGi Enterprise Expert GroupUpdate on the OSGi Enterprise Expert Group
Update on the OSGi Enterprise Expert GroupDavid Bosschaert
 
What's new in the OSGi 4.2 Enterprise Release
What's new in the OSGi 4.2 Enterprise ReleaseWhat's new in the OSGi 4.2 Enterprise Release
What's new in the OSGi 4.2 Enterprise ReleaseDavid Bosschaert
 
Distributed Services - OSGi 4.2 and possible future enhancements
Distributed Services - OSGi 4.2 and possible future enhancementsDistributed Services - OSGi 4.2 and possible future enhancements
Distributed Services - OSGi 4.2 and possible future enhancementsDavid Bosschaert
 
Distributed OSGi Demo Eclipsecon 2009
Distributed OSGi Demo Eclipsecon 2009Distributed OSGi Demo Eclipsecon 2009
Distributed OSGi Demo Eclipsecon 2009David Bosschaert
 

Plus de David Bosschaert (13)

Node MCU Fun
Node MCU FunNode MCU Fun
Node MCU Fun
 
Maximize the power of OSGi
Maximize the power of OSGiMaximize the power of OSGi
Maximize the power of OSGi
 
Provisioning with OSGi Subsystems and Repository using Apache Aries and Felix
Provisioning with OSGi Subsystems and Repository using Apache Aries and FelixProvisioning with OSGi Subsystems and Repository using Apache Aries and Felix
Provisioning with OSGi Subsystems and Repository using Apache Aries and Felix
 
What's cool in the new and updated OSGi Specs (EclipseCon 2014)
What's cool in the new and updated OSGi Specs (EclipseCon 2014)What's cool in the new and updated OSGi Specs (EclipseCon 2014)
What's cool in the new and updated OSGi Specs (EclipseCon 2014)
 
What's cool in the new and updated OSGi Specs (2013)
What's cool in the new and updated OSGi Specs (2013)What's cool in the new and updated OSGi Specs (2013)
What's cool in the new and updated OSGi Specs (2013)
 
Benefits of OSGi in Practise
Benefits of OSGi in PractiseBenefits of OSGi in Practise
Benefits of OSGi in Practise
 
OSGi Enterprise Expert Group (OSGi Users Forum Germany)
OSGi Enterprise Expert Group (OSGi Users Forum Germany)OSGi Enterprise Expert Group (OSGi Users Forum Germany)
OSGi Enterprise Expert Group (OSGi Users Forum Germany)
 
OpenJDK Penrose Presentation (JavaOne 2012)
OpenJDK Penrose Presentation (JavaOne 2012)OpenJDK Penrose Presentation (JavaOne 2012)
OpenJDK Penrose Presentation (JavaOne 2012)
 
What's new in the OSGi Enterprise Release 5.0
What's new in the OSGi Enterprise Release 5.0What's new in the OSGi Enterprise Release 5.0
What's new in the OSGi Enterprise Release 5.0
 
Update on the OSGi Enterprise Expert Group
Update on the OSGi Enterprise Expert GroupUpdate on the OSGi Enterprise Expert Group
Update on the OSGi Enterprise Expert Group
 
What's new in the OSGi 4.2 Enterprise Release
What's new in the OSGi 4.2 Enterprise ReleaseWhat's new in the OSGi 4.2 Enterprise Release
What's new in the OSGi 4.2 Enterprise Release
 
Distributed Services - OSGi 4.2 and possible future enhancements
Distributed Services - OSGi 4.2 and possible future enhancementsDistributed Services - OSGi 4.2 and possible future enhancements
Distributed Services - OSGi 4.2 and possible future enhancements
 
Distributed OSGi Demo Eclipsecon 2009
Distributed OSGi Demo Eclipsecon 2009Distributed OSGi Demo Eclipsecon 2009
Distributed OSGi Demo Eclipsecon 2009
 

Dernier

A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 

Dernier (20)

A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 

OSGi Cloud Ecosystems: Dynamic Scaling and Portability Across Clouds

  • 1. OSGi Cloud Ecosystems David Bosschaert Principal Engineer, JBoss/Red Hat david@redhat.com December 2012
  • 2. Agenda ● PaaS today ● OSGi Cloud Ecosystems ● 'Demo'
  • 3. PaaS offerings today (1) ● General deployment containers – Application Servers ● i.e. deploy .WAR files in the cloud – Continuous Build Jenkins/Hudson ● Dynamic Language based – e.g. Python/Ruby/JavaScript – Often come with a Cloud-based IDE ● Support for specific technology – E.g. deploy Google App Engine on my own cloud
  • 4. Paas offerings today (2) ● Typically per cloud-VM instance – you need to do your own scaling – sometimes it can dynamically add replicas ● of your entire deployment – instances don't know much about others ● although they might connect to a cloud data store ● Today's PaaS – suitable if you can deploy multiple instances of the same app – harder to use if you have a composite application ● with a variety of components ● across different nodes
  • 5. We need a better cloud! ● Where things are more dynamic ● Where not every cloud VM image has just one purpose ● Where a bunch of different nodes work together to form one logical application ● Where each cloud image could play different roles over time ● Where we can easily migrate from one cloud vendor to another
  • 6. Example cloud-based Application (1) ● Has a web front-end – host needs to be accessible from outside ● (well known hostname) ● Uses messaging – replicated message broker ● Has a data store ● And a back end – does the heavy lifting, computation – integrates with 3rd party providers ● Each entity on a different node
  • 7. Example cloud-based Application (2) Every entity runs on a different cloud node Back End Back End Read and update Notifies request data Database Message Database Queue Web Web Submit request Web Web Store request data Front-end Web Front-end Web Front-end Front-end Front-end Front-end User interacts
  • 8. Dynamic Scaling and correction ● I want all these elements to scale dynamically – possibly based on some domain-specific rules ● I want the system to be able to correct itself – e.g. when a Cloud VM dies/becomes inaccessible ● I don't want to worry about reconfiguring clients – when a service moves to another node ● I want the system to be portable – so I can move to another cloud – in case of entire cloud failure
  • 9. How do I get all this? I need an entity that orchestrates, a Provisioner ● Needs to be able to remotely deploy – to the nodes in the system – decide at runtime what the role of a certain VM is ● Needs to know the topology – as well as the application specifics I need a flexible cloud platform ● repurpose a Cloud VM ● without sending the whole image to a machine again Portability: I want to shield myself from cloud-vendor specific APIs ● as much as possible ● standards based
  • 10. OSGi Cloud Ecosystems ● A number of OSGi frameworks – great because of their dynamic capabilities ● Each in a separate VM/cloud node ● Bound together to form a logical ecosystem – via ecosystem-wide discovery mechanism ● Environment – OSGi Frameworks can find out about other frameworks – Can easily communicate with other frameworks – and services running on these frameworks
  • 11. OSGi Cloud Ecosystems A highly dynamic OSGi environment where Cloud nodes/VMs, bundles and services come and go
  • 12. How does this work? ● Start off with a number of 'empty' OSGi frameworks in the cloud – basic infrastructure provided ● remote services capability ● ecosystem support – no application logic ● A provisioner decides what goes where – knows about your application – and reacts to changes in topology / runtime system health ● Discovery component provides OSGi service visibility across frameworks – deals with service migrations
  • 13. Ecosystem Support ● Each framework registers – FrameworkStatus service – Remote Deployment service ● These are visible across the Ecosystem – as OSGi services – (via OSGi Remote Services specs) ● But not outside
  • 14. FrameworkStatus Service ● One per running Framework in the Ecosystem – Available via Remote Services ● Provides information about the framework public interface FrameworkStatus { String getFrameworkVariable(String name); } ● Static metadata as Service Registration properties ● Dynamic metadata via getFrameworkVariable() static metadata dynamic metadata cloud type/version available memory location (country code) available diskspace OSGi framework version machine load factor processor architecture network throughput Java version ... IP address app-defined (custom)
  • 15. Provisioning ● Need a Remote Deployment API – with Java client API – that spans the Ecosystem – works in the cloud – possibly an RFC 182 (REST)-based solution
  • 16. A sample Provisioner (1/2) // Listen for the FrameworkStatus service ServiceTracker st = new ServiceTracker(context, FrameworkStatus.class.getName(), null) { public Object addingService(ServiceReference reference) { topologyChanged(); return super.addingService(reference); } public void removedService(ServiceReference reference, Object service) { topologyChanged(); super.removedService(reference, service); } }; // React to changes in the topology void topologyChanged() { // Deploy the web front-end if (getDeployments(WEB).size() == 0) addDeployment(WEB); // Deploy the Service two times. if (getDeployments(SERVICE).size() < 2) addDeployment(SERVICE); }
  • 17. A sample Provisioner (2/2) void addDeployment(DeploymentType type) { ServiceReference[] possibleFrameworks = getFrameworkReferences(); ServiceReference target = getMostSuitableFramework(type, possibleFrameworks); if (target == null) { // No suitable framework found return null; } String[] bundles = getDeploymentBundles(type, target); deployToFramework(target, bundles); } ServiceReference getMostSuitableFramework(DeploymentType type, ServiceReference... frameworks) { for (ServiceReference ref : frameworks) { if (type.equals(WEB)) { Object prop = ref.getProperty("...framework.ip"); if (prop instanceof String) if (((String) prop).startsWith("web")) return ref; } else if (type.equals(...) { // ... } } return null; }
  • 18. How do my distributed business components interact? ● Develop them as OSGi Services – then use them via OSGi Remote Services... ● To publish a service in the ecosystem MyService ms = new MyServiceImpl(); Dictionary msProps = new Hashtable(); msProps.put("service.exported.interfaces", "*"); msProps.put("service.exported.configs", "...configtype.ecosystem"); context.registerService(MyService.class.getName(), ms, msProps); ● Discovery component gives visibility across ecosystem – System will react automatically to services moving to other VMs/nodes – New instances appearing ● Client simply uses OSGi services as normal MyService ms = ... // Obtained from Service Registry ms.doit();
  • 19. OSGi Cloud Ecosystem ● A fluid system where deployments can come and go ● Provisioner decides what goes where – Cloud nodes get added, removed ● Bundles might get deployed, moved – Ecosystem-wide services appear, disappear ● 0, 1, many instances – Service consumers don't need to be reconfigured ● react automatically to changes ● handled by OSGi Remote Services + Discovery ● System can be repurposed – thanks to OSGi dynamics – no need to send VM images over again
  • 20. See it in action ● Pilot on Red Hat's OpenShift cloud – get your own free dev instances ● All source code available in github ● For more details see http://coderthoughts.blogspot.com
  • 21. Demo Setup Back End Back End Back End Back End Provisioner rules: ● servlet needs to go on specific hostname ● exactly 1 testservice Web Front-end Web Front-end ● displays available frameworks (Servlet) (Servlet) ● not on servlet host ● invokes TestService User interacts
  • 22. Demo Setup Back End Back End Back End Back End TestService TestService Provisioner rules: ● servlet needs to go on specific hostname ● exactly 1 testservice Web Front-end Web Front-end ● displays available frameworks (Servlet) (Servlet) ● not on servlet host ● invokes TestService User interacts
  • 23. Demo Setup Back End Back End Back End Back End TestService TestService TestService TestService Provisioner rules: ● servlet needs to go on specific hostname ● exactly 1 testservice Web Front-end Web Front-end ● displays available frameworks (Servlet) (Servlet) ● not on servlet host ● invokes TestService User interacts
  • 24. Demo Setup – The Servlet FrameworkStatus and TestService from Service Registry ● lists available frameworks void printFrameworks(PrintWriter out) { // frameworkRefs list all FrameworkStatus services from the OSGi Service Registry for (ServiceReference ref : frameworkRefs) { for (String key : ref.getPropertyKeys()) { out.println(key + " - " + ref.getProperty(key)); } } } ● invokes a 'computation' service void printTestService(PrintWriter out) { out.println("<H2>TestService invocation</H2>"); TestService svc = ... // from the OSGi Service Registry if (svc != null) out.println("TestService Result: " + svc.doit()); }
  • 25. Demo Setup – Services FrameworkStatus is provided by the Ecosystem TestService is a simple OSGi Service public interface TestService { String doit(); } Registered with Remote Service props public class Activator implements BundleActivator { public void start(BundleContext context) throws Exception { TestService ts = new TestServiceImpl(); Dictionary tsProps = new Hashtable(); tsProps.put("service.exported.interfaces", "*"); tsProps.put("service.exported.configs", "...configtype.ecosystem"); context.registerService(TestService.class.getName(), ts, tsProps); } }
  • 26. Demo ● Real demo available online: http://www.youtube.com/watch?v=8-9deWm67w0 ● Following is a set of screenshots that capture the essence of the demo...
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 36. Acknowledgements ● Cloud image Wikimedia Commons – Stratocumuli by de:Benutzer:LivingShadow