We are pretty much raving fans of CircleCI and we are not ashamed to say it. Here’s why.
What Does CircleCI Do For Us?
It would be reasonable to describe CircleCI like this:
- continuous integration and testing
- compiles our code for us
- automated QA
But that misses the point, because what they really do is they help us delight our customers. And they don’t just provide tools or ingredients or recipes for this. They provide a solution. I know it’s a buzzword and I have avoided saying “solution” since back in the day when I was a .NET developer using Visual Studio. But it is the only word that describes what CircleCI does for us.
We have a hard challenge/problem: in order to provide the absolute best service for our customers, we must be able to ship improvements in minutes with confidence. And it needs to just work. CircleCI solves that problem. We need this every single day. Today we already shipped one on-demand change to our agents for a customer, which is typical as we find small opportunities to make things awesome and want to ship and delight ASAP.
If you don’t provide agent-based software that does high-performance computing on customer servers, out of your control, you may not appreciate how hard it is. Trust me, it’s hard. CircleCI is a vital part of being able to do it well.
Why Do We Love Them?
CircleCI is awesome for a few of the following reasons:
- simple setup (at the time I tried alternatives, it won hands-down)
- not only integrates with our code/review/merge/release workflow, but augments it
- high performance – there is no way we could build in-house what they’ve built
- low cost, way cheaper than we could ever dream to build ourselves
- reliable and highly available
- a complete package, fully delivered, with nothing to configure/install/etc
Why Not Jenkins?
Let’s put this in context. We have a Jenkins server in-house and I have been involved with companies that use Jenkins heavily. (We use it as a task-runner for things like executing Ansible scripts.)
Jenkins is a pain. It’s almost always a snowflake server, at least to some extent. It’s slow. The user interface is not productive. It takes a lot of resources. It requires time on a regular basis.
Just to mention one thing that sets CircleCI apart from Jenkins: I can watch my code being checked in realtime because it’s push-based and hook-based, not polling-based. I can open GitHub and CircleCI in separate tabs, do a “git push”, and watch the pages update in split seconds. The effect this has on productivity is impossible to exaggerate.
I am a huge believer in “buy, don’t build.” We are not in the business of doing undifferentiated heavy lifting, to borrow a phrase from Adrian Cockcroft (who’s one of our advisors). Our job is to build the world’s most amazing database monitoring system. The last thing I want is for us to be spending time on a system to run tests and report the results. That’s a huge waste of our most precious resources. And that’s what I’ve experienced in companies who use Jenkins to build in-house what CircleCI provides at the click of a button.
So Tell Me Again Why You Love CircleCI?
We love CircleCI because it’s a solution to a problem that otherwise would be a huge pain and expense for us. It is a complete solution with all the important boxes checked and all the little edge cases and nuances well handled.
By buying complete, well-thought-out solutions from companies like CircleCI (and GitHub, and Swiftype, and Google, and Intercom, and VictorOps, and…) we’ve assembled, in very little time and with very little cost, a huge amount of scaffolding to run our business and delight our customers.
I kind of want to write love letters to all of our amazing vendors, but for some reason today I was really inspired to write about CircleCI, so here it is.
Feel free to ask any questions in the comments!