🚀 60,538+ downloads

Go With The Domain

Building Modern Business Software in Go

Stop fighting questionable abstractions. Start building maintainable systems. Whether you're untangling legacy code, scaling your team, or starting a new project you want to get right.

DDD Bible testimonial DDD Bible testimonial
Cover

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

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. 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, which is starting to take off.

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 were supposedly reserved for enterprise applications. There was almost nothing on the web about using them in Go. We pushed through anyway, trying out ideas and learning what works.

Book sample
Book sample with example

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 keep seeing that implementation details are often just that—details. What matters most is getting 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.

Email testimonial

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.

Wild Workouts GitHub

Go with the Domain is based on articles from our blog. We keep updating it with new content.

Join our newsletter to get access to the book!

Who we are

Banner image

We're Miłosz and Robert, founders of Three Dots Labs and creators of Watermill.

The book is based on hands-on knowledge from building real production systems—not theory copied from textbooks.

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.

You don't have to take our word for it—there's plenty of public evidence of our work.

Sign up to our newsletter and get your free copy of Go with the Domain e-book.