DevOps Toolchain​

Planning, Issue Tracking, Project Management

There are numerous freemium tools to help you stay organised.
We pay a little for Jira and we use a free versions of YouTrack and Trello .
If you want to know more about Jira click here.

Source Control

It's important to keep track of the various versions of your source code, and we pay a little for GitHub which offers the distributed-version control and source code–management functionality of Git, plus its own features.

Performance Monitoring

It's important to monitor the productivity of your servers, databases, tools, and services. You want to be able to quickly figure out whether things are going abnormally in any of your subsystems. For example, when ingesting data from a website, you want to know quickly if the data provider has changed the format of the file containing the data, or the website containing the file / data. We use Datadog and we have a whole stack for it in our Rancher production.

Worker Monitoring

We use Flower to monitor our Celery Worker. It monitors both (i) the productivity of (scheduled) tasks and (ii) errors (failures and exceptions).

Exception Monitoring

We use Sentry to monitor for errors (failures and exceptions).

Continuous Integration, Delivery and Deployment

We use Jenkins (continuous integration server software), Docker for continuous deployment, and Rancher (1.6) to run and manage ("to orchestrate") Docker containers.

Jira

Jira is a software application used for issue tracking and project management. So in general is a complex system, with convenient features of Github integration.
There are several columns in Jira by which task can be distributed depending on its status. But we usually use these:

  • Ready - when we add a new task it appears in this column
  • Implementation - when we start working on the task we move it to this column
  • In review - the task can be some time here while some other developer is reviewing the code
  • Waiting for deployment - the task moves here directly after the testing stage and it means that the prepared code that solves the task is ready to be deployed to the actual App
  • Done - the task moves here after all the above stages and remains there for history

In the video below such process is briefly shown: