Date post: | 17-Nov-2014 |
Category: |
Technology |
Upload: | paul-rene-jorgensen |
View: | 2,839 times |
Download: | 0 times |
Distributed Middleware Factory
Ramón Arellano (Accenture) and Paul René Jørgensen (Telenor)
About us
Ramón Arellano
Work experience
6 years of experience as a technical consultant from
Accenture
Paul René Jørgensen
Work experience
5 years of experience from Telenor
Distributed Middleware Factory - definition
• Distributed
– In the geographical sense of the word, i.e. various locations spread around the world
• Middleware
– The communication layer that lets applications interact across hardware and network environments
• Factory
– A facility used to manufacture goods in an effective way, using standardized industrial processes and specialized equipment
Distributed Middleware Factory – definitioncontinued
Multiple teams in different locations,producing software for system integration,on the same platform,using standardized architecture and tools
So what are we going to talk about?
• Middleware platform for Telenor Fixed Line Services
• Metro - A distributed middleware factory
• In this talk we’ll share our experiences from its evolution and some secrets from the past 6 years
Epochs in Metro history
• Epoch 0 – Medieval Age
• Epoch 1 – Gunpowder Age
• Epoch 2 – Enlightenment
• Epoch 3 – Industrial Age
• Epoch 4 – Modern Age
Epoch 0 – Medieval Age
• Year 2000
• Challenges
– Where is the vision for the future?
– Use of the existing middleware platform is not mandatory
– Kings and kingdoms and their point to point integrations
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
The Metro Vision
All integration between systems for Telenor Fixed Line services to be implemented through Metro platform
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
Metro platform goals
• To offer test and production environments to all development project
• To enforce architecture and development standards
• To supply a common set of core components
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
Distributed development model
• The platform is managed and controlled by a small, centralized team
• The Telenor employer selects software supplier
• The software supplier performs the implementation on the platform
Metro
Centralized Platform Team, Oslo, Norway
Delivery Process,Stockholm,
Sweden
Customer Identification,Lillehammer,
Norway
Product Availability,
Halden, Norway
Line Information, Bangalore, India
Order Processing,
Oslo,Norway
60 other services, Oslo,
Norway
60 other services, Oslo,
Norway
60 additioinal services, Oslo,
Norway
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
Distributed vs Centralized
• Employer chooses software supplier
• Development is done where the supplier is
+ Easier to get new developers up and running
÷ Requires a stronger regime and documented standards
• Platform team chooses software supplier
• Development is done in-house
+ Easier communication between all teams involved
÷ Does not scale so easily
PlatformPlatform
EmployerEmployerEmployer
EmployerEmployerSupplier
EmployerEmployerEmployer
EmployerEmployerSupplier
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
Epoch 1 – Gunpowder Age
• Year 2001
• Challenges
– The volume and complexity of Telenor
– Common architecture
– How do we organize SI-testing?
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
Statistics
• In an average hour the platform is processing
– 61 200 web requests from the internet
– 115 200 EJB invocations
– 2 880 000 database queries
– 65 MB log messages (1,5GB in a day)
• Volume
– Over 50 systems integrated
– Average 200 deployments a year
– Over 250 different developers from all over the world have written code
– Metro platform team guides up to 30 teams at the same time
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
Name a technology, and we’ve got it
Technology Protocol
Oracle, Sybase, MySQL, DB2
JDBC, ODBC, DB2Connect
Siebel Siebel XML
IBM Mainframe (MVS) Terminal, Screen Scraping, MQ, CICS
Java J2EE, RMI, Corba
IIS / ASP Proprietary XML(JItegra Java COM bridge)
Web Services SOAP, Proprietary HTTP/XML
Tibco B2B EBXML
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
Layered architecture
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
Informal roles
• Experience has shown us the importance of having roles in a team
• The roles are more or less self imposed
• Examples
– The hardware geek
– The Maven guru
– The support girl
– The documentation dude
– The tool guy
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
Test Environments
• Implementation, building and unit testing on developer’s laptop
• System integration testing on 60 blade servers running the full J2EE runtime environment
– One for each development project!
• Acceptance Test environment administered by the platform team
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
Epoch 2 - Enlightenment
• Year 2002-2003
• Challenges
– We want to be more innovative
– How do we get implementation projects to help develop the platform?
– How do we organize our work and control the deliverables?
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
The 80/20 rule
• Innovative and flexible leaders introduced the 80/20 rule
• Developers were allowed to use 20% of their time to learn and play with new technologies
• Highly motivating, and has undoubtedly been fruitful for Metro
• Technologies such as multicasting (Log), FishEye (CVS), were introduced by experimenting
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
Boiling soup on stone
• The platform team is responsible for setting the standards for many projects and developers
• Dave Thomas's book, “The Pragmatic Programmer”, talks about “boiling soup on stone”
• Introducing new technologies and standards by curiosity and envy
• The whole package more valuable than each part
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
Metro Roadmap
• Our common workflow and methodology for all projects
• A set of phases with corresponding deliverables
• Waterfall model (may jump backwards and iterate)
• Each project gets their own supervisor responsible for QA
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
Roadmap control in Jira
• We’ve got a tool to enforce Metro Roadmap
• Atlassian’s inexpensive, but excellent tool Jira provides workflow functionality
• Controls the flow and stores all document deliverables
• It’s the platform team’s communication channel with development projects
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
Epoch 3 – Industrial Age
• Year 2004-2005
• Challenges
– Lack of documented standards
– New developers must get up and running fast
– We feel we could be more efficient in getting new applications out
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
Document everything
• Roadmap workflow
• Architecture principles
• Development environment setup
• Naming standards
• Step-by-step guidelines
• Testing and debugging
• Building and deployment
• FAQ
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
Documentation in Confluence
• Atlassian’s professional wiki, Confluence, for all documentation
• Wiki: easily updated, everybody gets the current document version
• Ported existing documents from MS Word
• Also used for blogging news and alerts through mailing lists and RSS feeds
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
We use Open Source
• Result of the 80/20 rule
– We’ve found free tools to improve our platform
• We love open source, and we give back
– Maven plugins
– Confluence plugins
– XRadar
– Jira plugins
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
Leading Star Example
• Leading Star Driven development
• Improves application consistency
• TelenorShop – a fictitious application
– It shows live examples of all our common components and frameworks in use
• Source code for all Metro applications is openly available internally
“Take a look at TelenorShop,and see how we’ve done it there”
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
Automation through 3rd party tools
• Automatic builds with unit testing using Maven
• Generating web-site with reports and JavaDoc using Maven
• Continuous integration using CruiseControl
• Mapping between data models using Dozer
• Support request through Jira
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
Automation through self-made tools
• Applying for deployment slots to acceptance test environment
• Generating overview of dependencies between all J2EE applications on server
• Searching logs in all environments
• Updating application configuration
• Backing up WebSphere Application server configuration
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
• A good factory scales easily
• New resources must be brought up to speed – fast
• No development without certification
• J2EE is a prerequisite
• Certification courses for
– Developers (2 day course)
– Project Leads (1 day course)
• 100 certified developers and project leads
Metro Certification
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
• Efficient development
• Consistent solutions
• Stable solutions
• Reusable services
• Better developer attitude
– “Ah, so that’s why we have to...”
• Externals pay a course fee ($)
Other certification benefits
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
Metro Certification content
Metro Supervisors Metro Support
Metro Certification Metro Guidelines
Metro Architecture
Metro Commons Comet
Metro Commons Frameworks
Metro Online Tools
IBM WAS Java SDK / J2EE Security / LDAPCVS and Maven
Repositories
DevelopmentEnvironment
System IntegrationEnvironment
Acceptance TestEnvironment
ProductionEnvironment
Business Logic
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
Epoch 4 – Modern Age
• Right now, right here
• Challenges
– Middleware is only noticed when something goes wrong
– How do we govern dependencies?
– Deployments are held back due to poor code quality
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
Commercialization
• We must learn how to better sell ourselves internally
– We want more applications on the platform and everyone to be aware of what Metro has to offer
• How
– Create a logo
– Offer introduction presentations
– Show off statistics of usage
– Present at JavaZone
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
Service Level Agreements
• SLAs between API owners (the kings)
– Wanted since the medieval age!
– No access to remote API without a signed SLA
• It will give us valuable information about inter-application dependencies
• We must work on enforcing this in the modern age!
– Requires a new tool (Any suggestions?)
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
Code Quality
• Step-up the code QA work
• Make it easier for the reviewers to focus on code that is being altered
– Reviewers are notified immediately on CVS commit
• We’ll introduce Crucible into the review process
– Defines a workflow, creates an arena for dialog
Medieval Age – Gunpowder Age – Enlightenment Age – Industrial Age – Modern Age
Architects must write code
“Real insight comes from active coding”
Practices of an Agile Programmer
Summary
• Key tools
• Key lessons
Key tools
• Confluence (wiki) for documentation
– No delay from writing to publication
• Jira
– No more forgotten issues in inboxes all over the place
– Issue management and process (roadmap) workflow
• Maven
– Stable and proven build system
• Eclipse based IDE
– Allow only one IDE
– Be an expert to support the developers
Key Lessons
• Easy to understand workflow for everybody – Roadmap
• Documented standards and guidelines – Wiki
• And a way to teach them (Certification)
• Decision from the top: All integration between systems to be implemented through the platform