SlideShare a Scribd company logo
1 of 49
Download to read offline
BLASTING OUT OF THE PAST
WITH OSGi
Keith McFarlane (@krmc)
Agenda
•  Prologue: What the Slashers Found
•  Chapter 1: The Story So Far
–  Review of the LiveOps Architecture and drivers towards
migration and modernization
•  Chapter 2: Requiem for a Legacy
–  Exploration of approaches to the problem, and patterned
approaches to specific problems
•  Chapter 3: No Country for Old Software
–  How LiveOps uses OSGi as a migration and modernization
vehicle
•  Chapter 4: What Apps May Come
–  Where we go from here, and how OSGi will continue to
help us migrate
CHAPTER 1: THE STORY SO
FAR
Legacy Platform Capabilities
•  Purpose: to provide a SaaS/PaaS product for contact center
functionality
•  Features
–  Multiple inbound/outbound media channels: PSTN or VoIP voice,
email, web chat, SMS, Twitter, Facebook
–  Interaction flow processing
–  Cradle-to-grave reporting
–  Voice and screen recording
–  Agent, Admin, Supervisor applications
•  Constraints
–  24/7 availability; no planned downtime
–  Support for:
•  8,000+ “live” customer contacts (voice + web chat)
•  Unlimited off-line contacts
•  5,000+ concurrent contact center agents
5
Platform Technology Milestones
© 2009 LiveOps, Inc.
•  2000 – LiveOps founded in Florida as a BPO
•  2001 – Callcast founded in California as a contact center tech service
•  2003 – LiveOps/Callcast companies technologies merge
•  2005 – SaaS/PaaS business launched, larger customers added
•  2007 – Fortune 500 customers added
•  2008 – Marketplace/LiveWork technology integration, PCI Compliance
•  2009 – Enterprise Agent product launched, continued growth
•  2010 – First OSGi instances: REST API and Salesforce.com integration
launched
•  2011 – Integrated multichannel tech stack, Data Exchange product
launched on OSGi
•  2012 – LiveOps Application Server project started and launched
6
Tech Survey – Telephony and
Presence
© 2009 LiveOps, Inc.
•  All components native to LiveOps
–  Mostly Java-based components
•  One exception: Media Server (C++)
–  SIP stack built and maintained in-house
–  All components are redundant and load balanced
•  Call Manager
–  Executes call flows
–  Performs whole-call recording
•  IVR
–  For self-service, plays announcements, menus, etc. into the call
•  Presence
–  Tracks availability of agents for work assignment
•  SIP Proxy
–  Manages assignment of inbound calls to call managers
–  Ensures proper routing of outbound calls via proxy rules
7
Tech Survey – Web Applications
© 2009 LiveOps, Inc.
•  LAMP stack (general admin apps)
–  Perl/Mason under Apache 1.3/mod_perl
–  Ruby on Rails under Apache 2/Passenger
•  Windows Server stack (agent applications)
–  IIS
–  ASP.NET
8
Tech Survey – Data Management
© 2009 LiveOps, Inc.
•  Database: MySQL 5.1 (MyISAM and InnoDB)
•  Configuration Data
–  MySQL – e.g. ccconf, callflow, nexus databases
–  Slow changing, relatively small in size
•  Application Data
–  MySQL – e.g. ccroute, ccoutbound databases
–  Call managers, API servers
–  Comparable read/write frequency, bounded growth
•  Historical Data
–  MySQL – cclog and datamart databases
–  Hadoop, ActiveMQ – fine-grained event/log data pipeline
–  GreenPlum – distributed analytical database
–  Ever growing, relatively large in size
•  Real-time Data
–  RTM pipeline – scalable delivery to RTM dashboards
–  Rapidly changing, relatively small in size
9
Tech Survey - APIs & Integration
© 2009 LiveOps, Inc.
•  Pre-OSGi APIS
–  Transfer Data Service
–  PAPI
–  ACS
•  Desktop JavaScript API
–  For integration with browser-based agent client apps
–  Full control of agent capabilities (presence, call handling, etc.)
•  Platform Services API (PSAPI)
–  User and configuration management
–  Live call control
–  Data transfer and statistics access
•  Data Exchange
–  Data dips for intelligent routing
–  External record creation and update
–  Bulk data export and import (reporting and configuration data)
–  Configuration driven
CHAPTER 2: REQUIEM FOR A
LEGACY
What do we mean by “Legacy?”
•  “Mature information systems grow old
disgracefully…”1
•  Software architectures (planned or “accidental”)
are conceived to address a particular need at a
moment in time
–  May or may not be built to anticipate new features
–  Probably will not accommodate changes in business
focus
•  Legacy software has reached a point in its
lifecycle at which change becomes difficult
–  Cannot meet new business needs in a timely manner
–  Maintenance tasks become more costly and more
difficult to staff
1Legacy System Anti-Patterns and a Pattern-Oriented Migration Response by
Anthony Lauder and Stuart Kent (see References)
Don’t forget the good parts
•  A legacy platform exists because it addresses
needs
–  If it has existed for a long time, it probably has
served its function very well
–  Customers are not likely to allow a shut-down of
current systems to move to something new with
fewer features
•  Implications:
–  Legacy migration must be staged
–  We must find ways to preserve the “good parts”
while addressing current limitations
Legacy Anti-patterns and Fixes
Anti-pattern
Ball and Chain
Tower of Babel
Monolithicity
Gold in Them Thar Hills
Tight Coupling
Code Pollution
Fix Pattern
Portability Adapter
Babel Fish
Virtual Componentization
Gold Mining
Implicit Invocation
Protocol Reflection
Anti-pattern: “Ball and Chain”
•  Summary: Software is “chained” to legacy
operating systems through use of OS-specific
features
–  Unix: System V (vs. Posix) Message Queues
–  Windows: Hooks
–  OS X: Cocoa APIs
–  All: Shell calls to invoke command-line processes
•  Portability is limited by original system’s scope
–  Easiest: CentOS 4  CentOS 5
–  Harder: CentOS 5  OS X
–  Hardest: CentOS 5  Windows Server 2008
Fix Pattern: Portability Adapter
•  Create or select a single portability layer technology
–  JVM, .NET Common Language Runtime, Posix, LLVM
–  Purpose-built Portability Layer using OSGi
•  Create a service representative of OS-specific
features for consumption by new applications and
services
–  Allow existing apps and services to continue native feature
use
–  New apps and services must use features as represented
in portability layer
•  Pattern application results in sweeping system
changes long-term, but leaves existing code intact for
immediate future
Anti-pattern: Tower of Babel
•  Summary: System components were developed in a variety of
programming languages
–  Resource constraints; must use skills available
–  Attempt to attract new talent with new language adoption
–  “Polyglot” language philosophy; language diversity for its own sake
•  Over time, organization cannot maintain code in a large number of
languages
–  Original developers may have moved on (new project, new company,
etc.)
–  Special-purpose implementations in exotic or less-popular languages
(e.g., OCaml) become marginalized
–  Common language runtime mitigates the problem to some extent, but
does not solve it
•  Interoperation between languages and runtimes is difficult,
preventing rapid innovation
Fix Pattern: Babel Fish
•  Select and integrate a language interoperability
technology that creates a bridge between multiple
languages and runtimes
–  Cross-language libraries: Thrift, Avro, Pbuf
•  Revisiting the “CORBA” theme
•  Prone to point-to-point IDL definitions
–  SOA: Wrap all services with SOAP and present WSDLs
•  Maintain internal services registry
–  EDA: present all modules with access to a common event
bus
•  Asynchronous event patterns
•  Well-defined event stream
•  Complete service decoupling / separation of concerns
Anti-pattern: “Monolithicity”
•  Summary: Services are embedded in large,
monolithic systems
–  complex custom DB apps with heavy use of stored
procedures
–  older ERP systems
–  proprietary voice applications (e.g., IBM WebSphere
Voice)
•  Not easily componentized, so reuse of discrete
features is more difficult
•  Developers may “specialize” in these systems
–  System lifetime is prolonged by their experience, but
this becomes niche knowledge
–  Risk for the business and for individual careers
Fix Pattern: Virtual Componentization
•  Create a model of ideal components for each
monolithic system
–  Implement idealized components using a Façade
above monolithic system
•  “Fake it until you make it”
–  Expose APIs for new application development
•  Gradually replace Façade components with
new implementations
–  Process should be invisible to newer applications
and services, who rely solely on the Façades
Anti-pattern: “Gold in them thar Hills”
•  Summary: Source code is the only representation of
domain expertise, and tends to be scattered rather
than centralized
–  e.g. internal service for creating a new user may have
embedded rules about user defaults, permissions, etc.
–  Accumulation of years of learning about the problem space
–  Downside of “self-documenting code”: poorly written/
documented code is worse than a badly written
requirements document in this case
•  Major cause of legacy system petrification
–  Business rules become fragile as developers fear changes
that may have broader effects than intended
–  Original requirements may be lost in the noise introduced
by years of modifications and changes in ownership
Fix Pattern: Gold Mining
•  Unearth requirements and create formal software
contracts representing these for a development
audience
•  Many paths to discovery
–  One method: lots and lots of meetings (aka. “workshops”)
to discover and record existing requirements
–  A better method: define contract structure, let domain
experts fill it in, and review as a team
•  Contracts can take many forms
–  EDA: event format and sequence definitions
–  SOA: WSDLs capturing detailed type information and
message definitions
Anti-pattern: Tight Coupling
•  Summary: Elements of a legacy system
that directly invoke one another tend to
become entangled over time
– Deeper meaning built into method parameters
than original intent
– Invocation may depend upon external
preconditions or side effects
– If changes are not synchronized, breakage
will result, so teams must move more slowly
Fix Pattern: Implicit Invocation
•  Remove knowledge of external
implementations from system components
–  Move to a model of brokered interaction
–  components express interest in events without
knowledge of the remote implementation
•  Can accomplish this with:
–  Disciplined SOA, in which a registry of
components provides only component binding
–  Brokered, asynchronous messaging, providing a
complete separation of concerns
Anti-pattern: Code Pollution
•  Summary: Event-driven systems build up
code to deal with special event sequence
cases
–  Particularly relevant where Implicit Invocation is
applied
•  Subsystem guard code builds up over time,
but protocol rules will not be enforced
elsewhere
•  Maintenance complexity increases with every
new special case
Fix Pattern: Protocol Reflection
•  Explicitly define event protocol, then build
a shared state machine to deal with
special cases
– GoF State pattern is a good fit
•  State machine is deployed for all services
that need to support the event protocol
– Changes to the protocol imply changes to the
shared state machine
CHAPTER 3: NO COUNTRY
FOR OLD SOFTWARE
Goal: Increase Agility/Programmability
Need: accelerate feature growth with
minimal impact on core development
resources
Approach:
•  Create an abstraction through which the
platform’s services may be accessed
•  Expose clean, consistent, functionally
complete API
Goal: Simplify/Consolidate the Platform
Need: rationalize the applications and base
services of the platform, refactoring and
merging to limit divergent technologies
Approach:
•  Constrain new application development to
the API
•  Constrain new base services development to
virtual components in a portability layer
•  Explore technology alternatives for older
base services that are difficult to maintain
Software Layers
LiveOps, Customer, and
Partner Applications
REST APIs, Scripting, and
Interaction Workflow/Engine
Business Objects
(Virtual Componentization)
Base Services
(Portability Adapter)
Contact center functionality
provided using APIs and other
developer and authoring tools
Varying methods of interacting
with the Platform Abstraction
An ideal social contact center
model that removes much of the
complexity from Base Services
All basic functions required by
social contact centers, including
communications and data services
Software Layers
LiveOps, Customer, and
Partner Applications
REST APIs, Scripting, and
Interaction Workflow/Engine
Business Objects
(Virtual Componentization)
Base Services
(Portability Adapter)
Contact center functionality
provided using APIs and other
developer and authoring tools
Varying methods of interacting
with the Platform Abstraction
An ideal social contact center
model that removes much of the
complexity from Base Services
All basic functions required by
social contact centers, including
communications and data services
Conclusion: we needed to
use an OSGi container for
modularity, consistency,
and operational
repeatability
Why Apply OSGi to Legacy Migration?
•  Directly applicable to addressing legacy anti-patterns
–  e.g., Event Admin implementation to support Indirect Invocation,
Declarative Services + Remote Service Admin interfaces for Virtual
Componentization
•  Separation of concerns built-in
–  Modularity provides barrier that fosters code independence
•  Many compendium services are analogous to typical enterprise
integration patterns (by design)
–  Event Admin => brokered messaging
–  Config Admin => service configuration access
–  User Admin => AAA and user account management
–  Monitor Admin => monitoring and alerting services for Net Ops
•  Developers encouraged by the model to do things the “right” way
going forward
–  Easier to reuse
•  Most do-it-yourself OSGi options are open source
Previous
Work
Physical Server
CentOS 5.2
deamontools
Glassfish v3 – liveops-integration domain
Felix OSGi Runtime
LiveOps Integration Bundles
Telephony
Bundle
Data Bundle
Security Bundle
Config Bundle Logging Bundle
DSM Bundle Presence Bundle
Web Container
PSAPI JAX-RS Bundle
Glassfish
Admin
Metadata Bundle
•  We had
decided we
needed a
container for
new layers
– Our first API
implementation
looked very
much like what
we needed
Previous Container:
Glassfish
•  Positives
– Rich in features, stable
– High performance HTTP (Grizzly)
– Rich admin UI
– Based on Felix
•  HK2 used for web stack, but OSGi at core
Previous Container:
Glassfish
•  Negatives
–  Default deployment profile
cluttered
•  Don’t need most of it, but
once removed, why use
Glassfish?
–  Complex deployment
•  Wanted more control over
deployment images
–  Oracle acquisition
•  Marketing messaging
reassuring to some on
team, but not all
–  Occasional WAB
deployment quirks
OSGi Container Options Explored
Container Pros Cons
Apache Felix Standalone •  Lean, no extras
•  Familiar to us
•  Heavily used
•  Need to build management/
monitoring tools
Glassfish (Based on Felix) •  What we currently deploy
•  Includes Sailfin
•  Heavyweight; contains much we do
not need
JBoss OSGi •  Includes Mobicents •  OSGi runs above base JBoss
services
Equinox •  Heavily used •  Major platform change
Knoplerfish •  Major platform change
•  Not as widely used as others
Karaf •  Makes Felix more manageable
•  Maven support for dependencies
•  May be locked into Felix version
Concierge •  Very lightweight •  Major platform change
•  Only OSGi 3 impl.
Paremus Nimble •  Major platform change
•  Not OSS
Virgo •  Multi-bundle model
•  Jetty support
•  Same issue as Equinox
OSGi Container Options Explored
Container Pros Cons
Apache Felix Standalone •  Lean, no extras
•  Familiar to us
•  Heavily used
•  Need to build management/
monitoring tools
Glassfish (Based on Felix) •  What we currently deploy
•  Includes Sailfin
•  Heavyweight; contains much we do
not need
JBoss OSGi •  Includes Mobicents •  OSGi runs above base JBoss
services
Equinox •  Heavily used •  Major platform change
Knoplerfish •  Major platform change
•  Not as widely used as others
Karaf •  Makes Felix more manageable
•  Maven support for dependencies
•  May be locked into Felix version
Concierge •  Very lightweight •  Major platform change
•  Only OSGi 3 impl.
Paremus Nimble •  Major platform change
•  Not OSS
Virgo •  Multi-bundle model
•  Jetty support
•  Same issue as Equinox
Decision: Create a LiveOps-Specific App Server
•  Benefits
–  Retain control over deployment image
•  Nothing extra, ability to update core bundles with few interaction worries
–  Accelerate development through the use of consistent tools
and technologies, safe code sharing, and a layered,
extensible platform
–  Wrap all existing LiveOps services (voice, messaging, data,
monitoring, etc.) and provide them to LO developers in a
consistent way
–  Deploy a single image in LO data centers that Ops can “flavor”
in different ways (API server, SIP proxy, call manager…)
–  Expose a consistent social contact center model to
customers, partners, and internal LiveOps developers for use in
new applications and services
•  Base Technologies
–  Daemontools
–  Java 6 JVM
–  Felix 4 / OSGi Core+Compendium 4.3
Winterfell Framework
Migration Stage 1: API
New
Application 1
Svc. 1
Svc. 2
DB
Svc. 3
Svc. 4
Old
Application 1
Old
Application 2
Migration Stage 2: Service Ports
New
Application 1
Svc. 1
Svc. 2
DB
Svc. 3
Svc. 4
Old
Application 1
Old
Application 2
Svc. 3
Svc. 4
Migration Stage 3: App Ports
New
Application 1
Svc. 1
Svc. 2
DB
Svc. 3
Svc. 4
Old
Application 1
Old
Application 2
Svc. 3
Svc. 4
Svc. 1
Svc. 2
New
Application 2
Raven Event Bus
Winterfell Tools
LoCo – LiveOps Code Gen Arya Services
Gnostic MonitorStark Deployment
•  JSON IDL generates:
-  JavaScript lib and
Tests
-  Resource Bundle
Skeleton
-  JAX-RS uses raw IDL
•  All platform server types
defined by JSON
deployment file
•  All code deployed;
service type selected at
runtime
•  Monitor Admin
implementation sends
events from all services
to monitoring pipeline•  All events contractually
defined
•  Send/receive using
Event Admin +
RabbitMQ
•  Built image Arya images
stored on internal github
•  New server gets all bits
and activates one Arya
service per container
LoCo Framework: Generation
Int_gen_code.rb
Test HTML +
JavaScript +
deployable site
project
JavaScript
library
Java Bean and
Implementation
classes
JSON IDL
Java Classes
Generated
Resource Bean
Resource Implementation Shell
Runtime API Operation
API Services Manager
Resource Impl.
Resource ID
Service
Dynamic REST API
Endpoint
JSON
IDL
Res.
Bean
App
Legacy Service 1 Legacy Service 2
- REST API endpoint validates
requests using JSON IDL
-  API Svc. Manager provides
binding from URL to Resource
Impl.
-  Resource Impl. Builds and
returns resource bean
-  Resource ID Service translates
inner to API IDs
WHAT APPS MAY COME
Future Projects
•  Winterfell open source
•  Raven on ZeroMQ
•  Winterfell on EC2
•  OSGi 5
REFERENCES
Links
•  http://csis.pace.edu/~marchese/CS775/
Proj1/legacyinfosys_directions.pdf
•  http://kar.kent.ac.uk/21917/1/
legacy_system_anti_patterns_lauder.pdf

More Related Content

What's hot

Lync 2010 Conferencing Deep Dive
Lync 2010 Conferencing Deep DiveLync 2010 Conferencing Deep Dive
Lync 2010 Conferencing Deep DiveHarold Wong
 
Cics Ts 4.1 Technical Overview
Cics Ts 4.1 Technical OverviewCics Ts 4.1 Technical Overview
Cics Ts 4.1 Technical OverviewCICS ROADSHOW
 
InterConnect 2017 HBP-2884-IBM BPM upgrade and migration made easy
InterConnect 2017 HBP-2884-IBM BPM upgrade and migration made easyInterConnect 2017 HBP-2884-IBM BPM upgrade and migration made easy
InterConnect 2017 HBP-2884-IBM BPM upgrade and migration made easyBrian Petrini
 
Software Architecture
Software ArchitectureSoftware Architecture
Software ArchitectureAhmed Misbah
 
HIA 1015 Speed the Development of Robust Integrations with IBM Integration Bu...
HIA 1015 Speed the Development of Robust Integrations with IBM Integration Bu...HIA 1015 Speed the Development of Robust Integrations with IBM Integration Bu...
HIA 1015 Speed the Development of Robust Integrations with IBM Integration Bu...Karen Broughton-Mabbitt
 
Everything You Wanted to Know About JIT Compilation but Were Afraid to Ask [J...
Everything You Wanted to Know About JIT Compilation but Were Afraid to Ask [J...Everything You Wanted to Know About JIT Compilation but Were Afraid to Ask [J...
Everything You Wanted to Know About JIT Compilation but Were Afraid to Ask [J...David Buck
 
Go Within Cloud Foundry
Go Within Cloud FoundryGo Within Cloud Foundry
Go Within Cloud FoundryPlatform CF
 
Design rationales in the JRockit JVM
Design rationales in the JRockit JVMDesign rationales in the JRockit JVM
Design rationales in the JRockit JVMJavaDayUA
 
Migrate Oracle WebLogic Applications onto a Containerized Cloud Data Center
Migrate Oracle WebLogic Applications onto a Containerized Cloud Data CenterMigrate Oracle WebLogic Applications onto a Containerized Cloud Data Center
Migrate Oracle WebLogic Applications onto a Containerized Cloud Data CenterJingnan Zhou
 
Coding Secure Infrastructure in the Cloud using the PIE framework
Coding Secure Infrastructure in the Cloud using the PIE frameworkCoding Secure Infrastructure in the Cloud using the PIE framework
Coding Secure Infrastructure in the Cloud using the PIE frameworkJames Wickett
 
Enabling z Agility with DevOps and Enterprise Transformation
Enabling z Agility with DevOps and Enterprise TransformationEnabling z Agility with DevOps and Enterprise Transformation
Enabling z Agility with DevOps and Enterprise TransformationDevOps for Enterprise Systems
 
Hia 1691-using iib-to_support_api_economy
Hia 1691-using iib-to_support_api_economyHia 1691-using iib-to_support_api_economy
Hia 1691-using iib-to_support_api_economyAndrew Coleman
 
Praxistaugliche notes strategien 4 cloud
Praxistaugliche notes strategien 4 cloudPraxistaugliche notes strategien 4 cloud
Praxistaugliche notes strategien 4 cloudRoman Weber
 
Practical Considerations for Deploying a Java Active Networking Platform
Practical Considerations for Deploying a Java Active Networking PlatformPractical Considerations for Deploying a Java Active Networking Platform
Practical Considerations for Deploying a Java Active Networking PlatformTal Lavian Ph.D.
 
Sakai Technical Future Musings
Sakai Technical Future MusingsSakai Technical Future Musings
Sakai Technical Future MusingsCharles Severance
 
Geek Sync | Is Your Database Environment Ready for DevOps?
Geek Sync | Is Your Database Environment Ready for DevOps?Geek Sync | Is Your Database Environment Ready for DevOps?
Geek Sync | Is Your Database Environment Ready for DevOps?IDERA Software
 
JDE & Peoplesoft 1 _ Michael Plon _ JDE EnterpriseOne in the big bad world of...
JDE & Peoplesoft 1 _ Michael Plon _ JDE EnterpriseOne in the big bad world of...JDE & Peoplesoft 1 _ Michael Plon _ JDE EnterpriseOne in the big bad world of...
JDE & Peoplesoft 1 _ Michael Plon _ JDE EnterpriseOne in the big bad world of...InSync2011
 
Aligning the Fast & the Slow: The Reality of Multi-Speed IT
Aligning the Fast & the Slow: The Reality of Multi-Speed ITAligning the Fast & the Slow: The Reality of Multi-Speed IT
Aligning the Fast & the Slow: The Reality of Multi-Speed ITDevOps for Enterprise Systems
 

What's hot (20)

Lync 2010 Conferencing Deep Dive
Lync 2010 Conferencing Deep DiveLync 2010 Conferencing Deep Dive
Lync 2010 Conferencing Deep Dive
 
Cics Ts 4.1 Technical Overview
Cics Ts 4.1 Technical OverviewCics Ts 4.1 Technical Overview
Cics Ts 4.1 Technical Overview
 
A Tale of Two Toolkits
A Tale of Two ToolkitsA Tale of Two Toolkits
A Tale of Two Toolkits
 
InterConnect 2017 HBP-2884-IBM BPM upgrade and migration made easy
InterConnect 2017 HBP-2884-IBM BPM upgrade and migration made easyInterConnect 2017 HBP-2884-IBM BPM upgrade and migration made easy
InterConnect 2017 HBP-2884-IBM BPM upgrade and migration made easy
 
Software Architecture
Software ArchitectureSoftware Architecture
Software Architecture
 
HIA 1015 Speed the Development of Robust Integrations with IBM Integration Bu...
HIA 1015 Speed the Development of Robust Integrations with IBM Integration Bu...HIA 1015 Speed the Development of Robust Integrations with IBM Integration Bu...
HIA 1015 Speed the Development of Robust Integrations with IBM Integration Bu...
 
Everything You Wanted to Know About JIT Compilation but Were Afraid to Ask [J...
Everything You Wanted to Know About JIT Compilation but Were Afraid to Ask [J...Everything You Wanted to Know About JIT Compilation but Were Afraid to Ask [J...
Everything You Wanted to Know About JIT Compilation but Were Afraid to Ask [J...
 
Go Within Cloud Foundry
Go Within Cloud FoundryGo Within Cloud Foundry
Go Within Cloud Foundry
 
Design rationales in the JRockit JVM
Design rationales in the JRockit JVMDesign rationales in the JRockit JVM
Design rationales in the JRockit JVM
 
Migrate Oracle WebLogic Applications onto a Containerized Cloud Data Center
Migrate Oracle WebLogic Applications onto a Containerized Cloud Data CenterMigrate Oracle WebLogic Applications onto a Containerized Cloud Data Center
Migrate Oracle WebLogic Applications onto a Containerized Cloud Data Center
 
Coding Secure Infrastructure in the Cloud using the PIE framework
Coding Secure Infrastructure in the Cloud using the PIE frameworkCoding Secure Infrastructure in the Cloud using the PIE framework
Coding Secure Infrastructure in the Cloud using the PIE framework
 
Enabling z Agility with DevOps and Enterprise Transformation
Enabling z Agility with DevOps and Enterprise TransformationEnabling z Agility with DevOps and Enterprise Transformation
Enabling z Agility with DevOps and Enterprise Transformation
 
Hia 1691-using iib-to_support_api_economy
Hia 1691-using iib-to_support_api_economyHia 1691-using iib-to_support_api_economy
Hia 1691-using iib-to_support_api_economy
 
Praxistaugliche notes strategien 4 cloud
Praxistaugliche notes strategien 4 cloudPraxistaugliche notes strategien 4 cloud
Praxistaugliche notes strategien 4 cloud
 
Practical Considerations for Deploying a Java Active Networking Platform
Practical Considerations for Deploying a Java Active Networking PlatformPractical Considerations for Deploying a Java Active Networking Platform
Practical Considerations for Deploying a Java Active Networking Platform
 
Sakai Technical Future Musings
Sakai Technical Future MusingsSakai Technical Future Musings
Sakai Technical Future Musings
 
Geek Sync | Is Your Database Environment Ready for DevOps?
Geek Sync | Is Your Database Environment Ready for DevOps?Geek Sync | Is Your Database Environment Ready for DevOps?
Geek Sync | Is Your Database Environment Ready for DevOps?
 
CGM versus SVG
CGM versus SVGCGM versus SVG
CGM versus SVG
 
JDE & Peoplesoft 1 _ Michael Plon _ JDE EnterpriseOne in the big bad world of...
JDE & Peoplesoft 1 _ Michael Plon _ JDE EnterpriseOne in the big bad world of...JDE & Peoplesoft 1 _ Michael Plon _ JDE EnterpriseOne in the big bad world of...
JDE & Peoplesoft 1 _ Michael Plon _ JDE EnterpriseOne in the big bad world of...
 
Aligning the Fast & the Slow: The Reality of Multi-Speed IT
Aligning the Fast & the Slow: The Reality of Multi-Speed ITAligning the Fast & the Slow: The Reality of Multi-Speed IT
Aligning the Fast & the Slow: The Reality of Multi-Speed IT
 

Viewers also liked

Introduction to Business Process Management Suite
Introduction to Business Process Management SuiteIntroduction to Business Process Management Suite
Introduction to Business Process Management SuiteAppian
 
Building a Modern Microservices Architecture at Gilt: The Essentials
Building a Modern Microservices Architecture at Gilt: The EssentialsBuilding a Modern Microservices Architecture at Gilt: The Essentials
Building a Modern Microservices Architecture at Gilt: The EssentialsC4Media
 
How to Use Hybrid Integration Platforms Effectively
How to Use Hybrid Integration Platforms EffectivelyHow to Use Hybrid Integration Platforms Effectively
How to Use Hybrid Integration Platforms EffectivelyMuleSoft
 
Adaptive Network Middleware CSC (Communication Service Concierge) - R Kawamura
Adaptive Network Middleware CSC (Communication Service Concierge)  - R KawamuraAdaptive Network Middleware CSC (Communication Service Concierge)  - R Kawamura
Adaptive Network Middleware CSC (Communication Service Concierge) - R Kawamuramfrancis
 
OSGi Community Event 2010 - VMware and SpringSource Projects on OSGi
OSGi Community Event 2010 - VMware and SpringSource Projects on OSGiOSGi Community Event 2010 - VMware and SpringSource Projects on OSGi
OSGi Community Event 2010 - VMware and SpringSource Projects on OSGimfrancis
 
SOA Enablement of Embedded Systems using OSGi and Distributed Services - Roma...
SOA Enablement of Embedded Systems using OSGi and Distributed Services - Roma...SOA Enablement of Embedded Systems using OSGi and Distributed Services - Roma...
SOA Enablement of Embedded Systems using OSGi and Distributed Services - Roma...mfrancis
 
Building Server-Side Eclipse based Web applications - Jochen Hiller, Principa...
Building Server-Side Eclipse based Web applications - Jochen Hiller, Principa...Building Server-Side Eclipse based Web applications - Jochen Hiller, Principa...
Building Server-Side Eclipse based Web applications - Jochen Hiller, Principa...mfrancis
 
Methodologies for Test-Driven Development of OSGi enabled Embedded Devices - ...
Methodologies for Test-Driven Development of OSGi enabled Embedded Devices - ...Methodologies for Test-Driven Development of OSGi enabled Embedded Devices - ...
Methodologies for Test-Driven Development of OSGi enabled Embedded Devices - ...mfrancis
 
Developments in Europe - S Truve
Developments in Europe - S TruveDevelopments in Europe - S Truve
Developments in Europe - S Truvemfrancis
 
OSGi Community Event 2010 - Experiences with OSGi in Industrial Applications
OSGi Community Event 2010 - Experiences with OSGi in Industrial ApplicationsOSGi Community Event 2010 - Experiences with OSGi in Industrial Applications
OSGi Community Event 2010 - Experiences with OSGi in Industrial Applicationsmfrancis
 
A Persistence Service for the OSGi Framework - Carl Rosenberger, Chief Softwa...
A Persistence Service for the OSGi Framework - Carl Rosenberger, Chief Softwa...A Persistence Service for the OSGi Framework - Carl Rosenberger, Chief Softwa...
A Persistence Service for the OSGi Framework - Carl Rosenberger, Chief Softwa...mfrancis
 
The Services Enabling Platform - F Depuydt
The Services Enabling Platform - F DepuydtThe Services Enabling Platform - F Depuydt
The Services Enabling Platform - F Depuydtmfrancis
 
GST – An End-to-end Architecture for Automotive Telematics Services - Peter V...
GST – An End-to-end Architecture for Automotive Telematics Services - Peter V...GST – An End-to-end Architecture for Automotive Telematics Services - Peter V...
GST – An End-to-end Architecture for Automotive Telematics Services - Peter V...mfrancis
 
The Innovative Business of I-Enabled Appliances and Home Network - A Colantuoni
The Innovative Business of I-Enabled Appliances and Home Network - A ColantuoniThe Innovative Business of I-Enabled Appliances and Home Network - A Colantuoni
The Innovative Business of I-Enabled Appliances and Home Network - A Colantuonimfrancis
 
Smart Metering in Smart Homes - P Kopff
Smart Metering in Smart Homes - P KopffSmart Metering in Smart Homes - P Kopff
Smart Metering in Smart Homes - P Kopffmfrancis
 
OSGi Architecture for Mobile Device Software - Peter Kriens, aQute
OSGi Architecture for Mobile Device Software - Peter Kriens, aQuteOSGi Architecture for Mobile Device Software - Peter Kriens, aQute
OSGi Architecture for Mobile Device Software - Peter Kriens, aQutemfrancis
 
OSGi Community Event 2008 Closing Remarks - Stan Moyer, President of OSGi All...
OSGi Community Event 2008 Closing Remarks - Stan Moyer, President of OSGi All...OSGi Community Event 2008 Closing Remarks - Stan Moyer, President of OSGi All...
OSGi Community Event 2008 Closing Remarks - Stan Moyer, President of OSGi All...mfrancis
 
OSGi Community Event 2010 - Keynote 1 - The Long and Winding Road.....
OSGi Community Event 2010 - Keynote 1 - The Long and Winding Road.....OSGi Community Event 2010 - Keynote 1 - The Long and Winding Road.....
OSGi Community Event 2010 - Keynote 1 - The Long and Winding Road.....mfrancis
 
OSGi World Congress 2004 Introduction - Deepak Kamlani, Global Inventures
OSGi World Congress 2004 Introduction - Deepak Kamlani, Global InventuresOSGi World Congress 2004 Introduction - Deepak Kamlani, Global Inventures
OSGi World Congress 2004 Introduction - Deepak Kamlani, Global Inventuresmfrancis
 
OSGi Community Event 2010 - Modular Applications on a Data Grid - A Case Stud...
OSGi Community Event 2010 - Modular Applications on a Data Grid - A Case Stud...OSGi Community Event 2010 - Modular Applications on a Data Grid - A Case Stud...
OSGi Community Event 2010 - Modular Applications on a Data Grid - A Case Stud...mfrancis
 

Viewers also liked (20)

Introduction to Business Process Management Suite
Introduction to Business Process Management SuiteIntroduction to Business Process Management Suite
Introduction to Business Process Management Suite
 
Building a Modern Microservices Architecture at Gilt: The Essentials
Building a Modern Microservices Architecture at Gilt: The EssentialsBuilding a Modern Microservices Architecture at Gilt: The Essentials
Building a Modern Microservices Architecture at Gilt: The Essentials
 
How to Use Hybrid Integration Platforms Effectively
How to Use Hybrid Integration Platforms EffectivelyHow to Use Hybrid Integration Platforms Effectively
How to Use Hybrid Integration Platforms Effectively
 
Adaptive Network Middleware CSC (Communication Service Concierge) - R Kawamura
Adaptive Network Middleware CSC (Communication Service Concierge)  - R KawamuraAdaptive Network Middleware CSC (Communication Service Concierge)  - R Kawamura
Adaptive Network Middleware CSC (Communication Service Concierge) - R Kawamura
 
OSGi Community Event 2010 - VMware and SpringSource Projects on OSGi
OSGi Community Event 2010 - VMware and SpringSource Projects on OSGiOSGi Community Event 2010 - VMware and SpringSource Projects on OSGi
OSGi Community Event 2010 - VMware and SpringSource Projects on OSGi
 
SOA Enablement of Embedded Systems using OSGi and Distributed Services - Roma...
SOA Enablement of Embedded Systems using OSGi and Distributed Services - Roma...SOA Enablement of Embedded Systems using OSGi and Distributed Services - Roma...
SOA Enablement of Embedded Systems using OSGi and Distributed Services - Roma...
 
Building Server-Side Eclipse based Web applications - Jochen Hiller, Principa...
Building Server-Side Eclipse based Web applications - Jochen Hiller, Principa...Building Server-Side Eclipse based Web applications - Jochen Hiller, Principa...
Building Server-Side Eclipse based Web applications - Jochen Hiller, Principa...
 
Methodologies for Test-Driven Development of OSGi enabled Embedded Devices - ...
Methodologies for Test-Driven Development of OSGi enabled Embedded Devices - ...Methodologies for Test-Driven Development of OSGi enabled Embedded Devices - ...
Methodologies for Test-Driven Development of OSGi enabled Embedded Devices - ...
 
Developments in Europe - S Truve
Developments in Europe - S TruveDevelopments in Europe - S Truve
Developments in Europe - S Truve
 
OSGi Community Event 2010 - Experiences with OSGi in Industrial Applications
OSGi Community Event 2010 - Experiences with OSGi in Industrial ApplicationsOSGi Community Event 2010 - Experiences with OSGi in Industrial Applications
OSGi Community Event 2010 - Experiences with OSGi in Industrial Applications
 
A Persistence Service for the OSGi Framework - Carl Rosenberger, Chief Softwa...
A Persistence Service for the OSGi Framework - Carl Rosenberger, Chief Softwa...A Persistence Service for the OSGi Framework - Carl Rosenberger, Chief Softwa...
A Persistence Service for the OSGi Framework - Carl Rosenberger, Chief Softwa...
 
The Services Enabling Platform - F Depuydt
The Services Enabling Platform - F DepuydtThe Services Enabling Platform - F Depuydt
The Services Enabling Platform - F Depuydt
 
GST – An End-to-end Architecture for Automotive Telematics Services - Peter V...
GST – An End-to-end Architecture for Automotive Telematics Services - Peter V...GST – An End-to-end Architecture for Automotive Telematics Services - Peter V...
GST – An End-to-end Architecture for Automotive Telematics Services - Peter V...
 
The Innovative Business of I-Enabled Appliances and Home Network - A Colantuoni
The Innovative Business of I-Enabled Appliances and Home Network - A ColantuoniThe Innovative Business of I-Enabled Appliances and Home Network - A Colantuoni
The Innovative Business of I-Enabled Appliances and Home Network - A Colantuoni
 
Smart Metering in Smart Homes - P Kopff
Smart Metering in Smart Homes - P KopffSmart Metering in Smart Homes - P Kopff
Smart Metering in Smart Homes - P Kopff
 
OSGi Architecture for Mobile Device Software - Peter Kriens, aQute
OSGi Architecture for Mobile Device Software - Peter Kriens, aQuteOSGi Architecture for Mobile Device Software - Peter Kriens, aQute
OSGi Architecture for Mobile Device Software - Peter Kriens, aQute
 
OSGi Community Event 2008 Closing Remarks - Stan Moyer, President of OSGi All...
OSGi Community Event 2008 Closing Remarks - Stan Moyer, President of OSGi All...OSGi Community Event 2008 Closing Remarks - Stan Moyer, President of OSGi All...
OSGi Community Event 2008 Closing Remarks - Stan Moyer, President of OSGi All...
 
OSGi Community Event 2010 - Keynote 1 - The Long and Winding Road.....
OSGi Community Event 2010 - Keynote 1 - The Long and Winding Road.....OSGi Community Event 2010 - Keynote 1 - The Long and Winding Road.....
OSGi Community Event 2010 - Keynote 1 - The Long and Winding Road.....
 
OSGi World Congress 2004 Introduction - Deepak Kamlani, Global Inventures
OSGi World Congress 2004 Introduction - Deepak Kamlani, Global InventuresOSGi World Congress 2004 Introduction - Deepak Kamlani, Global Inventures
OSGi World Congress 2004 Introduction - Deepak Kamlani, Global Inventures
 
OSGi Community Event 2010 - Modular Applications on a Data Grid - A Case Stud...
OSGi Community Event 2010 - Modular Applications on a Data Grid - A Case Stud...OSGi Community Event 2010 - Modular Applications on a Data Grid - A Case Stud...
OSGi Community Event 2010 - Modular Applications on a Data Grid - A Case Stud...
 

Similar to Modernizing Legacy Software with OSGi

API-driven Legacy Migration: Results from Project Winterfell
API-driven Legacy Migration: Results from Project WinterfellAPI-driven Legacy Migration: Results from Project Winterfell
API-driven Legacy Migration: Results from Project WinterfellKeith McFarlane
 
Ultra-scale e-Commerce Transaction Services with Lean Middleware
Ultra-scale e-Commerce Transaction Services with Lean Middleware Ultra-scale e-Commerce Transaction Services with Lean Middleware
Ultra-scale e-Commerce Transaction Services with Lean Middleware WSO2
 
Cloud Services Powered by IBM SoftLayer and NetflixOSS
Cloud Services Powered by IBM SoftLayer and NetflixOSSCloud Services Powered by IBM SoftLayer and NetflixOSS
Cloud Services Powered by IBM SoftLayer and NetflixOSSaspyker
 
Role of Rest vs. Web Services and EI
Role of Rest vs. Web Services and EIRole of Rest vs. Web Services and EI
Role of Rest vs. Web Services and EIWSO2
 
Architecture Patterns - Open Discussion
Architecture Patterns - Open DiscussionArchitecture Patterns - Open Discussion
Architecture Patterns - Open DiscussionNguyen Tung
 
Unified Framework for Real Time, Near Real Time and Offline Analysis of Video...
Unified Framework for Real Time, Near Real Time and Offline Analysis of Video...Unified Framework for Real Time, Near Real Time and Offline Analysis of Video...
Unified Framework for Real Time, Near Real Time and Offline Analysis of Video...Spark Summit
 
A Practical Guide to Selecting a Stream Processing Technology
A Practical Guide to Selecting a Stream Processing Technology A Practical Guide to Selecting a Stream Processing Technology
A Practical Guide to Selecting a Stream Processing Technology confluent
 
2014 09-12 lambda-architecture-at-indix
2014 09-12 lambda-architecture-at-indix2014 09-12 lambda-architecture-at-indix
2014 09-12 lambda-architecture-at-indixYu Ishikawa
 
Morphis Technologies Overview
Morphis Technologies OverviewMorphis Technologies Overview
Morphis Technologies Overviewjrhartley62
 
SOA Mainframe Service Architecture and Enablement Practices Best and Worst Pr...
SOA Mainframe Service Architecture and Enablement Practices Best and Worst Pr...SOA Mainframe Service Architecture and Enablement Practices Best and Worst Pr...
SOA Mainframe Service Architecture and Enablement Practices Best and Worst Pr...Michael Erichsen
 
WSO2 Intro Webinar - Simplifying Enterprise Integration with Configurable WS...
WSO2 Intro Webinar -  Simplifying Enterprise Integration with Configurable WS...WSO2 Intro Webinar -  Simplifying Enterprise Integration with Configurable WS...
WSO2 Intro Webinar - Simplifying Enterprise Integration with Configurable WS...WSO2
 
Developer Conference 1.4 - Customer In Focus- Nationwide (NY)
Developer Conference 1.4 - Customer In Focus- Nationwide (NY)Developer Conference 1.4 - Customer In Focus- Nationwide (NY)
Developer Conference 1.4 - Customer In Focus- Nationwide (NY)Micro Focus
 
New Approaches to Faster Oracle Forms System Performance
New Approaches to Faster Oracle Forms System PerformanceNew Approaches to Faster Oracle Forms System Performance
New Approaches to Faster Oracle Forms System PerformanceCorrelsense
 
Software Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuableSoftware Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuableComsysto Reply GmbH
 
Oracle Forms Modernization Roadmap
Oracle Forms Modernization RoadmapOracle Forms Modernization Roadmap
Oracle Forms Modernization RoadmapKai-Uwe Möller
 
170215 msa intro
170215 msa intro170215 msa intro
170215 msa introSonic leigh
 
Patterns and Pains of Migrating Legacy Applications to Kubernetes
Patterns and Pains of Migrating Legacy Applications to KubernetesPatterns and Pains of Migrating Legacy Applications to Kubernetes
Patterns and Pains of Migrating Legacy Applications to KubernetesJosef Adersberger
 
Patterns and Pains of Migrating Legacy Applications to Kubernetes
Patterns and Pains of Migrating Legacy Applications to KubernetesPatterns and Pains of Migrating Legacy Applications to Kubernetes
Patterns and Pains of Migrating Legacy Applications to KubernetesQAware GmbH
 

Similar to Modernizing Legacy Software with OSGi (20)

API-driven Legacy Migration: Results from Project Winterfell
API-driven Legacy Migration: Results from Project WinterfellAPI-driven Legacy Migration: Results from Project Winterfell
API-driven Legacy Migration: Results from Project Winterfell
 
Ultra-scale e-Commerce Transaction Services with Lean Middleware
Ultra-scale e-Commerce Transaction Services with Lean Middleware Ultra-scale e-Commerce Transaction Services with Lean Middleware
Ultra-scale e-Commerce Transaction Services with Lean Middleware
 
Cloud Services Powered by IBM SoftLayer and NetflixOSS
Cloud Services Powered by IBM SoftLayer and NetflixOSSCloud Services Powered by IBM SoftLayer and NetflixOSS
Cloud Services Powered by IBM SoftLayer and NetflixOSS
 
AMIS OOW Review 2012 - Deel 7 - Lucas Jellema
AMIS OOW Review 2012 - Deel 7 - Lucas JellemaAMIS OOW Review 2012 - Deel 7 - Lucas Jellema
AMIS OOW Review 2012 - Deel 7 - Lucas Jellema
 
Role of Rest vs. Web Services and EI
Role of Rest vs. Web Services and EIRole of Rest vs. Web Services and EI
Role of Rest vs. Web Services and EI
 
Architecture Patterns - Open Discussion
Architecture Patterns - Open DiscussionArchitecture Patterns - Open Discussion
Architecture Patterns - Open Discussion
 
Unified Framework for Real Time, Near Real Time and Offline Analysis of Video...
Unified Framework for Real Time, Near Real Time and Offline Analysis of Video...Unified Framework for Real Time, Near Real Time and Offline Analysis of Video...
Unified Framework for Real Time, Near Real Time and Offline Analysis of Video...
 
A Practical Guide to Selecting a Stream Processing Technology
A Practical Guide to Selecting a Stream Processing Technology A Practical Guide to Selecting a Stream Processing Technology
A Practical Guide to Selecting a Stream Processing Technology
 
2014 09-12 lambda-architecture-at-indix
2014 09-12 lambda-architecture-at-indix2014 09-12 lambda-architecture-at-indix
2014 09-12 lambda-architecture-at-indix
 
Morphis Technologies Overview
Morphis Technologies OverviewMorphis Technologies Overview
Morphis Technologies Overview
 
Introduction to Apache Synapse
Introduction to Apache SynapseIntroduction to Apache Synapse
Introduction to Apache Synapse
 
SOA Mainframe Service Architecture and Enablement Practices Best and Worst Pr...
SOA Mainframe Service Architecture and Enablement Practices Best and Worst Pr...SOA Mainframe Service Architecture and Enablement Practices Best and Worst Pr...
SOA Mainframe Service Architecture and Enablement Practices Best and Worst Pr...
 
WSO2 Intro Webinar - Simplifying Enterprise Integration with Configurable WS...
WSO2 Intro Webinar -  Simplifying Enterprise Integration with Configurable WS...WSO2 Intro Webinar -  Simplifying Enterprise Integration with Configurable WS...
WSO2 Intro Webinar - Simplifying Enterprise Integration with Configurable WS...
 
Developer Conference 1.4 - Customer In Focus- Nationwide (NY)
Developer Conference 1.4 - Customer In Focus- Nationwide (NY)Developer Conference 1.4 - Customer In Focus- Nationwide (NY)
Developer Conference 1.4 - Customer In Focus- Nationwide (NY)
 
New Approaches to Faster Oracle Forms System Performance
New Approaches to Faster Oracle Forms System PerformanceNew Approaches to Faster Oracle Forms System Performance
New Approaches to Faster Oracle Forms System Performance
 
Software Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuableSoftware Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuable
 
Oracle Forms Modernization Roadmap
Oracle Forms Modernization RoadmapOracle Forms Modernization Roadmap
Oracle Forms Modernization Roadmap
 
170215 msa intro
170215 msa intro170215 msa intro
170215 msa intro
 
Patterns and Pains of Migrating Legacy Applications to Kubernetes
Patterns and Pains of Migrating Legacy Applications to KubernetesPatterns and Pains of Migrating Legacy Applications to Kubernetes
Patterns and Pains of Migrating Legacy Applications to Kubernetes
 
Patterns and Pains of Migrating Legacy Applications to Kubernetes
Patterns and Pains of Migrating Legacy Applications to KubernetesPatterns and Pains of Migrating Legacy Applications to Kubernetes
Patterns and Pains of Migrating Legacy Applications to Kubernetes
 

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 Lyaruumfrancis
 
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

New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
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
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
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
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
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
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 

Recently uploaded (20)

New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
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
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
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
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 

Modernizing Legacy Software with OSGi

  • 1. BLASTING OUT OF THE PAST WITH OSGi Keith McFarlane (@krmc)
  • 2. Agenda •  Prologue: What the Slashers Found •  Chapter 1: The Story So Far –  Review of the LiveOps Architecture and drivers towards migration and modernization •  Chapter 2: Requiem for a Legacy –  Exploration of approaches to the problem, and patterned approaches to specific problems •  Chapter 3: No Country for Old Software –  How LiveOps uses OSGi as a migration and modernization vehicle •  Chapter 4: What Apps May Come –  Where we go from here, and how OSGi will continue to help us migrate
  • 3. CHAPTER 1: THE STORY SO FAR
  • 4. Legacy Platform Capabilities •  Purpose: to provide a SaaS/PaaS product for contact center functionality •  Features –  Multiple inbound/outbound media channels: PSTN or VoIP voice, email, web chat, SMS, Twitter, Facebook –  Interaction flow processing –  Cradle-to-grave reporting –  Voice and screen recording –  Agent, Admin, Supervisor applications •  Constraints –  24/7 availability; no planned downtime –  Support for: •  8,000+ “live” customer contacts (voice + web chat) •  Unlimited off-line contacts •  5,000+ concurrent contact center agents
  • 5. 5 Platform Technology Milestones © 2009 LiveOps, Inc. •  2000 – LiveOps founded in Florida as a BPO •  2001 – Callcast founded in California as a contact center tech service •  2003 – LiveOps/Callcast companies technologies merge •  2005 – SaaS/PaaS business launched, larger customers added •  2007 – Fortune 500 customers added •  2008 – Marketplace/LiveWork technology integration, PCI Compliance •  2009 – Enterprise Agent product launched, continued growth •  2010 – First OSGi instances: REST API and Salesforce.com integration launched •  2011 – Integrated multichannel tech stack, Data Exchange product launched on OSGi •  2012 – LiveOps Application Server project started and launched
  • 6. 6 Tech Survey – Telephony and Presence © 2009 LiveOps, Inc. •  All components native to LiveOps –  Mostly Java-based components •  One exception: Media Server (C++) –  SIP stack built and maintained in-house –  All components are redundant and load balanced •  Call Manager –  Executes call flows –  Performs whole-call recording •  IVR –  For self-service, plays announcements, menus, etc. into the call •  Presence –  Tracks availability of agents for work assignment •  SIP Proxy –  Manages assignment of inbound calls to call managers –  Ensures proper routing of outbound calls via proxy rules
  • 7. 7 Tech Survey – Web Applications © 2009 LiveOps, Inc. •  LAMP stack (general admin apps) –  Perl/Mason under Apache 1.3/mod_perl –  Ruby on Rails under Apache 2/Passenger •  Windows Server stack (agent applications) –  IIS –  ASP.NET
  • 8. 8 Tech Survey – Data Management © 2009 LiveOps, Inc. •  Database: MySQL 5.1 (MyISAM and InnoDB) •  Configuration Data –  MySQL – e.g. ccconf, callflow, nexus databases –  Slow changing, relatively small in size •  Application Data –  MySQL – e.g. ccroute, ccoutbound databases –  Call managers, API servers –  Comparable read/write frequency, bounded growth •  Historical Data –  MySQL – cclog and datamart databases –  Hadoop, ActiveMQ – fine-grained event/log data pipeline –  GreenPlum – distributed analytical database –  Ever growing, relatively large in size •  Real-time Data –  RTM pipeline – scalable delivery to RTM dashboards –  Rapidly changing, relatively small in size
  • 9. 9 Tech Survey - APIs & Integration © 2009 LiveOps, Inc. •  Pre-OSGi APIS –  Transfer Data Service –  PAPI –  ACS •  Desktop JavaScript API –  For integration with browser-based agent client apps –  Full control of agent capabilities (presence, call handling, etc.) •  Platform Services API (PSAPI) –  User and configuration management –  Live call control –  Data transfer and statistics access •  Data Exchange –  Data dips for intelligent routing –  External record creation and update –  Bulk data export and import (reporting and configuration data) –  Configuration driven
  • 10. CHAPTER 2: REQUIEM FOR A LEGACY
  • 11. What do we mean by “Legacy?” •  “Mature information systems grow old disgracefully…”1 •  Software architectures (planned or “accidental”) are conceived to address a particular need at a moment in time –  May or may not be built to anticipate new features –  Probably will not accommodate changes in business focus •  Legacy software has reached a point in its lifecycle at which change becomes difficult –  Cannot meet new business needs in a timely manner –  Maintenance tasks become more costly and more difficult to staff 1Legacy System Anti-Patterns and a Pattern-Oriented Migration Response by Anthony Lauder and Stuart Kent (see References)
  • 12. Don’t forget the good parts •  A legacy platform exists because it addresses needs –  If it has existed for a long time, it probably has served its function very well –  Customers are not likely to allow a shut-down of current systems to move to something new with fewer features •  Implications: –  Legacy migration must be staged –  We must find ways to preserve the “good parts” while addressing current limitations
  • 13. Legacy Anti-patterns and Fixes Anti-pattern Ball and Chain Tower of Babel Monolithicity Gold in Them Thar Hills Tight Coupling Code Pollution Fix Pattern Portability Adapter Babel Fish Virtual Componentization Gold Mining Implicit Invocation Protocol Reflection
  • 14. Anti-pattern: “Ball and Chain” •  Summary: Software is “chained” to legacy operating systems through use of OS-specific features –  Unix: System V (vs. Posix) Message Queues –  Windows: Hooks –  OS X: Cocoa APIs –  All: Shell calls to invoke command-line processes •  Portability is limited by original system’s scope –  Easiest: CentOS 4  CentOS 5 –  Harder: CentOS 5  OS X –  Hardest: CentOS 5  Windows Server 2008
  • 15. Fix Pattern: Portability Adapter •  Create or select a single portability layer technology –  JVM, .NET Common Language Runtime, Posix, LLVM –  Purpose-built Portability Layer using OSGi •  Create a service representative of OS-specific features for consumption by new applications and services –  Allow existing apps and services to continue native feature use –  New apps and services must use features as represented in portability layer •  Pattern application results in sweeping system changes long-term, but leaves existing code intact for immediate future
  • 16. Anti-pattern: Tower of Babel •  Summary: System components were developed in a variety of programming languages –  Resource constraints; must use skills available –  Attempt to attract new talent with new language adoption –  “Polyglot” language philosophy; language diversity for its own sake •  Over time, organization cannot maintain code in a large number of languages –  Original developers may have moved on (new project, new company, etc.) –  Special-purpose implementations in exotic or less-popular languages (e.g., OCaml) become marginalized –  Common language runtime mitigates the problem to some extent, but does not solve it •  Interoperation between languages and runtimes is difficult, preventing rapid innovation
  • 17. Fix Pattern: Babel Fish •  Select and integrate a language interoperability technology that creates a bridge between multiple languages and runtimes –  Cross-language libraries: Thrift, Avro, Pbuf •  Revisiting the “CORBA” theme •  Prone to point-to-point IDL definitions –  SOA: Wrap all services with SOAP and present WSDLs •  Maintain internal services registry –  EDA: present all modules with access to a common event bus •  Asynchronous event patterns •  Well-defined event stream •  Complete service decoupling / separation of concerns
  • 18. Anti-pattern: “Monolithicity” •  Summary: Services are embedded in large, monolithic systems –  complex custom DB apps with heavy use of stored procedures –  older ERP systems –  proprietary voice applications (e.g., IBM WebSphere Voice) •  Not easily componentized, so reuse of discrete features is more difficult •  Developers may “specialize” in these systems –  System lifetime is prolonged by their experience, but this becomes niche knowledge –  Risk for the business and for individual careers
  • 19. Fix Pattern: Virtual Componentization •  Create a model of ideal components for each monolithic system –  Implement idealized components using a Façade above monolithic system •  “Fake it until you make it” –  Expose APIs for new application development •  Gradually replace Façade components with new implementations –  Process should be invisible to newer applications and services, who rely solely on the Façades
  • 20. Anti-pattern: “Gold in them thar Hills” •  Summary: Source code is the only representation of domain expertise, and tends to be scattered rather than centralized –  e.g. internal service for creating a new user may have embedded rules about user defaults, permissions, etc. –  Accumulation of years of learning about the problem space –  Downside of “self-documenting code”: poorly written/ documented code is worse than a badly written requirements document in this case •  Major cause of legacy system petrification –  Business rules become fragile as developers fear changes that may have broader effects than intended –  Original requirements may be lost in the noise introduced by years of modifications and changes in ownership
  • 21. Fix Pattern: Gold Mining •  Unearth requirements and create formal software contracts representing these for a development audience •  Many paths to discovery –  One method: lots and lots of meetings (aka. “workshops”) to discover and record existing requirements –  A better method: define contract structure, let domain experts fill it in, and review as a team •  Contracts can take many forms –  EDA: event format and sequence definitions –  SOA: WSDLs capturing detailed type information and message definitions
  • 22. Anti-pattern: Tight Coupling •  Summary: Elements of a legacy system that directly invoke one another tend to become entangled over time – Deeper meaning built into method parameters than original intent – Invocation may depend upon external preconditions or side effects – If changes are not synchronized, breakage will result, so teams must move more slowly
  • 23. Fix Pattern: Implicit Invocation •  Remove knowledge of external implementations from system components –  Move to a model of brokered interaction –  components express interest in events without knowledge of the remote implementation •  Can accomplish this with: –  Disciplined SOA, in which a registry of components provides only component binding –  Brokered, asynchronous messaging, providing a complete separation of concerns
  • 24. Anti-pattern: Code Pollution •  Summary: Event-driven systems build up code to deal with special event sequence cases –  Particularly relevant where Implicit Invocation is applied •  Subsystem guard code builds up over time, but protocol rules will not be enforced elsewhere •  Maintenance complexity increases with every new special case
  • 25. Fix Pattern: Protocol Reflection •  Explicitly define event protocol, then build a shared state machine to deal with special cases – GoF State pattern is a good fit •  State machine is deployed for all services that need to support the event protocol – Changes to the protocol imply changes to the shared state machine
  • 26. CHAPTER 3: NO COUNTRY FOR OLD SOFTWARE
  • 27. Goal: Increase Agility/Programmability Need: accelerate feature growth with minimal impact on core development resources Approach: •  Create an abstraction through which the platform’s services may be accessed •  Expose clean, consistent, functionally complete API
  • 28. Goal: Simplify/Consolidate the Platform Need: rationalize the applications and base services of the platform, refactoring and merging to limit divergent technologies Approach: •  Constrain new application development to the API •  Constrain new base services development to virtual components in a portability layer •  Explore technology alternatives for older base services that are difficult to maintain
  • 29. Software Layers LiveOps, Customer, and Partner Applications REST APIs, Scripting, and Interaction Workflow/Engine Business Objects (Virtual Componentization) Base Services (Portability Adapter) Contact center functionality provided using APIs and other developer and authoring tools Varying methods of interacting with the Platform Abstraction An ideal social contact center model that removes much of the complexity from Base Services All basic functions required by social contact centers, including communications and data services
  • 30. Software Layers LiveOps, Customer, and Partner Applications REST APIs, Scripting, and Interaction Workflow/Engine Business Objects (Virtual Componentization) Base Services (Portability Adapter) Contact center functionality provided using APIs and other developer and authoring tools Varying methods of interacting with the Platform Abstraction An ideal social contact center model that removes much of the complexity from Base Services All basic functions required by social contact centers, including communications and data services Conclusion: we needed to use an OSGi container for modularity, consistency, and operational repeatability
  • 31. Why Apply OSGi to Legacy Migration? •  Directly applicable to addressing legacy anti-patterns –  e.g., Event Admin implementation to support Indirect Invocation, Declarative Services + Remote Service Admin interfaces for Virtual Componentization •  Separation of concerns built-in –  Modularity provides barrier that fosters code independence •  Many compendium services are analogous to typical enterprise integration patterns (by design) –  Event Admin => brokered messaging –  Config Admin => service configuration access –  User Admin => AAA and user account management –  Monitor Admin => monitoring and alerting services for Net Ops •  Developers encouraged by the model to do things the “right” way going forward –  Easier to reuse •  Most do-it-yourself OSGi options are open source
  • 32. Previous Work Physical Server CentOS 5.2 deamontools Glassfish v3 – liveops-integration domain Felix OSGi Runtime LiveOps Integration Bundles Telephony Bundle Data Bundle Security Bundle Config Bundle Logging Bundle DSM Bundle Presence Bundle Web Container PSAPI JAX-RS Bundle Glassfish Admin Metadata Bundle •  We had decided we needed a container for new layers – Our first API implementation looked very much like what we needed
  • 33. Previous Container: Glassfish •  Positives – Rich in features, stable – High performance HTTP (Grizzly) – Rich admin UI – Based on Felix •  HK2 used for web stack, but OSGi at core
  • 34. Previous Container: Glassfish •  Negatives –  Default deployment profile cluttered •  Don’t need most of it, but once removed, why use Glassfish? –  Complex deployment •  Wanted more control over deployment images –  Oracle acquisition •  Marketing messaging reassuring to some on team, but not all –  Occasional WAB deployment quirks
  • 35. OSGi Container Options Explored Container Pros Cons Apache Felix Standalone •  Lean, no extras •  Familiar to us •  Heavily used •  Need to build management/ monitoring tools Glassfish (Based on Felix) •  What we currently deploy •  Includes Sailfin •  Heavyweight; contains much we do not need JBoss OSGi •  Includes Mobicents •  OSGi runs above base JBoss services Equinox •  Heavily used •  Major platform change Knoplerfish •  Major platform change •  Not as widely used as others Karaf •  Makes Felix more manageable •  Maven support for dependencies •  May be locked into Felix version Concierge •  Very lightweight •  Major platform change •  Only OSGi 3 impl. Paremus Nimble •  Major platform change •  Not OSS Virgo •  Multi-bundle model •  Jetty support •  Same issue as Equinox
  • 36. OSGi Container Options Explored Container Pros Cons Apache Felix Standalone •  Lean, no extras •  Familiar to us •  Heavily used •  Need to build management/ monitoring tools Glassfish (Based on Felix) •  What we currently deploy •  Includes Sailfin •  Heavyweight; contains much we do not need JBoss OSGi •  Includes Mobicents •  OSGi runs above base JBoss services Equinox •  Heavily used •  Major platform change Knoplerfish •  Major platform change •  Not as widely used as others Karaf •  Makes Felix more manageable •  Maven support for dependencies •  May be locked into Felix version Concierge •  Very lightweight •  Major platform change •  Only OSGi 3 impl. Paremus Nimble •  Major platform change •  Not OSS Virgo •  Multi-bundle model •  Jetty support •  Same issue as Equinox
  • 37. Decision: Create a LiveOps-Specific App Server •  Benefits –  Retain control over deployment image •  Nothing extra, ability to update core bundles with few interaction worries –  Accelerate development through the use of consistent tools and technologies, safe code sharing, and a layered, extensible platform –  Wrap all existing LiveOps services (voice, messaging, data, monitoring, etc.) and provide them to LO developers in a consistent way –  Deploy a single image in LO data centers that Ops can “flavor” in different ways (API server, SIP proxy, call manager…) –  Expose a consistent social contact center model to customers, partners, and internal LiveOps developers for use in new applications and services •  Base Technologies –  Daemontools –  Java 6 JVM –  Felix 4 / OSGi Core+Compendium 4.3
  • 39. Migration Stage 1: API New Application 1 Svc. 1 Svc. 2 DB Svc. 3 Svc. 4 Old Application 1 Old Application 2
  • 40. Migration Stage 2: Service Ports New Application 1 Svc. 1 Svc. 2 DB Svc. 3 Svc. 4 Old Application 1 Old Application 2 Svc. 3 Svc. 4
  • 41. Migration Stage 3: App Ports New Application 1 Svc. 1 Svc. 2 DB Svc. 3 Svc. 4 Old Application 1 Old Application 2 Svc. 3 Svc. 4 Svc. 1 Svc. 2 New Application 2
  • 42. Raven Event Bus Winterfell Tools LoCo – LiveOps Code Gen Arya Services Gnostic MonitorStark Deployment •  JSON IDL generates: -  JavaScript lib and Tests -  Resource Bundle Skeleton -  JAX-RS uses raw IDL •  All platform server types defined by JSON deployment file •  All code deployed; service type selected at runtime •  Monitor Admin implementation sends events from all services to monitoring pipeline•  All events contractually defined •  Send/receive using Event Admin + RabbitMQ •  Built image Arya images stored on internal github •  New server gets all bits and activates one Arya service per container
  • 43. LoCo Framework: Generation Int_gen_code.rb Test HTML + JavaScript + deployable site project JavaScript library Java Bean and Implementation classes JSON IDL
  • 45. Runtime API Operation API Services Manager Resource Impl. Resource ID Service Dynamic REST API Endpoint JSON IDL Res. Bean App Legacy Service 1 Legacy Service 2 - REST API endpoint validates requests using JSON IDL -  API Svc. Manager provides binding from URL to Resource Impl. -  Resource Impl. Builds and returns resource bean -  Resource ID Service translates inner to API IDs
  • 47. Future Projects •  Winterfell open source •  Raven on ZeroMQ •  Winterfell on EC2 •  OSGi 5