Complete Microservices with Go
Course description
In this practical project-based course, you will create a microservices system for a ride-sharing service in the style of Uber from scratch - using Go, Docker, and Kubernetes.
The course includes a mini-course on advanced Go, so you will gain a full set of knowledge even if you're just beginning to learn the language.
By the end of the training, you will have a fully deployed, horizontally scalable system for ride-sharing, ready for real-world loads. Additionally, you will obtain a reusable template for creating future distributed projects - accelerating your path to the role of a lead engineer.
The project you will build consists of several services orchestrated using Kubernetes. The application interface will allow users to select a route directly on a map and, by choosing the desired rate, book a ride from a pool of available drivers.
The goal of the course is to provide you with fundamental knowledge for creating and understanding distributed backend systems, mastering best industry practices, and developing a production-ready microservices architecture that is scalable and easy to maintain.
This is not just a step-by-step guide, but a comprehensive educational experience that prepares you for real-world challenges in the development field.
Watch Online
All Course Lessons (90)
| # | Lesson Title | Duration | Access |
|---|---|---|---|
| 1 | Introduction Demo | 01:53 | |
| 2 | Project Overview | 04:14 | |
| 3 | Tech Stack Overview | 06:22 | |
| 4 | Coming from a Monolith | 12:21 | |
| 5 | Microservices Guiding Design Principles | 13:35 | |
| 6 | Communication Styles | 15:23 | |
| 7 | Architecture Definition Process | 11:24 | |
| 8 | Effective Error Handling | 15:29 | |
| 9 | Interfaces | 16:17 | |
| 10 | Testing | 06:18 | |
| 11 | Pointers | 12:16 | |
| 12 | Goroutines | 10:14 | |
| 13 | Context and Timeouts | 13:30 | |
| 14 | Concurrency with Channels | 13:21 | |
| 15 | Maps | 06:21 | |
| 16 | Map Concurrency & Mutexes | 12:07 | |
| 17 | Windows Users Setup | 12:06 | |
| 18 | Mac/Linux Setup | 07:35 | |
| 19 | Structuring a Microservice project | 12:11 | |
| 20 | Theory: Clean Architecture & Repository Pattern | 09:31 | |
| 21 | Part 1: Layered Architecture | 07:54 | |
| 22 | Part 2: Repository Pattern | 23:23 | |
| 23 | Why Kubernetes and Tilt | 09:31 | |
| 24 | Role of the API Gateway | 07:24 | |
| 25 | Implementing an HTTP Server | 25:09 | |
| 26 | External API communication (OSRM) | 20:15 | |
| 27 | Preparing for External API Failures | 02:57 | |
| 28 | Gracefull shutdown | 14:44 | |
| 29 | Understanding WebSockets | 09:10 | |
| 30 | Implementing WebSocket connections | 22:29 | |
| 31 | Handling CORS | 16:08 | |
| 32 | gRPC Introduction | 08:54 | |
| 33 | Protocol Buffer file generation process | 05:31 | |
| 34 | Defining the Trip Proto | 15:49 | |
| 35 | Implementing the Gateway Trip gRPC Client | 16:55 | |
| 36 | gRPC Server implementation on Trip Service | 12:22 | |
| 37 | Preview Trip Handler - Part #1 | 12:44 | |
| 38 | Preview Trip Handler - Part #2 | 20:49 | |
| 39 | Why & What are Ride Fares | 05:56 | |
| 40 | Ride Pricing Estimation | 32:51 | |
| 41 | Implementing the TripStart gRPC handler | 21:31 | |
| 42 | Introduction to Kubernetes | 06:15 | |
| 43 | Kubernetes Under the Hood | 14:12 | |
| 44 | Kubernetes Components | 16:38 | |
| 45 | Creating Deployment Files | 22:57 | |
| 46 | Doing our first production deployment | 19:29 | |
| 47 | Bootstrapping the Service | 16:22 | |
| 48 | Small Tiltfile Compilation Fix | 01:21 | |
| 49 | Final Adjustments to the Route | 03:10 | |
| 50 | Introduction to Async communication | 12:33 | |
| 51 | Setting up RabbitMQ | 11:48 | |
| 52 | Connecting to RabbitMQ | 13:06 | |
| 53 | RabbitMQ Services Dependency | 03:32 | |
| 54 | Publishing the First Message | 21:54 | |
| 55 | Message Durability | 08:01 | |
| 56 | Consuming Messages | 11:34 | |
| 57 | Message Distribution & Acknowledgment | 14:57 | |
| 58 | Fair Dispatch | 06:12 | |
| 59 | The Pub/Sub Pattern | 17:11 | |
| 60 | Implementing the Exchange & Topics flow | 21:19 | |
| 61 | JSON Message Sending & Consuming | 13:20 | |
| 62 | Finding a Suitable Driver | 18:04 | |
| 63 | Understanding how to notify our users | 06:40 | |
| 64 | WebSocket Connection Manager | 08:52 | |
| 65 | Queue Consumer | 14:11 | |
| 66 | Handling incoming messages from the driver | 11:02 | |
| 67 | Listening for Trip Accept event | 26:39 | |
| 68 | Declining a Trip Request | 04:31 | |
| 69 | Payment Flow Overview | 04:44 | |
| 70 | Payment Service setup | 05:46 | |
| 71 | Adding the Stripe secret key | 06:15 | |
| 72 | Stripe Processor Implementation | 18:45 | |
| 73 | Listening to the Payment Event | 14:57 | |
| 74 | Stripe Payment Webhook | 20:17 | |
| 75 | Intro to Distributed Tracing | 09:33 | |
| 76 | Setting up Tracing | 13:54 | |
| 77 | Jeager Exporter | 13:13 | |
| 78 | HTTP Instrumentation | 13:57 | |
| 79 | gRPC Instrumentation | 11:36 | |
| 80 | RabbitMQ Instrumentation | 14:57 | |
| 81 | Understanding DLQ and Retries | 07:30 | |
| 82 | Implementing Message Retries | 13:04 | |
| 83 | Implementing DLQ and DLX | 10:25 | |
| 84 | Introduction to MongoDB | 10:25 | |
| 85 | MongoDB Connection | 14:23 | |
| 86 | MongoDB Repository | 07:25 | |
| 87 | Adding BSON to the Domain Structs | 03:42 | |
| 88 | Dockerizing our project for production | 10:19 | |
| 89 | Kubernetes Cluster Deployment | 14:08 | |
| 90 | Port Forwarding | 01:17 |
Unlock unlimited learning
Get instant access to all 89 lessons in this course, plus thousands of other premium courses. One subscription, unlimited knowledge.
Learn more about subscriptionComments
0 commentsWant to join the conversation?
Sign in to commentSimilar courses
Design Patterns in Go
Golang (Google go)
Backend Engineering with Go
Go Programming (Golang): The Complete Developer's Guide