SlideShare uma empresa Scribd logo
1 de 28
© Guidewire Software, Inc. All rights reserved. Do not distribute without permission.
Moving the Guidewire platform to
OSGi
A case study
Paul D’Albora
Guidewire Software
pdalbora@guidewire.com
March 2012
2
© Guidewire Software, Inc. All rights reserved. Do not distribute without permission.
Agenda
• Introduction to the Guidewire platform
• Motivation for moving to OSGi
• Challenges
• Where we are and where we’re going
• Q & (hopefully) A
3
© Guidewire Software, Inc. All rights reserved. Do not distribute without permission.
The Guidewire Platform – Basics
• Supports core system software for the global
property/casualty insurance industry
• Core services: ORM layer, web UI framework,
business rules, workflow, automated upgrade, I18N,
customer plugins, messaging and web services
integration
• High degree of configurability
• Supports multiple JEE containers
4
© Guidewire Software, Inc. All rights reserved. Do not distribute without permission.
The Guidewire Platform – Pressures
• Constantly adding and improving features for
applications
• Must not break existing customers
• Large code base developed over ten years
• Large and growing development team
• All of which can lead to …
5
© Guidewire Software, Inc. All rights reserved. Do not distribute without permission.
6
© Guidewire Software, Inc. All rights reserved. Do not distribute without permission.
7
© Guidewire Software, Inc. All rights reserved. Do not distribute without permission.
Goals
• Test components in isolation
• Reduce learning curve
• Contain maintenance costs
• Release components independently
8
© Guidewire Software, Inc. All rights reserved. Do not distribute without permission.
OSGi
• Module system
• Versioning
• Manageability
• Mature, well-defined specifications
• Robust community
• Services!
9
© Guidewire Software, Inc. All rights reserved. Do not distribute without permission.
Givens
• Application must be delivered as a JEE application
(EAR/WAR)
• Code divided into coarse-grained “modules”
forming a DAG of compile-time dependencies
• Non-Eclipse IDE (no PDE)
• Custom build system
10
© Guidewire Software, Inc. All rights reserved. Do not distribute without permission.
Step 1
11
© Guidewire Software, Inc. All rights reserved. Do not distribute without permission.
Plan
• Run Equinox embedded in JEE container using
servlet bridge
• Define a bundle for each existing code “module”
• Replace/Convert 3rd
-party jars with OSGi equivalents
• Get automated tests running in framework
• DON’T try to modularize yet
12
© Guidewire Software, Inc. All rights reserved. Do not distribute without permission.
Roadblocks
13
© Guidewire Software, Inc. All rights reserved. Do not distribute without permission.
Problem: Split Packages
• Same package exists in multiple modules
• Framework binds to one of them, causing the other
“parts” of the package to effectively disappear
• Typical for platform and one or more applications
to define classes in the same package
• This is pervasive in our code
14
© Guidewire Software, Inc. All rights reserved. Do not distribute without permission.
Solution: Fragments
• Define an empty “root” bundle
• Every bundle is a fragment of root
- Fragment-Host: com.guidewire.root
• Simulates one bundle
• More closely represents original, non-modular,
global classpath environment
15
© Guidewire Software, Inc. All rights reserved. Do not distribute without permission.
Problem: 3rd
-party libraries
• Lots of them (~102
)
• Signed jars
• Classpath assumptions
16
© Guidewire Software, Inc. All rights reserved. Do not distribute without permission.
Solution: Varied
• Public OSGi bundle repositories
– Eclipse Orbit
– SpringSource
• BND
– For signed jars, embed jar within jar and use Bundle-
ClassPath
– Can combine related jars to deal with split packages
• TCCL to work around classpath assumptions
• Newer jars being packaged as OSGi bundles
17
© Guidewire Software, Inc. All rights reserved. Do not distribute without permission.
Problem: Servlets
• No longer registered in web.xml (just the servlet
bridge)
• How to register platform and application servlets
with HttpService
• Ordering requirements (<load-on-startup>)
18
© Guidewire Software, Inc. All rights reserved. Do not distribute without permission.
Solution: Components
• Felix Http Whiteboard
• Declarative Services with Bnd
- @Component(provide=Servlet.class,
properties="alias=/path")
• For ordering-dependent servlets, register in order
with HttpService
- Component with @Reference to HttpService
19
© Guidewire Software, Inc. All rights reserved. Do not distribute without permission.
Practical Tips
• Learn and use BND
• Learn the classloading flow chart (R4.2 Spec, Fig
3.19)
– Turn off osgi.compatibility.bootdelegation,
osgi.context.bootdelegation in Equinox
– No Require-Bundle
• Lean on automated tests
• Use the framework itself
20
© Guidewire Software, Inc. All rights reserved. Do not distribute without permission.
Current Status
• Applications and integration tests running
successfully in development
• Initial performance testing reveals no significant
difference in response times or memory usage
• Rolled out to application teams with minimal
disruption
21
© Guidewire Software, Inc. All rights reserved. Do not distribute without permission.
Next Steps
• Define candidate areas for modularization
• Use services to de-couple components
• Use services to replace ad hoc registries
• Educate developers about service-oriented
programming
22
© Guidewire Software, Inc. All rights reserved. Do not distribute without permission.
Example: Static Service Registry
• Map of interface Class to implementation instance
• Initialized by bootstrap class
• Accessed via static methods
23
© Guidewire Software, Inc. All rights reserved. Do not distribute without permission.
Static Service Registry – Code Sample 1
24
© Guidewire Software, Inc. All rights reserved. Do not distribute without permission.
Static Service Registry – Code Sample 2
25
© Guidewire Software, Inc. All rights reserved. Do not distribute without permission.
Static Service Registry – Code Sample 3
26
© Guidewire Software, Inc. All rights reserved. Do not distribute without permission.
Static Service Registry – Replacement
Questions?
Feedback welcome.
Give Feedback on the Sessions
1
Sign In: www.eclipsecon.org
2
Select Session Evaluate
3
Vote

Mais conteúdo relacionado

Mais procurados

Overview Brochure - VMware Partnership_0
Overview Brochure - VMware Partnership_0Overview Brochure - VMware Partnership_0
Overview Brochure - VMware Partnership_0
Brian Hamilton
 

Mais procurados (20)

The Payer of the Future: Modernizing Health Insurance with API-led Connectivity
The Payer of the Future: Modernizing Health Insurance with API-led ConnectivityThe Payer of the Future: Modernizing Health Insurance with API-led Connectivity
The Payer of the Future: Modernizing Health Insurance with API-led Connectivity
 
Testing & Compliance Challenges for Healthcare in the Cloud
Testing & Compliance Challenges for Healthcare in the CloudTesting & Compliance Challenges for Healthcare in the Cloud
Testing & Compliance Challenges for Healthcare in the Cloud
 
Spira Test Overview Presentation
Spira Test Overview PresentationSpira Test Overview Presentation
Spira Test Overview Presentation
 
Webinar 3: Five Essentials to Requirements Management
Webinar 3: Five Essentials to Requirements ManagementWebinar 3: Five Essentials to Requirements Management
Webinar 3: Five Essentials to Requirements Management
 
eFolder Partner Chat Webinar — Happy Together: Integrating Managed File Sync ...
eFolder Partner Chat Webinar — Happy Together: Integrating Managed File Sync ...eFolder Partner Chat Webinar — Happy Together: Integrating Managed File Sync ...
eFolder Partner Chat Webinar — Happy Together: Integrating Managed File Sync ...
 
What Patterns to Avoid in Agile Ceremonies?
What Patterns to Avoid in Agile Ceremonies?What Patterns to Avoid in Agile Ceremonies?
What Patterns to Avoid in Agile Ceremonies?
 
Progress Pacific: Contemporary App Development
Progress Pacific: Contemporary App DevelopmentProgress Pacific: Contemporary App Development
Progress Pacific: Contemporary App Development
 
How DevOps works in MOKA
How DevOps works in MOKAHow DevOps works in MOKA
How DevOps works in MOKA
 
Roadmap 101 of the ServiceNow business platform
Roadmap 101 of the ServiceNow business platformRoadmap 101 of the ServiceNow business platform
Roadmap 101 of the ServiceNow business platform
 
Catalyst Accelerate for Healthcare
Catalyst Accelerate for HealthcareCatalyst Accelerate for Healthcare
Catalyst Accelerate for Healthcare
 
SpiraPlan - Top Productivity Boosting Features
SpiraPlan - Top Productivity Boosting FeaturesSpiraPlan - Top Productivity Boosting Features
SpiraPlan - Top Productivity Boosting Features
 
Operationalizing your Virtual Network: Getting to the Next Level with SDN/NFV...
Operationalizing your Virtual Network: Getting to the Next Level with SDN/NFV...Operationalizing your Virtual Network: Getting to the Next Level with SDN/NFV...
Operationalizing your Virtual Network: Getting to the Next Level with SDN/NFV...
 
Always-On Services for Consumer Web, Mobile and the Internet of Things
Always-On Services for Consumer Web, Mobile and the Internet of ThingsAlways-On Services for Consumer Web, Mobile and the Internet of Things
Always-On Services for Consumer Web, Mobile and the Internet of Things
 
Overview Brochure - VMware Partnership_0
Overview Brochure - VMware Partnership_0Overview Brochure - VMware Partnership_0
Overview Brochure - VMware Partnership_0
 
NERC CIP - Top Testing & Compliance Challenges, How to Address Them
NERC CIP - Top Testing & Compliance Challenges, How to Address ThemNERC CIP - Top Testing & Compliance Challenges, How to Address Them
NERC CIP - Top Testing & Compliance Challenges, How to Address Them
 
Ensuring Project Success with SpiraTeam and Rapise from Inflectra pta - short
Ensuring Project Success with SpiraTeam and Rapise from Inflectra   pta - shortEnsuring Project Success with SpiraTeam and Rapise from Inflectra   pta - short
Ensuring Project Success with SpiraTeam and Rapise from Inflectra pta - short
 
SpiraTeam Overview Presentation (2019)
SpiraTeam Overview Presentation (2019)SpiraTeam Overview Presentation (2019)
SpiraTeam Overview Presentation (2019)
 
Building excellence in support
Building excellence in supportBuilding excellence in support
Building excellence in support
 
Moving from a Data Center to a Hybrid IT Environment Securely
Moving from a Data Center to a Hybrid IT Environment SecurelyMoving from a Data Center to a Hybrid IT Environment Securely
Moving from a Data Center to a Hybrid IT Environment Securely
 
Enhancing QA Strategy to Achieve Agile Quality Engineering
Enhancing QA Strategy to Achieve Agile Quality Engineering Enhancing QA Strategy to Achieve Agile Quality Engineering
Enhancing QA Strategy to Achieve Agile Quality Engineering
 

Semelhante a Moving the Guidewire platform to OSGi - Paul D'Albora

Amazon Web Services and PaaS - Enterprise Java for the Cloud Era? - Mark Pric...
Amazon Web Services and PaaS - Enterprise Java for the Cloud Era? - Mark Pric...Amazon Web Services and PaaS - Enterprise Java for the Cloud Era? - Mark Pric...
Amazon Web Services and PaaS - Enterprise Java for the Cloud Era? - Mark Pric...
jaxconf
 
OSGi Best Practices – Learn how to prevent common mistakes and build robust, ...
OSGi Best Practices – Learn how to prevent common mistakes and build robust, ...OSGi Best Practices – Learn how to prevent common mistakes and build robust, ...
OSGi Best Practices – Learn how to prevent common mistakes and build robust, ...
mfrancis
 

Semelhante a Moving the Guidewire platform to OSGi - Paul D'Albora (20)

DevOps / Agile Tools Seminar 2013
DevOps / Agile Tools Seminar 2013DevOps / Agile Tools Seminar 2013
DevOps / Agile Tools Seminar 2013
 
Amazon Web Services and PaaS - Enterprise Java for the Cloud Era? - Mark Pric...
Amazon Web Services and PaaS - Enterprise Java for the Cloud Era? - Mark Pric...Amazon Web Services and PaaS - Enterprise Java for the Cloud Era? - Mark Pric...
Amazon Web Services and PaaS - Enterprise Java for the Cloud Era? - Mark Pric...
 
OSGi Best Practices – Learn how to prevent common mistakes and build robust, ...
OSGi Best Practices – Learn how to prevent common mistakes and build robust, ...OSGi Best Practices – Learn how to prevent common mistakes and build robust, ...
OSGi Best Practices – Learn how to prevent common mistakes and build robust, ...
 
How Oracle Integrates Accessibility into the Development Process
How Oracle Integrates Accessibility into the Development ProcessHow Oracle Integrates Accessibility into the Development Process
How Oracle Integrates Accessibility into the Development Process
 
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...
Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...
Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...
 
The Rocky Cloud Road
The Rocky Cloud RoadThe Rocky Cloud Road
The Rocky Cloud Road
 
Melhore o Desenvolvimento do Time com DevOps na Nuvem
Melhore o Desenvolvimento do Time com DevOps na NuvemMelhore o Desenvolvimento do Time com DevOps na Nuvem
Melhore o Desenvolvimento do Time com DevOps na Nuvem
 
Oracle ADF Architecture TV - Development - Version Control
Oracle ADF Architecture TV - Development - Version ControlOracle ADF Architecture TV - Development - Version Control
Oracle ADF Architecture TV - Development - Version Control
 
From ci to cd
From ci to cdFrom ci to cd
From ci to cd
 
Mulesoft Meetup Roma - Monitoring Framework & DevOps.pptx
Mulesoft Meetup Roma - Monitoring Framework & DevOps.pptxMulesoft Meetup Roma - Monitoring Framework & DevOps.pptx
Mulesoft Meetup Roma - Monitoring Framework & DevOps.pptx
 
Use Case: Building OSGi Enterprise Applications (QCon 14)
Use Case: Building OSGi Enterprise Applications (QCon 14)Use Case: Building OSGi Enterprise Applications (QCon 14)
Use Case: Building OSGi Enterprise Applications (QCon 14)
 
Building Modular Enterprise Applications - C Ziegeler
Building Modular Enterprise Applications - C ZiegelerBuilding Modular Enterprise Applications - C Ziegeler
Building Modular Enterprise Applications - C Ziegeler
 
Hyd virtual meetupslides11jul
Hyd virtual meetupslides11julHyd virtual meetupslides11jul
Hyd virtual meetupslides11jul
 
Alexyj Kovaliov "Waterfalling to Agile"
Alexyj Kovaliov "Waterfalling to Agile" Alexyj Kovaliov "Waterfalling to Agile"
Alexyj Kovaliov "Waterfalling to Agile"
 
Creative Automation with Galen Framework
Creative Automation with Galen FrameworkCreative Automation with Galen Framework
Creative Automation with Galen Framework
 
Introduction To Groovy And Grails - SpringPeople
Introduction To Groovy And Grails - SpringPeopleIntroduction To Groovy And Grails - SpringPeople
Introduction To Groovy And Grails - SpringPeople
 
Deploying Stateful Applications Securely & Confidently with Ondat & Weave GitOps
Deploying Stateful Applications Securely & Confidently with Ondat & Weave GitOpsDeploying Stateful Applications Securely & Confidently with Ondat & Weave GitOps
Deploying Stateful Applications Securely & Confidently with Ondat & Weave GitOps
 
Deployit Product Demo
Deployit Product DemoDeployit Product Demo
Deployit Product Demo
 

Mais de 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
 
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
 
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
 

Mais de 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)
 

Último

Último (20)

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...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
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
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
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
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 

Moving the Guidewire platform to OSGi - Paul D'Albora

  • 1. © Guidewire Software, Inc. All rights reserved. Do not distribute without permission. Moving the Guidewire platform to OSGi A case study Paul D’Albora Guidewire Software pdalbora@guidewire.com March 2012
  • 2. 2 © Guidewire Software, Inc. All rights reserved. Do not distribute without permission. Agenda • Introduction to the Guidewire platform • Motivation for moving to OSGi • Challenges • Where we are and where we’re going • Q & (hopefully) A
  • 3. 3 © Guidewire Software, Inc. All rights reserved. Do not distribute without permission. The Guidewire Platform – Basics • Supports core system software for the global property/casualty insurance industry • Core services: ORM layer, web UI framework, business rules, workflow, automated upgrade, I18N, customer plugins, messaging and web services integration • High degree of configurability • Supports multiple JEE containers
  • 4. 4 © Guidewire Software, Inc. All rights reserved. Do not distribute without permission. The Guidewire Platform – Pressures • Constantly adding and improving features for applications • Must not break existing customers • Large code base developed over ten years • Large and growing development team • All of which can lead to …
  • 5. 5 © Guidewire Software, Inc. All rights reserved. Do not distribute without permission.
  • 6. 6 © Guidewire Software, Inc. All rights reserved. Do not distribute without permission.
  • 7. 7 © Guidewire Software, Inc. All rights reserved. Do not distribute without permission. Goals • Test components in isolation • Reduce learning curve • Contain maintenance costs • Release components independently
  • 8. 8 © Guidewire Software, Inc. All rights reserved. Do not distribute without permission. OSGi • Module system • Versioning • Manageability • Mature, well-defined specifications • Robust community • Services!
  • 9. 9 © Guidewire Software, Inc. All rights reserved. Do not distribute without permission. Givens • Application must be delivered as a JEE application (EAR/WAR) • Code divided into coarse-grained “modules” forming a DAG of compile-time dependencies • Non-Eclipse IDE (no PDE) • Custom build system
  • 10. 10 © Guidewire Software, Inc. All rights reserved. Do not distribute without permission. Step 1
  • 11. 11 © Guidewire Software, Inc. All rights reserved. Do not distribute without permission. Plan • Run Equinox embedded in JEE container using servlet bridge • Define a bundle for each existing code “module” • Replace/Convert 3rd -party jars with OSGi equivalents • Get automated tests running in framework • DON’T try to modularize yet
  • 12. 12 © Guidewire Software, Inc. All rights reserved. Do not distribute without permission. Roadblocks
  • 13. 13 © Guidewire Software, Inc. All rights reserved. Do not distribute without permission. Problem: Split Packages • Same package exists in multiple modules • Framework binds to one of them, causing the other “parts” of the package to effectively disappear • Typical for platform and one or more applications to define classes in the same package • This is pervasive in our code
  • 14. 14 © Guidewire Software, Inc. All rights reserved. Do not distribute without permission. Solution: Fragments • Define an empty “root” bundle • Every bundle is a fragment of root - Fragment-Host: com.guidewire.root • Simulates one bundle • More closely represents original, non-modular, global classpath environment
  • 15. 15 © Guidewire Software, Inc. All rights reserved. Do not distribute without permission. Problem: 3rd -party libraries • Lots of them (~102 ) • Signed jars • Classpath assumptions
  • 16. 16 © Guidewire Software, Inc. All rights reserved. Do not distribute without permission. Solution: Varied • Public OSGi bundle repositories – Eclipse Orbit – SpringSource • BND – For signed jars, embed jar within jar and use Bundle- ClassPath – Can combine related jars to deal with split packages • TCCL to work around classpath assumptions • Newer jars being packaged as OSGi bundles
  • 17. 17 © Guidewire Software, Inc. All rights reserved. Do not distribute without permission. Problem: Servlets • No longer registered in web.xml (just the servlet bridge) • How to register platform and application servlets with HttpService • Ordering requirements (<load-on-startup>)
  • 18. 18 © Guidewire Software, Inc. All rights reserved. Do not distribute without permission. Solution: Components • Felix Http Whiteboard • Declarative Services with Bnd - @Component(provide=Servlet.class, properties="alias=/path") • For ordering-dependent servlets, register in order with HttpService - Component with @Reference to HttpService
  • 19. 19 © Guidewire Software, Inc. All rights reserved. Do not distribute without permission. Practical Tips • Learn and use BND • Learn the classloading flow chart (R4.2 Spec, Fig 3.19) – Turn off osgi.compatibility.bootdelegation, osgi.context.bootdelegation in Equinox – No Require-Bundle • Lean on automated tests • Use the framework itself
  • 20. 20 © Guidewire Software, Inc. All rights reserved. Do not distribute without permission. Current Status • Applications and integration tests running successfully in development • Initial performance testing reveals no significant difference in response times or memory usage • Rolled out to application teams with minimal disruption
  • 21. 21 © Guidewire Software, Inc. All rights reserved. Do not distribute without permission. Next Steps • Define candidate areas for modularization • Use services to de-couple components • Use services to replace ad hoc registries • Educate developers about service-oriented programming
  • 22. 22 © Guidewire Software, Inc. All rights reserved. Do not distribute without permission. Example: Static Service Registry • Map of interface Class to implementation instance • Initialized by bootstrap class • Accessed via static methods
  • 23. 23 © Guidewire Software, Inc. All rights reserved. Do not distribute without permission. Static Service Registry – Code Sample 1
  • 24. 24 © Guidewire Software, Inc. All rights reserved. Do not distribute without permission. Static Service Registry – Code Sample 2
  • 25. 25 © Guidewire Software, Inc. All rights reserved. Do not distribute without permission. Static Service Registry – Code Sample 3
  • 26. 26 © Guidewire Software, Inc. All rights reserved. Do not distribute without permission. Static Service Registry – Replacement
  • 28. Give Feedback on the Sessions 1 Sign In: www.eclipsecon.org 2 Select Session Evaluate 3 Vote

Notas do Editor

  1. We’re all probably familiar with this metaphor. It’s a natural consequence of code evolution without proper boundaries. Tug on one strand and you affect something on the other side of the “plate.” And we all know where this leads…
  2. Leads to frustration for new developers
  3. Understanding the pressures we face on the platform team, and that those are only likely to increase, we defined some goals we’d like to have in order to survive. Testing in isolation: we invest a lot in automated testing. Over time, more and more of our tests have had to be written as integration / end-to-end tests. We attempted to use mocks for more “unit” style testing, but our components are not de-coupled enough for that to work. New developers face a daunting challenge. No clear APIs, sub-systems tightly coupled Fixing bugs often requires knowledge over a broad area of the platform Platform must be delivered as a monolith
  4. We decided to go with OSGi Module system provides a way to define boundaries and enforce them Has momentum Manageability is a big advantage – modular architecture allows for wide array of introspection tools Service layer is a simple but extremely powerful way of de-coupling code. Combined with Declarative Services, it is the most exciting aspect for us.
  5. How are we going to get there? Here’s what we’ve got to work with. Customers familiar with and have expertise with managing their own JEE application servers. From their point-of-view, it’s still just a WAR. PL, apps depend on PL For development, no access to PDE Custom, script-based build system
  6. First step is get the platform and applications running in OSGi: replace the foundation
  7. Just want to get the framework in place and prove that it can work.
  8. Renaming packages is not an option at this point. Neither is co-locating the packages. This is not unusual when the package doesn’t mean much.
  9. Last point is important in light of our goal: get platform running in OSGi framework without breaking existing code.
  10. Learned about unresolved dependencies, duplicate packages/classes
  11. Entry points to the applications
  12. Not yet released to customers