SlideShare a Scribd company logo
Crafting integrated IT solutions that make your
business thrive.
Kristof Van Sever
@vanseverk
Wim Creuwels
@wimcreuwels
Jeroen Sterken
@jeroensterken
www.faros.be | hello@faros.be
Spring I/O Barcelona '19 Recap
Spring I/O Barcelona ‘19 Conference
22/05/2019 1
Cloud Native Enterprise
Development
• Software development / Projects
• IT Consultancy
• Audit/training
Technology focus
• Spring Ecosystem
• Pivotal CloudFoundry
Serverless
Reactive
Leuven (Belgium)
https://www.meetup.com/Spring-Framework-Belgium
https://www.meetup.com/Spring-Framework-Belgium
https://www.meetup.com/Reactive-Programming-Belgium/
https://www.meetup.com/Serverless-Belgium/
Introduction
22/05/2019 4
Introduction
22/05/2019 5
Community
Presentation
“Migrating a modern spring web application to serverless”
https://2019.springio.net/sessions/migrating-a-modern-spring-web-application-to-serverless
Server
Migrating a spring web application to serverless
Service
SpringDataJPA
SQL
db
MVC/Vaadin
internet
Infrastructure As Code
JSON Server
BaaS
Migrating a spring web application to serverless
S p r i n g C l o u d F u n c t i o n
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public Function<String, String> uppercase(String value) {
return value -> value.toUpperCase();
}
}
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-function-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-function-adapter-aws</artifactId>
</dependency>
Spring core 5.x
P a s t , p r e s e n t , f u t u r e
22/05/2019 8
Spring I/0 ‘19
• What’s coming, what’s coming after, and what will come one day?
• Reactive: Transaction support, R2DBC, Rsocket
• Platform & architecture: K8s, PCF, Spinnaker, Cloud Native with Spring: Spring
to Cloud X
• GraalVM, kotlin + coroutines, JVM
• Security & Spring
• Migrating a modern spring web application to serverless
22/05/2019 9
S u m m a r y
Spring 5.2
• GA 31 july
• Release notes
• Startup optimization
• Annotation processing (revisited)
• Reactive transaction support (tx operator)
• RSocket messaging
• Kotlin coroutines
• Webmvc.fn
22/05/2019 10
Spring boot 2.2
Spring 5.3
• Q2 2020
• Release notes
• Support JDK 13/14/15
• Code analysis annotation
• GraalVM native images
• Hibernate ORM 6
• Kotlin 1.4
• Jetty 10
22/05/2019 11
Beyond Spring 5.x
• JDK 11 baseline
• Revisiting java modules (ex. Java 9 modules)
• Jakarta EE alignment
• Project loom (fibers)
22/05/2019 12
22/05/2019 13
Reactive support
Reactive support
22/05/2019 14
Reactive Transaction support && R2DBC
• Talk: Reactive Relational Database Connectivity (Ben Hale)
• Reactive journey continues…
• Finally support for @Transactional
• Becoming even more important since MongoDB 4.0 and R2DBC
• Imperative transactions -> ThreadLocal storage
• All happens on the same thread…
• Reactive transactions
• Can’t use ThreadLocal due to Reactive model but to SubscriberContext
• Can be non-blocking from the Java perspective
• Will still be occupying a database connection from the DB perspective
22/05/2019 15
Reactive Transaction support && R2DBC
• With R2DBC now reactive integration with SQL Database drivers
• Main focus is on a small service provider interface
• More user-focused interfaces can be built onto simple SPI
• Also support through Spring Data R2DBC
22/05/2019 16
@Repository
public interface CoffeeRepository extends ReactiveCrudRepository<Coffee, Long> {
@Query("SELECT id, name, score FROM coffee")
Flux<Coffee> findAll();
}
Reactive Transaction support && R2DBC
• Ongoing development
• Anyone interested in helping out? ->
22/05/2019 17
Reactive streams over JVMs through RSocket
• Talk: Multi-Service Reactive Streams Using Spring, Reactor, and Rsocket (Ben
Hale)
• “RSocket is a binary protocol for use on byte stream transports such as TCP,
WebSockets, and Aeron.”
• Different symmetric models via async message passing over a single
connection
• request/response (stream of 1)
• request/stream (finite stream of many)
• fire-and-forget (no response)
• channel (bi-directional streams)
22/05/2019 18
Reactive streams over JVMs through RSocket
• Basic interfaces available
• But also part of Spring messaging
22/05/2019 19
@Controller {
@MessageMapping("coffeeOrders")
public Flux<CoffeeOrder> coffeeOrdersStream(CoffeeServerSubscription request) {
return Flux.range(1, 1000).map(n -> randomCoffee()).delayElements(Duration.of(1,
SECONDS));
}
}
public Flux<CoffeeOrder> receiveCoffeeOrders() {
return this.requester
.route("coffeeOrders")
.data(new CoffeeServerSubscription("WaiterName"))
.retrieveFlux(CoffeeOrder.class);
}
Reactive streams over JVMs through RSocket
• RSocket Demo: https://github.com/vanseverk/coffeesocket
22/05/2019 20
Spring Cloud
22/05/2019 21
Cloud-Native with Spring
• Spring Cloud on Kubernetes
• Andreas Falk
• Configuration Management with Kubernetes, a Spring Boot use-case
• Nicolas Frankel
• Kubernetes and/or Cloud Foundry - How to run your Spring Boot Microservices
on state-of-the-art cloud platforms
• Matthias Haeussler
• Going Cloud Native with Spring Cloud Azure
• Julien Dubois / Josh Long
• Spring to Google Cloud Native
• Ray Tsang / Josh Long
22/05/2019 22
Post Spring-Cloud-Netflix
22/05/2019 23
Post Spring-Cloud-Netflix
22/05/2019 24
• Spring Cloud Netflix Eureka (client/server)
• Spring Cloud Netflix Ribbon
• Spring Cloud Netflix Zuul
• Spring Cloud Netflix Hystrix (stream, dashboard)
• Spring Cloud Netflix Turbine (stream)
• Spring Cloud Netflix Archaius
Post Spring-Cloud-Netflix
22/05/2019 25
• Spring Cloud Greenwich.RELEASE
• Spring Cloud Netflix Projects Entering Maintenance Mode
• Spring Cloud Netflix Ribbon
• Spring Cloud Netflix Zuul
• Spring Cloud Netflix Hystrix (stream, dashboard)
• Spring Cloud Netflix Turbine (stream)
• Spring Cloud Netflix Archaius
Post Spring-Cloud-Netflix
22/05/2019 26
• Spring Cloud Netflix replacements
CURRENT REPLACEMENT
Hystrix Resilience4j
Hystrix Dashboard / Turbine Micrometer + Monitoring System
Ribbon Spring Cloud Loadbalancer
Zuul 1 Spring Cloud Gateway
Archaius 1 Spring Boot external config + Spring
Cloud Config
Post Spring-Cloud-Netflix
22/05/2019 27
old stack new stack
Spinnaker
22/05/2019 28
Spinnaker
• Cutting-edge continuous Delivery: Automated Canary Analysis through
Spring-based Spinnaker (Andreas Evers)
22/05/2019 29
Spinnaker
• “Spinnaker is an open source, multi-cloud continuous delivery platform for
releasing software changes with high velocity and confidence.”
• Multi-cloud, including K8S, PAS, AWS EC2, Google Compute Engine, etc
• Includes overviews over different clouds
• Automated deployments through pipelines
22/05/2019 30
Spinnaker
22/05/2019 31
Spinnaker
• Offers Automated Canary Analysis
22/05/2019 32
Other
22/05/2019 33
22/05/2019 34
Spring & Kotlin
22/05/2019 35
Spring & Kotlin
22/05/2019 36
T o d a y
Building web applications with Spring Boot & Kotlin
https://spring.io/guides/tutorials/spring-boot-kotlin/
Spring & Kotlin
• Kofu
• Different configuration model for Spring Boot
• Minimalist, efficient and explicit
• No auto-config based on classpath, developer is in control
• Configuration as code
• Leverages Spring Boot infrastructure using functional bean registration
• Allows to run as GraalVM native executables
• Kotlin native reactive flows
22/05/2019 37
N e x t s t e p s
https://github.com/spring-projects/spring-fu
Spring Fu is an incubator for features like Kofu configuration, Coroutines and
GraalVM native image support
Spring & Kotlin
• Kofu
22/05/2019 38
N e x t s t e p s
Spring & Kotlin
• Coroutines
• Lightweight threads allowing to write non-blocking code in an imperative way
• Since Kotlin 1.3
• Coroutines 1.2 introduces Flow Type
22/05/2019 39
N e x t s t e p s
Spring & Kotlin
• Reactive API
• Coroutines
22/05/2019 40
N e x t s t e p s
fun findOne(id: String): Mono<User>
suspend fun findOne(id: String): User?
Spring & Kotlin
Reactor
fun handler(): Mono<Void>
fun handler(): Mono<T>
fun handler(): Flux<T>
Coroutines
suspend fun handler()
suspend fun handler(): T
fun handler(): Flow<T>
22/05/2019 41
N e x t s t e p s
Spring & Kotlin
• Coroutines
• Going Reactive with Spring, Coroutines and Kotlin Flow
• https://spring.io/blog/2019/04/12/going-reactive-with-spring-coroutines-and-
kotlin-flow
22/05/2019 42
N e x t s t e p s
JVM
• GraalVM for Java developers
• Compiler on top of Java Hotspot
• Multilanguage support
• Included in OpenJDK
• Native images
22/05/2019 43
Resources
• Spring I/O 2019 - Keynote
by Juergen Hoeller, Ben Hale, Violeta Georgieva and Sébastien Deleuze
https://www.youtube.com/watch?v=Ylrxpbs6vcs
• https://2019.springio.net/sessions
22/05/2019 44
Contact
Gaston Geenslaan 11 B4
3000 Leuven
hello@faros.be
+32(0)16 240 840
@FarosBelgium farosbe
info@faros.be
22/05/2019 46

More Related Content

What's hot

ppt-basecamp
ppt-basecampppt-basecamp
ppt-basecamp
charliesleopanadan
 
Docker Rosenheim Meetup: Policy & Governance for Kubernetes
Docker Rosenheim Meetup: Policy & Governance for KubernetesDocker Rosenheim Meetup: Policy & Governance for Kubernetes
Docker Rosenheim Meetup: Policy & Governance for Kubernetes
Nico Meisenzahl
 
DevOpsCon London: How containerized Pipelines can boost your CI/CD
DevOpsCon London: How containerized Pipelines can boost your CI/CDDevOpsCon London: How containerized Pipelines can boost your CI/CD
DevOpsCon London: How containerized Pipelines can boost your CI/CD
Nico Meisenzahl
 
IlSole24Ore: Business Information and CQ5, the missing link
IlSole24Ore: Business Information and CQ5, the missing linkIlSole24Ore: Business Information and CQ5, the missing link
IlSole24Ore: Business Information and CQ5, the missing link
Day Software
 
What’s new mvc 4
What’s new mvc 4What’s new mvc 4
What’s new mvc 4
MaslowB
 
Knowledge Area By Project Phase Creating Links Between Projects
Knowledge Area By Project Phase   Creating Links Between ProjectsKnowledge Area By Project Phase   Creating Links Between Projects
Knowledge Area By Project Phase Creating Links Between Projects
Forrest Kovach, MBA, PMP
 
Azure Rosenheim Meetup: Azure Service Operator
Azure Rosenheim Meetup: Azure Service OperatorAzure Rosenheim Meetup: Azure Service Operator
Azure Rosenheim Meetup: Azure Service Operator
Nico Meisenzahl
 
GitLab Remote Meetup: Enhance Your Kubernetes CI/CD Pipelines with GitLab & ...
GitLab Remote Meetup:  Enhance Your Kubernetes CI/CD Pipelines with GitLab & ...GitLab Remote Meetup:  Enhance Your Kubernetes CI/CD Pipelines with GitLab & ...
GitLab Remote Meetup: Enhance Your Kubernetes CI/CD Pipelines with GitLab & ...
Nico Meisenzahl
 
Optimize All the Things WCOC 2019
Optimize All the Things WCOC 2019Optimize All the Things WCOC 2019
Optimize All the Things WCOC 2019
Maura Teal
 
Virtual Azure Community Day: Azure Kubernetes Service Basics
Virtual Azure Community Day: Azure Kubernetes Service BasicsVirtual Azure Community Day: Azure Kubernetes Service Basics
Virtual Azure Community Day: Azure Kubernetes Service Basics
Nico Meisenzahl
 
Web app job and functions - TUGAIT 2017
Web app job and functions  - TUGAIT 2017Web app job and functions  - TUGAIT 2017
Web app job and functions - TUGAIT 2017
Steef-Jan Wiggers
 
DevOpsCon Berlin: Helm vs Operators – Do I Need to Decide?
DevOpsCon Berlin: Helm vs Operators – Do I Need to Decide?DevOpsCon Berlin: Helm vs Operators – Do I Need to Decide?
DevOpsCon Berlin: Helm vs Operators – Do I Need to Decide?
Nico Meisenzahl
 
Serverless Anti-Patterns @Helsinki Serverless Days - 25.04.2019
Serverless Anti-Patterns @Helsinki Serverless Days - 25.04.2019 Serverless Anti-Patterns @Helsinki Serverless Days - 25.04.2019
Serverless Anti-Patterns @Helsinki Serverless Days - 25.04.2019
Davide Taibi
 
CICD with k8s and os
CICD with k8s and osCICD with k8s and os
CICD with k8s and os
Michael Lehmann
 
GitHub Actions 101
GitHub Actions 101GitHub Actions 101
GitHub Actions 101
Nico Meisenzahl
 
Leveraging Envoy Proxy and GraphQL to Lower the Risk of Monolith to Microserv...
Leveraging Envoy Proxy and GraphQL to Lower the Risk of Monolith to Microserv...Leveraging Envoy Proxy and GraphQL to Lower the Risk of Monolith to Microserv...
Leveraging Envoy Proxy and GraphQL to Lower the Risk of Monolith to Microserv...
Christian Posta
 
Cocoon Project Wizard
Cocoon Project WizardCocoon Project Wizard
Cocoon Project Wizard
gueste97155
 
Measuring gravity with BTLE
Measuring gravity with BTLEMeasuring gravity with BTLE
Measuring gravity with BTLE
Nick Brook
 
Virtual GitLab Meetup: How Containerized Pipelines and Kubernetes Can Boost Y...
Virtual GitLab Meetup: How Containerized Pipelines and Kubernetes Can Boost Y...Virtual GitLab Meetup: How Containerized Pipelines and Kubernetes Can Boost Y...
Virtual GitLab Meetup: How Containerized Pipelines and Kubernetes Can Boost Y...
Nico Meisenzahl
 
GraphQL.net
GraphQL.netGraphQL.net
GraphQL.net
Tyler Ayers
 

What's hot (20)

ppt-basecamp
ppt-basecampppt-basecamp
ppt-basecamp
 
Docker Rosenheim Meetup: Policy & Governance for Kubernetes
Docker Rosenheim Meetup: Policy & Governance for KubernetesDocker Rosenheim Meetup: Policy & Governance for Kubernetes
Docker Rosenheim Meetup: Policy & Governance for Kubernetes
 
DevOpsCon London: How containerized Pipelines can boost your CI/CD
DevOpsCon London: How containerized Pipelines can boost your CI/CDDevOpsCon London: How containerized Pipelines can boost your CI/CD
DevOpsCon London: How containerized Pipelines can boost your CI/CD
 
IlSole24Ore: Business Information and CQ5, the missing link
IlSole24Ore: Business Information and CQ5, the missing linkIlSole24Ore: Business Information and CQ5, the missing link
IlSole24Ore: Business Information and CQ5, the missing link
 
What’s new mvc 4
What’s new mvc 4What’s new mvc 4
What’s new mvc 4
 
Knowledge Area By Project Phase Creating Links Between Projects
Knowledge Area By Project Phase   Creating Links Between ProjectsKnowledge Area By Project Phase   Creating Links Between Projects
Knowledge Area By Project Phase Creating Links Between Projects
 
Azure Rosenheim Meetup: Azure Service Operator
Azure Rosenheim Meetup: Azure Service OperatorAzure Rosenheim Meetup: Azure Service Operator
Azure Rosenheim Meetup: Azure Service Operator
 
GitLab Remote Meetup: Enhance Your Kubernetes CI/CD Pipelines with GitLab & ...
GitLab Remote Meetup:  Enhance Your Kubernetes CI/CD Pipelines with GitLab & ...GitLab Remote Meetup:  Enhance Your Kubernetes CI/CD Pipelines with GitLab & ...
GitLab Remote Meetup: Enhance Your Kubernetes CI/CD Pipelines with GitLab & ...
 
Optimize All the Things WCOC 2019
Optimize All the Things WCOC 2019Optimize All the Things WCOC 2019
Optimize All the Things WCOC 2019
 
Virtual Azure Community Day: Azure Kubernetes Service Basics
Virtual Azure Community Day: Azure Kubernetes Service BasicsVirtual Azure Community Day: Azure Kubernetes Service Basics
Virtual Azure Community Day: Azure Kubernetes Service Basics
 
Web app job and functions - TUGAIT 2017
Web app job and functions  - TUGAIT 2017Web app job and functions  - TUGAIT 2017
Web app job and functions - TUGAIT 2017
 
DevOpsCon Berlin: Helm vs Operators – Do I Need to Decide?
DevOpsCon Berlin: Helm vs Operators – Do I Need to Decide?DevOpsCon Berlin: Helm vs Operators – Do I Need to Decide?
DevOpsCon Berlin: Helm vs Operators – Do I Need to Decide?
 
Serverless Anti-Patterns @Helsinki Serverless Days - 25.04.2019
Serverless Anti-Patterns @Helsinki Serverless Days - 25.04.2019 Serverless Anti-Patterns @Helsinki Serverless Days - 25.04.2019
Serverless Anti-Patterns @Helsinki Serverless Days - 25.04.2019
 
CICD with k8s and os
CICD with k8s and osCICD with k8s and os
CICD with k8s and os
 
GitHub Actions 101
GitHub Actions 101GitHub Actions 101
GitHub Actions 101
 
Leveraging Envoy Proxy and GraphQL to Lower the Risk of Monolith to Microserv...
Leveraging Envoy Proxy and GraphQL to Lower the Risk of Monolith to Microserv...Leveraging Envoy Proxy and GraphQL to Lower the Risk of Monolith to Microserv...
Leveraging Envoy Proxy and GraphQL to Lower the Risk of Monolith to Microserv...
 
Cocoon Project Wizard
Cocoon Project WizardCocoon Project Wizard
Cocoon Project Wizard
 
Measuring gravity with BTLE
Measuring gravity with BTLEMeasuring gravity with BTLE
Measuring gravity with BTLE
 
Virtual GitLab Meetup: How Containerized Pipelines and Kubernetes Can Boost Y...
Virtual GitLab Meetup: How Containerized Pipelines and Kubernetes Can Boost Y...Virtual GitLab Meetup: How Containerized Pipelines and Kubernetes Can Boost Y...
Virtual GitLab Meetup: How Containerized Pipelines and Kubernetes Can Boost Y...
 
GraphQL.net
GraphQL.netGraphQL.net
GraphQL.net
 

Similar to Spring I/O Barcelona '19 Recap

Openbar 12 - Leuven - From reactive programming to reactive architecture
Openbar 12 - Leuven - From reactive programming to reactive architectureOpenbar 12 - Leuven - From reactive programming to reactive architecture
Openbar 12 - Leuven - From reactive programming to reactive architecture
Openbar
 
Containers & Cloud Native Ops Cloud Foundry Approach
Containers & Cloud Native Ops Cloud Foundry ApproachContainers & Cloud Native Ops Cloud Foundry Approach
Containers & Cloud Native Ops Cloud Foundry Approach
CodeOps Technologies LLP
 
Exploring a simpler, more portable, less overhead solution to deploy Elastics...
Exploring a simpler, more portable, less overhead solution to deploy Elastics...Exploring a simpler, more portable, less overhead solution to deploy Elastics...
Exploring a simpler, more portable, less overhead solution to deploy Elastics...
LetsConnect
 
Jenkins World 2019 - Integrating jenkins x with your business
Jenkins World 2019 - Integrating jenkins x with your businessJenkins World 2019 - Integrating jenkins x with your business
Jenkins World 2019 - Integrating jenkins x with your business
Mauricio (Salaboy) Salatino
 
Lessons Learned: Spring Cloud -> Docker -> Kubernetes
Lessons Learned: Spring Cloud -> Docker -> KubernetesLessons Learned: Spring Cloud -> Docker -> Kubernetes
Lessons Learned: Spring Cloud -> Docker -> Kubernetes
Mauricio (Salaboy) Salatino
 
Containerized Build & Deployment Pipelines
Containerized Build & Deployment PipelinesContainerized Build & Deployment Pipelines
Containerized Build & Deployment Pipelines
Nico Meisenzahl
 
Whats new in Azure Functions and .NET 6.pptx
Whats new in Azure Functions and .NET 6.pptxWhats new in Azure Functions and .NET 6.pptx
Whats new in Azure Functions and .NET 6.pptx
Callon Campbell
 
KubeCon + CloudNativeCon Barcelona and Shanghai 2019 - Highlights
KubeCon + CloudNativeCon Barcelona and Shanghai 2019 - HighlightsKubeCon + CloudNativeCon Barcelona and Shanghai 2019 - Highlights
KubeCon + CloudNativeCon Barcelona and Shanghai 2019 - Highlights
Krishna-Kumar
 
Migrating from IBM API Connect v5 to v2018
Migrating from IBM API Connect v5 to v2018Migrating from IBM API Connect v5 to v2018
Migrating from IBM API Connect v5 to v2018
Natalia Kataoka
 
IoT Physical Servers and Cloud Offerings.pdf
IoT Physical Servers and Cloud Offerings.pdfIoT Physical Servers and Cloud Offerings.pdf
IoT Physical Servers and Cloud Offerings.pdf
GVNSK Sravya
 
Twelve-Factor application pattern with Spring Framework
Twelve-Factor application pattern with Spring FrameworkTwelve-Factor application pattern with Spring Framework
Twelve-Factor application pattern with Spring Framework
dinkar thakur
 
AWS Meetup Nov 2015 - News Corp Presentation
AWS Meetup Nov 2015 - News Corp PresentationAWS Meetup Nov 2015 - News Corp Presentation
AWS Meetup Nov 2015 - News Corp Presentation
PolarSeven Pty Ltd
 
Serverless brewbox
Serverless   brewboxServerless   brewbox
Serverless brewbox
Lino Telera
 
Webinar- Tea for the Tillerman
Webinar- Tea for the TillermanWebinar- Tea for the Tillerman
Webinar- Tea for the Tillerman
Cumulus Networks
 
Financial Project with Spring WebFlux
Financial Project with Spring WebFluxFinancial Project with Spring WebFlux
Financial Project with Spring WebFlux
LINE Corporation
 
Docker Enterprise Workshop - Intro
Docker Enterprise Workshop - IntroDocker Enterprise Workshop - Intro
Docker Enterprise Workshop - Intro
Patrick Chanezon
 
Practical Application of API-First in microservices development
Practical Application of API-First in microservices developmentPractical Application of API-First in microservices development
Practical Application of API-First in microservices development
Chavdar Baikov
 
DotnetConf - Cloud native and .Net5 announcements
DotnetConf - Cloud native and .Net5 announcementsDotnetConf - Cloud native and .Net5 announcements
DotnetConf - Cloud native and .Net5 announcements
Sajeetharan
 
Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014
Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014
Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014
FalafelSoftware
 
London Java Community: Spring Cloud -> Docker -> Kubernetes
London Java Community: Spring Cloud -> Docker -> KubernetesLondon Java Community: Spring Cloud -> Docker -> Kubernetes
London Java Community: Spring Cloud -> Docker -> Kubernetes
Mauricio (Salaboy) Salatino
 

Similar to Spring I/O Barcelona '19 Recap (20)

Openbar 12 - Leuven - From reactive programming to reactive architecture
Openbar 12 - Leuven - From reactive programming to reactive architectureOpenbar 12 - Leuven - From reactive programming to reactive architecture
Openbar 12 - Leuven - From reactive programming to reactive architecture
 
Containers & Cloud Native Ops Cloud Foundry Approach
Containers & Cloud Native Ops Cloud Foundry ApproachContainers & Cloud Native Ops Cloud Foundry Approach
Containers & Cloud Native Ops Cloud Foundry Approach
 
Exploring a simpler, more portable, less overhead solution to deploy Elastics...
Exploring a simpler, more portable, less overhead solution to deploy Elastics...Exploring a simpler, more portable, less overhead solution to deploy Elastics...
Exploring a simpler, more portable, less overhead solution to deploy Elastics...
 
Jenkins World 2019 - Integrating jenkins x with your business
Jenkins World 2019 - Integrating jenkins x with your businessJenkins World 2019 - Integrating jenkins x with your business
Jenkins World 2019 - Integrating jenkins x with your business
 
Lessons Learned: Spring Cloud -> Docker -> Kubernetes
Lessons Learned: Spring Cloud -> Docker -> KubernetesLessons Learned: Spring Cloud -> Docker -> Kubernetes
Lessons Learned: Spring Cloud -> Docker -> Kubernetes
 
Containerized Build & Deployment Pipelines
Containerized Build & Deployment PipelinesContainerized Build & Deployment Pipelines
Containerized Build & Deployment Pipelines
 
Whats new in Azure Functions and .NET 6.pptx
Whats new in Azure Functions and .NET 6.pptxWhats new in Azure Functions and .NET 6.pptx
Whats new in Azure Functions and .NET 6.pptx
 
KubeCon + CloudNativeCon Barcelona and Shanghai 2019 - Highlights
KubeCon + CloudNativeCon Barcelona and Shanghai 2019 - HighlightsKubeCon + CloudNativeCon Barcelona and Shanghai 2019 - Highlights
KubeCon + CloudNativeCon Barcelona and Shanghai 2019 - Highlights
 
Migrating from IBM API Connect v5 to v2018
Migrating from IBM API Connect v5 to v2018Migrating from IBM API Connect v5 to v2018
Migrating from IBM API Connect v5 to v2018
 
IoT Physical Servers and Cloud Offerings.pdf
IoT Physical Servers and Cloud Offerings.pdfIoT Physical Servers and Cloud Offerings.pdf
IoT Physical Servers and Cloud Offerings.pdf
 
Twelve-Factor application pattern with Spring Framework
Twelve-Factor application pattern with Spring FrameworkTwelve-Factor application pattern with Spring Framework
Twelve-Factor application pattern with Spring Framework
 
AWS Meetup Nov 2015 - News Corp Presentation
AWS Meetup Nov 2015 - News Corp PresentationAWS Meetup Nov 2015 - News Corp Presentation
AWS Meetup Nov 2015 - News Corp Presentation
 
Serverless brewbox
Serverless   brewboxServerless   brewbox
Serverless brewbox
 
Webinar- Tea for the Tillerman
Webinar- Tea for the TillermanWebinar- Tea for the Tillerman
Webinar- Tea for the Tillerman
 
Financial Project with Spring WebFlux
Financial Project with Spring WebFluxFinancial Project with Spring WebFlux
Financial Project with Spring WebFlux
 
Docker Enterprise Workshop - Intro
Docker Enterprise Workshop - IntroDocker Enterprise Workshop - Intro
Docker Enterprise Workshop - Intro
 
Practical Application of API-First in microservices development
Practical Application of API-First in microservices developmentPractical Application of API-First in microservices development
Practical Application of API-First in microservices development
 
DotnetConf - Cloud native and .Net5 announcements
DotnetConf - Cloud native and .Net5 announcementsDotnetConf - Cloud native and .Net5 announcements
DotnetConf - Cloud native and .Net5 announcements
 
Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014
Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014
Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014
 
London Java Community: Spring Cloud -> Docker -> Kubernetes
London Java Community: Spring Cloud -> Docker -> KubernetesLondon Java Community: Spring Cloud -> Docker -> Kubernetes
London Java Community: Spring Cloud -> Docker -> Kubernetes
 

Recently uploaded

Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
Postman
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
DanBrown980551
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
Wouter Lemaire
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
Project Management Semester Long Project - Acuity
Project Management Semester Long Project - AcuityProject Management Semester Long Project - Acuity
Project Management Semester Long Project - Acuity
jpupo2018
 
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying AheadDigital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Wask
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
David Brossard
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
kumardaparthi1024
 

Recently uploaded (20)

Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
Project Management Semester Long Project - Acuity
Project Management Semester Long Project - AcuityProject Management Semester Long Project - Acuity
Project Management Semester Long Project - Acuity
 
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying AheadDigital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying Ahead
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
 

Spring I/O Barcelona '19 Recap

  • 1. Crafting integrated IT solutions that make your business thrive. Kristof Van Sever @vanseverk Wim Creuwels @wimcreuwels Jeroen Sterken @jeroensterken www.faros.be | hello@faros.be Spring I/O Barcelona '19 Recap Spring I/O Barcelona ‘19 Conference 22/05/2019 1
  • 2. Cloud Native Enterprise Development • Software development / Projects • IT Consultancy • Audit/training Technology focus • Spring Ecosystem • Pivotal CloudFoundry Serverless Reactive Leuven (Belgium) https://www.meetup.com/Spring-Framework-Belgium
  • 5. Introduction 22/05/2019 5 Community Presentation “Migrating a modern spring web application to serverless” https://2019.springio.net/sessions/migrating-a-modern-spring-web-application-to-serverless
  • 6. Server Migrating a spring web application to serverless Service SpringDataJPA SQL db MVC/Vaadin internet Infrastructure As Code JSON Server BaaS
  • 7. Migrating a spring web application to serverless S p r i n g C l o u d F u n c t i o n @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } @Bean public Function<String, String> uppercase(String value) { return value -> value.toUpperCase(); } } <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-function-context</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-function-adapter-aws</artifactId> </dependency>
  • 8. Spring core 5.x P a s t , p r e s e n t , f u t u r e 22/05/2019 8
  • 9. Spring I/0 ‘19 • What’s coming, what’s coming after, and what will come one day? • Reactive: Transaction support, R2DBC, Rsocket • Platform & architecture: K8s, PCF, Spinnaker, Cloud Native with Spring: Spring to Cloud X • GraalVM, kotlin + coroutines, JVM • Security & Spring • Migrating a modern spring web application to serverless 22/05/2019 9 S u m m a r y
  • 10. Spring 5.2 • GA 31 july • Release notes • Startup optimization • Annotation processing (revisited) • Reactive transaction support (tx operator) • RSocket messaging • Kotlin coroutines • Webmvc.fn 22/05/2019 10 Spring boot 2.2
  • 11. Spring 5.3 • Q2 2020 • Release notes • Support JDK 13/14/15 • Code analysis annotation • GraalVM native images • Hibernate ORM 6 • Kotlin 1.4 • Jetty 10 22/05/2019 11
  • 12. Beyond Spring 5.x • JDK 11 baseline • Revisiting java modules (ex. Java 9 modules) • Jakarta EE alignment • Project loom (fibers) 22/05/2019 12
  • 15. Reactive Transaction support && R2DBC • Talk: Reactive Relational Database Connectivity (Ben Hale) • Reactive journey continues… • Finally support for @Transactional • Becoming even more important since MongoDB 4.0 and R2DBC • Imperative transactions -> ThreadLocal storage • All happens on the same thread… • Reactive transactions • Can’t use ThreadLocal due to Reactive model but to SubscriberContext • Can be non-blocking from the Java perspective • Will still be occupying a database connection from the DB perspective 22/05/2019 15
  • 16. Reactive Transaction support && R2DBC • With R2DBC now reactive integration with SQL Database drivers • Main focus is on a small service provider interface • More user-focused interfaces can be built onto simple SPI • Also support through Spring Data R2DBC 22/05/2019 16 @Repository public interface CoffeeRepository extends ReactiveCrudRepository<Coffee, Long> { @Query("SELECT id, name, score FROM coffee") Flux<Coffee> findAll(); }
  • 17. Reactive Transaction support && R2DBC • Ongoing development • Anyone interested in helping out? -> 22/05/2019 17
  • 18. Reactive streams over JVMs through RSocket • Talk: Multi-Service Reactive Streams Using Spring, Reactor, and Rsocket (Ben Hale) • “RSocket is a binary protocol for use on byte stream transports such as TCP, WebSockets, and Aeron.” • Different symmetric models via async message passing over a single connection • request/response (stream of 1) • request/stream (finite stream of many) • fire-and-forget (no response) • channel (bi-directional streams) 22/05/2019 18
  • 19. Reactive streams over JVMs through RSocket • Basic interfaces available • But also part of Spring messaging 22/05/2019 19 @Controller { @MessageMapping("coffeeOrders") public Flux<CoffeeOrder> coffeeOrdersStream(CoffeeServerSubscription request) { return Flux.range(1, 1000).map(n -> randomCoffee()).delayElements(Duration.of(1, SECONDS)); } } public Flux<CoffeeOrder> receiveCoffeeOrders() { return this.requester .route("coffeeOrders") .data(new CoffeeServerSubscription("WaiterName")) .retrieveFlux(CoffeeOrder.class); }
  • 20. Reactive streams over JVMs through RSocket • RSocket Demo: https://github.com/vanseverk/coffeesocket 22/05/2019 20
  • 22. Cloud-Native with Spring • Spring Cloud on Kubernetes • Andreas Falk • Configuration Management with Kubernetes, a Spring Boot use-case • Nicolas Frankel • Kubernetes and/or Cloud Foundry - How to run your Spring Boot Microservices on state-of-the-art cloud platforms • Matthias Haeussler • Going Cloud Native with Spring Cloud Azure • Julien Dubois / Josh Long • Spring to Google Cloud Native • Ray Tsang / Josh Long 22/05/2019 22
  • 24. Post Spring-Cloud-Netflix 22/05/2019 24 • Spring Cloud Netflix Eureka (client/server) • Spring Cloud Netflix Ribbon • Spring Cloud Netflix Zuul • Spring Cloud Netflix Hystrix (stream, dashboard) • Spring Cloud Netflix Turbine (stream) • Spring Cloud Netflix Archaius
  • 25. Post Spring-Cloud-Netflix 22/05/2019 25 • Spring Cloud Greenwich.RELEASE • Spring Cloud Netflix Projects Entering Maintenance Mode • Spring Cloud Netflix Ribbon • Spring Cloud Netflix Zuul • Spring Cloud Netflix Hystrix (stream, dashboard) • Spring Cloud Netflix Turbine (stream) • Spring Cloud Netflix Archaius
  • 26. Post Spring-Cloud-Netflix 22/05/2019 26 • Spring Cloud Netflix replacements CURRENT REPLACEMENT Hystrix Resilience4j Hystrix Dashboard / Turbine Micrometer + Monitoring System Ribbon Spring Cloud Loadbalancer Zuul 1 Spring Cloud Gateway Archaius 1 Spring Boot external config + Spring Cloud Config
  • 29. Spinnaker • Cutting-edge continuous Delivery: Automated Canary Analysis through Spring-based Spinnaker (Andreas Evers) 22/05/2019 29
  • 30. Spinnaker • “Spinnaker is an open source, multi-cloud continuous delivery platform for releasing software changes with high velocity and confidence.” • Multi-cloud, including K8S, PAS, AWS EC2, Google Compute Engine, etc • Includes overviews over different clouds • Automated deployments through pipelines 22/05/2019 30
  • 32. Spinnaker • Offers Automated Canary Analysis 22/05/2019 32
  • 36. Spring & Kotlin 22/05/2019 36 T o d a y Building web applications with Spring Boot & Kotlin https://spring.io/guides/tutorials/spring-boot-kotlin/
  • 37. Spring & Kotlin • Kofu • Different configuration model for Spring Boot • Minimalist, efficient and explicit • No auto-config based on classpath, developer is in control • Configuration as code • Leverages Spring Boot infrastructure using functional bean registration • Allows to run as GraalVM native executables • Kotlin native reactive flows 22/05/2019 37 N e x t s t e p s https://github.com/spring-projects/spring-fu Spring Fu is an incubator for features like Kofu configuration, Coroutines and GraalVM native image support
  • 38. Spring & Kotlin • Kofu 22/05/2019 38 N e x t s t e p s
  • 39. Spring & Kotlin • Coroutines • Lightweight threads allowing to write non-blocking code in an imperative way • Since Kotlin 1.3 • Coroutines 1.2 introduces Flow Type 22/05/2019 39 N e x t s t e p s
  • 40. Spring & Kotlin • Reactive API • Coroutines 22/05/2019 40 N e x t s t e p s fun findOne(id: String): Mono<User> suspend fun findOne(id: String): User?
  • 41. Spring & Kotlin Reactor fun handler(): Mono<Void> fun handler(): Mono<T> fun handler(): Flux<T> Coroutines suspend fun handler() suspend fun handler(): T fun handler(): Flow<T> 22/05/2019 41 N e x t s t e p s
  • 42. Spring & Kotlin • Coroutines • Going Reactive with Spring, Coroutines and Kotlin Flow • https://spring.io/blog/2019/04/12/going-reactive-with-spring-coroutines-and- kotlin-flow 22/05/2019 42 N e x t s t e p s
  • 43. JVM • GraalVM for Java developers • Compiler on top of Java Hotspot • Multilanguage support • Included in OpenJDK • Native images 22/05/2019 43
  • 44. Resources • Spring I/O 2019 - Keynote by Juergen Hoeller, Ben Hale, Violeta Georgieva and Sébastien Deleuze https://www.youtube.com/watch?v=Ylrxpbs6vcs • https://2019.springio.net/sessions 22/05/2019 44
  • 45. Contact Gaston Geenslaan 11 B4 3000 Leuven hello@faros.be +32(0)16 240 840 @FarosBelgium farosbe