<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Web Services on Christian Krudewig</title><link>https://krudewig.dev/de/tags/web-services/</link><description>Recent content in Web Services on Christian Krudewig</description><generator>Hugo</generator><language>de-DE</language><lastBuildDate>Thu, 11 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://krudewig.dev/de/tags/web-services/index.xml" rel="self" type="application/rss+xml"/><item><title>Designing HTTP APIs for slow operations</title><link>https://krudewig.dev/de/post/2026-06-11-async-jobs-api-patterns/</link><pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate><guid>https://krudewig.dev/de/post/2026-06-11-async-jobs-api-patterns/</guid><description>&lt;p&gt;We got used to having everything on the Web, and so many backend operations became HTTP APIs.&#10;That&amp;rsquo;s also the case in the areas of AI and optimization, because it gives an easy-to-understand interface for clients that can be used without having to learn new technologies.&#10;There&amp;rsquo;s a problem, however: Some of these operations are &lt;em&gt;very&lt;/em&gt; slow, and at times systems become a brittle mess of regular timeout hits, latency optimizations, and support issues.&lt;/p&gt;</description></item><item><title>Ingress Nginx retires: it's time for Kubernetes Gateway API</title><link>https://krudewig.dev/de/post/2026-02-09-gateway-api/</link><pubDate>Mon, 09 Feb 2026 00:00:00 +0000</pubDate><guid>https://krudewig.dev/de/post/2026-02-09-gateway-api/</guid><description>&lt;p&gt;The Ingress Nginx controller is &lt;a href="https://kubernetes.io/blog/2025/11/11/ingress-nginx-retirement/"&gt;retiring next month&lt;/a&gt;, in March 2026.&#10;What comes next? I think it should be the Kubernetes Gateway API - and in this post I will explain why.&lt;/p&gt;</description></item><item><title>Locating memory leaks in a Python service – Part 2: C-Extensions</title><link>https://krudewig.dev/de/post/2022-09-12-locating-memory-leaks-in-services-part2/</link><pubDate>Mon, 12 Sep 2022 00:00:00 +0000</pubDate><guid>https://krudewig.dev/de/post/2022-09-12-locating-memory-leaks-in-services-part2/</guid><description>&lt;p&gt;&lt;strong&gt;Building up on last week&amp;rsquo;s issue about diagnosing memory leaks in Python, this blog post will show how to identify memory issues in native extension modules.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;From [the first posting]({% post_url 2022-09-04-locating-memory-leaks-in-services-part1 %})&#10;we have the tools to clearly diagnose a memory leak in pure Python. So let&amp;rsquo;s proceed to the next level and add some native code to the picture.&#10;It is one of the strengths of Python how easy it can be extended with compiled code e.g. in C, by so called &amp;ldquo;extension modules&amp;rdquo;. This is a key factor which made Python the first choice for data science: The heavy number crunching can be done by optimized routines and the program logic is written in the high-level Python language.&lt;/p&gt;</description></item><item><title>Locating memory leaks in a Python service – Part 1: Pure Python</title><link>https://krudewig.dev/de/post/2022-09-04-locating-memory-leaks-in-services-part1/</link><pubDate>Sun, 04 Sep 2022 00:00:00 +0000</pubDate><guid>https://krudewig.dev/de/post/2022-09-04-locating-memory-leaks-in-services-part1/</guid><description>&lt;p&gt;&lt;strong&gt;Even in a garbage-collected language like Python it is possible to create applications with memory leaks. This means that the program keeps memory reserved vor variables which are no longer needed. So the memory could be freed, but it isn&amp;rsquo;t. Especially in long-running applications this can lead to a huge memory consumption over time, up to a point where the hardware limit is reached.&#10;In a series of two blog posts I&amp;rsquo;ll show how to debug such memory issues in a Python web service.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Envoy sidecar configuration generator</title><link>https://krudewig.dev/de/post/2021-05-06-Envoy-sidecar-configuration-generator/</link><pubDate>Thu, 06 May 2021 00:00:00 +0000</pubDate><guid>https://krudewig.dev/de/post/2021-05-06-Envoy-sidecar-configuration-generator/</guid><description>&lt;p&gt;&lt;strong&gt;This post contains a configuration file generator for an envoy reverse proxy with all the bells and whistles. If you are looking for a working base configuration with the most important features of Envoy as sidecar proxy, this is the place to get one.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>The Throughput Paradox – Why a Machine Learning API Needs Load Shedding</title><link>https://krudewig.dev/de/post/2021-05-02-throughput-paradox/</link><pubDate>Sun, 02 May 2021 00:00:00 +0000</pubDate><guid>https://krudewig.dev/de/post/2021-05-02-throughput-paradox/</guid><description>&lt;p&gt;&lt;strong&gt;Especially compute-intensive services like a machine learning inference API can heavily suffer from queueing effects.&lt;/strong&gt;&#10;&lt;strong&gt;I will demonstrate this with response time measurements of small demo service and show how to deal with this using load-shedding&lt;/strong&gt;&lt;/p&gt;</description></item></channel></rss>