DEV Community

Kyle Johnson
Kyle Johnson

Posted on • Edited on

Our Tools - 2019 Edition

Here's what we are using to build Bullet Train, our Feature Flag platform. With some careful VPS purchases, most of this stuff can be run completely free of charge!

(Moved to here)

GitLab All The Things

GitLab is pretty awesome, and it gets more awesome with every release. The big thing it has going for it is that it integrates a bunch of different tools, and makes them work together to help drive productivity. This also means that a single GitLab instance can manage a large part of the development process.

We self-host GitLab. It is a fairly big application so we're running on a 3GB VM on Google's Cloud Platform, but you could easily use a cheaper VPS provider if you wanted to. The open source version of GitLab is called their "Community Edition", but don't be fooled, it's fully featured and is only missing a couple of items from their paid product. It installs pretty easily via their Omnibus packages, and updating is pretty much just

apt-get update; apt-get upgrade

You can also use their hosted product as we do, it has a great free tier.

Source Code

Well, yeah obviously. All our code is pushed to GitLab. Being open source and self-hosted there are no limits to the number of developers or private projects you can host.

CI/CD

GitLab has a first class CI/CD platform built in. You can get push-to-deploy working quickly and easily. There's only a couple of things you need to do to get up and running.

  1. Add a .gitlab-ci.yml file to the root path of your project. This file contains the commands you need to build your product. 2. Register a GitLab Runner, basically, a service that runs somewhere that can receive jobs from GitLab, run them, and send the results back to GitLab. You can even run the runner on the same machine as the GitLab Instance.

Agile Project Management

We still think Trello is the best of the bunch. It's fast, simple and gets out of the way. Having said that, they have recently been making some changes to their free tier, and so the one other option that might be worth checking out is, again, back in Gitlab.

You can use the Gitlab issue tracker to manage requirements, and view them in a Kanban board, similar to Trello. A big advantage of doing this is, again, the tight integration between the Gitlab components. For example, if you push a commit with the message

Fixes #252

, issue number 252 will be referenced by that commit. When you merge that commit into the master branch, Gitlab will even mark the issue as resolved! There's a bunch of other integrations that use this pattern.

Dev/Staging Builds

We're using the amazing Dokku to run dev and feature branches. Dokku is an amazing bit of software that basically turns your VPS into a mini-Heroku platform. Its pretty simple to create and destroy feature branches, as well as build and deploy development builds. We use this Docker image to integrate Gitlab CI with Dokku.

Production Hosting

This really depends on the application you are working on. For Bullet Train, our Feature Flag platform, we actually split out the hosting:

  • Our Web front-end is written in Node/JS and deployed to Standard AppEngine. It's mega-cheap (as in practically free) and rock solid.
  • Our API is written in Django/DRF and uses a Postgres database as its data store. We host this on AWS and Elastic Beanstalk. This gives us decent automated scaling options and a simple deployment process.

Feature Flags

Well, we definitely use our Feature Flags to help build our Feature Flags! To ensure a smooth CI/CD process, and to reduce the amount of code that is committed but not deployed, we use our Bullet Train Feature Flags platform within Bullet Train itself. Meta. We have a decent free tier too, so we don't have to pay ourselves to run our feature flags.

Support, Email Etc

All free! We're using FreshDesk for our customer issue tracker, FreshStatus for our status page and Uptimely for our uptime monitoring/outage alerts.

For email, we're using the pretty awesome Migadu for inbound email, and SendGrid for our outbound email.

For marketing, MailerLite to manage drip campaigns, and the free tier of Intercom to do our in-app chat.

Top comments (8)

Collapse
 
jsardev profile image
Jakub Sarnowski

I can't stand GitLab, it's so freakin' slow :(

Collapse
 
lampewebdev profile image
Michael "lampe" Lazarski

If you think gitlab is slow then you have not seen jira...

Jira is like 10x slower then the slowest gitlab I have used.

We use a hosted version of gitlab and it is as fast a github for e.

Collapse
 
kylessg profile image
Kyle Johnson

+1 for self hosted gitlab vs GitHub, I agree

Collapse
 
jsardev profile image
Jakub Sarnowski

I've also used Jira and I agree - it's even slower than public hosted GitLab :D

Collapse
 
kylessg profile image
Kyle Johnson

We self-host Gitlab, I have worked on external projects that use gitlab's own hosted version and I agree it is SO SLOW. The two aren't even comparable.

Collapse
 
jsardev profile image
Jakub Sarnowski

I was always curious if self-hosted version of GitLab is better than the hosted one! Thanks for info :)

Thread Thread
 
kylessg profile image
Kyle Johnson

No problem!

Collapse
 
shijiezhou profile image
Shijie Zhou

Right, The Gitlab is very slow compared to github, and I can't use circleci on Gitlab.