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.
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.
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.
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.
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.