Speaker

Nicolas Fränkel

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.

Area of Expertise

  • Information & Communications Technology

Topics

  • Kotlin
  • Spring Boot
  • Code Quality
  • DevOps & Automation
  • Test Automation
  • Rich Internet Applications
  • Vaadin
  • Java
  • Kubernetes
  • Spring Framework
  • cloud

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.

Automation + DevOps Summit

November 2021 Nashville, Tennessee, United States

Open Source Experience

November 2021 Paris, France

J-Fall 2021

November 2021 Ede, Netherlands

Scenic City Summit 2021

September 2021

ContainerDays 2021

September 2021 Hamburg, Germany

Java Forum Nord 2021

September 2021 Hannover, Germany

Experts Live Austria 2021-2

September 2021 Linz, Austria

Code PaLOUsa 2021

August 2021

JNation 2021

June 2021

Destination: Scale

April 2021

TheCloudFirst

March 2021

CloudWorld 2021

February 2021

Developer Week Swiss

December 2020 Zürich, Switzerland

JVM-Con 2020

November 2020 Köln, Germany

Granite State Code Camp 2020

November 2020 Manchester, New Hampshire, United States

2020 All Day DevOps

November 2020

Big Mountain Data and Dev Conference

October 2020 Salt Lake City, Utah, United States

EuropeClouds Summit

October 2020

GDG DevFest Kenya 2020

October 2020 Nairobi, Kenya

SciFiDevCon

July 2020

LightUp

July 2020

Developer Week '20

June 2020 Nürnberg, Germany

Camp Cloud Native

June 2020

ContainerDays 2020

June 2020 Hamburg, Germany

Java Forum Nord 2019

September 2019 Hannover, Germany

ContainerDays 2019

June 2019 Hamburg, Germany

microXchg 2019

April 2019 Berlin, Germany

KotlinConf 2018

October 2018 Amsterdam, Netherlands

BED-Con 2018

September 2018 Berlin, Germany

Nicolas Fränkel

Developer Advocate for Apache APISIX

Genève, Switzerland