Focus

Software Architecture

Articles, podcasts, talks, and more about Software Architecture.
Blog Post

The New Economics of Software Development

AI has dramatically reduced the time it takes to build software, but that doesn’t mean we should simply deliver more features. The productivity gains from coding agents give us an opportunity to rethink how we invest our development time. Instead of accelerating technical debt, we can use AI to build cleaner abstractions, improve maintainability, and leave our codebases better than we found them. This article explores how AI has changed the classic project management triangle, and why quality should become our new competitive advantage.

Blog Post

Stop Using Bearer Tokens Like House Keys

You’ve built an API. You protected it with OAuth 2.0. You’re using JWTs. You feel secure. You’re not.

Blog Post

Indecent Exposure

Your SPA’s API Is Showing Too Much

Blog Post

What ECST Events, Domain Events, and ECST Really Are

“ECST Event”, “Domain Event”, “ECST”: these terms appear in almost every discussion about Event-Driven Architecture and Domain-Driven Design. Surprisingly often in practice, different people have a different understanding of them.

Blog Post

OpenProject: A Real Alternative to Jira?

In his article “Using Jira Data Center with AI Features”, my colleague Nicolas Inden showed how to connect a self-hosted Jira instance with an AI model. One point stands out: Atlassian will only support Jira Data Center until early 2029. After that, support ends. Sales of Data Center licenses to new customers were already discontinued at the end of March 2026. So what do we do if we don’t want to return to Jira Cloud after 2029 - or want to move away from Jira right now?

Blog Post

RAG and Fine-Tuning

Stronger together

Blog Post

Nebu: Self-made sovereignty

There are plenty of open-source alternatives to Slack. None of them deliver real sovereignty. Community editions are deliberately pared down so no company can run them in production, while enterprise features sit behind commercial licenses. This article shows why “building it yourself” is no longer a utopian idea today, but a realistic option for anyone with a product vision and a bit of DIY courage.

Blog Post

The right size of a Data Product

Setting the boundaries of data products incorrectly can lead to integration issues, unclear ownership and duplicated logic. This guide offers practical heuristics for creating data products of the right size.

Blog Post

Neuland reloaded

Blog Post

Spec-Driven Architecture: When Agents Build, Architecture Must Speak

Spec-Driven Development gives agents a clear foundation for implementation. What it doesn’t solve is how a portfolio of systems stays coherent. Spec-Driven Architecture applies the same principle at the architecture level, using contracts as versioned boundaries and guarantees—enforceable in agentic workflows and in the CI/CD pipeline.

Blog Post

Your Database Table is an awful API

A shared database table can feel like the ultimate shortcut: no API design, no contracts - just a schema. The catch is that this convenience quietly turns into friction: it blurs boundaries, slows change, and makes independent evolution harder than it needs to be. This article looks at why tables (and data-model-shaped “generated APIs”) are such a tempting trap - and what better integration boundaries look like.

Blog Post

Leave It Better Than You Found It

An Unexpected Architecture Win

Blog Post

Why not scatter @Transactional everywhere?

@Transactional — great when you know when not to use it. Use it consciously instead of sprinkling it everywhere!

Blog Post

Managing Geopolitical Risks with Enterprise Architecture

IT leaders in Europe increasingly face questions about whether geopolitical developments – such as data protection disputes or trade conflicts between the EU and the US – threaten the viability of US cloud services. The risks range from price increases and legal uncertainties to potential usage restrictions. CIOs must not only ensure functional IT operations but also proactively assess external risks. This article demonstrates how enterprise architecture methods can help identify risks early and develop viable alternatives.

Blog Post

The Path to Heterogeneous Cloud Platforms

Blog Post

Achieving Digital Sovereignty with Standard Software

In the context of IT system landscapes, digital sovereignty is often equated with autarky— complete independence from third parties. By that logic, , a company developing and operating all applications in-house would be the ultimate example of digital sovereignty. But does this idea really hold up?

Blog Post

A Governance Framework for Digital Sovereignty

In an increasingly connected world where digital infrastructure forms the backbone of our economy and society, the topic of digital sovereignty is gaining more and more attention. For decision-makers in German-speaking countries, this goes far beyond merely selecting a cloud provider. It’s about strategic agency, resilience, and the ability to actively shape one’s digital future. This article explores how a robust governance methodology can help organizations not only understand digital sovereignty but also put it into practice—without sacrificing convenience or innovation.

Blog Post

Digital Sovereignty: Why Architecture Matters and How to Make Your Company Resilient

Blog Post

Updating OWASP’s Microservice Security Cheat Sheet: Practical Considerations & Recommendations

Turning principles and patterns into practice — just as promised.

Blog Post

From Data Graveyards to Knowledge Landscapes

Europe is sitting on a wealth of public data—but much of its potential remains untapped. The challenges are well known: fragmented portals, incompatible interfaces, and growing reliance on non-European platforms that slow innovation. While new industrial data spaces are emerging—enabling secure and sovereign exchange of sensitive information—public and industrial data ecosystems remain largely siloed. This article explores how Artificial Intelligence (AI) and the Model Context Protocol (MCP) can help bridge that gap and accelerate Europe’s shift from Open Data to Open Knowledge—supporting digital sovereignty and delivering greater value to society.

Blog Post

Updating OWASP’s Microservice Security Cheat Sheet: Decision Dimensions for Authorization Patterns

Blog Post

Updating OWASP’s Microservice Security Cheat Sheet: Identity Propagation Patterns

Without trustworthy identity propagation, even strong initial authentication can be undermined — weakening trust boundaries and ultimately impairing the system’s ability to make reliable authorization decisions.

Blog Post

Updating OWASP’s Microservice Security Cheat Sheet: Authentication Patterns

Without knowing who the subject is, without verifying its identity, there is only a limited way to perform meaningful access decisions.

Blog Post

What’s Wrong with the Current OWASP Microservice Security Cheat Sheet?

Blog Post

Updating OWASP’s Microservice Security Cheat Sheet: Core Concepts

In part two of my series, I begin the journey to rethink the OWASP Microservice Security Cheat Sheet. This post focuses on core concepts, laying the groundwork for practical, real-world microservice security.

Blog Post

Technical and other Debt in IT Systems

This article explores the many hidden forms of technical debt that silently slow down IT teams—far beyond just messy code.

Blog Post

Updating OWASP’s Microservice Security Cheat Sheet: Authorization Patterns

Blog Post

Enabling Stakeholders as a Success Factor

Sociotechnical architectures consider both technical and human-organizational aspects and promote their effective collaboration. To ensure the successful design and implementation of these systems, it is crucial to actively involve stakeholders and address their interests. In this article, we explore why enabling stakeholders represents a key function in sociotechnical projects and how you can implement this approach effectively.

Blog Post

Don’t Forget the People

On paper, the architecture vision is perfect. It addresses all pressing deficiencies of the existing system, aligns seamlessly with the business domain, and enables teams to retain more work within their boundaries. Finally, we will enjoy higher speed-to-market and a significant reduction in (non-value-adding, tedious) coordination efforts between teams. Surely, everyone will immediately see how much better our new architectural vision is. Not quite.

Blog Post

Socio-Technical Architectures: Informality from Mining to Today

Blog Post

How Much Thinking Can a Team Handle?

The term Cognitive Load has become a common reference point in recent discussions about team structures, roles, and task distribution in IT organizations. However, these discussions often fail to distinguish between the different purposes of IT organizations and frequently rely on an oversimplified concept of Cognitive Load.

Blog Post

Socio-Technical Architecture as a Competitive Advantage

In today’s business world, technological progress is not just about increasing efficiency—it also unlocks entirely new business opportunities that would be unthinkable without these technologies. As a result, leveraging new technologies effectively has become a key competitive advantage. However, IT decision-makers are increasingly realizing that technology alone is not enough. Instead, companies must understand themselves as socio-technical systems, where technical systems and human interactions are deeply interconnected. This article explores why socio-technical architectures matter for IT decision-makers and how they can create a competitive edge for organizations.

Blog Post

Platforms, Teams, and APIs: How Do They Fit Together?

Blog Post

Common Approaches in the Field of Socio-Technical Architectures

In the age of digitalization and modernization, companies face the challenge of not only keeping up with technological advancements but also optimizing their organizational structures. Socio-technical architectures play a crucial role in this process by focusing on the flow of work, team collaboration, and the seamless integration of technical and social systems. This article explores two key approaches—Team Topologies and Domain-Driven Design (DDD)—and demonstrates how they can help organizations take the first steps toward consciously designing their socio-technical architecture.

Blog Post

LLM-assisted Abbreviation Mining for Legacy Systems

This blog post shows the process of mining abbreviations and discovering first concepts a COBOL legacy mainframe codebase is made of with the help of Large Language Models. It uses Python, pandas and Claude 3.5 Sonnet to generate insights that can be gathered from such a simple thing like a list of files.

Blog Post

Where does it go from here?

Fundamentals of software architecture – Part 5

Blog Post

Who does it?

In this (fourth) installment of the mini-series on software architecture, we explain who might carry out the architecture tasks that were discussed in the previous articles. I also present a number of possible role definitions for software architecture along with their pros and cons.

Blog Post

Technologies for the Integration of Services

In the course of an internal study, we asked a number of INNOQ consultants about their experiences in current or past development projects. One interesting topic here was the integration of microservices and self-contained systems (SCS). Asynchronous communication is frequently used in distributed systems to enable better scalability, greater resilience, and looser coupling. In this article, you will read what insights we learned in our conversations.

Blog Post

Tasks and activities – How is it done?

Fundamentals of software architecture – Part 3

Blog Post

Building, purpose, aesthetics

Welcome to the first part in the mini-series on software architecture. We start by examining the original source of the term – since the word architecture presumably conjures in most people thoughts of buildings.

Blog Post

Terms

Welcome to the second part in the mini-series on software architecture.

Blog Post

Rate Limiting with Spring Boot, Bucket4j, and Redis

Blog Post

Rate Limiting with Spring Boot

Let’s implement rate-limiting protection for your Spring Boot server without the need for any additional dependencies beyond those included in the Spring Boot Starter package.

Blog Post

Schema Evolution

Using Kafka, sooner or later you might want to describe a schema to specify your data structures. Since software continuously changes during it’s lifetime you’ll also have to evolve your schema. In this article we’ll discuss approaches and tools which can guide you in the realization of your schema evolution.

Blog Post

Micro Frontends With Ionic And Capacitor

Blog Post

No future-proof architectures!

Architecture: The term itself radiates stability. It seems clear, then, that good architecture should be future-proof. But precisely this goal often leads to problems. Does that mean it is better not to design future-proof architectures?

Blog Post

Concise Documentation – Revisited

You think architecture documentation is cumbersome and takes a long time to create? We will prove you wrong.

Blog Post

Evolving software like an orchardist

Comparing apple trees with software modernization

Blog Post

Draw The Diff

Software developers have an idiosyncratic penchant for boxes and arrows. Back when we used to go to the office we penned them on whiteboards. Later, as the force majeure accelerated the digital transformation of our economies, we drew them online.

Blog Post

What is Sustainable Software?

Environmental sustainability is a very important issue, but software is something virtual, so it doesn’t seem to have an impact, right? Wrong! As software creators, we have a significant impact and can make a difference by incorporating the principles of eco-friendly software development into our understanding and practices.

Blog Post

Shortcomings of ISO 25010

Blog Post

Behaviour over structure

We, developers, often forget why we even exist. We quite often don’t remember that our purpose is not to write software, but to solve problems. Those come in different forms, but can be generalized as “we need to start doing this”, “we need to stop doing this” or “we need to do this differently”. Those “do” and “doing” are the key, whatever “this” is. It’s the behaviour our software exhibits that is most important, almost everything else is secondary.

Blog Post

Frontend integration options

The integration of data and functionality in the frontend is a powerful topic that is still rarely discussed. This article aims to try and show established patterns of frontend integration and briefly name possible advantages and disadvantages.

Blog Post

Documenting software architecture with arc42

A brief introduction

Blog Post

cards42 English edition

Finally, cards42 is available in English! The cards42 project supports software developers in your daily work with software architectures. 30 cards provide brief food for thought for stuck situations and help shed new light on difficult challenges. This article provides detailed explanations as well as the background and further information about the cards.

Blog Post

Principles of technical documentation

This article collects fundamental requirements for technical documentation, especially software architecture documentation, together with ideas how to satisfy those.

Blog Post

Data Mesh to Go: How to Get the Data Product

Using DDD artifacts to get a data product for data mesh

Blog Post

HTTP Feeds

Asynchronous interfaces don’t always require the use of Apache Kafka or RabbitMQ. They can also be designed without middleware just by means of HTTP APIs.

Blog Post

Quality Driven Software Architecture - Revised

Quality is the raison d’être for software architects: Our systems should be reliable, performant, scalable and user-friendly. Systems should be build and maintained cost-effective and future-proof. Every IT professional knows that this combination of characteristics means hard work. The article shows how you can methodically construct quality.

Blog Post

What’s in a name: Legacy

Blog Post

What’s in a Name: Quality

We use the word quality colloquially for something “good” – but we usually leave open what exactly we mean by it. This article illustrates that we should be a little more precise in this regard.

Blog Post

Is Domain-driven Design overrated?

Domain-driven design (DDD) is a useful approach that provides excellent guidelines for modeling and building systems, but it is a means to an end, not an end in itself. While the concepts are valid, you lose a lot if you limit yourself to using them only: There actually is a life beyond DDD.

Blog Post

Happy without a Service Mesh

The basis for meaningful architecture decisions is the examination of the problem and a good overview of the options.

Blog Post

Domain-driven Design in the Large

If you know how to classify the concepts of DDD correctly, it will be easy to achieve good results - and there is a structured approach to achieve that!

Blog Post

Requirements Engineering

The priority to invest into requirements engineering often suffers in everyday life, although its importance has been proofed to be the basis to develop values for customers. The objective of this article is to recall the core definitions and statements of requirements engineering and to provide aid with links for further readings on how to apply it in practice.

Blog Post

Command & Control, SAFe, Domain-driven Design, and Release Trains

Handling Complex Software Projects

Blog Post

Identification of quality requirements with Quality Storming

Quality Storming is a workshop for the identification of quality requirements based on a quality model, for example ISO 25010, using methods and ideas of Collaborative Modeling, which is popular in the Domain-driven Design Community. An important aspect in this context is a cross-collaboration of different stakeholders and skill sets.

Blog Post

JavaScript? Yes, but in moderation

The benefits of classic architecture decisions for web applications.

Blog Post

code-your-model

modularized modeling based on a project-specific DSL

Blog Post

Cooking with Onions: Inward-Pointing Arrows

The onion architecture is an established approach to structuring applications.

Blog Post

Domain Events vs. Event Sourcing

Why domain events and event sourcing should not be mixed up.

Blog Post

Do We Worship Complexity?

Why Sometimes We Don’t Avoid Complexity.

Blog Post

No-Principles Software Architecture

The traditional principles of software architecture often lead to problems. Understanding these challenges is the first step towards eliminating them or even avoiding them right from the start.

Blog Post

Code Redundancy or Reuse?

Reuse used to be the holy grail of software development. If developers reuse code, they don’t have to write it again. This should increase productivity significantly. In the meantime, however, some things have changed - and even redundant code has advantages. So avoiding redundancy is also just another trade-off.

Blog Post

Technical Debt Just Happens

…But You Will Have to Deal With It!

Blog Post

Microservices? Or Rather Monoliths?

Microservices are a hype. Now, critics suggest to return to monoliths. But does that really help?

Blog Post

A Playground for Testing OpenID Connect

This post describes how you can set up a development environment in order to play around with your OpenID client implementation. When running your application in a cluster, it can be difficult to test how it will behave behind a load balancer. One factor that can be particularly difficult to test is when you are communicating with an OAuth 2.0 or OpenID Connect server which expects that a request will be redirected back to the same application instance that it came from.

Blog Post

dprox – Declarative Reverse Proxy

Blog Post

The language of maths is not the language of your business

Abstractions from category theory can be powerful. But there are reasons why you may want to keep your domain model free of them.

Blog Post

What’s in a Name: Evaluate

The term evaluation is often used in the context of system and architecture reviews. In my opinion, this term is often misleading and such activities should be named differently.

Blog Post

Self-contained Systems: A Different Approach to Microservices

Blog Post

The perils of shared code

In this blog article, I want to examine why using a sharing code between microservices may sound attractive in the first place and why it can cause bigger problems than the ones you try to solve.

Blog Post

What’s in a Name: Architecture

The term architecture is used with slightly different meanings throughout the IT industry. This post clarifies what (software) architecture is all about - and which misunderstandings might linger on your way to common understanding.

Blog Post

ROCA vs. SPA

Comparing two architectural styles with a concrete example

Blog Post

Solving the wrong problems

Instead of rushing to an engineering solution to a problem, we would often be better off by lying back and determining the root cause of our engineering problem, which is often an architectural one.

Blog Post

What’s in a Name: Transparency

The term transparent denotes something translucent, where light can shine through. It is, for example, used in context of economics (transparent markets), meaning markets where much is known by many, and nothing is hidden. Sometimes geeks tend to inverse this meaning, saying transparency where they mean opaqueness. This post illustrates that your favorite XY-framework by no means makes XY transparent for developers.

Blog Post

Transclusion in self-contained systems

Blog Post

Why RESTful communication between microservices can be perfectly fine

Recent debates about REST versus message passing in microservice communication have led to some confusion. What is meant with asynchronous communication in this context and why is REST a perfectly valid choice?

Blog Post

What’s in a Name: Consistency

The term consistency has several different meanings. This post identifies and clarifies those - especially consistency as synonym for conceptual integrity, one of the most important features for long-lasting software systems.

Blog Post

Reliable Web Clients

Blog Post

What’s in a Name: Reactive

The term reactivity is overloaded with several different meanings. This post tries to identify and clarify a few of them…

Blog Post

Why You Should Avoid a Canonical Data Model

As an enterprise architect, you might be tempted to strive for a canonical data model for your systems’ interfaces. That’s not a good idea.

Blog Post

Scalable Software Systems

From developer laptops to server farms

Blog Post

Hystrix – to make your fuse blow just in time

Circuit breakers were originally introduced to prevent the escalation of an outage. If your fuse blows occasionally, that does not have to be a bad thing - at least if it is a circuit breaker in the sense of Hystrix. In this article we will introduce you to Hystrix, a library which will help you to increase the stability of your distrubted applications and which will help to prevent cascading error scenarios.

Case Study

Building a learning platform that enables continuous pedagogical evolution

News

New Primer: Advanced IAM Patterns and Strategies

News

Agile meets Architecture 2026: Program Announced

News

Agile meets Architecture 2025

Case Study

Fleurop: A modern architecture for reliable floral greetings

News

Launch of New Microsite: Architecture Antipatterns

Case Study

A digital communication link between wholesale and retail based on self-contained systems

Case Study

Hellmann Road: clear interfaces for efficient product teams

Case Study

Creating a “Best in Industry” E-Commerce Platform with Self-Contained Systems

Case Study

Proof of payment clearing and fraud detection: Krombacher is leveraging automation as part of its loyalty program

News

Agile meets Architecture 2023

Case Study

SACAC optimizes the quotation process with a customized software solution

Case Study

Digitization of land register management in cooperation with Terravis

Case Study

Breuninger improves time-to-market through verticalization and self-contained systems

Case Study

A cloud platform for efficient commissioning processes in dentistry

Training

Designing software architectures for AI and ML systems

iSAQB® Training