The new spring.io conference has been scheduled once again in the beautiful city of Barcelona. This year we talked about Spring Framework (of course), Spring Boot, Spring Cloud, Spring Data, cloud deployment, distributed API, reactive programming… the direction is quiet clear: cloud ready reactive microservices architecture.
Spring.IO is a technical oriented conference, dedicated to the Spring framework ecosystem. The entire agenda (http://www.springio.net/agenda/) is quiet hard to follow (too much interesting subjects). The planning offered 3 concurrent session tracks, and one track for getting hands on with workshops. Below some of the great sessions that we could see.
What’s new in Spring?
The first day’s opening keynote is this year focused on majors step of the green leaf framework: 4.3 & 5 with the keynote from Juergen Hoeller, Stéphane Nicoll and Phil Webb. Next few days, will be release Spring 4.3, bringing bunch of fixes & new features and with it:
- Testing improvement with annotations & mock integration : Testing improvements
- Restfull documentation api : Spring REST Docs a mix with hand written information and auto-generated snippets
- Devtools, the every day life developer survival kit : live-reload, automatic restart, remote debug tunneling restart : devtools
- Stacktrace sanitize (action / message)
- Distributed tracing : Spring Cloud Sleuth
The major step will come with Spring 5 (early 2017). Although the project will follow the Java standards (JDK 9 : Jigsaw, Servlet 4, JMS 2.1,Http 2…), the next bleeding feature will be the reactor project integration as an entire part of the core : Spring will become reactive ! The emergence of this new programming model reactive tight with Spring tool framework will greatly help its adoption.
Spring Cloud: the microservices architecture toolkit
From the official project page : “We live in the era of microservices, Cloud Native applications, and containers. This movement is transforming the way enterprise deliver digital initiatives. As enterprises march towards their digital journey, flexibility to adapt to change and timely reaction to the data-driven business decision, matters…”
In a nutshell, Spring Cloud is a set of tools/modules which are contributing to Spring Boot, for providing all functionalities to build custom distributed solution based on microservices architecture. Here is what’s in the package:
- Service discovery (Netflix feature Eureka)
- Externalized configuration in a distributed system (Spring Cloud Config)
- Routing (Netflix feature : Router and Filter: automatic registration of Zuul filters)
- Load Balancing/Inter process communication (Netflix feature : Ribbon)
- Distributed tracing : Spring Cloud Sleuth
- Distributed messaging: Spring Cloud Stream
- Circuit breakers (Netflix feature Hystrix )
- Security-identification (OAuth2, SSO)
- Centralized configuration management (Spring Cloud Consul)
Many sessions were demoing those feature and components. The Spring cloud familly targets the following aspects:
- An All in the box solution (SSO, auth, HATEOAS, Config, Data, Load balancing, router ….)
- A Fast deployment off the shelf.
- An enhanced developer support : documentation, tutorials, dev tools
Josh Long’s Homepage : start.spring.io (What ever you do, start from here)
The Spring cloud sessions:
- Cloud Native Java Josh Long
- Spring Cloud : Exloring Spring Cloud Implementations Spencer Gibb
- Cloud Native applications with Spring Cloud & Netflix OSS Spencer Gibb (workshop)
Spring 5 & Reactor: reactive programming is coming
Reactive is a programming paradigm that allow you to embrace aspects that must be total part of our daily work in 2016 : scalability & stability. The reactive manifesto is in the place since some years now, and it is still buzzing today ! The core concepts behind are event driven, fault tolerance, scalability and low latency. Even if the event driven programming is not quite a new thing, we must rather see all of it at the emergence of several years of experience and good practices from the cloud industry.
Just take a step back, think with functional programming approach (streams, functions, immutable objects …), event driven and message passing underneath. Reactive programming offers you a great way to rethink components integration in a smarter way, as a publisher/subscriber integration relation. The reactivity of your system is now a first order aspect that you can deal with since the first lines of your project, and not just a stuff you just try to add in production.
The second day’s keynote titled “Designing Applications: the reactive way” was followed by the “from imperative, to reactive” session. This clearly confirm the will of the Spring community to become globally reactive. But why going reactive ? That’s the subject of the 2nd keynote, by Stephane maldini & Rossen Stoyanchev. As Stéphane says, reactive is not the silver bullet, you don’t have to put reactive everywhere, but it now help design components with such key concepts of what we must see in today’s systems.
- Designing Applications: The Reactive Way Rossen Stoyanchev and Stephane Maldini)
- From Imperative To Reactive Rossen Stoyanchev
For those who were eager and couldn’t wait for the keynote of the second day, there were a workshop to have hands on Reactor framework, presented by Sebastien DELEUZE & Stephane Maldini. A great moment to better understand the project’s api.
The workshop slides & exercises can be found here : https://github.com/reactor/lite-rx-api-hands-on
What else ?
This conference was intense and lots of things to dig in. Here is a small overview of some others sessions:
Getting HATEOAS and Hypermedia right with Spring
Session by Eugen Paraschiv
A nice presentation about HATEOAS implementation and usage through proper Spring Resource (extends ResourceSupport ) for a fine grained control on produce json (for content and embedded link). The speaker talk about his experience. He speak about Roy fielding phd, Richardson Maturity Model and a way to implement “level 3 of maturity : Hypermedia Controls”. A lot of doc about this subject Spring HATEOAS – Reference Documentation and Building Rest Service with Spring
Keep calm and push apps AAS
Session by Eugen Paraschiv
Eugen come back on the cloud delivery process, and address continuous delivery from the dev machine to the cloud. Start with a good reminder about how to specify/describe your stories (Gherkin is here). Next, a demo of the Pivotal Cloud Foundry tool belt: push your app to the cloud in one command. You can handle elastic scale with another etc… Eugen shows how to handle your entire build pipeline with Cloud Foundry. Will it be a good concurrent of my favorite heroku tools ? I must test it from myself !
Geospatial web service with Spring & Kotlin
Session by Sébastien Deleuze
Even if Kotlin is not well known in the Spring community, it has its entire chance to be a good alternative to java for writing your next applications. After a good intro for the language, Sebastien presented us his geospatial Spring Boot example. The exposed library from Jetbrains allows you to avoid JPA for your data persistence, and use a small (but smart) database oriented DSL. The app run with -Xmx32m… yes only 32m of ram ! 🙂
You can also use Kotlin as a possible language for Spring starter generator:
Injecting Spring Boot in legacy applications
Session by Marten Deinum
The story of migration from an “old fashion product” to “a recent Spring Boot based product”. It was done through an incremental approach changing things steps by steps letting the product operates properly.
JUNIT 5 – Evolution of the test framework
Session by Sam Brennen
An explanation, from the inside of JUnit5 development team.
Make jar, not war…
Lots of good sessions, good organization… This was a great moment, thanks guys !Google+