My session notes from first day of the Confess 2015 conference…
Keynote: One VM to Rule Them All
by Thomas Wuerthinger of Oracle
Thomas talks about an ongoing research project at Oracle: It aims that dynamic languages at the VM should be as fast as static typed languages (in orders of magnitude). Links:
Introducing Spring Cloud
by Agim Emruli of Mimacom
Spring Cloud is a “Toolbox for distributes applications”. You might want to use it if you have…
- multiple deployments per day
- a microservice architecture
- a distributed system
Some components:
- Spring Cloud Config to publish your (SCM-managed) configuration (reconfigure the running application by “git push”)
- Spring Cloud Netflix - integration of (some) Netflix OSS projects, like
- Hystrix (circuit breaker)
- Eureka (service discovery)
- Ribbon (client-side load balancing)
- Zool (“reverse proxy” for using the service registry by direct browser access)
- Support for AWS, CloudFoundry,…
github.com/spring-cloud-samples
From Zero To Hero with Spring Boot
by Stéphane Nicoll of Pivotal
A coding session that shows how to get started with Spring Boot.
- Starting point: start.spring.io or IDE integration
- Spring Actuator for management REST endpoints
Modern Enterprise Java Architectures with Spring 4.1
by Jürgen Höller of Pivotal
Status quo (overview) of the Spring component model (updated version of a talk that Jürgen gave some time ago at the eJUG in Linz)
ELK - BigData for DevOps
by Maarten Mulders of ING
A (mostly theoretical) introduction to Logstash, ElasticSearch, and Kibana (case study from ING bank).
The Walking Dead - A survival guide to resilient applications
by Michael Nitschinger of Couchbase
Design considerations for resilient applications:
- finding the right “Units of mitigation” (units that handle/recover from errors by themselves)
- Escalation (if a “unit of mitigation” cannot handle an error by itself, propagate the error to the calling component)
- different types of redundancy
- always use timeouts! (always! on every system border!)
- use “intelligent” retries (number of retries, time between them)
- Fail fast
Patterns:
- Fault observer (instead of just passive logging)
- Leaky bucket counter (instead of treating every error as failure)
- Bounded queues, ring buffers (to prevent from long waiting)
- Circuit breaker (see points below), e.g. Hystrix
Monitoring:
- Turbine (Netflix)
Empowering EE-6 and 7 with Apache DeltaSpike
by Mark Struberg
Nice introduction to CDI and CDI-extensions. CDI may also be used in JavaSE (i.e. outside an application server), and DeltaSpike provides a nice set of extensions, similar to some SPring features:
- Core
- Configuration: configure WARs, EARs for different environments without modifying them
- CdiCtrl to start and stop CDI containers, e.g. for unit tests
- CdiTestRunner
- JPA: implementation of
@Transactional
, similar to EJBs. Differences to EJB:- rollback on every exception (not just on runtime exceptions)
- rollback a transaction only at the outermost level (instead of killing the current transaction if a nested transactional call has thrown an exception)
- also: Data, Security, JSF…
Anatomy of Microservice Landscapes
by Michael Plöd
Michael’s talk is about considerations and challenges when planning to introduce a microservice architectural:
SOA has produced big monolithic applications (with less service reuse than expected) Microservices (defined as “small”, “autonomous”, and “collaborative”) are complex and distributed, they are “no free lunch”.
- Business design, modularization. Do you really need a n-tier layer design?
- Interface design (synchronous orchestration vs. asynchronous choreography)
- Deployment: loose coupling! DevOps! A fully automated deployment infrastructure is crucial!
- Collaboration (best practice: one service per host/container)
- Resilience (error conditions are complex and will happen more often. Prefer “rolling forward” when dealing with error conditions, use bulkheads, use circuit breakers)
- Monitoring (consolidate logs, identify unique requests)
Required infrastructure components:
- Message broker (a lightweight one, e.g. RabbitMQ)
- Service registry (Eureka, Zookeeper,…)