Ignasi 'Iggy' Bosch

I'm passionate about programming, I simply love it.
I like to learn and this industry brings to me the opportunity to discover new amazing stuff almost every single day.
Constant learner on how to improve writing clean and reliable code.

#Backend #Python #CleanCode #SoftwareCraftsmanship

 Cell-Based Architecture — Architecture Pattern

Cell-based architecture in computing involves designing systems that consist of interconnected cells, each cell capable of executing tasks independently. Like the cells in a biological organism, these computing cells have their own processing units, memory, and communication capabilities. They operate in parallel, exchanging information and collaborating to solve complex problems efficiently.

Architecture Design

Sep 4 2023

 How to do distributed locking

As part of the research for my book, I came across an algorithm called Redlock on the Redis website. The algorithm claims to implement fault-tolerant distributed locks (or rather, leases [1]) on top of Redis, and the page asks for feedback from people who are into distributed systems. The algorithm instinctively set off some alarm bells in the back of my mind, so I spent a bit of time thinking about it and writing up these notes.

Design Disributed Systems

Aug 20 2023

 The lost art of software design

“Big design up front is dumb. Doing no design up front is even dumber.” This quote epitomises what I’ve seen during our journey from “big design up front” in the 20th century, to “emergent design” and “evolutionary architecture” in the 21st. In their desire to become “agile”, many teams seem to have abandoned architectural thinking, upfront design, documentation, diagramming, and modelling. In many cases, this is a knee-jerk reaction to the heavy bloated processes of times past, and in others, it’s a misinterpretation and misapplication of the agile manifesto. As a result, many of the software design activities I witness these days are very high-level and superficial in nature. The resulting output, typically an ad hoc sketch on a whiteboard, is usually ambiguous and open to interpretation, leading to a situation where the underlying solution can’t be communicated, assessed, or reviewed. If you’re willing to consider that upfront design is about creating a sufficient starting point, rather than creating a perfect end-state, you soon realise that a large amount of the costly rework and “refactoring” seen on many software development teams can be avoided. Join me for a discussion about the lost art of software design, and how we can reintroduce it to help teams scale and move faster.

Design Video

Aug 13 2023

 An Introduction to Residuality Theory

Residuality theory is a revolutionary new theory of software design that aims to make it easier to design software systems for complex business environments. Residuality theory models software systems as interconnected residues - an alternative to component and process modeling that uses applied complexity science to make managing uncertainty a fundamental part of the design process.

Architecture Design

Jul 5 2023

 EventStorming Modelling Tips to Facilitate Microservice Design

When EventStorming is applied effectively, we’ve seen plenty of successful sessions, many of which teams have used EventStorming as the basis for the design of their microservices. In this article, we’ll share a few easy-to-learn techniques that will help you to get the most out of EventStorming so you can design more domain-aligned software systems.

DDD Microservices

Jun 16 2023

 Transactions in a Microservice World

Typically, microservice-based applications distribute data widely, especially in cloud-based applications, resulting in distributed applications. This impacts the transactions within these applications. This white paper refreshes the concepts of classical and distributed transactions. Next, we explain how cloud-based applications are affected by distribution. Finally, we present compensation-based transactions as a reliable method for microservice-based application transactions, even in the cloud.

Design Microservices

Jun 16 2023

 How do committees invent?

When I think about design, I more naturally think about it the other way around: how to decompose the whole into a set of parts that will work together to accomplish the system goals. But of course Conway is right that those parts do have to fit together to produce the intended whole again.

Design Philosophy

Jun 14 2023

 How to design software architecture: Top tips and best practices

You wouldn’t want to jump into a project without a solid plan, and software architecture design is no different. By making this process more effective, you can account for all of your requirements properly and give stakeholders the opportunity to provide their input. Using technical visuals and a careful planning process, you can outline your software architecture and design before you get started on a prototype.

Architecture Design

May 21 2023

 I Made Everything Loosely Coupled. Does My App Fall Apart?

Integrating systems provides many benefits, from seamless user experiences, consolidated data for better insights, or interacting with partner ecosystems. And the modern cloud applications that we are building are fine-grained and thus inherently interconnected. Despite having connected systems for decades, some of the fundamental concepts of partial failure, eventual consistency, or idempotency still challenge many developers. This session tackles the nuances of integrated systems, such as messages vs. events, thinking in integration patterns, whether loose coupling is always better, and how cloud automation can change the way you think about integration.

Architecture Microservices Video

Feb 27 2023