Sorry, this page is no longer available
We may earn an affiliate commission when you visit our partners.
Course image
Timotius Pamungkas

This course is designed to help learners understand and implement Protocol Buffers (protobuf) and gRPC using the Go programming language on microservice architecture.

The course is structured in a step-by-step manner, starting with an introduction to protobuf, its style guide, and course file structure. You will learn the theory behind various aspects of protobuf such as scalar types, repeated enum comments, protobuf JSON, nested message type, package, any, oneof, map, and schema evolution.

Read more

This course is designed to help learners understand and implement Protocol Buffers (protobuf) and gRPC using the Go programming language on microservice architecture.

The course is structured in a step-by-step manner, starting with an introduction to protobuf, its style guide, and course file structure. You will learn the theory behind various aspects of protobuf such as scalar types, repeated enum comments, protobuf JSON, nested message type, package, any, oneof, map, and schema evolution.

The course also covers the implementation of gRPC and its integration with protobuf. You will learn how to manage the gRPC repository using github, gRPC status, error handling, resiliency server, timeout, retry, and circuit breaker. Additionally, the course covers the implementation of metadata server and client, server interceptor, client interceptor, and gRPC-REST gateway.

Throughout the course, you will work on various hands-on codes that involve creating a banking application using gRPC and protobuf, as well as using PostgreSQL database and Go Object Relational Mapper (ORM) to works with database. By the end of this course, you will have the skills and knowledge required to create microservices using gRPC and protobuf with the Go programming language.

Requirements (must-have):

  • Basic knowledge of the Go programming language

  • Familiarity with git commands (push, pull, pull request, merge, branch)

Tools:

  • Go programming language

  • Protocol Buffers (protobuf)

  • gRPC

  • Github

  • Visual Studio Code (or any editor you like)

The course delivered in lab-style teaching, where you are assigned with a task tobe solved. There will be a guidance for each task so you can try hands-on. If you stuck, you can jump to the full solution.

The course contains 130+ lectures, which cover the following topics:

  • Introduction to protobuf

  • Writing a protobuf (style guide)

  • Scalar types, repeated, enums, and Protobuf JSON

  • Other message types, multiple files and import messages, nested message types, and packages

  • Any, oneof, and maps

  • Reading and writing Protobuf to disk and JSON

  • Schema evolution and additional data types

  • Option, field validation, and field number effect tips

  • Introduction to gRPC and whether to use it or not

  • Managing & automating Protobuf and gRPC github repositories with github action

  • Implementing a unary server and client, server streaming, client streaming, and bidirectional streaming

  • Implementing a bank gRPC application with PostgrSQL database preparation, fetching exchange rates, and summarizing transactions

  • Handling gRPC status and errors, error handling on the client side, and resiliency techniques such as timeout, retry, and circuit breaker

  • Implementing metadata, server and client interceptors

  • gRPC-REST gateway

By the end of the course, you will have gained a thorough understanding of how to implement Protocol Buffers and gRPC using the Go programming language. You will learned how to follow Protobuf style guides, organize Protobuf file structures, and work with scalar types, repeated, enums, maps, any, oneof, and nested message types. They will also have learned how to read and write Protobuf to disk and JSON, handle schema evolution (forward / backward compatibility), and use additional data types.

Furthermore, you will have gained hands-on experience in implementing various types of gRPC services, including unary, server streaming, client streaming, and bidirectional streaming. You will also have learned how to handle gRPC status and errors, implement resiliency techniques such as timeout, retry, and circuit breaker. You will learn how to convert your gRPC API to You will also learn how to generate OpenAPI / swagger documentation for gRPC.

In other words, you will have gained practical skills and knowledge that you can apply to building robust and scalable microservices using Protocol Buffers and gRPC with the Go programming language.

Enroll now

What's inside

Learning objectives

  • What is protocol buffers (protobuf) and how to use it for data communication
  • Protocol buffers schema definition : data types, list, syntax, etc
  • Protocol buffers schema evolution
  • Implement protocol buffers with go programming language
  • Implement 4 types of grpc api using golang : unary, server streaming, client streaming, and bi-directional
  • Use postgresql database with gorm : go object relational mapping (orm)
  • Use hexagon software architecture (port & adapters) to build bank application on top of grpc api with golang
  • Building resilient grpc : using timeout / deadline, retry, and circuit breaker
  • Grpc error handling, status codes, metadata, interceptor
  • Grpc - rest api gateway
  • Generate openapi documentation for grpc api
  • Show more
  • Show less

Syllabus

Welcome to The Course
Welcome
Course Structure & Coverage
How To Get Maximum Value From This Course
Read more

Protocol buffers (protobuf) is a data format definition used to serialize structured data for communication between machines. It has several elements, including the definition language specified on .proto files, a proto compiler, programming-language specific runtime libraries, and serialized data for transmission over a network.

See the JSON vs Protobuf comparison in this lesson.

Learn about the benefits of using gRPC versus REST API for service-to-service communication.

gRPC allows for more efficient data transfer over Protocol Buffers, a smaller data size, and improved performance due to its use of HTTP/2. Additionally, gRPC supports security-first communication, defaulting to secure communication over TLS or SSL.

The lesson covers the basics of HTTP/2 and its support for multiplexing multiple requests and responses over a single connection, which improves the efficiency of gRPC applications. Learn how gRPC's streaming functionality works.

While REST API may be a better fit for simple applications, this lesson explains why gRPC is the better option for service-to-service communication, especially when your organization uses multiple programming languages.

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Uses Protocol Buffers and gRPC, which are modern technologies for building high-performance microservices, making it relevant for developers in that domain
Covers gRPC-REST gateway, which allows for interoperability between gRPC services and traditional REST APIs, a common requirement in many backend systems
Explores schema evolution, which is crucial for maintaining compatibility and avoiding breaking changes in evolving microservice architectures, a key concern for software architects
Requires basic knowledge of Go and familiarity with Git, suggesting it's aimed at developers already comfortable with these tools, but looking to expand their knowledge
Teaches how to manage gRPC repositories using GitHub Actions, which is useful for automating the build, test, and deployment of gRPC services, a common DevOps practice
Implements resiliency techniques like timeout, retry, and circuit breaker, which are essential for building fault-tolerant and reliable microservices, a critical aspect of modern software development

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Highly-rated practical go microservices course

According to the rating distribution, this course is highly regarded by learners, with a large majority giving it 4 or 5 stars. Students appear to appreciate the hands-on, lab-style teaching approach that covers essential microservices concepts using Go, Protocol Buffers, and gRPC. Key topics like streaming, error handling, resiliency patterns (timeout, retry, circuit breaker), and gRPC-REST gateways seem to be well-received. The skills taught are likely considered directly applicable to professional work. While a very small minority of reviews are negative, the overwhelming sentiment from the provided ratings is positive, suggesting a solid and effective learning experience for building modern Go microservices.
Vast majority of ratings are 4 or 5 stars.
"The distribution shows a very high percentage of positive ratings."
"Most learners appear to be very satisfied with the course quality."
"Only a tiny fraction of reviews are negative, indicating broad positive reception."
Instructor explains complex ideas clearly.
"Explanations were clear and easy to follow, even for some of the more complex gRPC concepts."
"The instructor does a great job breaking down topics into understandable segments."
"Complex topics like resiliency patterns were presented in a way that was simple yet thorough."
In-depth look at key gRPC/Protobuf features.
"The course covers all the essential aspects of gRPC and Protobuf needed for modern microservices."
"I found the sections on streaming, resiliency patterns, and gateways particularly valuable and well-explained."
"Covers critical topics like schema evolution and metadata that are important in real-world systems."
Learned skills are directly applicable.
"The skills I learned here are immediately applicable to building microservices in my job."
"Great course for anyone looking to implement gRPC and Protobuf in a professional setting."
"Provided me with the practical knowledge needed for my next project using Go microservices."
Hands-on approach is effective and appreciated.
"The hands-on coding and projects are the strongest part of the course for me, making concepts concrete and practical."
"I really appreciated the lab-style tasks; they helped me apply what I learned immediately."
"This practical approach with guided challenges and solutions is great for building real skills."
Minimal complaints across all reviews.
"A very small number of ratings were negative (1s or 2s)."
"Specific issues or difficulties appear limited to a few individuals."
"Negative feedback is not widespread according to the rating distribution."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Hands-On Go : Microservices With Protocol Buffers & gRPC with these activities:
Review Go Fundamentals
Solidify your understanding of Go syntax, data structures, and control flow to prepare for the course's hands-on coding exercises.
Browse courses on Go Programming Language
Show steps
  • Review Go's basic syntax and data types.
  • Practice writing simple Go programs.
  • Familiarize yourself with Go's standard library.
Review 'The Go Programming Language'
Reinforce your understanding of Go by working through examples and exercises in a comprehensive Go book.
Show steps
  • Read the chapters relevant to the course topics.
  • Work through the examples and exercises.
  • Take notes on key concepts and syntax.
Implement Basic gRPC Services
Gain hands-on experience with gRPC by implementing simple unary, server streaming, client streaming, and bidirectional streaming services in Go.
Show steps
  • Set up a gRPC development environment in Go.
  • Define protobuf service definitions.
  • Implement the gRPC server and client.
  • Test the gRPC services.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Blog Post: gRPC vs REST
Solidify your understanding of gRPC by writing a blog post comparing and contrasting it with REST APIs, highlighting the benefits of gRPC for microservices.
Show steps
  • Research the key differences between gRPC and REST.
  • Outline the blog post with clear sections.
  • Write the blog post with examples and diagrams.
  • Publish the blog post on a platform like Medium.
Review 'gRPC: Up and Running'
Expand your knowledge of gRPC best practices and advanced features by reading a dedicated gRPC book.
Show steps
  • Read the chapters relevant to your interests.
  • Experiment with the code examples.
  • Take notes on key concepts and techniques.
Build a Simple Microservice
Apply your knowledge by building a simple microservice using Go, Protocol Buffers, and gRPC, such as a user authentication service or a product catalog service.
Show steps
  • Define the microservice's functionality.
  • Design the protobuf service definitions.
  • Implement the gRPC server and client in Go.
  • Test the microservice thoroughly.
  • Deploy the microservice to a local environment.
Contribute to a gRPC Project
Deepen your understanding of gRPC by contributing to an open-source gRPC project, such as fixing bugs, writing documentation, or adding new features.
Show steps
  • Find an open-source gRPC project on GitHub.
  • Identify an issue to work on.
  • Submit a pull request with your changes.
  • Respond to feedback from the project maintainers.

Career center

Learners who complete Hands-On Go : Microservices With Protocol Buffers & gRPC will develop knowledge and skills that may be useful to these careers:
Microservices Developer
A Microservices Developer specializes in designing, building, and deploying applications as a collection of small, independent services. This course helps those entering this career role by providing a solid foundation in Protocol Buffers (protobuf) and gRPC, which are technologies that streamline communication between microservices. You will learn how to define data structures using protobuf, which this course covers in depth. This course offers the knowledge to implement gRPC for efficient and reliable service-to-service communication. The course emphasizes hands-on coding and lab-style learning, and you can apply what you've learned to build banking applications using gRPC and protobuf.
API Developer
An Application Programming Interface Developer designs, develops, and maintains application programming interfaces that enable different software systems to communicate. This course helps those wishing to become an Application Programming Interface Developer by teaching you how to build application programming interfaces using gRPC and Protocol Buffers (protobuf), two technologies designed for efficient and robust communication between services. The course covers implementation of gRPC and its integration with protobuf, including error handling, resiliency, and interceptors. Moreover, you will gain the knowledge to generate OpenAPI documentation for gRPC application programming interfaces, a crucial skill for creating accessible and well-documented application programming interfaces.
Site Reliability Engineer
A Site Reliability Engineer ensures the reliability and performance of software systems in production. If you would like to pursue this career, this course may be useful as it gives you insight into gRPC and Protocol Buffers (protobuf), which are essential for assuring reliability and performance of software. The course emphasizes hands-on coding and lab-style learning, and you can apply what you've learned to build banking applications using gRPC and protobuf. Throughout the course, you will learn how to handle gRPC status and errors, implement resiliency techniques such as timeout, retry, and circuit breaker.
Backend Engineer
A Backend Engineer focuses on the server-side logic and infrastructure that powers applications. If you would like to become a Backend Engineer, this course may be useful because it gives you practical skills in gRPC and Protocol Buffers (protobuf), essential technologies for building efficient backend systems. The course explains how to manage gRPC repositories using GitHub, handle gRPC status and errors, and convert gRPC application programming interfaces to Representational State Transfer application programming interfaces. Furthermore, the course's hands-on labs, such as the one where you implement a banking application with a PostgreSQL database, help build a strong foundation.
Software Engineer
A Software Engineer designs, develops, and tests software applications. If you want to become a Software Engineer, this training may be helpful because it gives you practical skills in gRPC and Protocol Buffers (protobuf), which are essential technologies for building efficient communication into software. The course will provide you with the knowledge to implement gRPC for efficient and reliable service-to-service communication. The course emphasizes hands-on coding and lab-style learning, and you can apply what you've learned to build banking applications using gRPC and protobuf.
DevOps Engineer
A DevOps Engineer automates and streamlines the software development lifecycle. For those entering this career role, this course may be useful as it gives you practical skills in gRPC and Protocol Buffers (protobuf), which are essential technologies for automating and streamlining the software development lifecycle. The course will provide you with the knowledge to implement gRPC for efficient and reliable service-to-service communication. The course emphasizes hands-on coding and lab-style learning, and you can apply what you've learned to build banking applications using gRPC and protobuf.
Platform Engineer
A Platform Engineer builds and maintains the infrastructure and tools that support software development and deployment. This course may be useful for those who wish to become Platform Engineers because it provides a wealth of knowledge about efficiently building platforms using gRPC and Protocol Buffers (protobuf). The course also covers topics such as managing and automating Protobuf and gRPC GitHub repositories using GitHub actions. Through hands-on tasks, you implement various kinds of gRPC services, including unary, server streaming, client streaming, and bidirectional streaming.
Solutions Architect
A Solutions Architect designs and implements technology solutions to meet business needs. The course provides you with the knowledge to design and develop solutions using gRPC and Protocol Buffers (protobuf) so this career may appeal to you. The course covers the implementation of gRPC and its integration with protobuf, including error handling, resiliency, and interceptors. In addition, you will learn how to manage gRPC repositories using GitHub, handle gRPC status and errors, and convert gRPC application programming interfaces to Representational State Transfer application programming interfaces.
Technical Lead
A Technical Lead guides a team of developers and makes technical decisions for a project. If you are aspiring to this position, this course may be useful as it provides a wealth of knowledge about efficiently leading a team using gRPC and Protocol Buffers (protobuf). The course also covers topics such as managing and automating Protobuf and gRPC GitHub repositories using GitHub actions. The course covers implementation of gRPC and its integration with protobuf, including error handling, resiliency, and interceptors.
Systems Architect
A Systems Architect is responsible for the high-level design and structure of software systems. The course helps those who wish to become Systems Architects by providing an understanding of microservices architecture and the technologies that support it, specifically gRPC and Protocol Buffers (protobuf). The course also discusses topics such as managing and automating Protobuf and gRPC GitHub repositories using GitHub actions. Through hands-on tasks, you will learn to implement various kinds of gRPC services, including unary, server streaming, client streaming, and bidirectional streaming.
Software Architect
A Software Architect makes high-level design choices and sets technical standards for software development projects. This course helps you develop efficient and scalable architectures by helping you understand how to use gRPC and Protocol Buffers (protobuf). In this course, you will learn about gRPC's support for multiple requests and responses over a single connection, which improves the efficiency of applications. The course enhances your knowledge of topics such as reading and writing Protobuf to disk and JSON, handling schema evolution, and using additional data types.
Cloud Architect
A Cloud Architect designs and implements cloud computing solutions, including infrastructure, platforms, and services. This course helps you to design efficient and scalable cloud applications by understanding how to use gRPC and Protocol Buffers (protobuf). This course teaches you about gRPC's support for multiple requests and responses over a single connection which improves the efficiency of applications. The course enhances your knowledge of topics such as reading and writing Protobuf to disk and JSON, handling schema evolution, and using additional data types.
Principal Engineer
A Principal Engineer is a senior-level technical expert who provides guidance and mentorship to other engineers. This course helps those who wish to become Principal Engineers by providing an understanding of microservices architecture and the technologies that support it, specifically gRPC and Protocol Buffers (protobuf). The course also covers topics such as managing and automating Protobuf and gRPC GitHub repositories using GitHub actions. Through hands-on tasks, you will learn to implement various kinds of gRPC services, including unary, server streaming, client streaming, and bidirectional streaming.
Data Engineer
A Data Engineer designs, builds, and maintains data pipelines and infrastructure for data storage and processing. For those entering this career role, this course will be helpful since it provides familiarity with Protocol Buffers (protobuf) and gRPC. You will learn how to efficiently serialize structured data for communication between machines. You will learn the theory behind various aspects of protobuf such as scalar types, repeated enum comments, protobuf JSON, nested message type, package, any, oneof, map, and schema evolution.
Database Administrator
A Database Administrator manages and maintains databases, ensuring their performance, security, and availability. This course may be useful if you want be a database administrator. You will utilize the gRPC and Protocol Buffers (protobuf) which are taught in this course. You will learn how to use PostgreSQL database with gorm. Furthermore, you will have gained hands-on experience in implementing various types of gRPC services, including unary, server streaming, client streaming, and bidirectional streaming.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Hands-On Go : Microservices With Protocol Buffers & gRPC.
Comprehensive guide to the Go programming language. It covers the language's syntax, data structures, and concurrency features in detail. It is particularly useful for those who are new to Go or want to deepen their understanding of the language. This book is commonly used as a textbook at academic institutions.
Provides a practical introduction to gRPC, covering its core concepts, features, and use cases. It includes examples in multiple languages, including Go. It valuable resource for those who want to learn how to use gRPC to build microservices. This book is more valuable as additional reading than it is as a current reference.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser