
Nicolas Fränkel
Developer Advocate for Apache APISIX
Genève, Switzerland
Developer Advocate with 15+ years experience consulting for many different customers, in a wide range of contexts (such as telecoms, banking, insurances, large retail and public sector). Usually working on Java/Java EE and Spring technologies, but with focused interests like Rich Internet Applications, Testing, CI/CD and DevOps. Also double as a trainer and triples as a book author.
Links
Awards
Area of Expertise
Topics
Starting Apache APISIX on the right foot
It has been said that data are the new oil. The de facto standard is HTTP APIs to connect oil pipelines between heterogeneous systems, whether plain, RESTful or REST. But no company just exposes their information system to the outside.
You need a central unified entry-point to handle cross-cutting concerns: classic ones like authentication, security, observability, and IP blacklisting and API-related ones like rate limiting and canary release.
In this workshop, we will use Apache APISIX on Docker to show a couple of nifty features that can help your information system cope with the challenges introduced by APIs.
Routing your calls to the correct upstream
Available abstractions: Route, Upstream, Service
The Apache APISIX dashboard
Configuring APISIX with the dashboard
Configuring APISIX with the command-line
Monitoring APISIX
Low-code Plugin Orchestration
Back to basics, getting traffic into your Kubernetes cluster
However you're using your Kubernetes cluster, you'll sooner or later need to direct traffic into it.
At this point, you're spoiled with choice. Kubernetes provides no less than three different objects: NodePort, Ingress, and LoadBalancer. Of course, each of them comes with its limitations. For example, LoadBalancer requires a dedicated implementation provided by Cloud Platforms but not with most local distributions.
Moreover, Kubernetes is introducing a new Gateway API, adding one more way to direct traffic to the cluster.
In this talk, I'd like to offer an overview of all four options, with their pros and cons, and a more in-depth explanation of the new Gateway API.
Evolving your APIs, a step-by-step approach
When you publish your first HTTP API, you’re more focused on short-term issues than planning for the future. However, chances are you’ll be successful, and you’ll “hit the wall”. How do you evolve your API without breaking the contract with your existing users?
In this talk, I’ll first show you some tips and tricks to achieve that: moving your endpoints, deprecating them, monitoring who’s using them, and letting users know about the new endpoints. The talk is demo-based, and I’ll use the Apache APISIX project for it.
Migrating from Imperative to Reactive
The Reactive Programming is complex to master. It requires a lot of experience to feel comfortable with its API. However, there’s no denying that it fits the cloud ecosystem perfectly. Since on-premises infrastructure is oversized, running a program that executes a couple of additional CPU cycles won’t change anything. On the other hand, you will pay for them if you host the same program on third-party infrastructure. Depending on the number of those cycles, and the number of nodes the program runs on, it can make a huge difference in your monthly bill.
In this demo-based talk, I’ll show how to migrate a traditional Spring Boot application that uses WebMVC, Spring Data JPA, and Spring Cache to its Reactive equivalent in a step-by-step process.
Designing a DSL with Kotlin
Although Kotlin has made a huge impact on Android, it’s equally good on the server side. As Domain-Specific Languages are constrained by the language they run on, Kotlin frees developers from Java fluent builders to propose something better.
Using the Vaadin web framework as an example, I’ll demo how one could design its own DSL with Kotlin.
Mutation Testing to the rescue of your Tests
Unit testing ensures your production code is relevant. But what does ensure your testing code is relevant? Come discover mutation testing and make sure your never forget another assert again.
In the realm of testing, the code coverage metrics is the most often talked about. However, it doesn’t mean that the test has been useful or even that an assert has been coded. Mutation testing is a strategy to make sure that the test code is relevant.
In this talk, I will explain how Code Coverage is computed and what its inherent flaw is. Afterwards, I will describe how Mutation Testing work and how it helps pointing out code that is tested but leave out corner cases. I will also demo PIT, a Java production-grade framework that enables Mutation Testing.
Object-Oriented Programming in the Enterprise
Most developers don’t write Object-Oriented code, including myself. And yet, we have learned how to do it. Why is that?
One of the possible reasons, is that many frameworks (Java EE, Spring) do not favor OOP in their design. But what is OOP really? We will have a look at a super-simplified bank account model.
In my demo, I’ll demo with a Java-based application how can we evolve from the traditional current approach to proper OOP. Finally, it will be time to have a look at the benefits and drawbacks of both approach.
Your own Kubernetes Operator: Not Only in Go
In Kubernetes, operators allow the API to be extended to your heart content. If one task requires too much YAML, it’s easy to create an operator to take care of the repetitive cruft, and only require a minimum amount of YAML.
On the other hand, since its beginnings, the Go language has been advertised as closer to the hardware, and is now ubiquitous in low-level programming. Kubernetes has been rewritten from Java to Go, and its whole ecosystem revolves around Go. For that reason, It’s only natural that Kubernetes provides a Go-based framework to create your own operator. While it makes sense, it requires organizations willing to go down this road to have Go developers, and/or train their teams in Go. While perfectly acceptable, this is not the only option. In fact, since Kubernetes is based on REST, why settle for Go and not use your own favorite language?
In this talk, I’ll describe what is an operator, how they work, how to design one, and finally demo a Java-based operator that is as good as a Go one.

Nicolas Fränkel
Developer Advocate for Apache APISIX
Genève, Switzerland