jazoon'13 - nikita salnikov-tarnovski - multiplatform java application development
DESCRIPTION
TRANSCRIPT
Multiplatform Java application developmentNikita Salnikov-Tarnovski@iNikemhttp://plumbr.eu
Monday, October 21, 13
• Estonian startup trying to solve performance problems
• We started with memory leaks and solved them :)
• Ongoing effort, more problems to be solved
|
Plumbr company
Monday, October 21, 13
• Java agent, runs alongside your application
• Uses Instrumentation API to hook into your code
• Native counterpart in platform-specific C code
|
Plumbr software
Monday, October 21, 13
• To support java 5, 6, 7, JRockit, IBM JVM
• To support Windows, Linux, Mac OS X, Solaris Sparc and Solaris x86
• Not the last versions only
|
“External” Goals
Monday, October 21, 13
• Build infrastructure as automated as possible
• Automatic tests on all platforms
• Release maintenance vs future development
• Traceability
|
“Inner” goals
Monday, October 21, 13
|
Forward Traceability
Monday, October 21, 13
Backward traceability
|
1.2 1.3 2.0 2.1 2.1.3
Monday, October 21, 13
Our team
|
Monday, October 21, 13
One
|
Monday, October 21, 13
Two
|
Monday, October 21, 13
Virtually three
|
Monday, October 21, 13
Mini hero
|
Monday, October 21, 13
Ancient legend
|
Monday, October 21, 13
Mastermind
|
Monday, October 21, 13
• Small subproject in C, rarely updated
• Lives in BitBucket as well
• Jenkins builds it with make
• Then publishes to Artifactory
|
Native part
Monday, October 21, 13
• We build native part on AWS instance
• But we need old enough libc
• Have to use chroot with older system
|
The problem of libc
Monday, October 21, 13
• Jenkins builds whole project on every commit
• Runs fast tests, collects metrics
• Pushes all artifacts to ‘builds’ repo
|
CI
Monday, October 21, 13
• All those environments are put into Jenkins pipeline
• Runs every night
• Downloads given version from ‘builds’ repo and runs full acceptance tests suite
|
Test pipeline
Monday, October 21, 13
• End-to-end test
• Leaking application is started and used
• Plumbr’s report is then verified
|
Acceptance test
Monday, October 21, 13
• If whole pipeline succeeds, pushes that tested version to ‘nightly’ repo
• Updates downloadable version on our site
|
Nightly
Monday, October 21, 13
• Another job in Jenkins
• Lets you select version number from JIRA
• Pushes ready version from ‘nightly’ to ‘release’ repo
• Tags Mercurial revision corresponding to that version with JIRA version tag
• Updates Plumbr download page with new version
|
Release
Monday, October 21, 13
Live fix
|
Monday, October 21, 13
• WORA does not mean T(est)ORA
• There are more to Java than Hotspot
• We are blessed by not writing C
• Tools matter a lot
|
Conclusion
Monday, October 21, 13
Solving performance problems is hard. We don’t think it needs to be.
@iNIkem/@JavaPlumbrplumbr.eu
Monday, October 21, 13