Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

JIRA Virtualisation

5.131 visualizaciones

Publicado el

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

Publicado en: Empresariales, Tecnología
  • Sé el primero en comentar

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)

×