[{"data":1,"prerenderedAt":454},["ShallowReactive",2],{"project-26806797":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":44,"post_text":46,"what":47,"said":96,"maker_in_thread":226,"shape":235,"grid":239,"attempts":408,"same_week":417,"maker_shows":33,"maker_hidden":446,"reader_version":447,"card":448},"26806797","Encore","Go framework for building distributed systems","title","Show HN: Encore – Go framework for building distributed systems","https:\u002F\u002Fgithub.com\u002Fencoredev\u002Fencore","github.com","eandre",1618407027,2021,182,69,258,2533,11,"notable","dev_tools","backend framework","library",[24,25,26,21,27],"go framework","distributed systems","code generation","microservices","curious",-0.104,{"positive":31,"neutral":32,"mixed":33,"critical":34},5,20,1,10,36,{"design":37,"idea":40,"execution":42,"privacy":43},{"positive":38,"critical":39},2,4,{"positive":41,"critical":31},0,{"positive":41,"critical":41},{"positive":41,"critical":41},[33,41,31,33,45,33,41,33,41,45,41,45,41,33,31,45,33,41,41,41,41,41,31,45,45,31,45,31,33,41,33,45,45,45,45,45,45,33,33,45],3,null,{"problem":48,"audience":58,"pricing":67,"motivation":74,"time_to_build":46,"stack":78,"openness":93,"stage":94,"team_size":95},{"value":49,"source":50,"evidence":51},"Building backend applications and distributed systems requires too much boilerplate and infrastructure setup","maker",[52,55],{"id":53,"by":11,"text":54},"26806851","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…",{"id":56,"by":11,"text":57},"26807781","Thanks for the feedback. I think there are many different types of magic. In my (biased) opinion I think the code generation we do is much more on the side of \"how to do this is…",{"value":59,"source":60,"evidence":61},"Go backend developers building services","inferred",[62,63],{"id":53,"by":11,"text":54},{"id":64,"by":65,"text":66},"26807596","dhagz","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…",{"value":68,"source":50,"evidence":69},"Encore Cloud is paid; framework is open source",[70,71],{"id":64,"by":65,"text":66},{"id":72,"by":11,"text":73},"26808101","Good questions! \"Encore Cloud\" is currently deployed to AWS and DigitalOcean under the hood. As for being tied to us, that's a big part of why we're open sourcing it. We see that…",{"value":75,"source":50,"evidence":76},"Frustration with the large effort needed to build simple backend apps at Spotify",[77],{"id":53,"by":11,"text":54},[79,83,89],{"value":80,"source":50,"evidence":81},"Go",[82],{"id":53,"by":11,"text":54},{"value":84,"source":50,"evidence":85},"Kubernetes",[86],{"id":87,"by":11,"text":88},"26807424","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…",{"value":90,"source":50,"evidence":91},"Terraform",[92],{"id":87,"by":11,"text":88},"open_source","launched","company",{"praise":97,"objections":114,"requests":146,"questions":169,"alternatives":200},[98,110],{"value":99,"source":100,"evidence":101},"Developer experience is well thought out and productive","commenter",[102,106],{"id":103,"by":104,"text":105},"26807649","bketelsen","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…",{"id":107,"by":108,"text":109},"26807963","gigatexal","I kinda like this a lot. Raw SQL in the examples. And generated and consumable api services. I will surely play with this later.",{"value":111,"source":100,"evidence":112},"Auto-generated APIs and raw SQL look neat",[113],{"id":107,"by":108,"text":109},[115,127,134,139],{"value":116,"source":100,"evidence":117},"Code generation and magic take control away from the developer",[118,119,123],{"id":64,"by":65,"text":66},{"id":120,"by":121,"text":122},"26811204","Philip-J-Fry","I don't think it is. It's fundamentally taking the code out of your control. With my services all the code is there, we can tweak it if necessary, we're not tied to a framework,…",{"id":124,"by":125,"text":126},"26812891","marcus_holmes","> it seems like unnecessary complexity, something I strive to avoid. This. Adding complexity to reduce boilerplate seems like the wrong direction to go in (pun intended). I like…",{"value":128,"source":100,"evidence":129},"Too much scope: looks like a platform, not a framework",[130,131],{"id":64,"by":65,"text":66},{"id":132,"by":121,"text":133},"26808130","I've built my fair share of Go microservices and have never felt the need to develop an entire framework like this. We have everything like CI\u002FCD, distributed tracing and one…",{"value":135,"source":100,"evidence":136},"Unnecessary complexity compared to simple Go boilerplate",[137,138],{"id":132,"by":121,"text":133},{"id":124,"by":125,"text":126},{"value":140,"source":100,"evidence":141},"Marketing language is hyperbolic",[142],{"id":143,"by":144,"text":145},"26809381","hnarn","I'm sure this is awesome but do we really need phrases like \"state of the art developer experience\" giving you \"unmatched productivity\"? Is this the new normal? Do people feel…",[147,151,158],{"value":148,"source":100,"evidence":149},"Support for deploying to own infrastructure via containers",[150],{"id":64,"by":65,"text":66},{"value":152,"source":100,"evidence":153},"Websocket and WebRTC examples or support",[154],{"id":155,"by":156,"text":157},"26807409","lux","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…",{"value":159,"source":100,"evidence":160},"Pub\u002Fsub and message queue integration",[161,165],{"id":162,"by":163,"text":164},"26808210","ideas-are-cheap","Looks quite interesting to me. The telemetry and tracing aspects are cool I think. That sort of thing is a 'must have' really but I find it is quite a pain to manage the tools…",{"id":166,"by":167,"text":168},"26807835","domano","Is it possible to integrate this with event based systems or message queues or is encore not made to be integrated into existing service landscapes anyways?",[170,175,182,189],{"value":171,"source":100,"evidence":172},"How does it integrate with existing systems and event sources",[173,174],{"id":162,"by":163,"text":164},{"id":166,"by":167,"text":168},{"value":176,"source":100,"evidence":177},"How are retries and backoff handled",[178],{"id":179,"by":180,"text":181},"26808237","tyingq","The page didn't mention retries, exponential back off, etc. Is there somewhere where it shows how that sort of thing is handled?",{"value":183,"source":100,"evidence":184},"How are distributed transactions handled",[185],{"id":186,"by":187,"text":188},"26811986","ashtar","Curious - how do you end up handling transactions that span services? I'm getting into go, but there doesn't seem to be a great pattern for this. Used to @Transactional on the…",{"value":190,"source":100,"evidence":191},"Whether it compares to Kubernetes and Terraform workflows",[192,196],{"id":193,"by":194,"text":195},"26807279","wskinner","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…",{"id":197,"by":198,"text":199},"26814258","MuffinFlavored","> We grew frustrated with the disproportionally large effort needed to build even simple backend applications, and created Encore to solve this problem. I'm going to sound naive…",[201,208,215,222],{"value":202,"source":100,"evidence":203},"go-kit",[204],{"id":205,"by":206,"text":207},"26808312","itake","Any ideas how this compares with [go-kit](https:\u002F\u002Fgithub.com\u002Fgo-kit\u002Fkit)? I like how go-kit's transport not just JSON and HTTP (e.g. gRPC and protobufs are supported).",{"value":209,"source":100,"evidence":210},"Goa",[211],{"id":212,"by":213,"text":214},"26845913","Gys","This seems very similar to https:\u002F\u002Fgoa.design\u002F? Did you know it exists?",{"value":216,"source":100,"evidence":217},"Dapr",[218],{"id":219,"by":220,"text":221},"26809092","ceesharp","Is this something like https:\u002F\u002Fdapr.io\u002F?",{"value":223,"source":100,"evidence":224},"Rails",[225],{"id":64,"by":65,"text":66},{"comments":227,"answered":228,"key":229},12,7,[230,231,232],{"id":56,"text":57},{"id":53,"text":54},{"id":233,"text":234},"26807021","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…",{"commenters":236,"max_depth":237,"maker_replies":227,"first_comment_mins":237,"lifespan_hours":238},42,6,76,[240,242,246,248,250,253,256,258,262,264,266,268,271,274,276,278,280,284,286,289,291,294,297,298,301,305,306,308,310,313,316,319,321,323,326,329,332,334,336,339,340,341,342,344,346,347,349,351,354,355,357,359,361,363,364,366,371,374,376,379,381,383,385,390,392,396,399,403,406],[64,41,33,241,65,41],"project\u002Fcritical\u002Fdesign",[243,41,41,244,245,41],"26807772","commenter\u002Fneutral\u002Fnone","freedomben",[247,41,41,244,206,41],"26811039",[56,41,41,249,11,33],"project\u002Fneutral\u002Fidea",[251,41,31,252,65,41],"26808024","project\u002Fpositive\u002Fnone",[254,41,33,241,255,41],"26810464","dastx",[53,33,41,257,11,33],"maker\u002Fpositive\u002Fidea",[259,33,45,260,261,41],"26806928","maker\u002Fneutral\u002Fnone","datavinci",[233,33,41,263,11,33],"other\u002Fneutral\u002Fnone",[132,33,33,265,121,41],"project\u002Fcritical\u002Fidea",[267,33,41,252,11,33],"26808198",[269,33,41,244,270,41],"26808319","skrtskrt",[272,33,33,265,273,41],"26809509","wdb",[275,33,41,263,121,41],"26809561",[277,33,41,244,273,41],"26811730",[279,33,41,244,121,41],"26811948",[281,33,45,282,283,41],"26809847","project\u002Fneutral\u002Fdesign","kbar13",[120,33,41,285,121,41],"commenter\u002Fneutral\u002Fdesign",[287,33,41,244,288,41],"26811442","outworlder",[186,33,45,290,187,41],"project\u002Fneutral\u002Fexecution",[292,33,41,244,293,41],"26813540","mrath",[295,33,41,244,296,41],"26814558","asimpletune",[124,33,33,265,125,41],[299,33,45,260,300,41],"26808209","latch",[302,33,31,303,304,41],"26814070","maker\u002Fpositive\u002Fnone","nvarsj",[197,33,45,249,198,41],[212,33,45,307,213,41],"project\u002Fneutral\u002Fnone",[143,38,33,309,144,41],"project\u002Fcritical\u002Fnone",[311,38,41,263,312,41],"26809752","thwarted",[314,38,41,263,315,41],"26813425","ggregoire",[317,45,41,263,318,41],"26814313","jpgvm",[320,45,41,244,296,41],"26814496",[322,45,41,244,318,41],"26815084",[324,45,41,244,325,41],"26815888","plank_time",[327,45,41,244,328,41],"26816023","valzam",[330,45,41,244,331,41],"26816139","m00x",[333,45,41,244,331,41],"26816098",[103,39,31,335,104,41],"project\u002Fpositive\u002Fdesign",[337,39,45,260,338,41],"26808091","throwaway894345",[193,31,45,249,194,41],[87,31,41,249,11,33],[155,237,45,307,156,41],[343,237,41,260,11,33],"26807447",[345,237,31,303,156,41],"26807880",[162,228,45,307,163,41],[179,348,45,307,180,41],8,[107,350,31,335,108,41],9,[352,34,45,260,353,41],"26807982","neeeeees",[72,34,41,260,11,33],[356,18,33,241,167,41],"26807720",[358,18,41,282,11,33],"26807805",[360,18,33,241,167,41],"26807873",[362,18,41,307,11,33],"26807991",[166,227,45,307,167,41],[365,227,41,307,11,33],"26807928",[367,368,45,369,370,41],"26809636",13,"project\u002Fneutral\u002Fprivacy","void_mint",[372,368,41,373,11,33],"26810550","maker\u002Fneutral\u002Fprivacy",[219,375,45,307,220,41],14,[377,375,45,307,378,41],"26813351","rusht",[205,380,45,307,206,41],15,[382,380,45,249,328,41],"26816065",[384,380,41,244,206,41],"26822129",[386,387,45,388,389,41],"26811570",16,"project\u002Fmixed\u002Fidea","cultofmetatron",[391,387,45,249,328,41],"26816056",[393,394,33,265,395,41],"26811423",17,"nautilus12",[397,394,41,398,11,33],"26811520","commenter\u002Fneutral\u002Fidea",[400,401,33,265,402,41],"26811703",18,"AtNightWeCode",[404,401,41,244,405,41],"26815030","uh_uh",[407,401,45,260,402,41],"26835128",[409,412,413],{"id":410,"t":411,"points":18,"comments":31},"26779386",1618235348,{"id":4,"t":12,"points":14,"comments":15},{"id":414,"t":415,"points":238,"comments":416},"45925890",1763120507,47,[418,423,428,433,438,442],{"id":419,"name":420,"points":421,"category":422},"26805702","Lofi.cafe",1192,"creative",{"id":424,"name":425,"points":426,"category":427},"26791582","DeepHN",324,"data",{"id":429,"name":430,"points":431,"category":432},"26741611","I Wish There Was an App",272,"productivity",{"id":434,"name":435,"points":436,"category":437},"26790486","I made a 5-key keyboard",221,"hardware",{"id":439,"name":440,"points":441,"category":432},"26781451","PMS (Personal Data Management Dashboard)",176,{"id":443,"name":444,"points":445,"category":20},"26812696","Run unknown shell script with a line-by-line confirmation prompt",158,false,"v2",{"id":449,"name":5,"line":6,"ai":446,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":450,"top":18,"kw":451,"maker":11,"domain":10,"tier":19,"attempts":45,"strip":452,"url":9,"mix":453,"praise":99,"objection":116,"sub":21},26806797,-0.1,[24,25,26,21,27],"1051310103030153100000533535101333333113",[31,32,33,34],1794036605652]