The Eclipse Virgo Experience at CME Group Jan Fetyko 03/29/2012.

Slides:



Advertisements
Similar presentations
CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance.
Advertisements

Configuration management
QA practitioners viewpoint
CA's Management Database (MDB): The EITM Foundation -WO108SN.
CME Group Weather Derivatives
Developing in CAS. Why? As distributed you edit CAS 3 with Eclipse and build with Maven 2 – Best Practice for Release Engineering – Difficult edit-debug.
CSS: where do we want to go? Gabriele Carcassi Contributions from: Gabriele Carcassi, Kunal Shroff – BNL Jan Hatje – DESY Kay Kasemir – ORNL.
Getting In and Out of Futures Contracts By Peter Lang and Chris Schafer.
CPSC 875 John D. McGregor Architecture evolution.
Abraham Investment Management Principles of Winning.
1 The IIPC Web Curator Tool: Steve Knight The National Library of New Zealand Philip Beresford and Arun Persad The British Library An Open Source Solution.
DEV392: Extending SharePoint Products And Technologies Through Web Parts And ASP.NET Clint Covington, Program Manager Data And Developer Services - Office.
Apache Axis2 - OSGi Integration in WSO2 Carbon Platform
Lesson 18: Configuring Application Restriction Policies
ESupport Shifting Customers to the Internet for Support Published: January 2002.
Spring Dynamic Modules. Startlocation: Documentation: /1.2.1/reference/html/
Agile Testing with Testing Anywhere The road to automation need not be long.
High Risk Investment Disclaimer Trading foreign exchange on margin carries a high level of risk, and may not be suitable for all investors. The high degree.
Talend 5.4 Architecture Adam Pemble Talend Professional Services.
CME Group Henry Hub June 12, 2014.
Struts 2.0 an Overview ( )
How WebMD Maintains Operational Flexibility with NoSQL Rajeev Borborah, Sr. Director, Engineering Matt Wilson – Director, Production Engineering – Consumer.
Agenda Introduction to the Guidewire platform
CME FX Business overview ACI FX Committee Moscow Roger Rutherford – Global Head of FX Products 17 March 2011.
UPortal 3 – What's New? JA-SIG Conference, Spring 2008 uPortal What's New? Eric Dalquist University of Wisconsin - Madison.
Kuali Rice at Indiana University Rice Setup Options July 29-30, 2008 Eric Westfall.
Chapter 1 Introduction Options, Futures, and Other Derivatives, 8th Edition, Copyright © John C. Hull
What’s new in Stack 3.2 Michael Youngstrom. Disclaimer This IS a presentation – So sit back and relax Please ask questions.
Platform Upgrades As A Service Raj Nagarajan, Robert Enyedi.
Msdevcon.ru#msdevcon. ОПЫТ ИСПОЛЬЗОВАНИЯ GIT КОМАНДОЙ РАЗРАБОТКИ MSN Евгений Чигиринский Microsoft Corp.
 To explain the importance of software configuration management (CM)  To describe key CM activities namely CM planning, change management, version management.
Risk Management For Agricultural Markets Steven Stasys +1 September, 10th 2015.
Extending ArcGIS for Server
Review: OSGi – a component framework for Java Bundle OSGi Framework Bundle Java Runtime Environment (JRE) Operating System (OS) Hardware “Dynamic Modules.
MCS 270 Spring 2014 Object-Oriented Software Development.
Nobody’s Unpredictable Ipsos Portals. © 2009 Ipsos Agenda 2 Knowledge Manager Archway Summary Portal Definition & Benefits.
Configuration Management (CM)
Best Practices and Pitfalls for Building Products out of OpenDaylight Colin Dixon,TSC Chair, OpenDaylight Principal Software Engineer, Brocade Devin Avery,Sr.
OSGi Enablement for Tuscany Raymond Feng. Overview.
Dr. Tom WayCSC Testing and Test-Driven Development CSC 4700 Software Engineering Based on Sommerville slides.
In Pieces Breaking down monolithic applications with Spring-DM and OSGi.
Solution Architecture
CAS Lightning Talk Jasig-Sakai 2012 Tuesday June 12th 2012 Atlanta, GA Andrew Petro - Unicon, Inc.
Copyright © IBM Corp., All rights reserved. From SWT to RCP: Experiences implementing RSSOwl 2.0 with RCP Benjamin Pasero.
| JavaOne 2003 | Session #1870 Massive Scale Deployments Tips, Tricks, & Pitfalls Stephen Davidson Principal Associate Stephen Davidson & Associates, Inc.
Kako razvijate PL/SQL pakete? File based PL/SQL development Mitja Golouh SIOUG 2006,
Build Your Business by making the Right Connections.
Plug-in Architectures Presented by Truc Nguyen. What’s a plug-in? “a type of program that tightly integrates with a larger application to add a special.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Testing Spring Applications Unit Testing.
02 | Things to consider when porting Michael “Mickey” MacDonald | Indie game developer Bryan Griffiths | Software Engineer/Game Developer.
Introduction to OSGi +ActorFrame Surya Bahadur Kathayat
GROUP PresentsPresents. WEB CRAWLER A visualization of links in the World Wide Web Software Engineering C Semester Two Massey University - Palmerston.
Google Code Libraries Dima Ionut Daniel. Contents What is Google Code? LDAPBeans Object-ldap-mapping Ldap-ODM Bug4j jOOR Rapa jongo Conclusion Bibliography.
8/29/10 Maven Repository Management with Nexus Jim McMahon.
Core Concepts of ACCOUNTING INFORMATION SYSTEMS Moscove, Simkin & Bagranoff John Wiley & Sons, Inc. Developed by: S. Bhattacharya, Ph.D. Florida Atlantic.
Reporting Services 2012 Data Alerts
Build Automation with Gradle
Docker Birthday #3.
Overall Architecture and Component Model
CME Group Futures, Options, and the Cattle Crush
Configuration Management with Azure Automation DSC
Change Deployment in ServiceN w
Introduction to J2EE Architecture
Enterprise Application Architecture
Developer Patterns to Integrate Silverlight 4.0 with SharePoint 2010
11/23/2018 3:03 PM © Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN.
Visual Studio 2010 SharePoint Development Tools Overview
Discussing an OVS/OVN Split
Building global and highly-available services using Windows Azure
Microsoft Data Insights Summit
Presentation transcript:

The Eclipse Virgo Experience at CME Group Jan Fetyko 03/29/2012

© 2012 CME Group. All rights reserved 2 CME Group CME Group, formerly known as Chicago Mercantile Exchange Holdings Inc., was founded in 1898 and operates the CME, CBOT, NYMEX, and COMEX regulatory exchanges worldwide. It is the world’s leading derivatives marketplace with ~2500 full time employees and a market capitalization of over $15B.

© 2012 CME Group. All rights reserved 3 About our application Development strategy Getting it running in Virgo Web Layer Impact on our team Topics

© 2012 CME Group. All rights reserved 4 Surveillance tool – monitors the state of exchange and the market Rewrite of an existing (legacy J2EE) app Many services Web application(s) that use the services Uses: Spring, JDBC, LDAP, EHCache, H2, c3p0, Apache Tiles, snaps About our application

Development strategy

© 2012 CME Group. All rights reserved Split all functionality into services / bundles Defined interfaces for services Skeletons only 6 AuthenticationAuthorizationConfigurationCachingDatasourceMetricsTradesOrdersMarket InfoNotificationsQuotesPositions

© 2012 CME Group. All rights reserved Implemented the interfaces NO OSGi Not running in Virgo Unit tests with mocks 7 AuthenticationAuthorizationConfigurationCachingDatasourceMetricsTradesOrdersMarket InfoNotificationsQuotesPositions

Getting it running in Virgo

© 2012 CME Group. All rights reserved Running in Virgo Most bundles deployed and started without problems Exposed and used implementations 3 rd party libs a big pain 9 Virgo    AuthenticationAuthorizationConfigurationCachingDatasourceMetricsTradesOrdersMarket InfoNotificationsQuotesPositions

© 2012 CME Group. All rights reserved Breaking in Virgo Exposed and used implementations 10 Unable to satisfy dependencies of bundle 'impl-use' at version '1.0.0': Cannot resolve: impl-use Resolver report: An Import-Package could not be resolved. Caused by missing constraint in bundle constraint: Solution Anything internal needs to stay internal Even a factory should be a “service”: Interface + Impl Should prevent others to see what is inside the bundle

© 2012 CME Group. All rights reserved 11 Not OSGi-fyied Works great as long as no replication is needed Replication using RMI probably works fine Replication setup fails if using jgroups – it is loaded using Class.forName(…) cacheEventListenerFactory.setClass("net.sf.ehcache.distribution.jgroups.JGroupsC acheReplicatorFactory"); Ehcache-jgroups classes are not in Import-Package, it will throw ClassNotFoundException Also, ehcache-jgroupsreplication.jar is not OSGi-fyied Solution Use bnd tool to modify ehcache jar(s) Create a bnd tool accepted settings file Push the new ehcache jar into common place (maven repo, git) Breaking in Virgo 3 rd party libraries : EHCache

© 2012 CME Group. All rights reserved 12 Bundle-SymbolicName: ehcache-core Bundle-Version: Bundle-Name: ehcache-core Bundle-ManifestVersion: 2 Implementation-Version: Implementation-Title: EH Cache Core Export-Package: *;version=2.3.1 Import-Package: org.jgroups.util,* Breaking in Virgo 3 rd party libraries : EHCache ehcache bnd tool properties

© 2012 CME Group. All rights reserved 13 Bundle-SymbolicName: net.sf.ehcache.jgroupsreplication Bundle-Version: 1.4 Bundle-Name: net.sf.ehcache.jgroupsreplication Implementation-Version: 1.4 Implementation-Title: EH Cache jGroups Replication Export-Package: *;version=1.4 Breaking in Virgo 3 rd party libraries : EHCache bnd tool properties for ehcache-jgroupsreplication

© 2012 CME Group. All rights reserved What is happening in caching service Caching Service On Node 2 XYZ Service On Node 1 Objects Serialize Deserialize ClassNotFoundException in ehcache bundle Caching Service On Node 1

© 2012 CME Group. All rights reserved 15 Replication is possible only for objects known to ehcache Deserialization of keys and values fails with ClassNotFoundException, because your classes are not in the Import-Package Solution Store only objects that are known to ehcache – serialize and deserialize them manually Breaking in Virgo 3 rd party libraries : EHCache

© 2012 CME Group. All rights reserved 16 Solution - continued Public interface CachingService { CacheElement get(CacheKey key) } public interface CacheElement { Object getValue(Class classLoadingClass); } Breaking in Virgo 3 rd party libraries : EHCache

© 2012 CME Group. All rights reserved 17 It is easier than bnd tool Faster results You will learn a lot about MANIFEST.MF which is essential to know OSGi anyway Most changed settings Import-Package Export-Package Version(s) Breaking in Virgo 3 rd party libraries : MANIFEST.MF After hacking the MANIFEST.MF Use bnd tool to have repeatable results

Web Layer

© 2012 CME Group. All rights reserved 19 Web Layer snap 1 snap 2 snap {n} host Virgo snaps

© 2012 CME Group. All rights reserved 20 Web Layer snap 1 snap {n} host Apache Tiles & Spring MVC Shared Tiles Definitions Snap Tiles definitions extend host definitions Fragments: content NavigationAuthorization

© 2012 CME Group. All rights reserved 21 Web Layer Apache Tiles Host Tile Tile fragment

© 2012 CME Group. All rights reserved 22 Design for modularity Understand class loading Understand Manifest If possible use 3 rd party libs that are OSGi ready Avoid serialization across bundles Running in Virgo Mini Lessons learned For Virgo 2.1, we had to dig through the snaps source and request a tag for a version that worked in Virgo 2.1 (currently on Virgo 3.0.1) Snaps + Tiles not the best combination Provides good flexibility Snaps provides a single point of entry (filters, security, etc.) Web Layer

Tooling Development Deployment etc.

© 2012 CME Group. All rights reserved Tools STS (SpringSource Tool Suite) Apache maven + bundlor plugin (SpringSource) maven archetypes to create services and web bundles Flyway for database versioning Firefox + firebug No Virgo tooling or Libra 24

© 2012 CME Group. All rights reserved Developer Workflow Maven + profiles for easy deployment Custom plans in virgo while working on a bundle 25

© 2012 CME Group. All rights reserved Deployment QA and up: Package and deploy everything including Virgo every time Everything is scripted including DB schema update (flyway) QA time is reduced because changes are only made to a well defined set of bundles Risk of running the wrong code in production is reduced to zero by not including the bundle in the deployment package – We have different deployment targets for 2 different internal customers. Their code cannot impact or risk being deployed together in production. 26

© 2012 CME Group. All rights reserved Team OSGi is not the easiest to understand for monolithic app developers Virgo is just like any other container to most users Once basic concepts are established, there are no issues There are few experts who can help everybody else 99% of code is not different from a non-OSGi code We started with 2 people using Virgo, now there are 16 at CME and 6 in Brazil Today we have 37 service bundles and 23 web bundles 27

Conclusions of the Eclipse Virgo experience

© 2012 CME Group. All rights reserved Virgo experience conclusions Did not hit any Virgo bugs (yet), stable, didn’t experience any crashes Problems only come from our code Virgo 3.x release improved memory consumption comparing to 2.1 The learning curve is steep Design for modularity upfront is important Cannot go back to monolithic app 29

Q&A Jan Fetyko

© 2012 CME Group. All rights reserved Give Feedback on the Sessions 1 Sign In: 2 Select Session Evaluate 3 Vote

© 2012 CME Group. All rights reserved 32 Futures trading is not suitable for all investors, and involves the risk of loss. Futures are a leveraged investment, and because only a percentage of a contract’s value is required to trade, it is possible to lose more than the amount of money deposited for a futures position. Therefore, traders should only use funds that they can afford to lose without affecting their lifestyles. And only a portion of those funds should be devoted to any one trade because they cannot expect to profit on every trade. The Globe Logo, CME®, Chicago Mercantile Exchange®, and Globex® are trademarks of Chicago Mercantile Exchange Inc. CBOT® and the Chicago Board of Trade® are trademarks of the Board of Trade of the City of Chicago. NYMEX, New York Mercantile Exchange, and ClearPort are trademarks of New York Mercantile Exchange, Inc. COMEX is a trademark of Commodity Exchange, Inc. CME Group is a trademark of CME Group Inc. All other trademarks are the property of their respective owners. The information within this presentation has been compiled by CME Group for general purposes only. CME Group assumes no responsibility for any errors or omissions. Although every attempt has been made to ensure the accuracy of the information within this presentation, CME Group assumes no responsibility for any errors or omissions. Additionally, all examples in this presentation are hypothetical situations, used for explanation purposes only, and should not be considered investment advice or the results of actual market experience. All matters pertaining to rules and specifications herein are made subject to and are superseded by official CME, CBOT, NYMEX and CME Group rules. Current rules should be consulted in all cases concerning contract specifications.