By Torleiv Flatebo, Director of Platform Engineering and Site Reliability at GovDelivery
While GovDelivery is now over 15 years old, we have always been a Software-as-a-Service company priding ourselves in pushing the envelope in terms of cutting edge government software. That said, over the course of the last decade, technology has changed and so have we — we’ve gone through a lot of different backends and frontends to get to where we are now.
Today we’re pleased to announce that GovDelivery technology has over 100 million users spread across the globe and powers over 50 million messages a day. (See more in the announcement from our CEO Scott Burns.)
With this scale and reach, the technology behind the platform is more crucial than ever. In our Platform Engineering group here at GovDelivery, we support and work on configuration management, deploy tooling, continuous integration, data center automation, and backend services to power communications between 1,000+ agencies and 100+ million citizens. Naturally, I sometimes get the question, “What’s it like to build technology at that scale?”
Three guiding principles keep our technology strategy grounded:
The first version of our infrastructure was running on Windows, and we were all Java everywhere. This took us farther than I would have ever expected, but as we grew past 10 million, 20 million, 50 million, and now 100 million subscribers we have evolved our architecture into a much more scalable system.
Our current architecture runs primarily on Ruby on Rails and Java, all of our engineers use Mac OSX or Linux, and our teams strongly believe in test-driven development (TDD), pull requests, and continuous integration (CI). Consistency is essential — as is designing for scale. At the core of the architecture (conceptually and technically) is a set of REST APIs that enable capabilities across product lines and reduces duplication of code. For example, we send a lot of email (more than six billion already this year, and counting), so when a new application needs to send email, we hook it up to a centralized API that manages the complexity, and the new app only needs to make REST calls and gets a lot of functionality for free. As we have expanded the GovDelivery product line — with open data platforms with NuCivic and interactive text messaging from Textizen — this strategy has allowed us to grow and scale functionality fairly seamlessly.
It’d be foolish, though, to think that there weren’t bumps along the way and lessons learned. As we have grown, we have seen a variety of scaling issues, and we try hard to constantly learn and evolve. We use a few rules to help us:
What’s Next
We have an amazing team of engineers constantly working to predict scaling issues, and handle performance issues as they crop up in production. (SaaS really helps us here; we can solve a problem across all of our customers in the blink of an eye.) And we are constantly looking to innovate. There are a lot of new technologies out there that newer companies are using. We like new stuff, but we also have to balance our scale, efficiency, and security needs against using the newest containers or tools.
Some things we are looking at now:
Come help us out
Even though GovDelivery is now a 200+ person company, each member of the team is empowered and in fact encouraged to help answer those questions, and identify new ones. That’s the only way we can continue to innovate at scale. To be sure it’s hard work, but it’s fun and important too. We are building software for the public good at a massive scale. And we are always looking for good people eager for a good challenge. In you’re interested in joining the GD Engineering team, have a look at GovDelivery.com/Company/Careers, stop by in St. Paul or DC, or don’t hesitate to drop us a line (or a pull request).
Let’s work together on building this system for the next 100 million.
(Editor’s Note: If you want to learn more about GovDelivery’s scale, and the impact our clients are having with the platform, check out the 100M announcement at govdelivery.com/100M)