Matthias Falkenberg & Timo Knapp

Back(end) to the Future: Embracing the continuous Evolution of Infrastructure and Code

What happens when a reactive architecture becomes too complex? The Porsche team shares their journey from WebFlux to the maintainable, imperative style of Kotlin Coroutines.

Back(end) to the Future: Embracing the continuous Evolution of Infrastructure and Code
#1about 3 minutes

Consolidating multiple apps into a single experience

The My Porsche app evolved from many individual applications into a unified experience by introducing a backend-for-frontend to abstract legacy systems.

#2about 5 minutes

Moving from blocking to non-blocking with Spring WebFlux

The backend evolved from the thread-per-request model of Spring Web MVC to the event-driven, non-blocking model of Spring WebFlux for improved scalability.

#3about 2 minutes

Using Kotlin Coroutines to simplify complex reactive code

Kotlin Coroutines were adopted with WebFlux to handle complex business logic using a familiar imperative style, avoiding the complexities of nested declarative chains.

#4about 5 minutes

Migrating incrementally with the WebFlux sandwich pattern

The "WebFlux sandwich" pattern enables a gradual migration by refactoring the core business logic to coroutines first while bridging to existing Reactor-based controllers and clients.

#5about 3 minutes

Comparing the performance and scalability of different approaches

A performance analysis shows that while the mixed migration approach has a temporary throughput dip, it enables a path to the highly scalable pure Kotlin Coroutines implementation.

#6about 3 minutes

Identifying the limitations of the initial Cloud Foundry platform

The original Cloud Foundry infrastructure presented challenges with limited configuration control, restricted logging, and scaling quotas, necessitating a migration to a new platform.

#7about 6 minutes

Evaluating Azure compute options for a new platform

A systematic evaluation of Azure services like VMs, AKS, and App Service against key requirements led to the selection of a suitable new platform for the backend.

#8about 3 minutes

Understanding the features of Azure Container Apps

Azure Container Apps is a serverless container platform built on Kubernetes that integrates open-source tools like KEDA for event-driven scaling and Dapr for simplified microservice communication.

#9about 3 minutes

Implementing the new architecture on Azure Container Apps

The new architecture uses an Application Gateway, a vNet with multiple subnets, and Dapr sidecars for service communication, all provisioned automatically using Bicep templates.

#10about 4 minutes

Navigating pitfalls during the Azure Container Apps migration

The migration involved challenges such as breaking changes in the preview service, strict vNet requirements, and debugging unexpected behavior in Dapr's request handling.

#11about 1 minute

Future plans for evolving the application and infrastructure

The team plans to complete the coroutine migration, implement bidirectional communication, and further leverage Dapr and KEDA for enhanced resilience and scaling.

Related jobs
Jobs that call for the skills explored in this talk.

Featured Partners

From learning to earning

Jobs that call for the skills explored in this talk.

Backend Engineer (m/w/d)

Backend Engineer (m/w/d)

fulfillmenttools
Köln, Germany

35-65K
Intermediate
TypeScript
Agile Methodologies
Google Cloud Platform
Rust and GoLang

Rust and GoLang

NHe4a GmbH
Karlsruhe, Germany

Remote
55-65K
Intermediate
Senior
Go
Rust
Cloud Engineer (m/w/d)

Cloud Engineer (m/w/d)

fulfillmenttools
Köln, Germany

50-65K
Intermediate
TypeScript
Google Cloud Platform
Continuous Integration