April 9–10, 2020

The Curtis
1405 Curtis Street
Denver, CO 80202

Registration coming soon

Agenda Day 1

8:00am Breakfast
8:45am Welcome
9:00am Better Software is Better than Worse Software

Paul Czarkowski

“Digital transformation” seems like idle business fantasy. But, it’s a real strategy used by the US Air Force, Air France KLM, Liberty Mutual, DBS Bank, and others to out-innovate competition & delight people. To kick-off the day, Coté will go over how VMware customers like these are improving their software, how Pivotal Application Service lays the foundation for better software helps, and how you can be a part of making the world a better place with better software.

9:30am Cloud Native Buildpacks: Build Containers at Scale!

Emily Casey

As adoption of Kubernetes grows, operators are learning that maintaining images built with Dockerfiles can be especially difficult at scale. When a CVE hits, how long does it take you to patch and redeploy every image? Will you even know which ones are vulnerable?The Cloud Native Buildpacks project is here to revolutionize the image build experience. Cloud Native Buildpacks, a CNCF sandbox project, provides tooling that combines a great developer experience with the security and auditability that responsible organizations need. At this session you will learn how to use the pack CLI to build or patch a container image in seconds, and how tools like kpack can keep thousands of images up-to-date. Let buildpacks remove the overhead so you can focus on development.

10:40am Break
11:05am Paved Roads - Architecting for Distributed Teams

Nate Schutta

As we migrate towards distributed applications, it is more than just our architectures that are changing, so too are the structures of our teams. The Inverse Conway Maneuver tells us small, autonomous teams are needed to produce small, autonomous services. Architects are spread thin and can’t be involved with every decision. Today, we must empower our teams but we need to ensure our teams are making good choices. How do we do that? How do you put together a cohesive architecture around distributed teams? This talk will discuss creating “paved roads”, well worn paths that we know works and we can support. We will also explore the importance of fitness functions to help our teams adopt appropriate designs.

11:55am Refactor and Do It Safely

Jakub Pilimon

We've all been there, facing a blinking cursor. You need to build a new feature, but aren't sure where to start. Or you have to fix something in your app, and you're unsure why it broke. This situation is common with Big Ball of Mud architectures. This design hinders your release velocity. And it makes it near-impossible to seize new business opportunities. How can you move on from this situation? Most of us also know what good design is. We talk a lot about Domain-Driven Design, modeling, event storming and Test-Driven Development. Here's the challenge: how to apply this thinking to your current systems. How do we modernize the app? How do convince people we should modernize it? How do we overcome the lack of testing? Or lack of business knowledge? Attend this session to answer these questions and more. You'll learn about techniques that have proven to work in companies like yours.

12:50pm Lunch
2:00pm Game of Streams: How to Tame & Get the Most from your Messaging Platforms

Mark Heckler

"Most mission-critical systems have distributed elements or are entirely distributed, resulting in a number of challenges: performance, scalability, reliability, resilience…​the eight fallacies of distributed computing are alive and well! Messaging platforms are often used to solve these problems and increase the ""ilities"", but they don’t come without a few complexities of their own. Come to this session to learn not only how to use open source solutions like Spring Cloud Stream, RabbitMQ, & Apache Kafka to maximize your distributed systems' capabilities while minimizing complexity…​but also how to really use them! There be dragons when dealing with messaging platforms; the presenter will show you several ways to tame and harness them for maximum fire, maximum altitude. All examples will be coded live & in real-time!"

2:50pm The Reactive Revolution

Josh Long

The reactive revolution continues. For as much as we've been talking about reactive programming in Spring for the last few years the journey has only just begun. Join Josh Long, and we'll take our reactive applications further, looking at how to build microservices for cloud platforms like PAS (Cloud Foundry) and PKS (Kubernetes). Some of the things we may cover include: - reactive NoSQL data access - reactive SQL data access with R2DBC - orchestration and reliability patterns like client-side loadbalancing, circuit breakers, and hedging - messaging and service integration with Apache Kafka or RSocket - API gateways with Spring Cloud Gateway and patterns like rate limiting - API adapters - serverless programming with Spring Cloud Function and project Riff - reactive authentication and authorization with Spring Security.

3:40pm Break
4:10pm Reactive Architectures with RSocket and Spring Cloud Gateway

Cora Iberkleid

Spring Cloud Gateway introduced a flexible API for configuring the edge service of our applications. Built upon Project Reactor, Spring WebFlux, and Spring Boot 2.0, Spring Cloud Gateway provided a modern and efficient architecture to handle a large number of concurrent requests. However, as with all things Reactive in the Java stack, features like back pressure were only effective within the scope of the JVM. Once a request entered the network, all bets were off. The RSocket protocol allows us to overcome this limitation by extending the capabilities of reactive architectures down to the network level. In this talk, we'll provide an overview of the key benefits of RSocket-based networking and introduce the integration of Spring Cloud Gateway with RSocket. We'll discuss the benefits of this integration, including the impact on speed, scalability, security, and more. We'll also discuss use cases, and show how you can leverage this new technology in your applications.

5:00pm Networking reception

Agenda Day 2

8:00am Breakfast
8:45am Welcome
Breakout Sessions
9:00am–10:00am Spring and the Clouds

Josh Long

Production is my favorite place on the internet. I LOVE production. YOU should love production. You should go as early, and often, as possible. Bring the kids, the whole family. The weather is amazing! It's the happiest place on earth! In this talk, join Spring Developer Advocate Josh Long (your friendly neighborhood @starbuxman) to learn how to use Spring as the onramp to production, and to cloud platforms like Azure Spring Cloud, Cloud Foundry, and more.

10:00am–11:00am Service Meshes for Services

Angela Chin

In 2019, service meshes have been all the rage. As a way to connect, manage, and secure microservices (and beyond!), the service mesh model provides benefits to both operators and application developers. However, like any new technology, the service mesh model comes with trade-offs. In this session, we'll explore what features service meshes provide and see how developers can utilize existing service mesh projects. By understanding the power and complexity of service meshes, attendees should leave with an idea of when and when not to use the service mesh model.

11:30am–12:30pm Spring Security from Zero to Kotlin

Josh Cummings

In this talk, we’ll take an unsecured REST API and convert it into an OAuth 2.0 Resource Server, starting from Spring Security fundamentals. Along the way, we’ll get to enjoy Spring Security’s new Kotlin DSL, released in 5.3. By the end, we’ll be doing advanced things like managing the Spring Security filter chain at runtime.

9:00am–12:30pm Getting Started with Kubernetes

Paul Czarkowski
Tyler Britten

This workshop is aimed at people that are new to Kubernetes and want to quickly level up their experience and learn the basic of Kubernetes in a few short hours. This will be a hands-on-keyboards workshop where each participant will have access to A Kubernetes cluster and will follow along running each command and deploying applications into Kubernetes. By the end of the workshop you'll have the confidence and knowledge to deploy workloads into Kubernetes. Each Participant should come with the following installed on their laptop: kubectl, helm3, and docker.

Space is limited.

9:00am–12:30pm Thinking Architecturally

Nate Schutta

Rich Hickey once said programmers know the benefits of everything and the trade offs of approach that can lead a project down a path of frustrated developers and unhappy customers. As architects though, we must consider the trade offs of every new library, language, pattern or approach and quickly make decisions often with incomplete information. How should we think about the inevitable technology choices we have to make on a project? How do we balance competing agendas? How do we keep our team happy and excited without chasing every new thing that someone finds on the inner webs? Working in small teams, you will work through a kata ( identifying: Quality Attributes, Fitness Functions, Technology decisions, An overall architectural approach.

Space is limited.

12:30pm Lunch
Breakout Sessions
1:30pm–2:30pm Bootiful Reactive Testing

Mario Gray

Join us for an exploration of testing a reactive Spring Boot 2.x application. Test driven development gives us the confidence necessary to improve our code faster, safely. But how do you test components and services, as well as integrations across distributed systems, while maintaining fast feedback loops, and how do you do all of this within the context of reactive Java? In this talk, we'll look at how to test imperative components, reactive data flows, and mocks. We’ll examine how to take advantage of test slices, and how to test web applications. We'll look at how to ensure that API producers and consumers work well together using consumer driven contract testing without sacrificing the testing pyramid for end-to-end integration tests. And we’ll do it all within the context of reactive programming.

2:30pm–3:30pm Building Resilient Streaming Pipelines using Project Reactor and Reactive RabbitMQ

Madhav Sathe

Streaming pipelines need rich capabilities to address a wide range of enterprise needs. Developers need a set of operators to perform stateful transformations such as windowing and aggregations. However, the most critical feature of all is delivery guarantees that provides resiliency to the pipeline. Once we are able to build a pipeline to solve complex problems, how do you make it responsive to performance changes in a distributed system? This is where end-to-end back-pressure comes into the picture. In this session we will develop a real streaming application demonstrating all these capabilities.

4:00pm–5:00pm Ask Me Anything session with all speakers

Join us as we wrap SpringOne Tour with an open ask me anything session with our breakout and workshop presenters.

1:30pm–5:00pm (Tactical) Domain-Driven Design

Jakub Pilimon

Have you ever wondered how to find those mysterious bounded contexts? How to distill aggregates? You probably already know that Domain-Driven Design is not about code. However, at the end of the day, in most projects, we need some code. Right? Enough of the theory. In this workshop, we will quickly dive into an exercise and start modeling a real-life business problem by using Event Storming - a technique for understating the problem space. That will lead to valuable insights, but we will not stop there. We will jump into code and implement the proposed model by using Domain-Driven Design patterns and techniques. Let’s talk about CQRS, Hexagonal Architecture, Aggregate, Bounded Context, Event, Invariant, Value Object, and more.You will need your favorite IDE, Java, Git and Maven.

Space is limited.

1:30pm–5:00pm Spring on Kubernetes

Ryan Baxter
Cora Iberkleid

Now that you are familiar with Kubernetes, in this workshop we are going to show you how to get your Spring apps up and running on Kubernetes. This workshop will take you from everyone’s favorite place on the internet, all the way to automated deployments directly to Kubernetes. We will cover tools, as well as best practices, that will make getting your Spring app from your dev machine to your Kubernetes (production) even faster and easier. In addition we will spend some time showing you how to use Spring Cloud Kubernetes to build cloud native Spring apps that run on Kubernetes. By the end of this workshop you will have all the knowledge you need to target Kubernetes as your production environment.

Space is limited.

5:00pm Day Ends