Workshops

Web Services in Go

Bill Kennedy

Summary

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.

Details

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.

Start/Stop

Logging/Configuration

Web Framework Design

Database Support

Testing Support with Docker

Metrics/Tracing

Prerequisites

Having a background in software development. Experience writing services in any other language is a bonus.

What a student is expected to learn

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.

Bio

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.

Twitter

Github


Go & Kubernetes In The Real World

L Körbes and Verónica López

Summary

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.

Details

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.

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.

Prerequisites

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.

What a student is expected to learn

Come learn how to make your Kubernetes dev workflow not only seamless, but amazing to use!

Outline

Part I: The Cheapskate Microservice Setup

  • Split a monolith into separate programs that talk via HTTP/JSON
  • Wire them up with simple Dockerfiles and toss it all into Kubernetes

Part II: Microservice Development The Right Way

  • Dev cluster setup (options, and laptop vs. cloud discussion)
  • All the dev tooling required for a smooth experience
  • Fixing the implementation
    • Go modules & contexts
    • Microservices “design for failure” mindset (implementing timeouts, exponential backoff, health & readiness checks, etc.)

Part III: Lessons From The Trenches

  • Managing hordes of config files
  • Witchcraft to make the time from code change to code running as small as possible
  • Implementing gRPC
  • An overview of debugging, tracing, and CI/CD

Bios

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.

Twitter
LinkedIn


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.

Twitter
Github


Introduction to gRPC

Tim Raymond

Summary

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.

What a student is expected to learn

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.

Prerequisites

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

Bio

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

Twitter

LinkedIn


An Introduction To Functional Programming In Go

Eleanor McHugh

Summary

Every coder thinks they know functions. Neat little packages of code for hiding away all that ugly implementation detail we only want to write once and would prefer no one else ever saw. In fact we take them so much for granted that when academics wax lyrical about their amazing potential we tend to assume they’re talking about the very same thing and wonder what all the fuss is about. Especially when presented with languages like Haskell which read more like a maths textbook and come with that knowing smile our parents had when telling us to eat our green vegetables: this is better for you.

They’re essentially saying our functions aren’t proper functions. That we’ve embellished them with junk we don’t need and that by using a pure functional language we’ll build healthier programs.

But what if I were to tell you that for all it’s practical engineering bias Go has a pretty robust concept of what a function is and how it can be used that means we can steal insights from the academic world? That we can choose to be functional programmers when we want to and - heresy of heresies - use other paradigms when they make more sense to us?

Join me in a relaxed workshop setting to explore functions in Go both as a mathematical abstraction and useful little machines for getting stuff done. There'll be a couple of simple problems to illustrate the ideas we’ll be covering, plenty of code you can study later, and a few thought-provoking examples which may permanently change the way you think about Go and about coding.

Bio

Hacker Ellie is the sometime writer of A Go Developer's Notebook. Her career has spanned three decades working on projects ranging from mission critical avionics and broadcast transmission networks to banking security and digital trust arbitration. Her languages of choice include Golang, Ruby and Crystal whilst necessity often finds her working with C and Bash.

Ellie is co-founder of Innovative Identity Solutions, a London-based startup focused on driving innovation in digital identity, personal data privacy and secure communications with a particular emphasis on novel blockchain architectures. Along with her business partner she's co-inventor of several patents in digital identity and biometric liveness

As a responsible parent Ellie enjoys polyhedral dice, home brewing and gothic music.

Twitter