Polylith
Polylith is a software architecture that applies functional thinking at the system scale. It helps us build simple, maintainable, testable, and scalable backend systems.
Last updated
Polylith is a software architecture that applies functional thinking at the system scale. It helps us build simple, maintainable, testable, and scalable backend systems.
Last updated
Working with Polylith is like having a box with LEGO® bricks:
From here we put together sets of bricks, that are built into services and tools:
We work with all the code from one place, and get all the benefits we have from a monolith:
This gives us a joyful development experience and a high degree of flexibility in how to run the code in production.
There are several ways of learning Polylith:
Go and have a look at these systems:
Get a high level introduction to Polylith with these three videos:
If you prefer reading documentation, then you’re already in exactly the right place!
Note that Polylith documentation is split into two parts:
This high-level documentation, which describes how Polylith works and the problems it solves. It tries to remain language agnostic, but does use Clojure in the code examples.
Content:
Polylith - what is Polylith?
Sharing code - how Polylith addresses the sharing problem
Testing incrementally - how a Polylith system can be tested incrementally
Polylith in a nutshell - a walkthrough of the building blocks of Polylith.
Workspace - were we put everything.
Component - our composable building block (brick).
Base - building block (brick) that exposes a public API
Project - deployable artifact made of a set of bricks
Development project - the place where we work with all our bricks
Bring it all together - a short example
Simplicity - how Polylith simplifies the design
poly tool - overview of the poly tool
Current architectures - a walk through of common architectures
Advantages of Polylith - how Polylith differ from other architectures
Transitioning to Polylith - step by step guide on how to transition to Polylith
Production systems - list of companies using Polylith in production
Why the name "Polylith"?
Videos
FAQ - Frequently Asked Questions
Who made this?
Polylith is a software architecture that solves some of the fundamental challenges in building backend systems. Those challenges are:
It's difficult to share our code across teams and services
We lack a shared language for communicating architectural concepts
As our codebases grow, they tend to become a complex mess that is hard to change and test
We try to mimic our complex production environments in our development environment
Our systems take too long to test, build, and deploy
Polylith addresses these challenges by introducing simple, composable, LEGO-like bricks, which can easily be shared across teams and services. The choice of bricks determines what each artifact does and how it's exposed.
Polylith isn't a framework and does not come with ready to use functionality.
Polylith isn't a library.
Polylith isn't a tool (but has tooling support for Clojure and Python).
If you want to quickly see if Polylith is for you, please jump to the page. Another good start could be to or continue reading here!
Please support the work with Polylith and the poly tool !
If you are a Clojure developer, head over to the documentation.
If you are a Python developer, please visit the documentation.
If you prefer some other language, you can still structure your code as a Polylith and get benefits like decoupled , a single environment, and a flexible deployment situation.
Watch when explains how he uses Polylith at World Singles Network:
The in Clojure, written by Furkan Bayraktar
The in Clojure, written by Sean Corfield
The in Clojure, written by Joakim Tengstrand
A in Clojure, written by Joakim Tengstrand
Jacek Schae interviews the Polylith team in the :
- Polylith with Joakim, James and Furkan (Part 1)
- Polylith with Joakim, James and Furkan (Part 2)
Come and chat with us and other Polylith users in .
- by Felix Barbalet
- by Joakim Tengstrand
- Sean Corfield writes about his Polylith journey
- David Vujic introduces Polylith in Python
- How Polylith came to life, by Joakim Tengstrand
- The foundational concepts that Polylith is built upon, by Joakim Tengstrand
Enter and have a look at different .
The documentation, which describes how to work with a Polylith codebase in Clojure. There is a reworked version of the doc in Japanese .
To make the development experience even more delightful, we've also built a which gives instant creation of the various building blocks, incremental tests (only test the code that's impacted by the last changes), and project visualization.
Polylith is language agnostic, and it should be possible to use it in almost any programming language. We in the Polylith team have only used it with the functional language so far, but there is nothing stopping someone from using it in a procedural language like , or an object oriented language like (remember that we have for already). Even without tooling support, you will get most of the benefits.