goa provides a design first approach for building microservices in Go.
It consists of three parts: a DSL for describing the API design, a code generation tool that generates an OpenAPI specification as well as boilerplate code for the service and the clients, and a set of library packages leveraged by both the generated and non generated code. goa is the culmination of 2 years of work spanning 5 complete rewrites. During this time goa evolved from being a pet experiment to becoming a strategic tool used by many organizations and with a striving and growing community.
Developing APIs is an iterative process that requires the collaboration of many teams. Often times the API design needs to go through a review process where the API developer is responsible for providing a detailed documentation of the current API and for implementing all the changes approved during the review. This puts a lot of burden on developers as they need to keep the design documentation up-to-date and visible to all the stakeholders at all time.
goa provides a real time detailed documentation readily available to all stakeholders. Even more importantly goa provides the confidence that the implementation matches the documented design thanks to its code generation tools. The data types, validations, documentation, encoding, security schemes and many other aspects described in the design are directly reflected in the generate service and client code alleviating the need for writing all the associated boilerplate code. The initial v1 announcement can be read here: https://goa.design/en/blog/001-h...
goa