June 8–9, 2020

Registration & location coming soon

Agenda Day 1

8:00am Breakfast
8:45am Welcome
9:00am We're Not Done Yet - Surviving the Trough of Disillusionment

Paul Czarkowski

Many organizations are getting better at software by using techniques like DevOps, agile development, and product management. Cloud native technologies are making organizations' software supply chains more efficient and reliable. We can't assume that the work is done. New bottlenecks are forming and others are persisting.Improvement is fragile, and scaling up in large enterprises is difficult. This talk discusses these bottlenecks and challenges, and how we can start to move past them.

9:30am Welcome to the Plateau of Productivity

Tyler Britten

Pivotal and VMware have combined forces to help our customers write better software. With the evolution of Tanzu we blur the lines between infrastructure and software. Paul will talk through the Tanzu product line and demonstrate how it combines to create a powerful platform that reduces operations toil and allows developers to focus on writing software. Being based on opensource (batteries not included) means that you can start to take advantage of our hard work event if you aren't [yet] a customer!

9:55am Break
10:30am TBA
11:20am Optimizing Spring Apps for Containerization

Marquita Priester

Many implementations of Kubernetes are leveraging Docker to deploy apps. This talk will point out ways to optimize your Spring app for containers. We will start out building a new app using start.spring.io and convert that app to an image. Along the way, we will identify ways to optimize our app for scalability. If you'd like to follow along, bring a laptop equipped with an IDE and a basic knowledge of Spring.

12:10pm Lunch
1:30pm 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.

2:20pm 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!"

3:10pm Break
3:30pm 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.

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 Spring Bananas From The Edge

Glenn Renfro
Roy Clarkson

Have you ever wondered how much ambient radiation is in your home or workplace? OK ... probably not. But maybe you have thought, “How can I move processing of critical information closer to the edge?” Or perhaps you are now wondering what the “edge” is? In this talk, we will demonstrate how to move the processing of data from the cloud to the edge. Using Spring Cloud Stream, Spring Cloud Task, and Spring Cloud Data Flow, we will also show how to create streams that capture the existing data flows from our IOT Device and merge in the data from our new edge devices. And all instrument readings will be in bananas :-) instead of sieverts or rems.

11:30am–12:30pm Hello RSocket Security

Rob Winch

You are ready to go to production with your RSocket application, but then you realize you forgot one important thing....security. In this talk, we'll walk through adding Spring Security to an existing RSocket application. Along the way we will answer common questions, discuss recent security related changes in the specification, and see how Spring Security can be customized to meet your business requirements.

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 The CI/CD Experience: Kubernetes Edition

Mark Pollack

This workshop is for those who want to learn more about how Kubernetes is shaping the landscape of implementing the practices of Continuous Integration (CI) and Continuous Delivery (CD). We will tour the ecosystem of new Kubernetes centric tools and how gitops relates to CI/CD. Each participant will have a Kubernetes cluster provisioned on a remote server. You will then take hands-on tutorials that use Tekton, Kustomize, and ArgoCD to deploy a Spring Boot application to Kubernetes and promote it through dev, test, and production environments.

Space is limited.

12:30pm Lunch
Breakout Sessions
1:30pm–2:30pm RSocket Messaging with Spring

Rob Winch

RSocket is a protocol that enables high-performance message passing over a multiplexed connection using a pluggable byte stream transport such as TCP, WebSockets, UDP, or other. The passing of messages follows Reactive Streams semantics (i.e., respecting demand signals), and there are libraries in multiple languages, including Java built on Project Reactor. This means the back pressure from your reactive chain of components within the JVM can now extend across the network boundary to remote peers. This session will start by providing a succinct overview of the RSocket protocol and then dive into writing a Spring based RSocket application.

2:30pm–3:30pm Win a Spring Testing Trophy

Bella Bai

Testing is an art. It is more than verification and validation, but also documentation and reliability estimation. Do you have a good signal to noise ratio? Where is the right integration point to plug your test doubles? How to maximize the freedom to refactor or switching dependencies while still maintaining a high confidence in the quality? What is available in the Spring ecosystem that can help? In this talk, we'll review these testing concepts and how Spring can help you achieve these goals. We will discuss why we should embrace the Testing Trophy in Spring, and more generically, the principles we should keep in mind when designing our test suite.

4:00pm–5:00pm 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.

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

Ryan Baxter

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, start.spring.io 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.

1:30pm–5:00pm Thinking Architecturally

Nate Schutta

Rich Hickey once said programmers know the benefits of everything and the trade offs of nothing...an 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 (http://nealford.com/katas/list.html) identifying: Quality Attributes, Fitness Functions, Technology decisions, An overall architectural approach.

Space is limited.

5:00pm Day Ends