Blog Logo
TAGS

Building modern architectures: Functional Core, Imperative Shell revamp

Are you wondering if there is life beyond the conventional layered, clean or hexagonal code architectures? It turns out there is an old concept known as Functional Core, Imperative Shell (FCIS). Let’s take a closer look and see how it could shake things up in constructing maintainable systems. Traditional code architectures involve a chain of calls between different software components. To structure and manage code effectively, we use code architectures, such as layered and hexagonal, which slice our code into different concerns or areas of functionality. Despite applying all the good practices and patterns, these elements could lead our code to directly damage important factors like maintainability, understandability, testability, scalability, and overall quality. The Functional Core — Imperative Shell (FCIS) is an aged software design pattern that relies on functional programming to address the common challenges in traditional architectures. This approach organizes code into two distinct parts: the Functional Core (FC) and the Imperative Shell (IS). The FC contains the logic of the application, while the IS handles any required side effects. Dependencies flow inwards, from the shell towards the core.