Your SlideShare is downloading. ×
JIRA Virtualisation
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

JIRA Virtualisation

4,377
views

Published on

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

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,377
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
72
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. JIRA VIRTUALISATION
  • 2. GOAL: 2 Customers In 1 JIRA Install
  • 3. WTF?
  • 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. 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. 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. Challenges
  • 8. static = f!*k
  • 9. Thread = holy f!*k
  • 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. 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. 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. Demo
  • 14. Results
  • 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. Func Tests? ~90% Pass Against 2 VMs in parallel! * Never ran them before though - probably not 100%!
  • 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)