Meetup: https://www.meetup.com/wroclawjug/events/301020673/
Abstract:
Optimizing the startup time of Spring applications is pivotal for elevating performance and scalability within JVM-based systems. In my presentation, I'll delve into a spectrum of strategies and techniques designed to minimize cold start time, leading to enriched user experiences, lowered infrastructure expenses, and streamlined scalability.
We'll examine the criticality of minimizing container image size, particularly when contending with unreliable networks during deployment. I'll explore the nuances of tailoring the JVM to encompass only indispensable modules for production use (aka Project Jigsaw). Throughout the presentation, we'll traverse various methodologies, from evading the 'fat jar' pitfall to crafting multi-layered containers, and contrasting build packs, Jib, and Dockerfile-based image creation. I'll discuss the potential pitfalls of using a 'fat jar' and how to mitigate them effectively. Additionally, we'll harness advanced techniques such as class data sharing, Spring AOT (Ahead-of-Time compilation), and GraalVM to fine-tune startup time. I'll also showcase the deployment of the CRaC project for further optimization.
Our examples will be pragmatic and adaptable across different versions of Spring and Java, ensuring relevance for all attendees. A key emphasis will be on shrinking application size for efficient Docker image transmission, especially crucial in environments with unstable network conditions. We'll commence with techniques applicable from JVM 9+ and Spring Boot 2.3, culminating in an exploration of the latest cutting-edge technologies.
Attendees can anticipate acquiring actionable insights and practical knowledge that they can implement immediately in their projects, yielding tangible enhancements in startup time and overall application performance.
Towards the end of the presentation, I'll conduct a comparative analysis of all approaches, examining artifact sizes and application startup times to provide attendees with a comprehensive understanding of their efficacy.
Speaker: Michał Rowicki
Lead Software Engineer, Paramount
With over 10 years of professional experience in Spring and Java development, I'm dedicated to understanding technology deeply and sharing my knowledge with the community. I've spoken at various Java User Groups and conferences in Poland, including 4Developers and JDD, where I've shared insights and fostered collaboration. Passionate about continuous learning and innovation, I thrive on exploring emerging trends and mentoring aspiring developers.