Working with Microservices in Go (Golang)

Build highly available, scalable, resilient distributed applications using Go

Course Summary

Who Is This Course For

  • Go developers who have worked with monolithic applications and who want to learn how to work with Microservices

Requirements

  • A basic understanding of the Go programming language 
  • A Macintosh, Windows, or Linux computer with a connection to the internet 

What You Will Learn

  • Learn what Microservices are and when to use them
  • How to communicate between services using JSON, Remote Procedure Calls, and gRPC
  • How to deploy your distributed application to Docker Swarm
  • How to develop loosely coupled, single purpose applications which work together as a distributed application
  • How to push events to microservices using the Advanced Message Queuing Protocol (AMQP) using RabbitMQ
  • How to deploy your your distributed application to a Kubernetes Cluster

Description

For a long time, web applications were usually a single application that handled everything—in other words, a monolithic application. This monolith handled user authentication, logging, sending email, and everything else. While this is still a popular (and useful) approach, today, many larger scale applications tend to break things up into microservices. Today, most large organizations are focused on building web applications using this approach, and with good reason.

Microservices, also known as the microservice architecture, are an architectural style which structures an application as a loosely coupled collection of smaller applications. The microservice architecture allows for the rapid and reliable delivery of large, complex applications. Some of the most common features for a microservice are:

  • it is maintainable and testable; 
  • it is loosely coupled with other parts of the application; 
  • it can deployed by itself; it is organized around business capabilities; 
  • it is often owned by a small team.

In this course, we'll develop a number of small, self-contained, loosely coupled microservices that will will communicate with one another and a simple front-end application with a REST API, with RPC, over gRPC, and by sending and consuming messages using AMQP, the Advanced Message Queuing Protocol. The microservices we build will include the following functionality:

  • A Front End service, that just displays web pages; 
  •  An Authentication service, with a Postgres database;  
  • A Logging service, with a MongoDB database;  
  • A Listener service, which receives messages from RabbitMQ and acts upon them;  
  • A Broker service, which is an optional single point of entry into the microservice cluster;  
  • A Mail service, which takes a JSON payload, converts into a formatted email, and send it out.

All of these services will be written in Go, commonly referred to as Golang, a language which is particularly well suited to building distributed web applications.

We'll also learn how to deploy our distributed application to a Docker Swarm and Kubernetes, and how to scale up and down, as necessary, and to update individual microservices with little or no downtime.

Please note that this course requires you to download Docker Desktop from Docker. If you are a Udemy Business user, please check with your employer before downloading software.

Course Pricing

Enrol in course

$16.99 CAD

Buy Now

Course Curriculum

Trevor Sawler

Trevor has more than twenty years of experience in professional software development, and over 30 years of experience as a university professor. As an entrepreneur, he has worked with a broad range of clients, including Thomson Nelson, Hewlett Packard, the Royal Bank of Canada, Keybank, Sprint, and many, many others. He also has extensive management and project management experience. He has led teams of fifty developers and artists on multi-million dollar projects, and much smaller teams on much smaller projects. Trevor continues to work projects for a variety of clients every day. As a professor, he has taught in a wide variety of course areas, including Computer Science, English, Irish, and American literature, and a number of "crossover" courses that bridge the liberal arts and technological fields. He has won regional, national, and international awards for his work in the IT field, and has also won awards for his teaching and research as a University professor.