Barcelona, May 2019:
The second time in a row, I attended the SpringIO conference to learn the newest and greatest about Spring Framework, and it’s ecosystem around. At this event, you can see engineers behind Spring talking about the latest features of Spring Framework as well as general topics in software engineering. In this post, I’d like to share some of my learnings and some exciting videos from the conference.
General impression after the conference
Last year I left SpringIO with two main topics in my mind: Kotlin and Reactive Programming. This changed slightly.
Kotlin was in 2019 only a side topic. Last year every second talk mentioned the new first class language on the JVM. This year I heard Kotlin maybe twice. Potentially I just attended the "wrong" tracks, and so I missed the Kotlin parts. But in general, it felt more like the hype-train is over.
Reactive Programming with WebFlux in Spring was in 2018 as well as this year a dominant topic. It looks like the Reactive part of Spring is making good progress, and 2019 can get the year to try it out. This year we will get reactive database support with Spring which could push the reactive paradigm forward. Another positive impact for reactive programming: it's more efficient than Spring MVC, which leads to less server consumption with less power consumption with less impact on the environment.
It's quite hard to find an overall topic for this years SpringIO 2019. This year felt more diverse in topics as last year, which results in a feeling that 2019 was a year about some steady progress without the super cool new features. I believe this is a good thing for an ecosystem like Spring to finish some loose ends and clean up.
The State of Java Relational Persistence
A nice talk from Maciej Walkowiak about the current state of relational persistence in Java / Spring.
Oliver Drotbohm talked about a new project he is working on to help people build a structured monolith which could later be broken apart in separate services. The general architecture paradigm behind it is a hexagonal architecture. It consists about four main topics:
1) A convention to map context to packages.
2) Test support to bootstrap modules and make sure they are well designed.
3) Simple set of access rules and an API to verify that.
4) Automated documentation for PlantUML.
Context and more information can be found in the readme: https://github.com/odrotbohm/moduliths
Hystrix is dead...
... and an alternative to this could be Recilience4J. Github project: https://github.com/resilience4j/resilience4j
To avoid migration efforts from one circuit breaker framework to another you should use Spring Cloud Circuit Breaker (https://spring.io/guides/gs/circuit-breaker/)
(Source: Spring and the Mystery of the Polyglot Stack from Erin Schnabel & Ozzy Osborne https://2019.springio.net/sessions/spring-and-the-mystery-of-the-polyglot-stack)
Java, especially with Spring, takes some time to spin up a cloud function. Even with Spring Cloud Function, it's way slower than other programming languages as cloud functions.
To build a more complex AWS Lambda system, you could use AWS Step Function to orchestrate different Lambdas to a workflow based system.
Spring Boot is not magic
In this awesome talk from Madhura Bhave she explained and rebuilt the basic concepts how Spring Boot is working internally. I liked the message that everything is open code which could be looked up. No magic involved. I recommend watching her talk:
Clean Architecture / Hexagonal Architecture
Tom Hombergs explained the benefits of clean or hexagonal architectures. It's a fascinating pattern coming up, which could help build longer lasting software. But I liked the idea of cutting a "service" class in several single use-case classes. Let's see how this approach will work after a few years of practice.Tom is also writing an ebook about clean architecture, which is currently free to download from his blog: https://reflectoring.io/
Joris Kuipers created a firework of small but helpful things that can improve your usage of Spring Boot.
Examples where a @validation annotation on configuration properties to fail the spring startup if the configuration property is not set. Or Spring Cloud Sleath for distributed tracing in micro-service environments.
SpringIO conference is always a great conference. Not only because of the location in Barcelona but mainly because of the speakers. There is no other conference where you can meet and learn from so many core contributors to the Spring ecosystem. On the other hand, this conference makes only sense for people who are working with Spring regularly.