Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Infrastructure Built in Go

474 views

Published on

Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/1KSkL8X.

Jessie Frazelle takes a look inside the tools built in Go centered around infrastructure and ops - from Docker to etcd to nsq and more. Jessie discusses each tool separately as well as how to tie them all together for the ultimate infrastructure built in Go. Filmed at qconlondon.com.

Jessie Frazelle is core maintainer of Docker. Gopher. Mathematics enthusiast. Formerly Software Engineer at Yhat.

Published in: Technology
  • Be the first to comment

Infrastructure Built in Go

  1. 1. Infrastructure & Go Jessie Frazelle @frazelledazzell Qcon London: March 5th , 2015
  2. 2. InfoQ.com: News & Community Site • 750,000 unique visitors/month • Published in 4 languages (English, Chinese, Japanese and Brazilian Portuguese) • Post content from our QCon conferences • News 15-20 / week • Articles 3-4 / week • Presentations (videos) 12-15 / week • Interviews 2-3 / week • Books 1 / month Watch the video with slide synchronization on InfoQ.com! http://www.infoq.com/presentations /infrastructure-go
  3. 3. Presented at QCon London www.qconlondon.com Purpose of QCon - to empower software development by facilitating the spread of knowledge and innovation Strategy - practitioner-driven conference designed for YOU: influencers of change and innovation in your teams - speakers and topics driving the evolution and innovation - connecting and catalyzing the influencers and innovators Highlights - attended by more than 12,000 delegates since 2007 - held in 9 cities worldwide
  4. 4. Outline - Shortest ever intro to Docker - Why is Docker written in Go? - Go, the bad parts - Cool infra tools we use in Go
  5. 5. What is Docker? Docker is a runtime for containers. Whoa what’s a container? A container is a concept made from linux namespaces, cgroups, & pivot roots.
  6. 6. Outline - Shortest ever intro to Docker - Why is Docker written in Go? - Go, the bad parts - Cool infra tools we use in Go
  7. 7. 1. Fully Static Binary out-of-box building binaries with go you do not get fully static binaries (libc is not included, but why would this ever be missing?) you can get a fully static build with specific flags to go build
  8. 8. 1. Fully Static Binary easier to install bootstrap from there (ie. scp binary to server, and build everything else w it) say sayonara to dependencies
  9. 9. 2. Multiple Architecture linux darwin windows freebsd
  10. 10. 3. A neutral language
  11. 11. 4. Features we need channels async syscalls (low level bits)
  12. 12. 5. go fmt stop arguing about tabs vs. spaces
  13. 13. 5. go fmt, go lint, etc... go vet: vet packages go lint: lint code go doc: get docs for any package go get: fetch dependencies go test: run test suite go run: run project w/o full build
  14. 14. Outline - Shortest ever intro to Docker - Why is Docker written in Go? - Go, the bad parts - Cool infra tools we use in Go
  15. 15. Haters gunna hate
  16. 16. Bring on the comments section.. > “Something something new hipster lang” Lol I can’t even > “Erlang or death!” Please Go is easier than Erlang. > “Javascript but on the server” Yavascript, huh...
  17. 17. Real problems... Package versioning Generic, meh we may not need… go test is not ideal err’s everywhere
  18. 18. Outline - Shortest ever intro to Docker - Why is Docker written in Go? - Go, the bad parts - Cool infra tools we use in Go
  19. 19. NSQ A real-time distributed messaging platform We use it internally to distribute github webhooks to a series of consumers we built.
  20. 20. Docker Master Binaries Automated building of Master Binaries This happens on every push to the master branch of Docker. NSQ gets the hooks and passes it here.
  21. 21. Docker Master Docs NSQ also sends the webhooks to an application which automates building our docs. With every push to the master branch of docker, the docs get pushed to a “master docs” url.
  22. 22. Patch Parser Yet another consumer of the NSQ webhook dispatcher. Parses each new PR to the Docker project, applies appropriate label and comments if things are missing.
  23. 23. Leeroy We use Jenkins as our CI server. However the Jenkins Github PR plugin was meh. Found a cool project written in python in rewrote in Go. Single binary/typed languages for the win.
  24. 24. Random notable other projects consul etcd weather udict slex goimports
  25. 25. Fin. Jessie Frazelle @frazelledazzell jess@docker.com
  26. 26. Watch the video with slide synchronization on InfoQ.com! http://www.infoq.com/presentations/ infrastructure-go

×