2. Plumbr company
•
Estonian startup trying to solve performance problems
•
We started with memory leaks and solved them :)
•
Ongoing effort, more problems to be solved
|
Monday, October 21, 13
3. Plumbr software
•
Java agent, runs alongside your application
•
Uses Instrumentation API to hook into your code
•
Native counterpart in platform-specific C code
|
Monday, October 21, 13
4. “External” Goals
•
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
|
Monday, October 21, 13
5. “Inner” goals
•
Build infrastructure as automated as possible
•
Automatic tests on all platforms
•
Release maintenance vs future development
•
Traceability
|
Monday, October 21, 13
15. Native part
•
Small subproject in C, rarely updated
•
Lives in BitBucket as well
•
Jenkins builds it with make
•
Then publishes to Artifactory
|
Monday, October 21, 13
16. The problem of libc
•
We build native part on AWS instance
•
But we need old enough libc
•
Have to use chroot with older system
|
Monday, October 21, 13
17. CI
•
Jenkins builds whole project on every commit
•
Runs fast tests, collects metrics
•
Pushes all artifacts to ‘builds’ repo
|
Monday, October 21, 13
18. Test pipeline
•
All those environments are put into Jenkins pipeline
•
Runs every night
•
Downloads given version from ‘builds’ repo and runs full
acceptance tests suite
|
Monday, October 21, 13
20. Nightly
•
If whole pipeline succeeds, pushes that tested version to
‘nightly’ repo
•
Updates downloadable version on our site
|
Monday, October 21, 13
21. Release
•
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
|
Monday, October 21, 13
23. Conclusion
•
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
|
Monday, October 21, 13
24. Solving performance problems is hard.
We don’t think it needs to be.
@iNIkem/@JavaPlumbr
plumbr.eu
Monday, October 21, 13