jazoon'13 - nikita salnikov-tarnovski - multiplatform java application development

24
Multiplatform Java application development Nikita Salnikov-Tarnovski @iNikem http://plumbr.eu Monday, October 21, 13

Upload: jazoon13

Post on 17-Jan-2015

135 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development

Multiplatform Java application developmentNikita Salnikov-Tarnovski@iNikemhttp://plumbr.eu

Monday, October 21, 13

Page 2: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development

• 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

Page 3: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development

• 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

Page 4: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development

• 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

Page 5: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development

• Build infrastructure as automated as possible

• Automatic tests on all platforms

• Release maintenance vs future development

• Traceability

|

“Inner” goals

Monday, October 21, 13

Page 6: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development

|

Forward Traceability

Monday, October 21, 13

Page 7: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development

Backward traceability

|

1.2 1.3 2.0 2.1 2.1.3

Monday, October 21, 13

Page 8: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development

Our team

|

Monday, October 21, 13

Page 9: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development

One

|

Monday, October 21, 13

Page 10: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development

Two

|

Monday, October 21, 13

Page 11: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development

Virtually three

|

Monday, October 21, 13

Page 12: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development

Mini hero

|

Monday, October 21, 13

Page 13: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development

Ancient legend

|

Monday, October 21, 13

Page 14: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development

Mastermind

|

Monday, October 21, 13

Page 15: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development

• 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

Page 16: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development

• 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

Page 17: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development

• Jenkins builds whole project on every commit

• Runs fast tests, collects metrics

• Pushes all artifacts to ‘builds’ repo

|

CI

Monday, October 21, 13

Page 18: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development

• 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

Page 19: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development

• End-to-end test

• Leaking application is started and used

• Plumbr’s report is then verified

|

Acceptance test

Monday, October 21, 13

Page 20: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development

• If whole pipeline succeeds, pushes that tested version to ‘nightly’ repo

• Updates downloadable version on our site

|

Nightly

Monday, October 21, 13

Page 21: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development

• 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

Page 22: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development

Live fix

|

Monday, October 21, 13

Page 23: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development

• 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

Page 24: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development

Solving performance problems is hard. We don’t think it needs to be.

@iNIkem/@JavaPlumbrplumbr.eu

Monday, October 21, 13