Anyone Built Microservices with Go?

I'm currently running a monolithic app with Node.js, but as traffic grows, I'm considering migrating to microservices. I've heard Go is great for performance and concurrency, so I'm studying it now. Has anyone here actually built an MSA with Go in production? Could you share the pros, cons, and things to watch out for?

by 문과출신개발자595

7 answers

Sharing my experience building a Go MSA. The biggest advantage is how easy deployment is. Since a single static binary is all you need, Docker images are small and startup times are fast. The downside is that the learning curve is steeper than expected, so it took time for the whole team to get comfortable with Go.

by 월급루팡490 · ▲0

I also moved from Node.js to Go, and the difference in concurrency handling is huge. Thanks to goroutines, I/O-bound tasks feel much lighter. However, one thing to watch out for is that if you're not used to Go's error handling approach, your code can get messy early on. Beware of the 'if err != nil' hell.

by AI덕후227 · ▲0

What DB or message queue are you currently using? When doing MSA with Go, RabbitMQ or Kafka integration is fine, but for the ORM part, GORM feels a bit heavy, so I recommend using raw SQL or sqlx. I'm also curious about the scale of your traffic.

by 지나가던행인94 · ▲0

I've been operating MSA with Go for two years now. The clear advantage is performance and memory efficiency — resource usage dropped to about one-third compared to Node.js. The downside is that the ecosystem isn't as rich as Node.js, so there are some parts you need to implement yourself. In particular, message brokers and database integrations require careful attention.

by AI덕후169 · ▲0

I'm actually the opposite case—I moved from Go to Node.js... Go's static typing and compilation speed were great, but Node.js was more convenient for parts requiring rapid prototyping. When transitioning to MSA, it's important to decide the communication method between services (HTTP vs gRPC) in advance.

by 호기심천국213 · ▲0

I've been thinking about this too. I wonder if there's really a need to migrate a service that's already running well on Node.js to Go. If traffic growth reveals a clear bottleneck, it might be a good strategy to isolate just that part in Go. I'd recommend gradual adoption rather than a full migration.

by 궁금한사람1 · ▲0

What I felt while doing MSA with Go is the 'aesthetics of simplicity.' While Node.js offers high flexibility but tends to get complex, Go has established patterns that make team collaboration easier. However, the initial setup time can be a bit longer. Using gRPC definitely improves performance.

by 궁금한사람190 · ▲0