dlsniper / gopherconuk

Repository for GopherCon UK 2018 talk on microservices with Go
MIT License
234 stars 61 forks source link

Go micro-service in ~30 minutes

This is a Go micro-service written from scratch.

It shows how to use net/http, and how to structure a Go project.

It relies on Go 1.11 Beta 2 and the upcoming "Go modules" (formerly known as "vgo") support.

Dependency injection is used to insert a logger instance into the handler.

You can also notice how the test is constructed in order to provide testing for the handler.

A Docker container is available, thanks to the Dockerfile. It shows how to construct such containers.

How to use

Because this project uses go modules, as long as you are using Go 1.11 Beta 2+ or Go 1.10 with vgo support, you should be ok.

Clone this anywhere in your computer and create a project in your editor. I'm using GoLand IDE in order to work on the project during the presentation as well as have support for go modules.

The bundled, self-signed, certificates are bound to either dev.localhost:8080 or docker.localhost:8080. I obviously do not recommend using these in production.

Presentation link

I created this as part of the presentation at GopherCon UK 18.

The link for the video will be updated here when the presentation is out.

References

Structuring Go applications

In order to learn how to approach package design in Go, you can read the following resources:

Once done, this article will help you understand the Design Philosophy On Packaging by William Kennedy.

Exposing Go applications to the Internet

This article describes how you can start approaching

Thank you

I would like to thank you William "Bill" Kennedy for the inspiration he provided on getting me to do this talk.

License

This project is under the MIT license. Please see the LICENSE file for more details.