Golang The Ultimate Guide To Microservices In Go Part 1

Everything you need to get serious about microservices design & development in Golang: From design to production metrics

Last updated 2022-01-10 | 4.3

- Install
- configure and setup Go
- Analysis and design of REST microservices.
- Different architectures and patterns for implementing them in Go.

What you'll learn

Install
configure and setup Go
Analysis and design of REST microservices.
Different architectures and patterns for implementing them in Go.
Test as you Go. Ensure the quality of your work.
Advanced concurrency patterns.
Parallel execution on Multi-Core VMs.
HTTP frameworks
comparison and appliance.
Consuming external APIs. Test them. Mock them. Measure them. Use them.
The ultimate and best way of mocking different layers of your application.
Debugging and completely testing your application.
Create native webservices.

* Requirements

* Just complete the Golang tour available at Golang's website

Description

  • Install, configure and setup Go
  • Analysis and design of REST microservices.
  • Different architectures and patterns for implementing them in Go.
  • Test as you Go. Ensure the quality of your work.
  • Advanced concurrency patterns.
  • Parallel execution on Multi-Core VMs.
  • HTTP frameworks, comparison and appliance.
  • Consuming external APIs. Test them. Mock them. Measure them. Use them.
  • The ultimate and best way of mocking different layers of your application.
  • Debugging and completely testing your application.
  • Create native webservices.

Course content

8 sections • 31 lectures

Golang installation & configuration Preview 12:39

After this lesson you'll have the Go programming language configured in your computer and ready to start working!

Configuring environment Preview 20:56

Configuring the Golang environment in your local machine.

Testing our first websever Preview 12:20

We're creating a basic webserver and testing how it works.

Introduction to MVC Preview 13:16

How the MVC pattern looks, why it is useful and how we can implement it in Go.

Package organization Preview 45:52

How to organize golang source code in order to be able to scale as much as needed in business logic without affecting features already developed.

Pushing our changes to Git and first PR Preview 14:21

Sending changes to Github, creating a Pull Request, review and merge.

Introduction to testing Preview 13:21

Yes, testing is here! We're covering tests from day one since this is the most important feature that we need to use from scratch as we're depending on tests to ensure the quality of what we develop.

Unit tests Preview 30:12

An introduction to golang unit tests, how to write them, how to read them and how they are important to prove that what we have built actually works as expected.

Benchmarks Preview 35:40

Introducing the benchmark features to compare performance on different approaches while defining the best solution for a given problem.

How to structure Go artifacts and mock Preview 38:08

How to structure artifacts from day one. A clear and well defined way to structure different layers of our application to get the most valuable features of the language working without issues and scaling in business logic.

HTTP Frameworks Preview 35:39

An introduction of HTTP frameworks available. How and why to use them, how they improve both the performance and structure of our application. Most important, how to test :)

Analyzing our target APIs. Preview 13:39

Domain-based microservices are one of the most powerful tools available when creating scalable architectures. In this video, we cover how to analyze and model the domain based on the target APIs that we're planning to consume.

Defining our domain structs Preview 34:13

How to organize our domain structs based on their concepts. How to scale in amount of code we have without affecting the quality of the final product.

REST Api Calls - Native HTTP client Preview 47:39

An introduction of the net/http package, how to use only this package to perform API calls to external services, how to structure our source code and how to develop thinking on tests.

Testing: Mocking native REST Api calls. Preview 39:20

Adding mock features to our restclient. How to mock any aspect of our API call providers to get the most valuable product while making sure everything we write works as expected.

Putting all together Preview 48:25

For small projects, some of the REST frameworks available out there. How to import them, how and when to use them.

Testing: Unit & Integration tests Preview 56:18

Integration tests between every layer of our application. How and when to use these types of tests.

Concurrency is NOT parallelism Preview 19:22

A short introduction to concurrency and parallelism concepts.

Implementation of concurrent API calls Preview 01:11:27

implementing concurren API calls to an external API while making sure everything works as expected. How to use the concurrency features of Go to make this work.

Testing concurrent models Preview 46:50

In this video we cover how to test different parts of our concurrent design. Keep focus on performance while ensuring the quality of the solution by using both Unit and Integration tests.

How to limit concurrency Preview 38:24

In most cases we just can't create millions of goroutines in order to complete some task. In this video we're covering the basics we need in order to limit the concurrent processes we create while keeping performance above all.

Calculate the shipping box Preview 07:14

A real-life problem. How to calculate the best shipping box based on the products that it holds.

How to use Mutex Preview 14:08

How to use mutex to achieve atomic behaviors.

Introduction to logging systems Preview 12:23

How to build a distributed and scalable logging system using ELK (ElasticSearch, Logstash & Kibana). We're only focusing on the logging libraries available and the architecture design, leaving database integration for the Part 2 of this course.

Log library - logrus Preview 38:41

An introduction to the Logrus library and how to implement logs based on it.

Log library - zap Preview 23:06

An introduction to the Uber's ZAP library and how to implement logs based on it.

Infrastructure design for your microservices Preview 31:37

How to organize and plan your infrastructure in order to scale to support as many traffic as you need.

Creating an OAuth authentication microservice Preview 01:32:29

In this lesson we cover how to implement an OAuth authentication layer for our application, how to locate our microservice inside our general architecture and how to implement the service. No database is used in this first version since we're going to iterate this approach in Part 2 of the course.


OAuth documentation: https://oauth.net/2/

Mocking entire layers of the application Preview 26:15

How to use interfaces to mock an entire layer of our application. Use of native and custom implementation and presenting some libraries we can use to achieve this requirement.

End of course - Part 1 Preview 07:37

Final words after finishing the course. Congratulations!

Extra class - Take a look at my website Preview 03:31

If you have any questions or comments that are not particularly about the topics treated during this course you can always use the Q&A section and I'll make sure you clear your doubts by publishing content about those topics or issues as well. If you like what you're looking and getting, take a look at my website, there is a lot more in there!