List of videos

Debugging applications with IntelliJ IDEA by Anton Arhipov @ Spring I/O 2023

Spring I/O 2023 - Barcelona, 18-19 May Learn IntelliJ IDEA tips & tricks for debugging your applications. It’s a deep dive! We are going to explore the advanced debugger features and how to use them efficiently. Historically, debuggers are used to help locate and fix bugs. Nowadays, the debugger in IntelliJ IDEA can help you do much more than that. We’ll show how the debugger helps make the development process more productive. We’ll explain how some debugger features like lambdas debugging, smart step into, and async stack traces work and how it is possible only because of the tight integration with other IDE features. You will also learn new ways to use the IntelliJ IDEA debugger in your everyday work. Discover various features for debugging Java applications, including not-so-standard ones, like: -lambda breakpoints -stream chain tracing -dropping the frame -emulated method breakpoint -evaluate and log -non-suspending breakpoints and some others 100% live “coding” session

Watch
Building Spring Boot based modular libraries for 120 teams our findings by Jacek & Fabio

Spring I/O 2023 - Barcelona, 18-19 May Speakers: Jacek Kaczmarek / Fabio Pezzoni Slides: https://2023.springio.net/docs/slides/building-spring-boot-based-modular-libraries-for-120-teams-our-findings-springio23.pdf Modular libraries developed collaboratively with the Ocado Technology developer community to help build unified, coherent, safe, and scalable microservices are currently used by more than 120 teams and 400 production applications (and growing). As the team who has overall ownership of the libraries we would like to share our experience of building such software, including topics like: -Why they exist and how we avoided building “a framework on top of Spring Boot”, so that developers still feel that they write Spring apps, not “vendor” apps -Design practices like: what makes a good module, how we balance architecture characteristics, how we structure @Conditions etc. -Engineering practices and routines: releasing 200+ times a year, making upgrades to new Spring releases easier for users by taking “small steps” (Renovate automation practice sharing, Full CD etc.) -Community building including how we balance contribution, communication and engagement/user-happiness while retaining ownership by the custodian team -Leveraging platform engineering knowledge and creating an expert network (including appsecs, application & library engineers, cloud teams) -Active lifecycle of modules including data-driven decisions (detailed feature usage metrics), alternative plans of introduction/removal of features,supportive mechanisms (validators, runtime advisories) and good collaborative upgrade guides.

Watch
The Aggregate is dead. Long live the Aggregate! by Sara Pellegrini & Milan Savic @ Spring I/O 2023

Spring I/O 2023 - Barcelona, 18-19 May Slides: https://www.slideshare.net/saratry/the-aggregate-is-dead-long-live-the-aggregate-springiopdf DDD’s definition of Aggregate may seem somewhat confusing - “An aggregate is a cluster of associated objects that we treat as a unit for the purpose of data changes.” Okay, let’s try to clarify - “You should consider your aggregate as a unit of consistency in your Domain.”. That doesn’t help either. As a matter of fact, while modeling our systems, we tend to group together events related to the same domain concept; we tend to define groups based on the nouns we find inside our events’ name: saying “this is our aggregate!”. According to the aggregate definition, we should instead ignore these nouns, and put together the data that change together. Easier said than done: in the modeling phase it is easy to make mistakes trying to identify the boundaries of our aggregates based on this rule. If we opt for saving the state of our aggregate as a series of events, we are in big trouble - any (serious) refactoring of the aggregate structure becomes close to impossible. The reason for this trouble is that we have to make a decision in the design phase for which we cannot be lenient. We are basically married to this decision forever. Due to the aforementioned reasons (and many others), people struggle with the Aggregate pattern. Some even say it is unnecessary, we are one of those. Let’s see whether we can model our business constraints without aggregates. Could we be more relaxed when consistency is in question? Join us to discover how!

Watch
Automating away bugs with Error Prone in practice by Rick Ossendrijver @ Spring I/O 2023

Spring I/O 2023 - Barcelona, 18-19 May Slides: https://www.slideshare.net/RickOssendrijver1/eps-in-practice-spring-iopdf GitHub repo: https://github.com/rickie/error-prone-demo Are you tired of constantly fixing the same bugs and anti-patterns in your codebase? At Picnic, we’ve found a solution that not only resolves bugs once and for all, but also leads to a more consistent and high-quality codebase. Enter Error Prone: a tool that automates large-scale refactorings in your Java codebase. As a compiler plugin, it is capable of automatically suggesting and applying fixes at scale. For years, Picnic has been using Error Prone to streamline our development process. In this talk, we will provide a comprehensive demonstration of Error Prone’s capabilities, as well as offer practical guidance on how to set it up for your own team. Additionally, we will share our experiences and learnings, including creating and enabling our own set of custom rules. These are now open-sourced in Picnic’s Error Prone Support repository. Come and learn how you can use Error Prone to streamline your development process as well!

Watch
Live Hacking Cloud Architectures by Thorsten Jakoby & Mirna Alaisami @ Spring I/O 2023

Spring I/O 2023 - Barcelona, 18-19 May Slides: https://docs.google.com/presentation/d/1jAotuyPxwn6QRf0jJ3uTUPFUyOD5ToD72tEGnq5aJ3o/edit?usp=sharing See a live attack and defence of typical Kubernetes utilizing cloud architecture. Spring applications are configured and observed like many our customers do. We’ll compromise them and leak data. One speaker attacks, one speaker defends. Let’s see who’ll win this time. As more organizations are moving to the cloud, cloud architectures are getting more sophisticated by having a kind of technology diversity. This includes for example container orchestrators, database services, event meshes, networking components and virtual machines. When it comes to security, observability on this diversity is paramount. The main question here is, do you really perceive when your app landscape is under attack? In this session, you will have the opportunity to see various attack vectors and ways to mitigate and observe them. Many technologies will be used such as Kubernetes, eBPF, Cillium, Falco and much more! Come and watch a live attack on a real-world based cloud architecture and see the attacker scan web applications and start lateral movement with the goal of exfiltrating data. Furthermore, become a part of the blue-team, defending and securing the architecture with modern open source tools.

Watch
Mastering GC: tame the beast and make it your best ally by Jean-Philippe Bempel @ Spring I/O 2023

Spring I/O 2023 - Barcelona, 18-19 May Slides: https://www.ginnieandfifounet.com/jpb/slides/Mastering%20GC_%20tame%20the%20beast%20and%20make%20it%20your%20best%20ally.pdf This talk discuss advantages and limits of each GC (G1, Serial, Parallel, Z & Shenandoah) to choose the one that fits according to the type of applications We discuss in detail how to tune GC depending on the case: Which GC to use for a batch oriented application? How to tune GC to maximise time to process data and optimize resources? Which GC for user request/response applications more latency sensitive? What is the difference between Z and Shenandoah? How to size to take best advantage of them? G1: What are the issues (RememberSet, Humongous, Young gen resize, …)? How to tune it correctly depending on your resources?

Watch
Observability of Your Application by Marcin Grzejszczak & Tommy Ludwig @ Spring I/O 2023

Spring I/O 2023 - Barcelona, 18-19 May Slides: https://docs.google.com/presentation/d/1osp1WQilAmnSZtZ_ZSL2rSRLM5BTjKrVH-ge-VcW_Qs/edit#slide=id.g253640fe83_0_202 GitHub repo: https://github.com/jonatan-ivanov/teahouse Imagine that you’re receiving a support ticket that your application is not working. You read the attached stack trace and now it’s time to solve the mystery. What did the user do that led to the throwing of this exception? Is it possible to find all the logs from all the applications that correspond to this user’s business operation? What if the user is complaining that the system is slow? How can you decide which concrete operation is the culprit? Is there any way to visualize the latency? Let’s answer these questions by taking a deep dive into application observability using distributed tracing, metrics, and correlated logs with Spring, VMware Aria Operations for Applications (formerly Tanzu Observability by Wavefront), OpenZipkin, OpenTelemetry, and more!

Watch
Securing the Service to Service Call Chain Patterns and Protocols by Adib Saikali @ Spring I/O 2023

Spring I/O 2023 - Barcelona, 18-19 May A single request arriving at a service can spawn many requests to downstream services. Securing the service-to-service call chain is a critical but challenging problem. This talk covers the key patterns for securing the service-to-service call chain and the technologies required to implement them. We explore patterns for using API Gateways, Service Mesh, SPIFFE, mTLS, JWT, and OpenID Connect using Spring-based demo apps. By the end of the talk, you’ll be familiar with all the key patterns along with technical and security tradeoffs for each of the patterns, allowing you to choose the patterns that will best fit your specific requirements. We’ll provide a GitHub repo containing implementations of all the patterns discussed in the talk, so you can apply what you learn on your projects.

Watch
Action Jackson! Effective JSON processing in Spring Boot Applications by Joris Kuipers @ Spring I/O

Spring I/O 2023 - Barcelona, 18-19 May Slides: https://www.slideshare.net/jkuipers/action-jackson-effective-json-processing-in-spring-boot-applications GitLab repo: https://gitlab.trifork.nl/jorisk/action-jackson-demos JSON processing plays an important role in nearly all applications nowadays, and Jackson is the de-facto standard library for that. Most developers are therefore familiar with using it for simple (un)marshalling purposes, but never go beyond the basics. In this session Joris will show how to effectively configure and use Jackson, focusing on Spring Boot applications. Boot provides a lot of support for configuring ObjectMappers, which you can use directly but are also used internally by the framework for e.g. handling HTTP requests/responses or message conversion. Topics will include tuning mappings, using modules, applying views and using alternative parsing options like JSON Pointer and JsonPath, all illustrated through live demos. Don’t miss out on this presentation and become an Action Jackson yourself!

Watch