The Ultimate Service is a class for any Go developer who wishes to learn how to build production ready and well tested web services in Go. This class provides an intensive, comprehensive and idiomatic view of building web services using community accepted idioms and practices.
The class goes beyond just the use of the http package and focuses on building CRUD based services with logging, observability and debugging. We believe this class is perfect for anyone wishing to build production ready, scalable, fast, and highly concurrent web services in Go.
Web Framework Design
Testing Support with Docker
Having a background in software development. Experience writing services in any other language is a bonus.
Everyone is going to be mentally exhausted by the end of the day. We will be challenging every student to think about what they are doing and why. If you want to be a better Go developer, code reviewer, designer and architect, this is the class you want to take.
William Kennedy is a managing partner at Ardan Labs in Miami, Florida, a mobile, web, and systems development company. He is also a co-author of the book Go in Action, the author of the blog GoingGo.Net, and a founding member of GoBridge which is working to increase Go adoption through diversity.
Previous software development experience is expected (familiarity with Git, Bash, IDEs, and so on), and also a basic understanding of the underpinnings of cloud computing, e.g. what are containers, Kubernetes, monoliths, Dockerfiles, and the like. Think of it as “good to great” training—we won’t go into details on fundamentals.
Kubernetes solved a lot of problems, but it created a clumsy development workflow. In this workshop, you’ll learn your way past that, and how to work effectively with Kubernetes as a developer.
Kubernetes solved a lot of problems, but it created a clumsy development workflow: Every code change requires fiddling with containers, registries, and manifests. Managing config files isn't trivial. Distributed debugging; a mystery. Dev clusters are tricky to set up, and sharing cluster state among team-members is mostly fiction.
In this workshop we’ll learn how to work effectively with Kubernetes as developers.
First, we'll break a simple monolith into separate services, and use a very basic setup to deploy these to Kubernetes.
Next, we'll wire up some tooling to create a smooth development workflow, and start implementing best practices—some Go-specific, some general to microservices.
Lastly, we'll discuss some lessons from the trenches: managing hordes of config files, debugging, tracing, CI/CD, and so on.
Come learn how to make your Kubernetes dev workflow not only seamless, but amazing to use!
Part I: The Cheapskate Microservice Setup
Part II: Microservice Development The Right Way
Part III: Lessons From The Trenches
L Körbes does developer relations at Tilt. Having worked at both Garden and Tilt—two of the very few companies 100% focused on the development experience side of Kubernetes—L is immersed in developer-facing issues, and constantly working to solve them. They first got acquainted with Kubernetes while writing code for kubectl, in a SIG CLI internship. They've spoken about Kubernetes and Go at world-famous events, and at countless local meet-ups. L is a proud recipient of a 'Best Hair' award.
Verónica is a Software Engineer at DigitalOcean, who finds joy solving distributed systems problems with Go and Elixir. In her spare time, she contributes to Kubernetes as part of the Release Team.
Building distributed systems can be extremely complex, but it doesn’t have to be. gRPC was created as a high performance RPC framework that makes it easy for to build client/server applications. Using protocol buffers, you can define both data messages and procedure calls that turn into easy to consume structures and services in Go.
Students will learn how to define Protocol Buffers, as well as how to properly modify them for future revisions to be backwards compatible. They will also learn how to define and consume simple requests via RPC (known as unary calls), as well as more advanced client, server, and bi-directional streaming services. Finally, the students will learn how to create the boilerplate client and server applications, as well as how to create middleware, secure their services, and if time permits, to monitor and track their rpc calls across their distributed application structure.
A basic understanding of the Go programming language. Beginners are highly encouraged to attend this training. While not necessary, it will be helpful if you have completed the Go tour (https://tour.golang.org).
Tim Raymond is a full-stack developer with over six years of experience writing Go for companies such as USA Today, InfluxData, and Mattel. He's worked on everything from publishing pipelines, gRPC APIs, IoT backends, and interactive React frontends powered by Go backends. Prior to his involvement in the Go community, Tim served as an organizer for the Boston Ruby Group. His professional interests range across web applications, compilers, networking, performance, and cryptography.
Github - https://github.com/timraymond
Twitter - https://twitter.com/tim_raymond
LinkedIn - https://www.linkedin.com/in/timothyjraymond/