My experience of Golang is that dependency injection doesn't really have much benefit. It felt like a square peg in a round hole exercise when my team considered it. The team was almost exclusively Java/Typescript Devs so it was something that we thought we needed but I don't believe we actually missed once we decided to not pursue it. If you are looking at OpenAPI in Golang I can recommend having a look at... - Source: Hacker News / 9 days ago
See https://goa.design/. It automates all the comms stuff, so you just write: 1) a design file showing your functions, 2) an implantation of those functions, and 3) a very generic "main.go" (basically the same for all your services) that decides "how is this exposed over gRPC or REST or other comms?". The rest of the code is generated. Source: 5 months ago
If you really need a framework, you can take a look at Echo or, for a contract-first approach, https://goa.design/. Source: 10 months ago
Few folks in here are (rightly) frustrated with the code generation story and broader tooling support around the OpenAPI standard. I've found a few alternative approaches quite nice to work with: - Use a DSL to describe your service and have it spit out the OpenAPI spec as well as server stubs. In other words, I wouldn't bother writing OpenAPI directly - it's an artifact that is generated at build time. As a Go... - Source: Hacker News / 11 months ago
One of the biggest issues I see is that you are using the same models for API as you are for the database. That wouldn’t fly in a real work system. And even though your doing simple CRUD I would introduce another layer for business logic. You should never have the Controller calling you database code directly. It never “stays” that simplistic. One of the easiest ways to deal with this is to use... Source: 12 months ago
I left PHP for Go. - with http://sqlc.dev I don't have to write ORM or model code anymore. - with http://goa.design I can have well-documented API's that any team can generate a client for in any language. It also generates the HTTP JSON and gRPC servers for me so I can focus on my logic. - with https://github.com/99designs/gqlgen project to make it super simple to use a durable, always backed-up SQLite database... - Source: Hacker News / 12 months ago
Goa and Kong are some of the best frameworks to develop and deploy microservices. They provide features such as out-of-the-box support for service discovery, routing and authentication that make it easier to build more complex applications. There are also newer architectural frameworks with less steep learning curves like GPTDeploy that lets you build and deploy microservices with a single command. Source: 12 months ago
Or the one we use at work: Https://goa.design/ Goa does a lot more and maybe more than you need. We use it as it can generate both REST and gRPC as well as API models and OpenAPI documentation (JSON and YAML). Source: about 1 year ago
I typically use Goa for my controller. It makes the API Controller, API models, and OpenAPI Documentation. Making the OpenAPI documentation can be a pain, so this really helps. https://goa.design/. Source: about 1 year ago
A good framework is Goa: Https://goa.design/ I like it because is can generate REST, gRPC and OpenAPI documentation. The documentation is a big deal as it is eases the pain of anyone using your API. Source: about 1 year ago
If you are building many microservices, you can look at Goa. It forces you to design "API-first". Then you implement the code, and it generates any code you need to wire up your API to HTTP or gRPC, queues, etc. Source: about 1 year ago
Go also makes more sense as you head towards microservices, since you can version the "interface" and let the compiler tell you if the code is compatiable. (Look into Goa - it cleanly breaks out "API" vs "implementation code" and lets you generate all the muck to hook it up to the network via HTTP, gRPC, or queuing, etc.). Source: about 1 year ago
I use Go for my projects. For REST communication I use the https://goa.design/ project - it generates everything needed for golang. It also generates swagger files. And then for flutter I use the https://pub.dev/packages/swagger\_dart\_code\_generator project to generate the library for flutter. It's not completely painless but for larger projects it's better than doing everything manually. For newer projects and... Source: over 1 year ago
But I think the benefits you get from many services (i.e. Forced modularity) are well worth the small pains of managing multiple executables. (Much of that is solved by automation.) No matter if you are building a bigger service or many small ones, I would want it to be modular anyway. So there should be very little difference to the code. (My new fav famework forces network layering, so it's trivial to "decide... Source: over 1 year ago
Eventually you may want a better framework, and it's up to you how much of the work you want that framework to try and bite off. There are low-end ones that only think about routing (Gin), there are Ruby-On-Rails (Buffalo), microservice frameworks (goa, micro), etc. Source: over 1 year ago
One is all the "ceremony" around the services (logging, security, metrics, frameworks like goa or micro, etc.) Every company will pick slightly different trade-offs. There are no "right" answers, only trade-offs. Source: over 1 year ago
Having been one of those people who wanted to help out another project (https://goa.design) where the vision did not align, I left to build something on my own (https://hofstadter.io) and am having way more fun doing it and there were no hard feelings. It's best to not try to force things when the vision is different, as OP describes it. - Source: Hacker News / over 1 year ago
I am using goa.design as is described there https://goa.design/design/overview/ (I am do not use gRPC - only REST). Source: over 1 year ago
We have better experience with https://goa.design/ than with https://github.com/twitchtv/twirp. Source: over 1 year ago
I wish more people encouraged people new to Go to look at some of the targets you'll arrive at so that people don't come into Go thinking the end result is going to be using the Go version of Laravel, Spring, or Rails. Go has some interesting ideas about models/ORM's, OpenAPI, validation, templates, embedded binary files and other things. When types mater, like in Go, code generation is often very important as... - Source: Hacker News / over 1 year ago
I always wondered why Stream was using Python instead of Go. Glad to hear they are able to make the change now. There is no comparison between Go and my Python or Node.js services when it comes to data processing or pipelines. > Revel, Iris, Echo, Macaron and Buffalo seem to be the leading contenders. If you're talking about MVC-era frameworks these are fine. However a lot of companies are using Go for... - Source: Hacker News / almost 2 years ago
Do you know an article comparing goa to other products?
Suggest a link to a post with product alternatives.
This is an informative page about goa. You can review and discuss the product here. The primary details have not been verified within the last quarter, and they might be outdated. If you think we are missing something, please use the means on this page to comment or suggest changes. All reviews and comments are highly encouranged and appreciated as they help everyone in the community to make an informed choice. Please always be kind and objective when evaluating a product and sharing your opinion.