SlideShare uma empresa Scribd logo
1 de 33
API-driven Legacy Migration: Results
from Project Winterfell
Keith R. McFarlane (@krmc)
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
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 Counter-patterns
Anti-pattern

Counter-pattern

Ball and Chain

Portability Adapter (JVM, .net)

Tower of Babel

Babel Fish (PB, Thrift, etc.)

Monolith
Buried Treasure

Virtual Componentization (Façade)
Gold Mining

Tight Coupling

Implicit Invocation (SOA/EDA)

Code Pollution

Protocol Reflection (State Pattern)
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
Counter-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
Counter-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: Monolith
• 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
Counter-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: Buried Treasure
• 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
Counter-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
Counter-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
Counter-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
Legacy System Components
Migration Strategy
Migration Strategy
Migration Strategy
Target Architecture
Why OSGi?
• OSGi Compendium APIs 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 Ops

• 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

• 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
LiveOps Winterfell Project
• Benefits
– Wrap all existing services with APIs (voice, messaging, data,
monitoring, etc.) and provide them to LO developers in a consistent
way
– 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
– 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 7
– Felix 4 / OSGi Core+Compendium 4.3
Winterfell Framework

Code Generation

Platform Services

• 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

Deployment Pipeline
• Continuous integration
• New server gets all bits
and activates one Arya
service per container

Monitoring

Raven Event Bus
• All events contractually
defined
• Send/receive using
Event Admin +
RabbitMQ

• Monitor Admin
implementation sends
events from all services
to monitoring pipeline
Winterfell API Layers

External APIs
Resource Model
APIs

Base Services APIs

Container APIs
Winter Gem – Open Source Container Management
• System for deploying Winterfell OSGi containers of varying
configurations
• Based on Felix OSGi Runtime
• Containers are defined by configuration files

– Winterfile defines OSGi bundles to be downloaded and added to
container at runtime
• POM files also supported

– ERB templates used to generate configuration files
– JSON files supply configuration substitutions

• This is now open source software; please use it / fork it, and
send us your pull requests!
– See: https://github.com/liveops/winter
LoCo Framework: API Code Generation

JSON IDL

JavaScript
library

Int_gen_code.rb

Java Bean and
Implementation
classes

Test HTML +
JavaScript +
deployable site
project
Runtime API Operation

Dynamic REST API
Endpoint

App

JSON
IDL

API Services Manager

- 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

Resource ID
Service

Res.
Bean

Resource Impl.
Legacy Service 1

Legacy Service 2
Migration Stage 1: API
New
Application 1

Old
Application 1

Old
Application 2

Svc. 1
Svc. 2
Svc. 3
Svc. 4

DB
Migration Stage 2: Service Ports
New
Application 1

Old
Application 1

Old
Application 2

Svc. 1
Svc. 2
Svc. 3

Svc. 3

Svc. 4

Svc. 4

DB
Migration Stage 3: App Ports
New
Application 1

New
Application 2

Old
Application 1

Old
Application 2

Svc. 1
Svc. 2
Svc. 3

Svc. 1

Svc. 4

Svc. 2

Svc. 3
Svc. 4

DB
Next Steps
• Release more OSS Projects
– Raven Event Bus
– Code Generator and API Services Manager

• Complete API coverage of platform elements
• Converge more services / simplify
• Launch application ecosystem for customers/partners
• Hire more API developers!
Q&A

Mais conteúdo relacionado

Mais procurados

A Software Factory Integrating Rational & WebSphere Tools
A Software Factory Integrating Rational & WebSphere ToolsA Software Factory Integrating Rational & WebSphere Tools
A Software Factory Integrating Rational & WebSphere Toolsghodgkinson
 
Operating a High Velocity Large Organization with Spring Cloud Microservices
Operating a High Velocity Large Organization with Spring Cloud MicroservicesOperating a High Velocity Large Organization with Spring Cloud Microservices
Operating a High Velocity Large Organization with Spring Cloud MicroservicesNoriaki Tatsumi
 
Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...ghodgkinson
 
Challenges Scaling DevOps
Challenges Scaling DevOpsChallenges Scaling DevOps
Challenges Scaling DevOpsRachel Maxwell
 
Moving To The Cloud, Evaluating Architectures
Moving To The Cloud, Evaluating ArchitecturesMoving To The Cloud, Evaluating Architectures
Moving To The Cloud, Evaluating ArchitecturesMark Sigler
 
DevOps for Enterprise Systems : Innovate like a Startup
DevOps for Enterprise Systems : Innovate like a StartupDevOps for Enterprise Systems : Innovate like a Startup
DevOps for Enterprise Systems : Innovate like a StartupDevOps for Enterprise Systems
 
Architecture Entropy
Architecture EntropyArchitecture Entropy
Architecture EntropySimon Greig
 
Cloud testing: challenges and opportunities, TaaS, Integration Testing
Cloud testing: challenges and opportunities, TaaS, Integration TestingCloud testing: challenges and opportunities, TaaS, Integration Testing
Cloud testing: challenges and opportunities, TaaS, Integration TestingDr Ganesh Iyer
 
8 pipeline
8 pipeline 8 pipeline
8 pipeline Len Bass
 
Software architecture also needs agile
Software architecture also needs agileSoftware architecture also needs agile
Software architecture also needs agileBoyan Mihaylov
 
Lessons Learned from Large Scale Adoption of DevOps for IBM z Systems Software
Lessons Learned from Large Scale Adoption of DevOps for IBM z Systems SoftwareLessons Learned from Large Scale Adoption of DevOps for IBM z Systems Software
Lessons Learned from Large Scale Adoption of DevOps for IBM z Systems SoftwareDevOps for Enterprise Systems
 
6 microservice architecture
6 microservice architecture6 microservice architecture
6 microservice architectureLen Bass
 
Quantifying DevOps Adoption Empirically for Demonstrable ROI
Quantifying DevOps Adoption Empirically for Demonstrable ROIQuantifying DevOps Adoption Empirically for Demonstrable ROI
Quantifying DevOps Adoption Empirically for Demonstrable ROIDevOps for Enterprise Systems
 
Continuous Delivery using Release Management Automation
Continuous Delivery using Release Management AutomationContinuous Delivery using Release Management Automation
Continuous Delivery using Release Management AutomationPremkumar Veerakumar
 
[2015/2016] Collaborative software development with Git
[2015/2016] Collaborative software development with Git[2015/2016] Collaborative software development with Git
[2015/2016] Collaborative software development with GitIvano Malavolta
 

Mais procurados (20)

1
11
1
 
A Software Factory Integrating Rational & WebSphere Tools
A Software Factory Integrating Rational & WebSphere ToolsA Software Factory Integrating Rational & WebSphere Tools
A Software Factory Integrating Rational & WebSphere Tools
 
Operating a High Velocity Large Organization with Spring Cloud Microservices
Operating a High Velocity Large Organization with Spring Cloud MicroservicesOperating a High Velocity Large Organization with Spring Cloud Microservices
Operating a High Velocity Large Organization with Spring Cloud Microservices
 
Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...
 
Challenges Scaling DevOps
Challenges Scaling DevOpsChallenges Scaling DevOps
Challenges Scaling DevOps
 
Moving To The Cloud, Evaluating Architectures
Moving To The Cloud, Evaluating ArchitecturesMoving To The Cloud, Evaluating Architectures
Moving To The Cloud, Evaluating Architectures
 
DevOps for Enterprise Systems : Innovate like a Startup
DevOps for Enterprise Systems : Innovate like a StartupDevOps for Enterprise Systems : Innovate like a Startup
DevOps for Enterprise Systems : Innovate like a Startup
 
Architecture Entropy
Architecture EntropyArchitecture Entropy
Architecture Entropy
 
Fundamentals of Deploy and Release
Fundamentals of Deploy and ReleaseFundamentals of Deploy and Release
Fundamentals of Deploy and Release
 
Cloud testing: challenges and opportunities, TaaS, Integration Testing
Cloud testing: challenges and opportunities, TaaS, Integration TestingCloud testing: challenges and opportunities, TaaS, Integration Testing
Cloud testing: challenges and opportunities, TaaS, Integration Testing
 
8 pipeline
8 pipeline 8 pipeline
8 pipeline
 
Software architecture also needs agile
Software architecture also needs agileSoftware architecture also needs agile
Software architecture also needs agile
 
Lessons Learned from Large Scale Adoption of DevOps for IBM z Systems Software
Lessons Learned from Large Scale Adoption of DevOps for IBM z Systems SoftwareLessons Learned from Large Scale Adoption of DevOps for IBM z Systems Software
Lessons Learned from Large Scale Adoption of DevOps for IBM z Systems Software
 
6 microservice architecture
6 microservice architecture6 microservice architecture
6 microservice architecture
 
Building a SaaS Style Application
Building a SaaS Style ApplicationBuilding a SaaS Style Application
Building a SaaS Style Application
 
DevOps for Enterprise Systems - Rosalind Radcliffe
DevOps for Enterprise Systems - Rosalind RadcliffeDevOps for Enterprise Systems - Rosalind Radcliffe
DevOps for Enterprise Systems - Rosalind Radcliffe
 
Quantifying DevOps Adoption Empirically for Demonstrable ROI
Quantifying DevOps Adoption Empirically for Demonstrable ROIQuantifying DevOps Adoption Empirically for Demonstrable ROI
Quantifying DevOps Adoption Empirically for Demonstrable ROI
 
Continuous Delivery using Release Management Automation
Continuous Delivery using Release Management AutomationContinuous Delivery using Release Management Automation
Continuous Delivery using Release Management Automation
 
Myresume1A (1)
Myresume1A (1)Myresume1A (1)
Myresume1A (1)
 
[2015/2016] Collaborative software development with Git
[2015/2016] Collaborative software development with Git[2015/2016] Collaborative software development with Git
[2015/2016] Collaborative software development with Git
 

Destaque

REST и HATEOAS
REST и HATEOASREST и HATEOAS
REST и HATEOASArtem Bey
 
API Services: Building Apps That Stand Out
API Services: Building Apps That Stand OutAPI Services: Building Apps That Stand Out
API Services: Building Apps That Stand OutApigee | Google Cloud
 
Modernizing the Legacy - How Dish is Adapting its SOA Services for a Cloud Fi...
Modernizing the Legacy - How Dish is Adapting its SOA Services for a Cloud Fi...Modernizing the Legacy - How Dish is Adapting its SOA Services for a Cloud Fi...
Modernizing the Legacy - How Dish is Adapting its SOA Services for a Cloud Fi...VMware Tanzu
 
Securing RESTful services with Spring HATEOAS & Hdiv
Securing RESTful services with Spring HATEOAS & HdivSecuring RESTful services with Spring HATEOAS & Hdiv
Securing RESTful services with Spring HATEOAS & HdivHdiv Security
 
Hypermedia api (HATEOAS)
Hypermedia api (HATEOAS)Hypermedia api (HATEOAS)
Hypermedia api (HATEOAS)MitinPavel
 
HCLT Whitepaper: Legacy Modernization
HCLT Whitepaper: Legacy Modernization HCLT Whitepaper: Legacy Modernization
HCLT Whitepaper: Legacy Modernization HCL Technologies
 
BPM for SOA+ESB+API and cloud
BPM for SOA+ESB+API and cloud BPM for SOA+ESB+API and cloud
BPM for SOA+ESB+API and cloud Alexander SAMARIN
 
How to become a Product Samurai - Chris Lukassen
How to become a Product Samurai - Chris LukassenHow to become a Product Samurai - Chris Lukassen
How to become a Product Samurai - Chris LukassenAvisi B.V.
 
Legacy to industry leader: a modernization case study
Legacy to industry leader: a modernization case studyLegacy to industry leader: a modernization case study
Legacy to industry leader: a modernization case studyOSSCube
 
Twilio Signal 2016 API Architecture
Twilio Signal 2016 API ArchitectureTwilio Signal 2016 API Architecture
Twilio Signal 2016 API ArchitectureTwilio Inc
 
LeaseWeb API Architecture @ APINL Meetup
LeaseWeb API Architecture @ APINL MeetupLeaseWeb API Architecture @ APINL Meetup
LeaseWeb API Architecture @ APINL MeetupRolph Haspers
 
SOA Pattern : Legacy Wrappers
SOA Pattern : Legacy Wrappers SOA Pattern : Legacy Wrappers
SOA Pattern : Legacy Wrappers WSO2
 
Updating Legacy Systems: Making the Financial Case for a Modernization Project
Updating Legacy Systems: Making the Financial Case for a Modernization Project Updating Legacy Systems: Making the Financial Case for a Modernization Project
Updating Legacy Systems: Making the Financial Case for a Modernization Project ILM Professional Services
 
IO State In Distributed API Architecture
IO State In Distributed API ArchitectureIO State In Distributed API Architecture
IO State In Distributed API ArchitectureOwen Rubel
 
Api Abstraction & Api Chaining
Api Abstraction & Api ChainingApi Abstraction & Api Chaining
Api Abstraction & Api ChainingOwen Rubel
 
Legacy modernization, cloud orchestration, api publishing
Legacy modernization, cloud orchestration, api publishingLegacy modernization, cloud orchestration, api publishing
Legacy modernization, cloud orchestration, api publishingkumar gaurav
 
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
 
Building an API Platform for Digital Transformation
Building an API Platform for Digital TransformationBuilding an API Platform for Digital Transformation
Building an API Platform for Digital TransformationWSO2
 
ITANA 2016: API Architecture and Implementation
ITANA 2016: API Architecture and ImplementationITANA 2016: API Architecture and Implementation
ITANA 2016: API Architecture and ImplementationColin Bell
 

Destaque (20)

REST и HATEOAS
REST и HATEOASREST и HATEOAS
REST и HATEOAS
 
API Services: Building Apps That Stand Out
API Services: Building Apps That Stand OutAPI Services: Building Apps That Stand Out
API Services: Building Apps That Stand Out
 
Modernizing the Legacy - How Dish is Adapting its SOA Services for a Cloud Fi...
Modernizing the Legacy - How Dish is Adapting its SOA Services for a Cloud Fi...Modernizing the Legacy - How Dish is Adapting its SOA Services for a Cloud Fi...
Modernizing the Legacy - How Dish is Adapting its SOA Services for a Cloud Fi...
 
Securing RESTful services with Spring HATEOAS & Hdiv
Securing RESTful services with Spring HATEOAS & HdivSecuring RESTful services with Spring HATEOAS & Hdiv
Securing RESTful services with Spring HATEOAS & Hdiv
 
Hypermedia api (HATEOAS)
Hypermedia api (HATEOAS)Hypermedia api (HATEOAS)
Hypermedia api (HATEOAS)
 
HCLT Whitepaper: Legacy Modernization
HCLT Whitepaper: Legacy Modernization HCLT Whitepaper: Legacy Modernization
HCLT Whitepaper: Legacy Modernization
 
BPM for SOA+ESB+API and cloud
BPM for SOA+ESB+API and cloud BPM for SOA+ESB+API and cloud
BPM for SOA+ESB+API and cloud
 
How to become a Product Samurai - Chris Lukassen
How to become a Product Samurai - Chris LukassenHow to become a Product Samurai - Chris Lukassen
How to become a Product Samurai - Chris Lukassen
 
Apiworld
ApiworldApiworld
Apiworld
 
Legacy to industry leader: a modernization case study
Legacy to industry leader: a modernization case studyLegacy to industry leader: a modernization case study
Legacy to industry leader: a modernization case study
 
Twilio Signal 2016 API Architecture
Twilio Signal 2016 API ArchitectureTwilio Signal 2016 API Architecture
Twilio Signal 2016 API Architecture
 
LeaseWeb API Architecture @ APINL Meetup
LeaseWeb API Architecture @ APINL MeetupLeaseWeb API Architecture @ APINL Meetup
LeaseWeb API Architecture @ APINL Meetup
 
SOA Pattern : Legacy Wrappers
SOA Pattern : Legacy Wrappers SOA Pattern : Legacy Wrappers
SOA Pattern : Legacy Wrappers
 
Updating Legacy Systems: Making the Financial Case for a Modernization Project
Updating Legacy Systems: Making the Financial Case for a Modernization Project Updating Legacy Systems: Making the Financial Case for a Modernization Project
Updating Legacy Systems: Making the Financial Case for a Modernization Project
 
IO State In Distributed API Architecture
IO State In Distributed API ArchitectureIO State In Distributed API Architecture
IO State In Distributed API Architecture
 
Api Abstraction & Api Chaining
Api Abstraction & Api ChainingApi Abstraction & Api Chaining
Api Abstraction & Api Chaining
 
Legacy modernization, cloud orchestration, api publishing
Legacy modernization, cloud orchestration, api publishingLegacy modernization, cloud orchestration, api publishing
Legacy modernization, cloud orchestration, api publishing
 
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
 
Building an API Platform for Digital Transformation
Building an API Platform for Digital TransformationBuilding an API Platform for Digital Transformation
Building an API Platform for Digital Transformation
 
ITANA 2016: API Architecture and Implementation
ITANA 2016: API Architecture and ImplementationITANA 2016: API Architecture and Implementation
ITANA 2016: API Architecture and Implementation
 

Semelhante a API-driven Legacy Migration: Results from Project Winterfell

Blasting Out of the Past with OSGi - Keith McFarlane
Blasting Out of the Past with OSGi - Keith McFarlaneBlasting Out of the Past with OSGi - Keith McFarlane
Blasting Out of the Past with OSGi - Keith McFarlanemfrancis
 
Architecting systems for continuous delivery
Architecting systems for continuous deliveryArchitecting systems for continuous delivery
Architecting systems for continuous deliveryMarcel de Vries
 
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
 
Agile MDD
Agile MDDAgile MDD
Agile MDDfntnhd
 
Hia 1693-effective application-development_in_iib
Hia 1693-effective application-development_in_iibHia 1693-effective application-development_in_iib
Hia 1693-effective application-development_in_iibAndrew Coleman
 
Bojan Veljanovski - Modular Software Architecture and Design (Code Camp 2016)
Bojan Veljanovski - Modular Software Architecture and Design (Code Camp 2016)Bojan Veljanovski - Modular Software Architecture and Design (Code Camp 2016)
Bojan Veljanovski - Modular Software Architecture and Design (Code Camp 2016)Bojan Veljanovski
 
Agile and continuous delivery – How IBM Watson Workspace is built
Agile and continuous delivery – How IBM Watson Workspace is builtAgile and continuous delivery – How IBM Watson Workspace is built
Agile and continuous delivery – How IBM Watson Workspace is builtVincent Burckhardt
 
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
 
Technical Webinar: Patterns for Integrating Your Salesforce App with Off-Plat...
Technical Webinar: Patterns for Integrating Your Salesforce App with Off-Plat...Technical Webinar: Patterns for Integrating Your Salesforce App with Off-Plat...
Technical Webinar: Patterns for Integrating Your Salesforce App with Off-Plat...CodeScience
 
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
 
Understanding Microservices
Understanding Microservices Understanding Microservices
Understanding Microservices M A Hossain Tonu
 
Chris Phillips SCIM Mace-Dir Internet2 Fall Member Meeting Refresh
Chris Phillips SCIM Mace-Dir Internet2 Fall Member Meeting RefreshChris Phillips SCIM Mace-Dir Internet2 Fall Member Meeting Refresh
Chris Phillips SCIM Mace-Dir Internet2 Fall Member Meeting RefreshChris Phillips
 
Architectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and ConsistentlyArchitectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and ConsistentlyComsysto Reply GmbH
 
Architectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and ConsistentlyArchitectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and ConsistentlyComsysto Reply GmbH
 
Technology insights: Decision Science Platform
Technology insights: Decision Science PlatformTechnology insights: Decision Science Platform
Technology insights: Decision Science PlatformDecision Science Community
 
How Microsoft ALM Tools Can Improve Your Bottom Line
How Microsoft ALM Tools Can Improve Your Bottom LineHow Microsoft ALM Tools Can Improve Your Bottom Line
How Microsoft ALM Tools Can Improve Your Bottom LineImaginet
 
Software design for scientific applications
Software design for scientific applicationsSoftware design for scientific applications
Software design for scientific applicationsPriyanka Lal
 

Semelhante a API-driven Legacy Migration: Results from Project Winterfell (20)

Blasting Out of the Past with OSGi - Keith McFarlane
Blasting Out of the Past with OSGi - Keith McFarlaneBlasting Out of the Past with OSGi - Keith McFarlane
Blasting Out of the Past with OSGi - Keith McFarlane
 
Architecting systems for continuous delivery
Architecting systems for continuous deliveryArchitecting systems for continuous delivery
Architecting systems for continuous delivery
 
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
 
Agile MDD
Agile MDDAgile MDD
Agile MDD
 
Hia 1693-effective application-development_in_iib
Hia 1693-effective application-development_in_iibHia 1693-effective application-development_in_iib
Hia 1693-effective application-development_in_iib
 
Bojan Veljanovski - Modular Software Architecture and Design (Code Camp 2016)
Bojan Veljanovski - Modular Software Architecture and Design (Code Camp 2016)Bojan Veljanovski - Modular Software Architecture and Design (Code Camp 2016)
Bojan Veljanovski - Modular Software Architecture and Design (Code Camp 2016)
 
Agile and continuous delivery – How IBM Watson Workspace is built
Agile and continuous delivery – How IBM Watson Workspace is builtAgile and continuous delivery – How IBM Watson Workspace is built
Agile and continuous delivery – How IBM Watson Workspace is built
 
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...
 
Technical Webinar: Patterns for Integrating Your Salesforce App with Off-Plat...
Technical Webinar: Patterns for Integrating Your Salesforce App with Off-Plat...Technical Webinar: Patterns for Integrating Your Salesforce App with Off-Plat...
Technical Webinar: Patterns for Integrating Your Salesforce App with Off-Plat...
 
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
 
Introduction to Apache Synapse
Introduction to Apache SynapseIntroduction to Apache Synapse
Introduction to Apache Synapse
 
Understanding Microservices
Understanding Microservices Understanding Microservices
Understanding Microservices
 
Chris Phillips SCIM Mace-Dir Internet2 Fall Member Meeting Refresh
Chris Phillips SCIM Mace-Dir Internet2 Fall Member Meeting RefreshChris Phillips SCIM Mace-Dir Internet2 Fall Member Meeting Refresh
Chris Phillips SCIM Mace-Dir Internet2 Fall Member Meeting Refresh
 
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
 
Architectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and ConsistentlyArchitectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and Consistently
 
Architectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and ConsistentlyArchitectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and Consistently
 
Technology insights: Decision Science Platform
Technology insights: Decision Science PlatformTechnology insights: Decision Science Platform
Technology insights: Decision Science Platform
 
Ppt nardeep
Ppt nardeepPpt nardeep
Ppt nardeep
 
How Microsoft ALM Tools Can Improve Your Bottom Line
How Microsoft ALM Tools Can Improve Your Bottom LineHow Microsoft ALM Tools Can Improve Your Bottom Line
How Microsoft ALM Tools Can Improve Your Bottom Line
 
Software design for scientific applications
Software design for scientific applicationsSoftware design for scientific applications
Software design for scientific applications
 

Último

DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 

Último (20)

DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 

API-driven Legacy Migration: Results from Project Winterfell

  • 1. API-driven Legacy Migration: Results from Project Winterfell Keith R. McFarlane (@krmc)
  • 2. 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
  • 3. 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
  • 4. Legacy Anti-patterns and Counter-patterns Anti-pattern Counter-pattern Ball and Chain Portability Adapter (JVM, .net) Tower of Babel Babel Fish (PB, Thrift, etc.) Monolith Buried Treasure Virtual Componentization (Façade) Gold Mining Tight Coupling Implicit Invocation (SOA/EDA) Code Pollution Protocol Reflection (State Pattern)
  • 5. 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
  • 6. Counter-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
  • 7. 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
  • 8. Counter-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
  • 9. Anti-pattern: Monolith • 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
  • 10. Counter-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
  • 11. Anti-pattern: Buried Treasure • 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
  • 12. Counter-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
  • 13. 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
  • 14. Counter-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
  • 15. 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
  • 16. Counter-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
  • 22. Why OSGi? • OSGi Compendium APIs 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 Ops • 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 • 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
  • 23. LiveOps Winterfell Project • Benefits – Wrap all existing services with APIs (voice, messaging, data, monitoring, etc.) and provide them to LO developers in a consistent way – 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 – 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 7 – Felix 4 / OSGi Core+Compendium 4.3
  • 24. Winterfell Framework Code Generation Platform Services • 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 Deployment Pipeline • Continuous integration • New server gets all bits and activates one Arya service per container Monitoring Raven Event Bus • All events contractually defined • Send/receive using Event Admin + RabbitMQ • Monitor Admin implementation sends events from all services to monitoring pipeline
  • 25. Winterfell API Layers External APIs Resource Model APIs Base Services APIs Container APIs
  • 26. Winter Gem – Open Source Container Management • System for deploying Winterfell OSGi containers of varying configurations • Based on Felix OSGi Runtime • Containers are defined by configuration files – Winterfile defines OSGi bundles to be downloaded and added to container at runtime • POM files also supported – ERB templates used to generate configuration files – JSON files supply configuration substitutions • This is now open source software; please use it / fork it, and send us your pull requests! – See: https://github.com/liveops/winter
  • 27. LoCo Framework: API Code Generation JSON IDL JavaScript library Int_gen_code.rb Java Bean and Implementation classes Test HTML + JavaScript + deployable site project
  • 28. Runtime API Operation Dynamic REST API Endpoint App JSON IDL API Services Manager - 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 Resource ID Service Res. Bean Resource Impl. Legacy Service 1 Legacy Service 2
  • 29. Migration Stage 1: API New Application 1 Old Application 1 Old Application 2 Svc. 1 Svc. 2 Svc. 3 Svc. 4 DB
  • 30. Migration Stage 2: Service Ports New Application 1 Old Application 1 Old Application 2 Svc. 1 Svc. 2 Svc. 3 Svc. 3 Svc. 4 Svc. 4 DB
  • 31. Migration Stage 3: App Ports New Application 1 New Application 2 Old Application 1 Old Application 2 Svc. 1 Svc. 2 Svc. 3 Svc. 1 Svc. 4 Svc. 2 Svc. 3 Svc. 4 DB
  • 32. Next Steps • Release more OSS Projects – Raven Event Bus – Code Generator and API Services Manager • Complete API coverage of platform elements • Converge more services / simplify • Launch application ecosystem for customers/partners • Hire more API developers!
  • 33. Q&A