We may earn an affiliate commission when you visit our partners.
Tiago Taquelim

In this project-based course, we will build a complete

Our journey begins by creating a simple TCP server, which will help us explore the net/http package in Go and understand the basics of handling network communication.

Read more

In this project-based course, we will build a complete

Our journey begins by creating a simple TCP server, which will help us explore the net/http package in Go and understand the basics of handling network communication.

Next, we’ll dive into the theory behind building reliable and composable Go web applications. From there, we’ll develop our project step-by-step, covering carefully curated topics such as request handling, middleware creation, database integration, request and database optimisations and rate limiting to equip you with the skills needed to ship real backend services to the cloud and manage real-world traffic efficiently.

This course aims to provide you with the foundational knowledge required to build and understand backend systems, implement industry best practices, and create production-ready APIs that are secure, scalable, and maintainable. It is not just a step-by-step tutorial, but a comprehensive learning experience that prepares you for real-world scenarios.

Legal Notice:

All product and company names, logos, and trademarks featured on this thumbnail are the property of their respective owners. Their use in this course does not imply any affiliation, sponsorship, or endorsement by these companies.

Enroll now

Here's a deal for you

We found an offer that may be relevant to this course.
Save money when you learn. All coupon codes, vouchers, and discounts are applied automatically unless otherwise noted.

What's inside

Learning objectives

  • Learn the fundamentals of web development with go
  • Build production grade applications with go
  • Learn to weight and think about software design decisions
  • Learn to build and deploy go apis to the cloud
  • Learn how to scale and manage traffic
  • Learn how to connect a postgres database with a go server

Syllabus

Introduction
Project Overview
Why Go with Go?
Preface for Udemy Students
Read more

So, recently SendGrid has been getting some errors while creating new accounts and so here is a video showing how easy it is to implement an alternative email client provider from our composable API architecture.

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Covers request handling, middleware creation, database integration, and rate limiting, equipping learners with skills to ship real backend services to the cloud and manage real-world traffic efficiently
Explores the net/http package in Go and helps learners understand the basics of handling network communication, which is essential for backend development
Teaches how to persist data and communicate with external databases using the Repository Pattern, which is a core concept in backend engineering
Includes topics such as SQL migrations, database seeding, and managing SQL query timeouts, which are crucial for database management in backend systems
Features sections on authentication, authorization, Redis caching, and rate limiting, which are important for building secure and scalable APIs
Includes a section on deploying to Google Cloud, which may require learners to set up an account and configure cloud services

Save this course

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

Reviews summary

Comprehensive backend engineering with go

According to learners, this course offers a comprehensive and practical deep dive into backend development using Go. Students particularly praise the project-based approach, which helps solidify concepts through hands-on experience. The course covers a wide array of topics, including API design, database integration (Postgres), authentication, caching (Redis), and cloud deployment (GCP). While many find the content highly relevant for building production-ready applications, some mention that the pace can be challenging for absolute beginners and that certain advanced topics could benefit from more depth. Overall, it's seen as a strong foundation for Go backend development.
Wide range of essential backend topics covered.
"Covers a great range of topics - from basic TCP servers to deployment and rate limiting."
"The syllabus touches upon most critical aspects needed for modern backend services."
"I learned about database integration, auth, caching, and deployment all in one place."
"This course goes deep into building robust and scalable APIs."
Focuses on building real-world applications.
"This course is highly practical and teaches you exactly what you need to build production-ready services."
"The focus on best practices and deployment prepares you for real-world scenarios."
"I feel equipped to ship actual backend services after taking this course."
"The real-world traffic and scaling discussions are very relevant for professionals."
Hands-on project reinforces concepts effectively.
"The project-based approach was fantastic; building a real application helped me understand how everything fits together."
"Learning by building the project step-by-step made the concepts much easier to grasp and apply."
"I really appreciate the emphasis on practical coding and building a complete backend service from scratch."
"The hands-on coding and projects are the strongest part of the course for me."
Some advanced topics could be explored more.
"Could use more in-depth coverage on optimization techniques beyond basic indexing."
"While many topics are covered, some advanced concepts feel a bit rushed."
"I wish certain areas, like advanced testing patterns or more complex architecture decisions, were explored deeper."
"Good overview, but for true mastery of every topic, supplemental learning is required."
Pace may be fast for those new to Go or backend.
"As a beginner, I found the pace quite fast at times and needed to pause and rewatch sections."
"Requires some prior understanding of Go basics; it moves quickly into complex topics."
"Not ideal if you're completely new to programming or backend concepts, it assumes some foundation."
"The course accelerates quickly, which is great for experienced developers but tough for novices."

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 Backend Engineering with Go with these activities:
Review HTTP Fundamentals
Reinforce your understanding of HTTP fundamentals before diving into Go's net/http package. This will make grasping the underlying concepts of web application development much easier.
Browse courses on HTTP
Show steps
  • Read articles or watch videos explaining HTTP methods (GET, POST, PUT, DELETE).
  • Review the structure of HTTP requests and responses.
  • Familiarize yourself with common HTTP status codes.
Practice Basic SQL Queries
Sharpen your SQL skills to prepare for database integration with Go. This will help you understand how to persist data and interact with databases effectively.
Browse courses on SQL
Show steps
  • Practice writing SELECT, INSERT, UPDATE, and DELETE statements.
  • Experiment with WHERE clauses and JOIN operations.
  • Explore aggregate functions like COUNT, AVG, and SUM.
Read 'The Go Programming Language'
Supplement your learning with a deep dive into Go's features and best practices. This book provides a solid foundation for building robust backend applications.
Show steps
  • Read the chapters related to concurrency and networking.
  • Work through the examples provided in the book.
  • Experiment with different Go packages and libraries.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Build a Simple REST API
Apply your knowledge by building a small REST API with Go. This hands-on experience will solidify your understanding of request handling, routing, and data persistence.
Show steps
  • Define the API endpoints and data models.
  • Implement the handlers for each endpoint.
  • Connect the API to a database (e.g., PostgreSQL).
  • Test the API thoroughly using tools like Postman or curl.
Write a Blog Post on Go Web Development
Reinforce your learning by explaining a specific concept related to Go web development. Teaching others is a great way to solidify your own understanding.
Show steps
  • Choose a topic related to Go web development (e.g., middleware, routing, database integration).
  • Research the topic thoroughly and gather relevant information.
  • Write a clear and concise blog post explaining the concept.
  • Include code examples and diagrams to illustrate your points.
  • Publish your blog post on a platform like Medium or your personal website.
Contribute to a Go Open Source Project
Deepen your understanding by contributing to a real-world Go project. This will expose you to different coding styles, project structures, and collaboration workflows.
Show steps
  • Find a Go open source project that interests you.
  • Read the project's documentation and contribution guidelines.
  • Identify a bug or feature that you can work on.
  • Submit a pull request with your changes.
Read 'Clean Code' by Robert C. Martin
Improve your code quality and maintainability by applying the principles of clean code. This will make your backend applications easier to understand and debug.
View CLEAN CODE on Amazon
Show steps
  • Read the chapters related to functions, objects, and data structures.
  • Apply the principles discussed in the book to your own Go code.
  • Refactor existing code to improve its readability and maintainability.

Career center

Learners who complete Backend Engineering with Go will develop knowledge and skills that may be useful to these careers:
Backend Developer
A Backend Developer is responsible for building and maintaining the server-side logic of web applications, ensuring they function smoothly and efficiently. This course is highly relevant, as it provides a strong foundation in developing backend services using Go, including request handling, database integration, and API development. The course's emphasis on creating production-ready APIs, managing traffic, and implementing security practices directly translates to the work of a backend developer. Specifically, building a TCP server and understanding routing from this course can help a backend developer improve their understanding of how web applications function at a foundational level. Understanding database connections, optimizing, and scaling can also help a backend developer excel in their role.
Web Application Developer
A Web Application Developer is responsible for building and maintaining web applications. This course is highly relevant because it provides an extensive journey on how to build backend services using Go. The course's emphasis on creating production ready APIs, handling network communication, and implementing security practices directly supports the work of a web application developer. Creating TCP servers, understanding routing, and learning HTTP server protocols are crucial components of this role. This course helps a web application developer learn how web applications function and how to build them from the ground up.
API Developer
An API Developer focuses on creating and maintaining Application Programming Interfaces that allow different applications to communicate with each other. This course is particularly useful due to its focus on building and documenting production-ready APIs using Go. The curriculum explores topics like request handling, middleware, encoding and decoding JSON, authentication, and authorization which are all crucial for API development. A learner who is building an API needs the knowledge presented in this course about structuring and documenting their API. The course provides hands-on experience in creating and deploying APIs. This is essential for any aspiring API Developer.
Software Engineer
A Software Engineer designs, develops, and tests software applications. This course may be useful for a software engineer who wants to focus on backend development. This course's exploration of building reliable and composable web applications, request handling, and database integration is directly applicable to software engineering. Especially relevant is the course's step-by-step method in creating a project, covering request handling, middleware, database integration, optimization, and rate limiting. This can greatly enhance the skills of a software engineer working on backend systems. The course also covers production deployments, which prepares the learner for real world software engineering scenarios.
Cloud Engineer
A Cloud Engineer is responsible for designing, implementing, and managing cloud infrastructure and services. This course is useful as it covers how to deploy Go APIs to the cloud, as well as how to scale and manage traffic within cloud environments. This course's focus on creating production-ready APIs and managing real-world traffic aligns with the core responsibilities of a cloud engineer. The course's hands-on experience in building and deploying Go APIs to the cloud is directly relevant for a cloud engineer. Moreover, the course provides information about database integration, which is essential for many cloud applications.
DevOps Engineer
A DevOps Engineer works to streamline the development and deployment process through automation. This course may be helpful for a DevOps engineer because it covers continuous integration, production deployment, and server metrics. The course also focuses on creating production-ready APIs which are deployed on cloud based infrastructure, along with handling and optimizing database traffic. The course helps a DevOps engineer learn how to handle the backend side of infrastructure. The course's introduction to automation in backend development, particularly with continuous integration, can be directly applied to a DevOps engineer's work.
Full-Stack Developer
A Full Stack Developer works on both the front-end and back-end of web applications. This course is relevant as it helps build the skills for being a proficient backend developer. The course's focus on building reliable and composable web applications, API development, and database integration are all essential to full-stack development. While this course does not teach frontend, it does provide a deep knowledge of how to build a backend. This can help a full stack developer broaden their capabilities and become better equipped to build scalable applications.
Systems Engineer
A Systems Engineer is involved in the design, implementation, and management of complex systems. This course may be useful for a systems engineer who works on the backend. The course provides an understanding of how to build and scale backend systems, including database integration and handling real-world traffic. The course material may also help a systems engineer develop an understanding of topics like server metrics, automation, and production deployment. The course covers topics that help improve the performance of backend systems, which is typically the work of a systems engineer.
Database Administrator
A Database Administrator is responsible for the performance, integrity, and security of an organization's databases. This course may be useful because it covers integrating and optimizing databases with the backend, using SQL and connection pools. The course also teaches about database migrations, database seeding, and SQL queries. These aspects of the course can help a database administrator improve how databases are used in backend systems. The course's focus on optimizing database performance, especially in regards to SQL queries, may be beneficial to a database administrator.
Site Reliability Engineer
A Site Reliability Engineer is responsible for ensuring the reliability and performance of software systems. This course may be useful for a site reliability engineer who is focused on backend systems because the material touches upon production deployments, server metrics, and rate limiting. A site reliability engineer is often concerned with optimizing systems and ensuring that they are performant and reliable. This course provides the knowlege to build backend services and manage production environments. The course teaches how to create production ready APIs, manage traffic, and implement security practices, which all fall under the work of a site reliability engineer.
Solutions Architect
A Solutions Architect designs and implements solutions that meet a company's business and technical requirements. This course may be helpful for a solutions architect, especially in regards to designing and building backend systems. The material on API architecture and development, as well as database integration can inform a solutions architect's understanding of backend infrastructure. Also, understanding concepts like rate limiting, caching, and load balancing from this course can be particularly helpful when designing scalable and performant solutions. The course helps a solutions architect understand the process of building and optimizing backend application.
Technical Lead
A Technical Lead is responsible for guiding a team of developers and overseeing the technical direction of a project. This course can be beneficial for technical leads. The course teaches how to build backend services using Go, including API development, database integrations, and understanding production deployments. This in-depth understanding of software development may allow for a technical lead to better oversee projects. The course's focus on best practices, team coordination, and creating production ready applications may be particularly relevant for a technical lead.
Software Architect
A Software Architect is responsible for designing the structure of software systems. This course may be useful as it teaches the principles of designing and architecting REST APIs, which are crucial for the work of a software architect. The course's lessons on routing, API design, and database integration can provide an understanding of how to build scalable and maintainable systems. The course's layered architecture can also provide a software architect with ideas about how to organize software projects effectively. Also, the lessons on database interactions, including SQL queries, can help a software architect design how data is handled.
Network Engineer
A Network Engineer is responsible for designing and maintaining a computer network. This course may be useful as an introduction to how server applications communicate over a network. The course provides background knowledge about handling network communication using the net/http package in Go. It also covers routing and communication with external APIs. This can give a network engineer a basic idea about how web applications function at a foundational level. The course's discussion about TCP servers and network traffic management may also be helpful.
Security Engineer
A Security Engineer is responsible for protecting computer systems and networks from cyber threats. This course may be helpful because it touches on topics such as user authentication, authorization, and handling sensitive information. Additionally, the course's emphasis on building secure and production-ready APIs is relevant to a security engineer's work. The course does provide background knowledge about how to implement security practices in backend systems. This can broaden a security engineer's understanding of security vulnerabilities and how they can be mitigated. While the course does not focus on security, there are aspects of the course that can provide a security engineer with some helpful information.

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 Backend Engineering with Go.
Comprehensive guide to the Go programming language. It covers the language's syntax, semantics, and standard library in detail. It valuable resource for understanding the fundamentals of Go and how to use it effectively. This book is commonly used as a textbook at academic institutions and by industry professionals.
Provides valuable insights into writing clean, maintainable, and readable code. While not specific to Go, the principles discussed are universally applicable and will help you write better backend applications. It is more valuable as additional reading than it is as a current reference. This book is commonly used as a textbook at academic institutions and by industry professionals.

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