StackShareStackShare
Follow on
StackShare

Discover and share technology stacks from companies around the world.

Product

  • Stacks
  • Tools
  • Companies
  • Feed

Company

  • About
  • Blog
  • Contact

Legal

  • Privacy Policy
  • Terms of Service

© 2025 StackShare. All rights reserved.

API StatusChangelog
  1. Home
  2. Companies
  3. CircleCI
CircleCI logo

CircleCI

Verified

CircleCI’s continuous integration and delivery platform helps software teams rapidly release code with confidence by automating the build, test, and deploy process. CircleCI offers a modern software development platform that lets teams ramp quickly, scale easily, and build confidently every day.

San Franciscocircleci.com
75
Tools
7
Decisions
5.9K
Followers

Tech Stack

Application & Data

14 tools

Amazon CloudFront logo
Amazon CloudFront
GraphQL logo
GraphQL
TypeScript logo
TypeScript
Next.js logo
Next.js
Clojure logo
Clojure
PostgreSQL logo
PostgreSQL
AWS Lambda logo
AWS Lambda
MongoDB logo
MongoDB
Golang logo
Golang
ClojureScript logo
ClojureScript
Om logo
Om
R Language logo
R Language
Node.js logo
Node.js
Gatsby logo
Gatsby

Utilities

7 tools

Google Analytics logo
Google Analytics
Hubot logo
Hubot
Optimizely logo
Optimizely
Stripe logo
Stripe
Elasticsearch logo
Elasticsearch
Slack logo
Slack
Segment logo
Segment

DevOps

2 tools

StatusPage.io logo
StatusPage.io
PagerDuty logo
PagerDuty

Business Tools

1 tool

Salesforce Sales Cloud logo
Salesforce Sales Cloud

Team Members

Ricardo N Feliciano
Ricardo N FelicianoDeveloper Evangelist
Mike Stearns
Mike StearnsVice President of Marketing
Robert Zuber
Robert ZuberCTO
Tad Whitaker
Tad WhitakerSupport Engineer
Ron Powell
Ron PowellTechnical Content Marketing Manager
Jeremy Meiss
Jeremy MeissHead of DevRel & Community
Alana Aquilino
Alana Aquilino
Jean-Philippe LeBlanc
Jean-Philippe LeBlanc
Alex Baker
Alex Baker

Engineering Blog

Stack Decisions

Robert Zuber
Robert Zuber

Jul 24, 2019

Our primary source of monitoring and alerting is Datadog. We’ve got prebuilt dashboards for every scenario and integration with PagerDuty to manage routing any alerts. We’ve definitely scaled past the point where managing dashboards is easy, but we haven’t had time to invest in using features like Anomaly Detection. We’ve started using Honeycomb for some targeted debugging of complex production issues and we are liking what we’ve seen. We capture any unhandled exceptions with Rollbar and, if we realize one will keep happening, we quickly convert the metrics to point back to Datadog, to keep Rollbar as clean as possible.

We use Segment to consolidate all of our trackers, the most important of which goes to Amplitude to analyze user patterns. However, if we need a more consolidated view, we push all of our data to our own data warehouse running PostgreSQL; this is available for analytics and dashboard creation through Looker.

1.6M views1.6M
Comments
Robert Zuber
Robert Zuber

Jul 24, 2019

We have added very little to the CoffeeScript Hubot application – just enough to allow it to talk to our Hubot workers. The Hubot workers implement our operational management functionality and expose it to Hubot so we can get chat integration for free. We’ve also tailored the authentication and authorization code of Hubot to meet the needs of roles within our team.

For larger tasks, we’ve got an internal #CLI written in Go that talks to the same #API as Hubot, giving access to the same functionality we have in Slack, with the addition of scripting, piping, and all of our favorite #Unix tools. When the Hubot worker recognizes the CLI is in use, it logs the commands to Slack to maintain visibility of operational changes.

22.6k views22.6k
Comments
Robert Zuber
Robert Zuber

Jul 24, 2019

We use MongoDB as our primary #datastore. Mongo's approach to replica sets enables some fantastic patterns for operations like maintenance, backups, and #ETL.

As we pull #microservices from our #monolith, we are taking the opportunity to build them with their own datastores using PostgreSQL. We also use Redis to cache data we’d never store permanently, and to rate-limit our requests to partners’ APIs (like GitHub).

When we’re dealing with large blobs of immutable data (logs, artifacts, and test results), we store them in Amazon S3. We handle any side-effects of S3’s eventual consistency model within our own code. This ensures that we deal with user requests correctly while writes are in process.

3.29M views3.29M
Comments
Robert Zuber
Robert Zuber

Jul 24, 2019

When you interact with CircleCI's web application, all of your requests are hitting the #API hosts. We handle the majority of our authentication via #OAuth from GitHub or Bitbucket. We provide programmatic access to everything exposed in the UI through an API token that you can generate once you have authenticated.

12.2k views12.2k
Comments
Robert Zuber
Robert Zuber

Jul 24, 2019

Our backend consists of two major pools of machines. One pool hosts the systems that run our site, manage jobs, and send notifications. These services are deployed within Docker containers orchestrated in Kubernetes. Due to Kubernetes’ ecosystem and toolchain, it was an obvious choice for our fairly statically-defined processes: the rate of change of job types or how many we may need in our internal stack is relatively low.

The other pool of machines is for running our users’ jobs. Because we cannot dynamically predict demand, what types of jobs our users need to have run, nor the resources required for each of those jobs, we found that Nomad excelled over Kubernetes in this area.

We’re also using Helm to make it easier to deploy new services into Kubernetes. We create a chart (i.e. package) for each service. This lets us easily roll back new software and gives us an audit trail of what was installed or upgraded.

323k views323k
Comments
Robert Zuber
Robert Zuber

Jul 24, 2019

We are in the process of adopting Next.js as our React framework and using Storybook to help build our React components in isolation. This new part of our frontend is written in TypeScript, and we use Emotion for CSS/styling. For delivering data, we use GraphQL and Apollo. Jest, Percy, and Cypress are used for testing.

1.8M views1.8M
Comments
Robert Zuber
Robert Zuber

Jul 24, 2019

Most of CircleCI is written in Clojure and it has been this way since almost the beginning. Early development included Rails, but by the time that CircleCI was released to the public, it was written entirely in Clojure. Clojure is still at our platform’s core. It helps having a common language across much of our stack to allow for our engineers to move between layers of the stack without much overhead.

53.7k views53.7k
Comments