Go for Real World Applications
What you'll learn
- Scaffolding a go project and writing a main go file as well as additional packages
- Dockerizing a Go application
- Writing basic tests in Go
- Orchestrating a CI/CD pipeline that first runs tests the deploys the Dockerize go application to Docker Hub
- Some minor exposure to go, at least its syntax, would be helpful
- Experience with shells as well as git
Go is a powerful backend language that is an asset to any developer's toolkit. It is extremely performant, a relatively easy language in terms of syntax, and has many valuable features like testing and JSON serialization and deserialization built in. In this practical, hands-on, step-by-step style course, we'll build a fully functioning Go application from complete scratch along these steps:
- Scaffolding the Go application and writing main.go
- Writing cron jobs in Go
- Writing a powerful generic HTTP function
- Using that HTTP function to call an API and serialize the response into Go object's using Go
- Use that HTTP function to POST messages to a Slack channel
- Write tests using Go's built in testing module
- Dockerize the application so that it can be run with docker compose
- Round off the course by crafting a complete CI/CD pipeline that first builds and tests our application, then Dockerizes and uploads the application to Docker Hub
- We'll see that once the Circle CI pipeline is setup, we can control the entire pipeline process through pushing to a git branch alone, and never have to manually do any sort of configuration or commands for our deploys
By the end of the course, you will have the confidence and know how to build Go applications from start to finish - including testing, Dockerizing, and deploying them!
Who this course is for:
- Beginner to Intermediate developers who want to write their Go
- Advanced developers coming from other languages who want to see the moving parts of a Go application
I've been a professional full stack software engineer for 7+ years, and I've been programming for many more. In 2014, I earned two separate degrees from Clarkson University: Mechanical Engineering and Physics. I continued at Cornell for my M.S. Degree in Mechanical Engineering. My thesis at Cornell was a technical software project where I first learned Bash and used a unique stack of Perl and Fortran, producing a publication in the scientific journal Combustion and Flame: "A novel atom tracking algorithm for the analysis of complex chemical kinetic networks".
I'm happy to give back and teach what I've learned over the years, because I think software development is especially difficult these days, with all the new tools and frameworks that seem to come out daily.
I don't want anyone to be intimated by this and I too struggle and reach out from time to time for help and mentoring. I try to make my courses as clear as possible so you don't get lost or confused.