Go With The Domain
Building Modern Business Software in GoStop fighting with questionable abstractions. Start building maintainable systems. Whether you're drowning in legacy code, scaling your team, or starting a new project you want to get right.


Go With The Domain Three Dots Labs
Sign up to our newsletter and get your free copy of Go with the Domain e-book.
You write business software
Okay, we can't know that for sure. But if you work on any web application or user-facing product, chances are you work with complex business domains.
The last Go Survey shows that 75% of respondents write API/RPC services, and 45% use Go for web programming. We guess most of these applications are not trivial.
What's inside the book
It's 2017, and we join a startup. We work full-time in Go now, which starts getting popular.
It's an exciting time, as we're about to kick off an ambitious greenfield project. We're determined to do the impossible: add features quickly and keep the application maintainable.
At this point, we've already seen complex software that's hell to maintain. It's often the key to the company's success, but no one wants to touch it. The last thing we want is for our application to end up like this.
Some may think it's the natural order of things. We naively can't accept that. So we spend evenings studying Domain-Driven Design, reading about Clean Architecture, and watching talks on CQRS and Event-Driven Programming.
These patterns are supposedly used only in enterprise applications. There was almost nothing on the web about using them in Go. We're in the dark most of the time but fueled with enthusiasm. We push through and apply the ideas, trying things out along the way.
Read the example chapter.
We find out the patterns work, and they play well with Go. Go's explicit and straightforward way of doing things is a perfect fit for the domain-focused approach. Our team feels productive, collaboration goes smoothly, and it's fun to work with the project.
Learn to solve problems, not apply patterns
We see again and again that implementation details are often just... details. We realize how important it is to get the domain code right. Not only in the "clean code" sense, but also in a "correctly modeled" way. We give up some coding time to talk with people and better understand what we're building. It always pays back.
Over the last few years, we've kept working on these ideas and improving them. Go with the Domain is how we share what we've learned with you.
We've heard multiple success stories about how Go with the Domain has helped many people and teams.

Play with a fully functional project
Examples are great for learning, so we decided to create a real, open-source, and deployable web application that would help us show the patterns. All chapters follow the same project, refactored over time.
Most ideas in this book shine in applications with complex business scenarios. Some make sense in simpler cases. Others will look like terrible over-engineering if used in small projects. We share hints on being pragmatic and choosing the best tool for the job.

We base Go with the Domain on articles from our blog. The book is a work in progress. We update it with each new post coming out.
Join our newsletter to get access to the book!
Who we are

We're Miłosz and Robert, founders of Three Dots Labs and creators of Watermill.
The book is based on hands-on knowledge from real engineers. The Internet is full of shallow tutorials written by people without production experience. They do more harm than good.
We're pioneers of Domain-Driven Design in Go, publishing our first articles in 2020 and releasing first version of this e-book in 2021. Many patterns we presented have since become the standard way of building DDD services in Go.
All the knowledge we share is based on over 17 years of experimentation. We and our teams built many production systems in startups.
How can you know if we're not making it up? While you're probably not working with us, there is a lot of public evidence of our work.
Blog
44 in-depth articles about Go and advanced backend patterns over the last 7 years.Watermill
Your standard library for building event-driven applications the easy way in Go.Wild Workouts
A complete Go DDD example application.Our Online Training
Learn Go from scratch to advanced patterns by creating real-life projects.Newsletter
Always be up-to-date with our initiatives.Go With The Domain
An e-book about building Modern Business Software in GoSign up to our newsletter and get your free copy of Go with the Domain e-book.

