Skip to main content

Welcome to No School

A free intermediate course on building web services with Go

The Concept

This course is modeled around a hypothetical company that needs a new service to carry about business requirements. The goal is to present ideas and demonstrate various engineering approaches for you to consider when working on a team on real world applications. If you are already employed as a software engineer you may find some of this information useful. The main target audience developers looking to land a role in the industry.

Will all of these approaches be perfect? No. Software rarely is "perfect". but they will expose you to concepts you will most certainly need to consider in your career as a developer.

Golang differs from other languages used for backend development (C#/.NET Core, Java/Spring Boot) where there aren't really frameworks that abstract away much of the code and provide almost a configurable, annotated way of building services where you generally must build things a certain way, because thats how the framework operates.

For the most part, building web services with Golang has no rules (outside of adherring to some of the standard library). Its up to you and your team to decide how to organize your code. The ideas here are not correct because there is no correct answer. Hopefully showing you one approach will give you the confidence to see what you do and do not like, and can reason knowleeably about what patterns work for you and your team.

There are plenty of great example GitHub repositories that demonstrate well organized Golang services, but you may look at them and think "Why is it like that?". This course aims to answer that question.

What you will need

A basic understand of the Golang language

A basic understand of modern web servers (REST API, HTTP requests, etc)

The ability and willingness to troubleshoot issues

  • File organization:sdfsd
  • Database design & migrations:sdfsd
  • File organization:sdfsd
  • API versions:sdfsd
  • Translating business to software: When you're asked to build something, how do you turn business requirements into concrete implementation?
  • Contextual logging:sdfsd
  • Logging and monitoring: When you application is live, you want insight into how its performing and what actions are being taken.
  • Unit & integration testing:sdfsd
  • Request validation:sdfsd
  • HTTP middleware: build request pipelines to enhance or short circuit incoming requests.
  • Rate limiting:build request pipelines to enhance or short circuit incoming requests.
  • Consistent error responses: predictibility
  • File organization:sdfsd
  • Caching: local vs distributed
  • HTTP clients:sdfsd
  • Using workers for async processing: Sometimes you have work that needs to happen in the background so you don't force your users to wait for long running tasks
  • Command Line Interface (CLI) applications: You may find yourself needed to run some repeatable code locally on your machine, CLIs are great for that.
  • Permissions and roles: using JSON Web Tokens (JWT), we will show how to restrict functionality based on who is using the application
  • Tooling/Developer Experience (DevEx): Makefile, Hot reloading, linting, Github Actions, etc
  • 3rd party integration: How to integrate and test when you need an external service You will commonly depend on APIs or web services from an external company.
  • Feature flags:sdfsd
  • Environment variables (configuration):sdfsd
Easy to Use

Easy to Use

Docusaurus was designed from the ground up to be easily installed and used to get your website up and running quickly.

Focus on What Matters

Focus on What Matters

Docusaurus lets you focus on your docs, and we'll do the chores. Go ahead and move your docs into the docs directory.

Powered by React

Powered by React

Extend or customize your website layout by reusing React. Docusaurus can be extended while reusing the same header and footer.