This document summarizes tools and techniques discussed at the Devoxx 2014 conference. It mentions tools for test data generation (benerator, gatling), performance monitoring (graphite, whisper, carbon, metrics, collectd), microbenchmarking (JMH), measuring performance counters (Overseer, OverHpc), IT automation (Ansible), continuous delivery (Deployit, buildnumber, versions plugins), and building reactive applications. It also provides tips for IntelliJ IDEA, logging exceptions with ELK, virtualization with LXC, and libraries/testing tools like Lombok, Spock, and Awaitility.
2. Universit´e de la performance by OCTO
Tools :
benerator at http://databene.org/ is a tool for test data
generation
gatling at http://gatling-tool.org/ - stress tool for
HTTP
graphite at http://graphite.wikidot.com/ for scalable
realtime graphing (e.g. to vizualize performance results)
whisper is a fixed-size database of numeric data over time
carbon is a backend for graphite
metrics http://metrics.codahale.com/ library to
introduce points of performance measurement
collectd http://collectd.org/ is a daemon which
periodically collects system performance statistics
3. Microbenchmarking avec JMH by OCTO
JMH is a Java harness for building, running, and analysing
nano/micro/milli/macro benchmarks written in Java and
other languages targetting the JVM
Opensource and a part of OpenJDK project :
http://openjdk.java.net/projects/code-tools/jmh/
http://hg.openjdk.java.net/code-tools/jmh/
Start learning by using samples: http://hg.openjdk.java.
net/code-tools/jmh/file/tip/jmh-samples/src/main/
java/org/openjdk/jmh/samples/
Annotation-driven framework, generates code from the
annotated sources, and bench-marks the generated version
(which would better reflect a real execution)
4. Mesurer directement depuis le CPU: les compteurs de
performance by Ullink
Overseer is a Java framework that makes it possible on Linux
systems by simplifying access to real-time measurement of
low-level data such as Hardware Performance Counters
(HPCs), IPMI sensors, and Java VM internal events. Overseer
supports functionalities such as HPC-management,
process/thread affinity settings, hardware topology
identification, as well as power-consumption and temperature
monitoring.
OverHpc relies on libpfm41 for the management of HPCs.
Hardware topology information is gathered through the
libhwloc library.
More data are acquired from IPMI-compatible sensors with
the Intelligent Platform Management Interface3, a
standardized interface used by system administrators to
manage computer systems and monitor their operations.
5. Ansible in action - le provisionning au bon niveau
d’abstraction
Ansible is an IT automation tool. It can configure systems,
deploy software, and orchestrate more advanced IT tasks such
as continuous deployments or zero downtime rolling updates.
http://docs.ansible.com/
[Just another one] DevOps util
Reusable playbooks : Ansible Galaxy
https://galaxy.ansible.com/
6. Deux ann´ees de Continuous Delivery au pays des traders
by GLE:FP
Maven plugins for deployment and versioning management:
Deployit used to deploy a Deployment Package to an single
environment
http://tech.xebialabs.com/deployit-maven-plugin/
Build-number is designed to get a unique build number for
each time you build your project http:
//mojo.codehaus.org/buildnumber-maven-plugin/
Versions is used when you want to manage the versions of
artifacts in a project’s POM
http://mojo.codehaus.org/versions-maven-plugin/
Deployment MUST be automated
Test are better in ISO-production environment
Release should become a ”Non-event”
7. Am´elioration de build maven by Courtanet
Inifinitest : each time a change is made on the source code,
all the tests that might fail because of those changes, are run
be an IDE plugin http://infinitest.github.io/
Moreunit another unit test framework
http://moreunit.sourceforge.net/
Maven timeline plugin
https://github.com/dgageot/maven-timeline
8. Les Applications R´eactives : un nouveau paradigme pour
lever les d´efis de l’´economie num´erique by InTech
Reactive manifesto by Typesafe (Scala, Akka, etc)
http://www.reactivemanifesto.org/
Look into Scala Promise API and Java 8 CompletableFuture
API
9. IntelliJ IDEA tips and tricks by Jetbrains
Use keyboard only
To learn how to use only the keyboard, try to use the Key
promoter plugin which shows to user how one can easily
make the same action using only keyboard (menus and
toolbar button mouse clicks initiates shortcut display).
Print the IntelliJ keymap for your OS and use it
Use structural search
Multi-cursor edit
10. Building a Real-Time Risk Analysis System in Java by
GLE:FP (1)
Maven best practices proposed :
source: javaformatter + jrx https:
//code.google.com/p/maven-java-formatter-plugin/
https:
//maven.apache.org/plugins/maven-jxr-plugin/
packaging: appassembler + war + assembly
http://mojo.codehaus.org/appassembler/
appassembler-maven-plugin/
release: release + changes + buildnumber https:
//maven.apache.org/plugins/maven-changes-plugin/
http://maven.apache.org/maven-release/
maven-release-plugin/
11. Building a Real-Time Risk Analysis System in Java by
GLE:FP (2)
Maven best practices proposed :
documentation : site markdown + sample/snippet +
linkcheck + pdf + umlgraph
dependency: version + overview + enforcer-plugin +
dependency-tree
test : pitest + failsafe + jacoco + checker
Exception monitoring in logs (The Elasticsearch ELK Stack)
logstash is a tool for managing events and logs
http://logstash.net/
elastic search http://www.elasticsearch.org/
kibana - the RT data visualization dashboard
http://www.elasticsearch.org/overview/kibana/
12. BOF BrownBagLunch France
The concept (from Wikipedia): a brown bag seminar, session or
lunch is generally a training or information session during a lunch
break. The term ”brown bag” refers to the packed lunch meals
that are either brought along by the attendees or provided by the
host. In the USA, these are often packed in brown paper bags.
Brown bag seminars will normally run for one or two hours.
http://en.wikipedia.org/wiki/Brown_bag_seminar
The site: http://www.brownbaglunch.fr/
Specialists list: http://www.brownbaglunch.fr/baggers.html
13. Virtualization 2.0 et kernel linux by Xebia
No hypervisor : use linux control groups
Control hardware resource usage
Resources isolation via namespaces
lxc-{create | start | ls | stop }
14. 33 things you want to do better by T. Bujok (1)
Libraries:
lombock annotations to be used to simplify Java POJOs
@Data @Builder @Log4j @Cleanup @Delegate
http://projectlombok.org/
lambdaj https://code.google.com/p/lambdaj/
slf4j TODO : remove .printStackTrace - it does not show the
source of error; TODO : remove Log4j loggin with no
formatting clause (idem)
spock is a testing and specification framework for Java and
Groovy applications. https://code.google.com/p/spock/
unitils is an open source library aimed at making unit and
integration testing easy and maintainable @InjectInto
@InjectIntoStatic http://www.unitils.org/
gauva : cache, optional, multivalue sets, etc
15. 33 things you want to do better by T. Bujok (2)
Testing:
junitparams @Params, $() = new Object[]{};
https://code.google.com/p/junitparams/
awaitility await().atMost(5,
SECONDS).until(costumerStatusIsUpdated());
https://code.google.com/p/awaitility/
byteman byte code injection : could be used for tracing, etc
http://www.jboss.org/byteman
Try to use more Groovy for scripting and development