What is totem?

Totem is continous delivery pipline tool which is aimed in simplifying delivery of the code for stateless application to any environment. Under the hood, it utilizes containerization tools and technology (Docker).

It was specifically designed for micro services/frameworks by utilizing practices and patterns that are used for deploying the same (gitflow, service discovery, containerization, centralized logging, and more...)

Reporting Issues

Issues can be reported at : https://github.com/totem/totem.github.io/issues Issues may include help requests, bugs or feature requests.

Architecture

High Level flow

Application Deployment

Here is a sample application deployed using Totem in Amazon EC2 infrastructure.

Components

The "Totem Ecosystem" comprises of several components each responsible to perform discrete set of jobs. One may choose to deploy some/all of the components in Totem , depending upon his/her needs. It is also possible to have additional components for deploying applications using Totem (for e.g.: sidekicks for registering with SkyDNS)

Totem Events

Overview

The different totem components (deployer, orchestrator) publishes events to elasticsearch (if enabled). Here is an example event:

{
    "date": "2015-04-01T06:25:06.389047",
    "type": "NEW_JOB",
    "component": "orchestrator",
    "meta-info": {
      "git": {
        "owner": "meltmedia",
        "repo": "totem-demo",
        "ref": "master",
        "commit": "87c4419d3e278036055ca2cd022583e0397d3a5d"
      },
      "job-id": "9be083a1-9fc2-48b3-83bc-e11c8bbab305"
    },
    "details": {
    }
}

Event fields

Every event consists of following fields: