Live data from Hacker News

Show HN: Encore – Go framework for building distributed systems

github.com

1–10 of 71 posts

Re: Show HN: Encore – Go framework for building distributed systems

#2
I've been working on Encore for the past 3 years.

I was at Spotify for the past 8 years as a Staff Software Engineer. We grew frustrated with the disproportionally large effort needed to build even simple backend applications, and created Encore to solve this problem.

Encore uses static analysis and code generation to reduce the boilerplate you have to write, resulting in an extremely productive developer experience. It's a combination of a framework that combines with a cloud platform in order to simplify all aspects of building distributed systems, from how you write code to shipping it to production.

I shared some more background on Encore here [1]. Feedback very much appreciated :)

[1] https://twitter.com/_eandre/status/1381668476662734849

Re: Show HN: Encore – Go framework for building distributed systems

#3
post #2

I've been working on Encore for the past 3 years. I was at Spotify for the past 8 years as a Staff Software Engineer. We grew frustrated with the disproportionally large effort needed to build even simple backend applications, and created Encore to solve this problem. Encore uses static analysis and code generation to reduce the boilerplate you have to write, resulting in an extremely productive developer experience.…

Hey thanks a lot for sharing this, Could you recommend a couple of resources for someone to get into distributed systems? I read Data Intensive Applications, and have been finding such sources since.

Re: Show HN: Encore – Go framework for building distributed systems

#4
post #2

I've been working on Encore for the past 3 years. I was at Spotify for the past 8 years as a Staff Software Engineer. We grew frustrated with the disproportionally large effort needed to build even simple backend applications, and created Encore to solve this problem. Encore uses static analysis and code generation to reduce the boilerplate you have to write, resulting in an extremely productive developer experience.…

Hey thanks a lot for sharing this, Could you recommend a couple of resources for someone to get into distributed systems? I read Data Intensive Applications, and have been finding such sources since.

A lot of the seminal research papers are surprisingly readable! I really recommend reading them to get a good feel for the sort of problems you face at scale and good ways of handling them.

Off the top of my head: a lot of stuff from Google (Dapper, Stubby, Zanzibar). Dynamo from Amazon. Leslie Lamport's guide on TLA+. The two generals problem, distributed consensus, and so on.

Most distributed systems don't need all that fancy stuff, but it's useful to know regardless. Even the simplest systems will get weird and interesting bottlenecks with scale.

And then a lot of just doing it in practice! Find a job at a startup with some scale, and learn on the job.

Re: Show HN: Encore – Go framework for building distributed systems

#5
Looks interesting. How do the infrastructure layer features (deployment, cloud resource management) compare to the open source alternatives? If I am already using Kubernetes and terraform, would it still make sense for me to build applications on Encore?

Re: Show HN: Encore – Go framework for building distributed systems

#6
This looks pretty awesome!

I'd love to see an example using websockets. I've used Go for websockets in the past but find the boilerplate-to-custom code ratio isn't great.

Knowing Go has a solid webrtc library (https://github.com/pion/webrtc), another cool feature would be webrtc support. Tons you can build with that!

Re: Show HN: Encore – Go framework for building distributed systems

#7
post #5

Looks interesting. How do the infrastructure layer features (deployment, cloud resource management) compare to the open source alternatives? If I am already using Kubernetes and terraform, would it still make sense for me to build applications on Encore?

Currently Encore deploys to Kubernetes, and uses Terraform under the hood to provision the infrastructure. Over time we'll add much more flexibility in how you deploy the application and the infrastructure we support.

It's not another infrastructure offering but rather a new developer experience for building backend applications and distributed systems. The idea is to get the developer feedback loop to be about building your product and writing business logic.

Encore then uses static analysis to understand what your application does, the different backend services involved, and the infrastructure you need. It can then provision all the infrastructure, servers, databases, and hook everything together.

Re: Show HN: Encore – Go framework for building distributed systems

#8
post #6

This looks pretty awesome! I'd love to see an example using websockets. I've used Go for websockets in the past but find the boilerplate-to-custom code ratio isn't great. Knowing Go has a solid webrtc library ( https://github.com/pion/webrtc ), another cool feature would be webrtc support. Tons you can build with that!

Thanks! Encore does support dropping down to plain HTTP requests which lets you use Websockets, see [1]. We hope to make it more ergonomic and less boilerplate-y in the future, but it is supported :)

[1] https://github.com/encoredev/examples/tree/main/websocket-ec...

Re: Show HN: Encore – Go framework for building distributed systems

#9
This looks neat, but man. I'm not a fan of code generation magic. It's part of the reason I moved away from the Rails ecosystem - even though I knew what Rails was doing under the hood, the magic started to give me the heebie-jeebies. Maybe I'm weird, but I'd rather spend 10-15 minutes writing some boilerplate for a service and control the code than trust a third-party tool to do it for me.

I also feel like this is doing too much to be a framework, in a way. Like, if it just did the code generation, cool. But add in the secret management, cloud deployment and migration stuff, and it starts to feel like a platform - which, coincidentally, it is. With pricing and everything. I can't use this to build a service that runs on AWS/GCP/my own servers - at least it doesn't look like it from first glace.

So if this were actually just a framework that could be separated from the platform stuff, I'd be willing to try it out. But as is, I'd rather write boilerplate and be able to 'go run' my service and deploy it wherever I want.

EDIT: Just found that I could deploy to another cloud provider, which is nice. I wish I didn't have to manage that via a web interface, and that it supported just building a container I could deploy anywhere.

Re: Show HN: Encore – Go framework for building distributed systems

#10
We built a conference management system using an early release of Encore this past winter, and it was an amazing experience. I can absolutely recommend you check it out if you're building services in Go. The developer experience is so WELL thought out, it's a pleasure to use it.
Post reply on HN