![]() Our deployment tool operates on a custom YAML specification that describes what an app needs to run. There are a number of challenges that Go makes it easier for us to solve including: It is backed by MySQL and a single instance can target multiple datacenter locations. Our deployment tool is written in Go because it enables us to quickly roll out updates, onboard new engineers to our tech stack, and quickly iterate from early development to production. If you’ve read our earlier "Running Online Services" series you’ll get a better idea of the problem space we’re working in. The Service Lifecycle team’s primary project is our deployment tool, which is used to deploy and manage the lifecycle of services running in our Docker runtime. Additionally, the standard library includes things like TLS and SQL support, so you can be very productive in Go very quickly. There are excellent libraries for structured logging, consensus algorithms, and websockets. It’s also becoming increasingly popular in the system space for software like etcd, Docker, Kubernetes, Prometheus, and much more. There’s also been a recent movement within the tech industry around Go, especially with regards to microservices, and it helps being able to tap into that interest and drive in the developer space. Go is relatively popular, meaning that there’s excellent third party support and vendors will frequently include Go client libraries for development. ![]() Go rarely breaks backwards compatibility, and when it does break, it’s usually in the form of libraries rather than the language itself (modules for dependency management). Go is opinionated about best practices, the gofmt command makes everyones code look approximately the same. Go has powerful parallelization and concurrency primitives in the forms of goroutines and channels. Go has a large and powerful standard library including a production-class webserver. Go code builds fast, so fast that your editor can rebuild on save to check for errors. Go is a relatively simple language with a small language specification, making it easy to onboard new engineers who might come from other language backgrounds. We love Go at Riot for a number of reasons including:ĭistribution of a Go application is as simple as downloading and running a binary. As a result, both languages are viewed as first class citizens in terms of support - and because we deploy using containers, both are interoperable and relatively easy to package and deploy. I’ll be tagging in two technologists - Chad Wyszynski from RDX Operability and Justin O’Brien from VALORANT - to discuss how they use Go for their projects.Īt Riot, our two primary languages for services are Java and Go. In this article, we’ll be specifically looking at how a few different teams use Go. When it comes to picking software and languages, tech teams across Riot are encouraged to seek out the best options for their products. Additionally, we own a cloud infrastructure provisioner service responsible for spinning up and managing AWS resources for use by service owners. My teams own several services including our global deployment tool and access control management layer on top of our software defined network that manages all network connections between services. A large majority of these services, including third party software such as Docker, are written in the Go language. Riot’s compute infrastructure has historically consisted of bare metal data centers and cloud providers. RDX manages the software layer between services/applications and our infrastructure. I manage two teams at Riot named Service Lifecycle and Cloud Services Integration which are both underneath the team of teams called Riot Developer Experience or RDX.
0 Comments
Leave a Reply. |
Details
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |