JIRA
VIRTUALISATION
GOAL:
2 Customers In
 1 JIRA Install
WTF?
Normal JIRA

                        Files &
        Database       Indexes

     Application Data - Spring JIRA

        ...
Two Customers


                      Files &                                    Files &
         Database Indexes        ...
JIRA Virtual Machines

     Database       Files         Database       Files
     spring-db /data/spring       apache-db ...
Challenges
static = f!*k
Thread = holy f!*k
How?
• VirtualisationLoader loads VirtualMachines
• VirtualisationLoader chooses VirtualMachine by
  host name
  ... could...
Configuration
    Each VM configured in a single XML snippet.




- Configures OFBiz, OSUser etc automatically
- Minimum poss...
JIRA Changes
•   No more static caches!
    ... looked through 6,700 ‘static’ in *.java

•   38 code changes in JIRA + 4 l...
Demo
Results
Neat Features
•   VMs can use different user management
    eg Crowd in one, OFBiz + OSuser in other

•   Simpler setup th...
Func Tests?


 ~90% Pass
Against 2 VMs in parallel!
   * Never ran them before though - probably not 100%!
Java VM                           JIRAs                    Memory
                1                              1        ...
Upcoming SlideShare
Loading in...5
×

JIRA Virtualisation

4,470

Published on

Virtualising JIRA (a large J2EE application) by modifying it to have multiple customer 'machines' with in a single deployed WAR context.

Published in: Business, Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,470
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
72
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

JIRA Virtualisation

  1. 1. JIRA VIRTUALISATION
  2. 2. GOAL: 2 Customers In 1 JIRA Install
  3. 3. WTF?
  4. 4. Normal JIRA Files & Database Indexes Application Data - Spring JIRA Context - /build/jira.war Tomcat - http://jira.spring.com Java Virtual Machine - /Library/Java/Home
  5. 5. Two Customers Files & Files & Database Indexes Database Indexes Application Data Application Data Spring JIRA Apache JIRA Context - /build/jira.war Context - /build/jira.war Tomcat - http://jira.spring.com Tomcat - http://jira.apache.org Java Virtual Machine - /Library/Java/Home Java Virtual Machine - /Library/Java/Home
  6. 6. JIRA Virtual Machines Database Files Database Files spring-db /data/spring apache-db /data/apache Application Data Application Data Spring JIRA Apache JIRA http://jira.spring.com http://jira.apache.org Context - /build/jira.war Tomcat - http://*.com Java Virtual Machine - /Library/Java/Home One Java VM. One Tomcat. One WAR. Two Hosts.
  7. 7. Challenges
  8. 8. static = f!*k
  9. 9. Thread = holy f!*k
  10. 10. How? • VirtualisationLoader loads VirtualMachines • VirtualisationLoader chooses VirtualMachine by host name ... could be any request attr • Internal resources chosen by current VM eg PicoContainer, OSUser, OFBiz, Datasource, File Locations... • Scheduler runs for every VM
  11. 11. Configuration Each VM configured in a single XML snippet. - Configures OFBiz, OSUser etc automatically - Minimum possible config (ie automatic <delegator>!) - Can use any osuser.xml inside <user-management>
  12. 12. JIRA Changes • No more static caches! ... looked through 6,700 ‘static’ in *.java • 38 code changes in JIRA + 4 libs • No more singletons ie UserManager.getInstance() result based on VM • PicoContainer magic - per VM containers • EntityEngine configuration generated ... modified OFBiz so EE now reloadable! • Fixed 7 year old loading bug in OFBizPropertySet
  13. 13. Demo
  14. 14. Results
  15. 15. Neat Features • VMs can use different user management eg Crowd in one, OFBiz + OSuser in other • Simpler setup than normal JIRA • VMs can be loaded / unloaded on the fly eg move a JIRA VM from one physical server to another without unloading Java VM • JIRA VMs can be “loaded” off the internet!
  16. 16. Func Tests? ~90% Pass Against 2 VMs in parallel! * Never ran them before though - probably not 100%!
  17. 17. Java VM JIRAs Memory 1 1 40MB 4 4 170MB 1 4 80MB * HSQLDB so the data here is all in memory (I suspect results would be much better with MySQL) ** Used data from Extranet JIRA (approx 1000 issues, 20 projects, 250 users)
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×