BlogsCloudflareGo Language Adoption and Tooling

Go Language Adoption and Tooling

Go Language Adoption and Tooling

4
posts
2012–2016

Cloudflare has fully embraced Go as a core language for its services, utilizing it for critical infrastructure components like DNS, SSL, and network compression. The company has developed and open-sourced various Go-based tools and libraries, including RRDNS for DNS infrastructure, Railgun for compression, Red October for cryptographic security, and SSL Bundler for certificate chain optimization. This adoption extends to experimentation with related technologies like CoreOS and Docker, and contr. This post details a hack for obtaining test coverage data for end-to-end tests by compiling a dummy test that executes main() and running it with coverage flags.

2016

Go coverage with external tests

1/19/2016

This post introduces a hack for obtaining test coverage data for end-to-end tests in Go. It involves creating a dummy test that executes the main function, compiling a binary with `go test -coverpkg="..." -c -tags testrunmain`, and then executing this binary with specific test flags to collect coverage information. It also mentions using `gocovmerge` to merge coverage profiles from unit and end-to-end tests.

2013

What we've been doing with Go

11/11/2013

This post details Cloudflare's extensive adoption and use of the Go programming language across multiple production services. It highlights specific projects like RRDNS (DNS proxy with response rate limiting, caching, load balancing, and seamless upgrades), Railgun (on-the-fly compression for high-latency connections), Red October (cryptographically secure two-man rule implementation for sensitive material), and SSL Bundler (optimizing SSL certificate chains). It also mentions experimentation with CoreOS, Docker, and open-sourcing of Go libraries for stream processing, syslogging, Kyoto Cabinet bindings, and SPDY 'curling'.

2012

Do you want to work with Go?

11/18/2012

This post marks an early stage in Cloudflare's adoption of Go, highlighting its use for PKI tools, Railgun web optimizer, a new high-performance DNS server, and a curl-like tool for SPDY. It also signals active hiring for Go developers and plans to open-source Go programs.

Go at CloudFlare

7/3/2012

This post details the use of Go for the Railgun software, highlighting its concurrency features (goroutines and channels) and object-oriented capabilities (interfaces) for building highly concurrent and scalable systems. It also mentions the extensive Go standard library and its ability to generate single executables.