Code repository for my Building Microservices YouTube series https://www.youtube.com/playlist?list=PLmD8u-IFdreyh6EUfevBcbiuCKzFk0EW_
Week by week Building Microservices builds on the previous weeks code teaching you how to build a multi-tier microservice system. The code structure for the course is one of a mono repo. To make it simple to follow along, each episode has its own branch showing progress to date.
Product API ./product-api
Simple Go based JSON API built using the Gorilla framework. The API allows CRUD based operations on a product list.
Frontend website ./frontend
ReactJS website for presenting the Product API information
Over the weeks we will look at the following topics, teaching you everything you need to know regarding building microservices with the go programming language:
- Introduction to microservices
- RESTFul microservices
- gRPC microservices
- Packaging applications with Docker
- Testing microservice
- Continuous Delivery
- Observability
- Using Kubernetes
- Debugging
- Security
- Asynchronous microservices
- Caching
- Microservice reliability using a Service Mesh
Branch: episode_1
In this episode I show you how to build the simplest service you can using the standard packages in the Go programming language.
Branch: episode_2
In this episode we learn more about the standard library and look at how we can refactor last episodes example into a reusable microservice pattern.
Branch: episode_3
In this episode we start to learn about RESTFul services and reading and writing data using the JSON format.
Branch episode_4
We continue to look at how you can implement RESTFul services with the Standard API
Branch episode_5
In this epsode we refactor our Standard library RESTful service and start to implement the Gorill toolkit for routing.
Branch episode_6
In this episode we will look at the Go Validator package and how it can be used to validate JSON.
Branch episode_7
This epsiode shows you how you can document the API we have been building over the last couple of weeks. As a bonus we will also look at how we can embed ReDoc to build a nice documentation API direct into our service.
Branch episode_8
In this episode we look at how we can use the Swagger API documentation we created in the last episode and generate a Go client SDK. As it turns out I had a little bug in my code hope you all find the process of debugging this and finding root cause useful too.
Branch episode_9
In this episode we are going to take a look at CORS (Cross-Origin Resource Sharing). CORS is a security feature built into web browsers which restricts upstream requests to sites on different domains. We look at a typical example of a React website on one domain calling a back end API, see the impact of CORS and how to solve it.
Branch episode_10
In this episode you will learn how to upload and serve files using the Go standard library.
Branch episode_11
In this episode you will learn how to handle multi-part form uploads. Mult-part forms used to be common place as they are the basic way that browsers would upload data to a server. This pattern has fallen out of fashion as most moder data transfer to the server is done using XHR requests. There might still be a case when you need to know this though.
Branch episode_12
In this episode we walk through how to wrap a http.ResponseWriter to enable Gzip compression for HTTP responses.
HTTP Headers Accept-Encoding: https://developer.mozilla.org/en-US/d...
HTTP ResponseWriter: https://golang.org/pkg/net/http/#Resp...
gRPC is a high performance framework for client server applications. It is designed to be cross platform and is an awesome alternative to RESTful services.
In this episode we take a quick look at gRPC and Protocol Buffers, and how you can use them to build a simple API. This is the first video in a series of content where we dig into gRPC services.
gRPC Framework: https://grpc.io/
Protocol Buffers v3 Language Guide: https://developers.google.com/protocol-buffers/docs/proto3
Protocol Buffers v3 Encoding format: https://developers.google.com/protocol-buffers/docs/encoding