Upgrade to Pro — share decks privately, control downloads, hide ads and more …

How to Safely and Efficiently Build your App with Modules - Aaron Schlesinger - Microsoft

GoDays
January 22, 2020

How to Safely and Efficiently Build your App with Modules - Aaron Schlesinger - Microsoft

Go 1.11 introduced modules as the new dependency management technology for Go, and since then, we've been hit with a lot of new technologies in this space. With version 1.13, we're now using a Google-hosted module proxy and a checksum DB, all by default.

In order to safely and efficiently build our programs, we need to not only understand these technologies, but to understand how they affect our workflow and the safety of our app.

In this session, I'll briefly introduce the new features that Go 1.13 turns on by default, the pros and cons of these features, why you might want to opt out of them, and how to do so. Much of this talk will be live demos illustrating why to use the default features and why/how to turn them off. We'll use [Athens](https://github.com/gomods/athens) for the demos of turning the defaults off.

You'll walk away from this talk with a good understand of what your builds are doing under the hood, under what circumstances you should use them or turn them off, and how to do just that.

This talk is for everyone who writes Go code, and no prior knowledge of modules is necessary. You'll be introduced to the pieces of dependency management that you'll need for this talk.

GoDays

January 22, 2020
Tweet

More Decks by GoDays

Other Decks in Technology

Transcript

  1. How did we get here? How did we get here?

    nil go get GO15VENDOREXPERIMENT
  2. How did we get here? How did we get here?

    nil go get GO15VENDOREXPERIMENT glide, dep, ...
  3. How did we get here? How did we get here?

    nil go get GO15VENDOREXPERIMENT glide, dep, ... go get
  4. Aaron Aaron Schlesinger Schlesinger Core maintainer & Creator, Sr. Cloud

    Developer Advocate, Microsoft Athens @arschles
  5. Behind the scenes Behind the scenes proxy.golang.org (No VCS downloads.

    Custom HTTP API) sum.golang.org (Global checksum database)
  6. Layers to preparedness Layers to preparedness Tracking & securing dependencies

    Where code comes from Where it's stored Handling private code
  7. A basic build A basic build (demo) Your project with

    public dependencies Your project with public dependencies