Spring I/O 2019

2019

List of videos

Spring I/O 2019 - Keynote by Juergen Hoeller, Ben Hale, Violeta Georgieva and Sébastien Deleuze

Spring I/O 2019 - Barcelona, 16-17 May Spring I/O 2019 Keynote: - Spring Framework 5.2 themes (Juergen Hoeller) - Improvements to Reactive: Core/UX, R2DBC, RSocket (Ben Hale / Violeta Georgieva) - Kotlin and coroutines (Sébastien Deleuze)

Watch
Java Modules in practice with Spring Boot by Jaap Coomans @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May Slides: https://speakerdeck.com/jaapcoomans/java-modules-in-practice-with-spring-boot Repo: https://github.com/jaapcoomans/spring-boot-modules Java Modules have been around for a little while now and most of us know deep inside that we need start doing something with them. Yet most developers are waiting for the momentum to take off. You’ve probably heard the theory a couple of times already, but putting it into practice sounds like mom forcing you to eat your veggies. Actually, I love my veggies, so I’ll gladly help you out here. In this session I will demonstrate how you can start using the power of modules in your own application. A Spring Boot application. Because despite the adoption in libraries is not yet great, you can already perfectly make your own application modular. I will guide you through a step-by-step approach to making your application modular. No magic or module-fu is required to achieve this result. Just everyday technologies we have at our disposal in the Java ecosystem. And as a bonus, it even works with Kotlin….

Watch
Building better monoliths – Implementing modulithic applications with Spring by Oliver Drotbohm

Spring I/O 2019 - Barcelona, 16-17 May Slides: https://speakerdeck.com/olivergierke/building-better-monoliths-modulithic-applications-with-spring-boot-cd16e6ec-d334-497d-b9f6-3f92d5db035a When evaluating different implementation approaches for a set of bounded contexts, a modular, monolithic application constitutes a pragmatic alternative to a microservices architecture that comes with challenges and complexities of a distributed system. Still, in the course of their life time, modularity and maintainability of monolithic applications very often degrade significantly. This is usually caused by the gap between architectural concepts and the codebase implementing those. The talk briefly identifies the commonly observed issues in unstructured monoliths and discusses approaches to code organization and component structure, package design, transactions and the usage of events to implement bounded context interaction. We also take a look at supporting technologies and features of the Spring (Boot) eco-system to easily test individual bounded contexts and detect architectural violations. Attendees will learn how to easily implement architectural concepts into modular, monolithic applications, how to preserve the architecture over time and to prepare a potential split into multiple systems at a later point in time.

Watch
Boot Loot - up your game and Spring like the pros by Joris Kuipers @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May Slides: https://www.slideshare.net/jkuipers/boot-loot GitHub repo: https://github.com/jkuipers/bootloot Spring Boot offers many features on top of the underlying Spring frameworks. You’re probably familiar already with things like autoconfiguration and the actuator support. But are you using custom autoconfiguration and type-safe configuration classes in your projects already? Do you know how to customize your RestTemplates in such a way that the instrumentation from Boot and Cloud is still applied as well? Have you thought about reducing the cardinality of certain Boot-provided metrics, or defining your own? Migrating older Spring applications to Boot, so you really need that external directory included on your classpath? In this fast-paced presentation Joris will open up his bag of tips & tricks and best practices based on his years of experience in applying Spring Boot and Cloud in a variety of production situations. Whether you’re new to Spring Boot or a long-time user, this talk will leave you with several hands-on techniques that you can start applying to your own projects right away!

Watch
From OWASP top 10 to Secure Applications by Roberto Velasco @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May Many people focus their attention solving OWASP top 10 risks, but unfortunately they only represent a part of existing application security issues. In consequence it’s necessary to have a global knowledge of existing risks going beyond the OWASP top ten. This talk review the recently published OWASP top 10 2017 and other OWASP standards such as OWASP Application Security Verification standard (ASVS) that completes the partial view of the OWASP top 10 offering a more advanced vision of the security providing a lis of requirements for secure development. During the talk we will show practical examples of how to address existing risk, using manual or programmatic solutions within Spring Applications, as well as security providers solutions such as Application Security Testing (AST), Web Application Firewalls (WAF) and Runtime Application Self protection (RASP).

Watch
Event Driven Microservices with Axon and Spring Boot: excitingly boring by Allard Buijze

Spring I/O 2019 - Barcelona, 16-17 May Slides: https://www.slideshare.net/AllardBuijze/event-driven-microservices-with-axon-and-spring-bootexcitingly-boring GitHub repo: https://github.com/abuijze/bike-rental-demo/tree/springio Microservices, and especially the Event-Driven variants of them are often associated with cool, hard-to-grasp, technologies. Instead of building what really matters to our business, we spend most of our time tweaking and integration different technologies and frameworks. Spring Boot is famous for its autoconfiguration capabilities. Axon is known for its support for CQRS and Event Sourcing. What happens if you unleash the power of both onto your application? Through live coding, we’ll see how it becomes trivial to build and scale an event-driven application. So trivial, that it almost becomes boring….

Watch
Managing Business Processes in Microservice Architecture with Spring Ecosystem by Bartłomiej Słota

Spring I/O 2019 - Barcelona, 16-17 May Slides: https://speakerdeck.com/bslota/o-2019 Thousands of companies around the world try to identify, automate and optimize their business processes. Buying an off-the-shelf solution is often a first choice, and it’s no surprise - shiny diagrams, workflows, process history, reports are just a few examples of what the business is looking for. At the same time, in the era of agile software development, we learned how utilize DDD and microservices to deliver products better and quicker. Can we have a BPM suite, then, that will both meet business expectations and suit microservice and agile development approaches? In this presentation I will share with you my story about Business Process Management, showing you the possibilities of bringing BPM and microservices together. We will look at this topic from perspectives of business, architecture, development and tools. We will try to answer most frequent questions and doubts, including security, traceability, transaction handling, delivery, etc. You will also see how to implement proposed solutions with Spring goodies and Apache Kafka.

Watch
Reactive Relational Database Connectivity by Ben Hale @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May As more and more projects start incorporating reactive programming, they begin to discover that the only way to get the full benefit of that change is to ensure that they have a fully reactive stack. There are a number of messaging systems and data stores that enable this fully reactive stack, but there has been a big piece missing when it comes to accessing relational database systems in a fully reactive way. This talk presents the Reactive Relational Database Connectivity (R2DBC) project. The project is an effort to design a reactive API for accessing a relational database access. This talk will explain how the API works, the benefits of using it, and how it contrasts with other projects in the same space.

Watch
Zero Downtime Migrations with Spring Boot by Alex Soto @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May Slides: https://www.slideshare.net/asotobu/zero-downtime-deployment-in-microservices-era-146715220 You joined the DevOps movement and want to release software even faster and safer. You started reading about Advanced deployment techniques like Blue-Green Deployment, Canary Releases or Dark Shadow Technique. But how do you implement them without disrupting your users in production? With Zero Downtime! This is easy with your code, but what about ephemeral and persistent states? Most of the examples out there does not tackle this scenario (which is the most common in real systems). Come to this session and you’ll learn in a practical way how you can achieve zero downtime deployments applying advanced deployment techniques for maintaining the ephemeral and persistent state of your applications in Spring Boot.

Watch
Cloud Native Spring Boot Admin by Johannes Edmeier @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May You successfully deployed your Spring Boot applications on Kubernetes, and now lacking operational insights and the ability to manage them? Just having some plain metrics and a log isn’t enough? You need to control the behaviour of your application at runtime? You do have some very special requirements for your monitoring? After this talk you’ll be able to integrate Spring Boot Admin with Kubernetes using the spring-cloud-kubernetes project and squeeze every bit out of the Spring Boot Actuator. Learn the basics of Spring Boot Admin and the pitfalls when running in a cloud environment. Get to know the advanced customization options to make your self-tailored solution a perfect fit.

Watch
Migrating a modern spring web application to serverless by Jeroen Sterken / Wim Creuwels

Spring I/O 2019 - Barcelona, 16-17 May Slides: https://www.slideshare.net/JeroenSterken1/migrating-a-modern-spring-web-application-to-serverless-146724760 In this presentation we want to share how we transformed a typical spring realtime web application called “Pigslot” into a serverless application. This application is about … (you guessed it) : pigs, allowing our customer to offer timeslots to farmers so they can make a reservation to deliver their pigs to the slaughterhouse. A talk that might be avoided by vegetarians although the use case was all about animal welfare! So come join us if you want to know all about a pig’s journey to serverless and the challenges we encountered to make this a serverless application for easy scaling and resource optimization. We will share our experiences and give you tips and tricks on what we learned in the process, like: - Spring resource optimization - Server side rendering versus fat clients - Session management - Realtime UI updates in serverless environments - Connecting functions - Security - Portability between cloud providers - …

Watch
How to live in a post Spring Cloud Netflix world by Olga Maciaszek-Sharma / Marcin Grzejszczak

Spring I/O 2019 - Barcelona, 16-17 May Slides: https://speakerdeck.com/olgamaciaszek/o-2019 Zuul? Gateway? Should we get rid of Ribbon? What is going on with Hystrix? If you have ever faced those questions, come and listen to this talk. In December 2018, Netflix decided to move a number of their popular OSS projects, like Hystrix and Ribbon into maintenance mode and to make newer, backward incompatible versions of some others, like Zuul and Archaius. The Spring Cloud team moved some of the corresponding Spring-Cloud-Netflix projects into maintenance mode as well and proposed a newer, more modern Spring Cloud stack that could be used instead. During this talk, we would like to show how to move over to these newer solutions. We will discuss possible approaches, show a code demo and speak about potential issues and solutions.

Watch
Bootiful TDD by Josh Long @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May GitHub repo: https://github.com/joshlong/bootiful-testing-online-training How would you feel if you knew that any pat of the code was at most a few minutes away from being shippable and delivered into production? How would you feel if you knew that any part of the code is a few ctrl+z's away from being shippable and delivered into production? Emboldened and confident? Test driven development (TDD) gives you that. TDD allows you to proceed with confidence that you're building the right thing. It provides you with imminent-horizons that you can meet and measure. TDD gives developers the confidence to go faster, secure in the knowledge that what they break they will fix and be able to improve. In this talk, join Spring Developer Advocate Josh Long (@starbuxman) as he looks at how to test Spring applications and services. We'll look at how to test basic components, mocks, how to take advantage of test slices, and how to test web applications. We'll also look at how to ensure that API producers and API consumers work well together using consumer driven contract testing (CDCT) without sacrificing the testing pyramid for end-to-end integration tests.

Watch
Spring Boot with Kotlin, Kofu and Coroutines by Sébastien Deleuze @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May This talk is a live coding where I will show how to gradually transform a Spring Boot application developed with Java, annotations and JPA to an idiomatic Kotlin application that will leverage Coroutines, WebFlux, Kofu configuration DSL (from Spring Fu incubator) and R2DBC (Reactive SQL). I will introduce the official support for Coroutines in Spring (Framework, Boot, Data) as well as Kofu, the Kotlin DSL developed in the Spring Fu incubator I have created a few months ago. It allows to configure Spring Boot applications explicitly and make them even more efficient.

Watch
Configuration Management with Kubernetes, a Spring Boot use case by Nicolas Frankel

Spring I/O 2019 - Barcelona, 16-17 May Slides: https://docs.google.com/presentation/d/18jSt6HyGJCr8HENvnDHBh9Z5N12CUT013NX9z-yJQ_M GitHub repo: https://github.com/exoscale-labs/config-mgmt-springboot-kubernetes/tree/demo Docker images are supposed to (and should be) immutable. Given that the same image should be promoted from the development environment to the production environment, it needs to be parameterized in each environment. Kubernetes provides different ways to do that. On the other, the Spring Boot platform allows a wide range of configuration options. In this talk, I’ll go through (and demo!) what common options are available, and what pro(s)/con(s) each of them have.

Watch
Implementing Microservices Security Patterns & Protocols with Spring Security by Joe Grandja

Spring I/O 2019 - Barcelona, 16-17 May Building secure microservices requires mastering a variety of patterns, protocols, frameworks, and technologies. This talk provides a holistic end-to-end view of how to secure microservices using industry standard protocols and Spring Security. The goal is to present how standards such as JWT, JWA, JWS, JWE, JWK, OAuth2, OpenID Connect, TLS can be combined to make writing secure microservices easy. A high-level explanation of the security standards and protocols will be provided along with demo/code walkthroughs showing how to apply the patterns and standards using Spring Security 5. The following patterns and their implementations will be demonstrated. - Web SSO Login - Implementing OAuth2 resource servers - Implementing edge service gateways - Token Exchange in a microservice call chain - Token Relay in a microservice call chain - Integration with OpenID Connect / OAuth2 servers

Watch
How to build Reactive Server in 50 minutes by Oleh Dokuka @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May In this session, we are going to talk about developing your own server using pure Non-Blocking Java API. First of all, we will start with the reason why non-blocking is important in the development of modern web applications. Smoothly moving from that point, we will cover the central challenges of building non-blocking servers. In turn, we will introduce the Reactive Programming technique for simplification our code and be turning everyday software development into the art. Since Java Non-Blocking API is nothing more than actions’ execution and reacting to asynchronous responses, we will see how simple become development of complicated things with the usage of Reactive Programming with Project Reactor.

Watch
Spring Framework 5 2: Core Container Revisited by Juergen Hoeller @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May Spring Framework 5.2 takes Spring 5’s common themes to the next level: embracing new reactive technologies such as R2DBC and RSocket through Spring’s transaction and messaging abstractions, and revisiting the core component container for GraalVM support and compile-time annotation indexing. This talk focuses on core facilities for optimized application architectures in modern deployment environments, with support for Java as well as Kotlin, as a foundation for higher-level features in Spring Data and Spring Boot.

Watch
Chaos Engineering: withstanding turbulent conditions in production by Benjamin Wilms

Spring I/O 2019 - Barcelona, 16-17 May Slides: https://speakerdeck.com/mrbw/o-2019-barcelona Why we need Chaos Engineering The complexity in modern and distributed architectures continues to increase. We have successfully broken down our application into small and maintainable components. Each individual component can be automated and brought into production at any time. A lot of effort was put into the development to keep the test coverage as high as possible. Every release has to successfully pass our pipeline and countless unit, integration and acceptance tests. But why do we have this unpleasant feeling shortly before our arrival at the most beautiful place in the world (production)? known unknowns Many open questions cannot be answered by simple unit or integration tests: 1. will our fallbacks work? 2. does the retry take effect in case of an error? 3. is our Service Discovery up and synchronised? 4. has anyone seen our client-side-load-balancer in action? 5. where’s our database gone? This is where Chaos Engineering comes in. It helps us to become master of chaos and please do not claim that you are not in chaos! There is a whole industry that sells us ticket systems to document chaos. What to expect In this talk you will learn how to introduce Chaos Engineering. Using practical examples, you will learn what can go wrong. At the end of the talk we will conduct a Chaos Experiment in a distributed Spring Boot application. With the help of the Chaos Monkey for Spring Boot we will try to crash the application. But thanks to the implemented Resilience Pattern this won’t work. You will take part in the trip to a Cloud-Native Spring Boot application and see how we can automate our chaos experiments. I will also show you useful helpers and tools for your first steps into the world of Chaos Engineering and how you can develop and improve Chaos Experiments together with your colleagues.

Watch
Event Driven with Spring by Oleg Zhurakousky @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May In the world of cloud-native distributed architectures, such as microservices, the “event-driven” is more popular than ever. But it is a broad category that covers a variety of use cases, ranging from a simple enterprise integration to a complex data streaming. So, how to make sense of it all? In this mostly hands on session, we will cover Spring Cloud Stream and Spring Cloud Function as a defacto technologies for Spring-based event-driven microservices as well as provide an overview of the recent developments and features in both projects.

Watch
Kubernetes and or Cloud Foundry - State-of-the-art cloud platforms by Matthias Haeussler

Spring I/O 2019 - Barcelona, 16-17 May Slides: https://docs.google.com/presentation/d/1cYdrtcHVWYIkIENbq0tW6M47h2AXi7z2q3Pz_QdnuQg Kubernetes and or Cloud Foundry - How to run your Spring Boot Microservices on state-of-the-art cloud platforms Platform and Container as a Service layers (PaaS/CaaS) enable developers to deliver the functionality of their code to end users in a fast way. Kubernetes and Cloud Foundry are very popular options to deploy and run Spring Boot Microservices. But what does it really take to get your application and required backend services up and running successfully on both platforms? How many configuration steps are required and where are the hidden pitfalls? How easy do you scale, recover from failure or update the application without downtime? In my role as Cloud advocate and university lecturer for distributed systems I come across these topics a lot and want to share my experience with this talk. I will analyse the differences between the two platforms as seen from a developer’s perspective including a live demo of those steps.

Watch
Testing Spring Boot Applications by Andy Wilkinson @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May Writing and running tests is an essential part of delivering reliable software but we don’t always do so as efficiently as we could. For example, all too often we reach for an integration test when a unit test that’s far quicker to run would have delivered the same benefits more easily. In this talk, you’ll be encouraged to reconsider how you test your Spring Boot applications. We’ll look at why we write tests and what kinds of tests we need to write to meet those goals. For the occasions when it’s right to venture beyond a unit test, we’ll take an in-depth look at some of Spring Boot’s advanced testing features including @MockBean, @SpyBean, and test slices. You’ll leave understanding exactly how those features work and the benefits that they provide so that you can apply them to your own tests, confident that it’s right to do so.

Watch
Spring to Google Cloud Native by Ray Tsang and Josh Long @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May GitHub repo: https://github.com/joshlong/spring_io_2019/tree/master/gcp Google and Pivotal partnered to develop Spring Cloud components for Google Cloud Platform. With Spring Cloud GCP, you can quickly develop cloud native applications & harness the power of managed services that can ease your development and accelerate velocity to production ready systems. In this session, we’ll show how to build cloud native applications with Spring on Google Cloud Platform to use both RDBMS and NoSQL stores, publish and process events, adding secured proxy to allow only authorized users, adding trace & centralized logging, and quickly build/deploy to Kubernetes using latest open sourced container tools like Jib and Skaffold.

Watch
Spring Security for N00bz: A quick introduction for the terminally insecure by Mark Heckler

Spring I/O 2019 - Barcelona, 16-17 May Slides: https://speakerdeck.com/mkheck/spring-security-for-n00bz-a-quick-introduction-for-the-terminally-insecure GirHub repo: https://github.com/mkheck/spring-security-4-n00bz No one wants to be the next Equifax (or Target or Yahoo or TGX or or or) and feature prominently in headlines of the latest terrible security breach. Often referred to as a Career Limiting Move (CLM), it can also make you and your organization a target for lawsuits, federal charges, and recognition of the most negative kind. But security is hard, right? Where does one even begin??? One fully open-source solution for application security is widely used and respected: Spring Security. Built with Java & Spring, it provides a proven app security platform that integrates with numerous languages and components to provide end-to-end security for your critical applications. Using the JavaScript framework du jour for front end development? Reactive systems? LDAP? OAuth2? OpenID? It’s in there. Defense is a multi-faceted topic, but your application’s security is central to it all. Come to this session for a thought-provoking introduction to defense in depth and a live-coding “lock it down” exploration of how to secure your apps now and maintain their security over time using 100% open source software.

Watch
Real Time Investment Alerts using Apache Kafka & Spring Kafka at ING Bank by Tim and Marcos

Spring I/O 2019 - Barcelona, 16-17 May Speakers: Tim van Baarsen & Marcos Maia Slides: https://www.slideshare.net/TimvanBaarsen/springio-barcelona-may-2019-real-time-investment-alerts-ing-using-apache-kafka-spring-kafka-149207956 Nowadays our customers are expecting real time interactions with investments products and services we deliver at ING Bank especially because financial market fluctuations can have a direct impact on the investments performance of our customers. In this talk, we present how we deal with the massive stream of price updates on stocks and how we leverage many features of Apache Kafka and Spring Kafka to improve and simplify our solutions. From simple producer / consumer up to advanced usage of streams we strongly rely on Kafka to solve our functional and non functional requirements delivering high quality, real time stream processing software that is reliable, precise and extremely valuable to our customers. Main challenges of our project One of the main challenges of this project was to deal with a massive continuous stream of stock price updates and matching them against thousands of alerts created by our customers and still keep up with sending real time alerts to them. Why should i attend this talk as a developer? If you are a developer you will have a chance to understand how we are relying on Spring Boot and Spring Kafka to leverage many of the Kafka features to deliver simple, quality and reliable software that fulfil the business and regulations requirements while learning and having fun doing it! If you are on the business side you will be able to understand how we use Kafka to fulfil legal regulations while delivering extra value to our customers.

Watch
The State of Java Relational Persistence by Maciej Walkowiak @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May Slides: https://speakerdeck.com/maciejwalkowiak/the-state-of-java-relational-persistence Relational SQL databases are the default and often the best choice for persisting your data. While Hibernate and JPA have dominated the frameworks market there are alternatives worth considering when starting new project. In this session we will have a closer look to challenges with using SQL databases in Java applications and see how most popular frameworks address them. We will discuss pros and cons of using Java-centric JPA and SQL-centric JOOQ. This talk wouldn’t be complete without discovering what “the new kid on the block” - Spring Data JDBC has to offer and checking how all these solutions fit into the reactive world. At the end you will have decent high level understanding of all the mentioned frameworks and hopefully make better decision while choosing persistence framework for your next project.

Watch
How Fast is Spring by Dave Syer @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May Slides: http://presos.dsyer.com/decks/how-fast-is-spring.html In this presentation we take stock of some of the myths and assumptions regarding the runtime costs of using Spring. The conclusion is that preconceptions about slowness, component scanning, autoconfiguration, binding, use of reflection are all completely wrong. We look at data from a large set of benchmarks, analysing the performance of Spring applications. We concentrate on JVM startup time, but data are also available regarding total resource usage, and other runtime overheads. Spring is not slow, despite many people’s preconceptions, but measuring the performance can bring useful optimizations, some of which we will point out in this session. Finally, we can go deeper than that and show what kinds of apps are slower to start and why.

Watch
What the Graph by Gerrit Meier @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May Slides: https://speakerdeck.com/meistermeier/what-the-graph Today we generate huge volumes of data daily. This data coming from collaborating humans and machines is highly interconnected and related by its very nature. We can derive much more value if we don’t treat those as isolated datapoints. We already left the state of surprise that a social network can tell us which friends of our friends have similar tastes and behaviours as we do. But with this connected data comes additional complexity to manage. Which should be handled in a suitable database, a graph database. The obvious next step is get your interrelated data into such a storage, connect your application to it and interact with the database on a certain level of abstraction to implement your business requirements. This talk will show how Neo4j stores data in the graph and how to access and manipulate it using the Neo4j Object Graph Mapper and Spring Data Neo4j. We will also discuss the areas where a object graph mapper can help you and where it is considered to be not the best option.

Watch
Benefits of reactive programming with Reactor and Spring Boot 2 by Violeta Georgieva

Spring I/O 2019 - Barcelona, 16-17 May Scalability and resilience are key goals for modern applications. To achieve this, applications can run on the reactive stack provided in Spring Boot 2. Many applications already made the transition and are experiencing the benefits. In this session, we will explore what are those benefits. We will use various benchmarks to understand how key application metrics are impacted and what it means in our cloud native world. Several use cases will be shown to help driving the decision for a reactive design transformation that fits your architecture goals.

Watch
Building resilient scheduling in distributed systems with Spring by Marek Jeszka @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May Slides: https://www.slideshare.net/MarekJeszka/building-resilient-scheduling-in-distributed-systems-with-spring It is common to have jobs running periodically, especially in asynchronous and distributed systems. If the service is scaled horizontally (i.e. there are multiple instances of the same service), you often only want a single node to handle the task. In this session I will demonstrate how to manually setup Spring to have custom logic in scheduling configuration and perform recurring tasks only on a single node. This requires keeping notation of the leader and persisting the selection. The key takeaway of this session is how to implement distributed locking and how simple it is to run Spring application on top of it. In this talk you will learn how to mitigate challenges that arise when you use traditional declarative approach for scheduling and how to switch to a more flexible programmatic approach.

Watch
Spring Cloud on Kubernetes by Andreas Falk @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May Slides: https://andifalk.github.io/kubernetes-spring-io-2019 GitHub repo: https://github.com/andifalk/kubernetes-spring-io-2019 Spring Boot and Spring Cloud are great in helping building cloud-native Java or Kotlin applications. Using Spring Cloud components like Discovery Service, API Gateway or the Config Server have improved the experience in the cloud to a big extent. With the rise of Kubernetes, this has changed: Discovery services and configuration/secret management are provided “out of the box” here. In this talk, you will learn how Spring Cloud Kubernetes integrates with Config Maps and Secrets to provide secure configuration to Spring Boot applications in a seamless manner. You will also see the interaction of the Spring Cloud DiscoveryClient with the provided Discovery Services of Kubernetes. This presentation will consist of live coding and demos that will use sample applications build with Spring Boot and Spring Cloud Kubernetes.

Watch
Distributed Tracing in the Wild by Adrian Cole @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May Slides: https://speakerdeck.com/adriancole/set-your-sites-on-tracing-fcbfe2d4-51a4-4272-9689-0f0c338168ec While not new technology, distributed tracing has caught quite a buzz in recent years. Like all trendy tech, it can be difficult to distill reality from hype. If you haven’t heard yet, distributed tracing allows you to understand a single request as it crosses an arbitrarily complex (microservice or not) architecture. The Apache Zipkin community has helped many new folks understand what is marketing from what is real, leading to numerous site deployments. This session aims to share our “Sites” project which is an inventory of real-life setups people use today. These sites employ distributed tracing to increase developer productivity or reduce time in triage. While this will be “Zipkin Centric”, it is not exclusively a Zipkin session. Real world sites employ other monitoring systems, log analysis and even other tracing systems to complete their stories. Meanwhile, applications send data to the tracing system in a myriad of ways. While the best way is implicit tracing such as agents or framework plugins like Spring Cloud Sleuth, reality happens. Sometimes sites use tracing libraries directly, whether they are Zipkin, OpenCensus, OpenTracing or something home grown. We’ll navigate this ecosystem with examples from real sites run by real people. You’ll learn what role is played by what. By the end of this talk, you’ll not only learn concrete examples of what tracing is all about, but you’ll also get a connection to the community. We’ll introduce you to the gitter (chat) channel where everyone involved are. You can leverage us to begin or enhance your journey in observability.

Watch
How to secure your Spring apps with Keycloak by Thomas Darimont @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May Keycloak provides Single Sign-On based on widely used protocols such as OpenID Connect 1.0, OAuth 2.0 and SAML2, that are easy to integrate with own applications. Keycloak comes with many batteries included, e.g. user management, user registration, 2-factor authentication, support for external identity providers such as Google, Facebook, Twitter, custom look-and-feel and integration with directory services like LDAP, Kerberos or Active Directory. Additionally, Keycloak offers a comprehensive extension model that makes it easy to adapt it to your own needs. After a short overview of Keycloak features, we will introduce some core concepts with a guided tour through Keycloaks Admin UI. We then take an in-depth look at an OAuth / OpenID Connect based authentication flow. After those foundations are set we will demonstrate possibilities for integrating Keycloak in selected authentication scenarios. We conclude the talk with a brief demo of an centralized identity management infrastructure, built around Keycloak.

Watch
JUnit 5: what's new and what's coming by Sam Brannen @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May Slides: https://www.slideshare.net/sbrannen/junit-5-whats-new-and-whats-coming-spring-io-2019 Join core JUnit 5 committer Sam Brannen to gain insight on the latest new features in JUnit 5 as well as what’s on the horizon. Sam will also provide tips on how to best use JUnit Jupiter to test Spring and Spring Boot apps.

Watch
How to bootifully make a front end with JHipster and Vue.js for your application by Sendil Kumar N

Spring I/O 2019 - Barcelona, 16-17 May Spring boot makes web development easy. Vue.js is easy and simple. Vue.js delivers blazingly fast and optimised frontend. This session will show you how to build an exciting application with Spring boot and Vue.js. How JHipster provides a way to create an application with the latest standards and great spring features. With Spring Boot and Vue.js, it not only makes your application better but also enhances your developer experience.

Watch
Managing Dependencies for Spring Projects with Gradle by Jenn Strater and Andy Wilkinson

Spring I/O 2019 - Barcelona, 16-17 May Slides: https://speakerdeck.com/jlstrater/managing-dependencies-for-spring-projects-with-gradle Managing dependencies is hard. For Spring projects, Gradle and Maven are just two of the tools we can use to help make dependency management easier. They both handle dependency management effectively, but in very different ways. For example, Maven uses BOMs, and, until recently, Gradle didn’t have an equivalent concept. Because of this and other differences, the Spring Dependency Management plugin was created so that Gradle users who already knew Maven could manage dependencies in a way that was familiar to them. For earlier versions of Gradle, the plugin’s version enforcement and dependency exclusion features were revolutionary and led to the Spring Dependency Management Plugin’s popularity in the Spring ecosystem and spread to other JVM-based communities such as Android. Now that Gradle 5.X includes native BOM support, users can replace parts of the plugin and take advantage of the productivity gains of the native support. In this session, we’ll go over some basic use cases for Gradle native BOM support and show you how to use it to manage the dependencies of a Spring Boot application. We’ll also look at some scenarios where you’ll still want to use the Spring Dependency Management Gradle plugin.

Watch
Connect Your Car With Spring Tools by Jakub Pilimon and Marcin Grzejszczak @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May Connected car technology is on the verge of totally reshaping the automobile industry. Advances on multiple technological fronts has fueled the creation of a vast and diverse connected vehicle ecosystem. Pivotal has a lot of experience in this area after years of developing software in the field. If you are interested in some architectural patterns in this industry and how to implement them, don’t miss that talk. This is going to be (almost) fully live-coded session with a lot of latest and greatest Spring goodies..

Watch
Multi Service Reactive Streams Using Spring, Reactor, and RSocket by Ben Hale @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May As more applications are experiencing the benefits of using a reactive programming model, one of the biggest problems they experience is the mismatch between Reactive Stream back pressure and current networking protocols. Most existing network protocols don’t support the key Reactive Streams concept of pull-push backpressure. Even newer protocols such as HTTP/2 only do flow control at the packet level and provide no way to slow down production on the publisher side of a connection. This talk explores how to create a fully reactive multi-service architecture utilizing the RSocket protocol. The RSocket protocol enables Reactive Streams back pressure to be transmitted across a network link connecting reactive flows in multiple applications to directly affect one another in a positive way. In addition to discussing the RSocket protocol and how to use it, this talk will show integration with Spring and how it can be used in ways familiar to long-time Spring developers.

Watch
Cutting edge Continuous Delivery: Automated Canary Analysis through Spring based Spinnaker

Spring I/O 2019 - Barcelona, 16-17 May Speaker: Andreas Evers Slides: https://speakerdeck.com/andreasevers/cutting-edge-continuous-delivery-automated-canary-analysis-through-spinnaker-spring-io-2019 The Spring team has been working on Continuous Delivery for a couple of years now. Spring Cloud Pipelines used to be Spring’s approach to deploy your applications into production, using tools like Jenkins or Concourse. However, those platforms’ key strength lies in Continuous Integration, and lack internal state representing the deployed landscape across clouds and regions. That state is required to effectively perform deployment strategies, like cutting-edge automated canary analysis. Spinnaker’s autonomous judge, which analyses metrics of both baseline and canary deployments, drives deployment strategies based on automated data-driven decisions. Spinnaker is a stateful open source multi-region multi-cloud Continuous Delivery platform, fully written in Spring. It started at Netflix but now involves a wider community of contributors from Google, Microsoft, Amazon, Pivotal, and many others. Pivotal Cloud R&D and the Spring Cloud team have been working on Spinnaker’s Cloud Foundry support and Cloud Pipelines compatibility for rollback testing and contract testing. Join this talk to find out why Spinnaker is the Spring’s preferred Continuous Delivery approach and how it can bring your Spring application to production using cutting-edge strategies like automated canary analysis.

Watch
Efficient web apps with Spring Boot 2 by Stéphane Nicoll and Brian Clozel @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May GitHub repo: https://github.com/snicoll-demos/initializr-stats How can we improve the efficiency of an existing web application? We could completely rewrite it, leverage more concurrency and even reactive features. But is it really worth it if we don’t even measure and track the relevant metrics? In this talk, Stéphane and Brian will work on an existing Spring Boot MVC application to make it more efficient. They’ll replace RestTemplate with WebClient and Reactor operators to improve efficiency, without the concurrency pitfalls. They’ll use out-of-the-box metrics, add new ones to measure, and keep an eye on capacity gains with dashboards.

Watch
Collaborative Contract Driven Development by Billy Korando @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May You are transition to microservices, you have remote teams, you are wanting to update existing services, you are doing all three. The consistent theme in all of these needs is that they require collaboration across teams and concerns. A common problem however with collaboration is that there is often a lot of wait time. Team A needs for team B to implement and deploy a service, update a service, or figure out why a service isn’t working correctly, this can be a very frustrating process and instead of collaborating you feel like you are competing! There is a better way though and that is with contract driven development! In this presentation we will learn about the goals and processes behind contract driven development. Once we have the underlying principles figured out, we will switch to the practical and look at using Spring Cloud Contract to write contracts. Spring Cloud Contract offers several approaches for writing contracts and we will cover them so your organization can choose which would be the best fit. If you have been frustrated by wait times from with working other services and teams, then this will definitely want to attend this presentation!

Watch
Moving from Imperative to Reactive by Paul Harris @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May Most of the demos on reactive programming I’ve seen use either simple one-liner examples, or complicated codebases that can leave the viewer behind. I’d like to strike a balance, using an example real enough to impart understanding, but simple enough to inspire a room full of heads nodding along! Maybe you’ve heard about this new reactive thing and want to give it a try. Or perhaps management have heard about this new reactive thing, and told you to give it a try. Either way this session will give you an introduction to reactive programming, using Spring’s support for reactive streams to convert a simple but realistic Java application from imperative to reactive. We’ll cover everything from the building blocks of reactor through to a running reactive application, sharing some hard-won wisdom along the way.

Watch
Clean Architecture with Spring by Tom Hombergs @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May Slides: https://speakerdeck.com/thombergs/o-2019 Buzzwords like “Clean Architecture” and “Hexagonal Architecture” have been around for quite some time now. But have you actually seen an application built with one of these paradigms? How do we actually implement such an architecture in a way that the software we create stays flexible and maintainable? This talk presents the concepts and reasoning behind the buzzwords “Clean Architecture” and “Hexagonal Architecture” and translates them into actual code. Going through an example web application based on Java and Spring, we’ll discuss the full stack ranging from the web layer to the persistence layer. How should we structure our application? Where does the input validation code belong? How do I access my domain logic? How can I let my bounded contexts communicate cleanly? And how does Spring help with all of this? These questions and more will be answered.

Watch
Going Cloud Native with Spring Cloud Azure by Julien Dubois and Josh Long @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May GitHub repo: https://github.com/joshlong/spring_io_2019/tree/master/azure In this session, Julien and Josh will show how you can use Spring Cloud Azure to implement and enhance Spring-based apps that include high scalability through Cloud Foundry, access to NoSQL data services on Azure with Spring Data, authentication and authorization mechanisms and messaging with Spring Cloud Stream, and more useful Spring Cloud modules for Azure.

Watch
GraalVM for Java developers by Oleg Šelajev @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May GraalVM is a high-performance runtime for dynamic, static, and native languages. GraalVM supports Java, Scala, Kotlin, Groovy, and other JVM-based languages. At the same time, it can run the dynamic scripting languages JavaScript including node.js, Ruby, R, and Python. In this session we’ll talk about the performance boost you can get from running your code on GraalVM, look at the examples of running typical web-applications with it, enhancing them with code in other languages, creating native images for incredibly fast startup and low memory overhead for your services. GraalVM offers you the opportunity to write the code in the language you want, and run the resulting program really fast.

Watch
Stream Processing with the Spring Framework Like You’ve Never Seen It Before by Viktor and Josh

Spring I/O 2019 - Barcelona, 16-17 May GitHub repo: https://github.com/joshlong/spring_io_2019/tree/master/kafka_and_spring Let’s assume you are eager to refactor your existing monolith, legacy system, or other to-be-deprecated code into a shiny new event-driven system. And let us assume, while you are in the process, that you want to use the Spring Framework as your guiding architectural substrate. These are not just cool things to do—they are measured, well-informed, downright wise architectural decisions with may successful projects behind them. In this talk, Viktor Gamov and Josh Long will live-code their way to a small, functioning, microservices-based web application. We’ll use Spring Boot for the web interfaces, Apache Kafka to integrate the services, and of course Spring for Kafka as the API between the two. If you want to use Spring and Kafka together, apply the right patterns, avoid the wrong antipatterns, and generally get a good glimpse into a solid toolset for building a modern Java web application, look no further. We hope to see you in the session!

Watch
Moving beyond REST: GraphQL and Java & Spring by Pratik Patel @ Spring I/O 2019

Spring I/O 2019 - Barcelona, 16-17 May We’ve been using REST-based API development for over a decade now. While it provides a contract for both API developers and API consumers, it can be big, rigid and brittle. GraphQL can be used to either augment or replace REST based endpoints to provide faster and more flexible development. In this session, we’ll discuss GraphQL basics and look at how we create a GraphQL server and consume it in a client, using Java, of course! We will also show how easy it is to mix GraphQL into an existing Spring Boot application.

Watch
Breaking the Magician's Code Diving deeper into Spring Boot internals by Madhura Bhave

Spring I/O 2019 - Barcelona, 16-17 May Slides: https://github.com/mbhave/non-magic-demo One of Spring Boot’s most powerful features is its auto-configuration. This magic is key to the convention-over-configuration approach. But is it really magic? We don’t think so. We’ll take a look under the covers of Spring Boot, helping you be more productive when writing Spring Boot applications.

Watch
SPRING I/O 2019 - Video Summary

Spring I/O is the leading European conference focused on the Spring Framework ecosystem. SAVE THE DATE! Spring I/O 2020 will take place on 14-15 May in Barcelona. Join the Spring community from around the world. There is no better place to share, discuss, collaborate and socialise with other Spring professionals and enthusiasts. #springframework #springio19 #springio20

Watch