Streamlining DevOps using Cycle and CI/CD pipelinesNarendran Muraleedharan
Narendran Muraleedharan
Published on Thu May 21 2020

With the modern state and growth of cloud technology, we’ve been seeing that deploying process automation and AI solutions on cloud servers make more sense than ever. Cloud systems scale much better than local equipment and costs are very predictable. We’ve always had some project that required web-related work since we opened our doors, but as of recent, almost every client we work for requires some cloud development work. And no, web apps or servers are NOT the solution to every problem — we analyze the requirements and conduct the necessary research to find optimal solutions. But even for the local programs that we build (graphics intensive programs like 3D modeling/CAD, segmentation AI etc.) have some component that requires interactions with servers and APIs. One of the most effective methods to deploy multiple servers or workers on the cloud is using containers.

Cloud containers allow you to isolate all dependencies and package a program in such a way that it is hardware-independent. This is wonderful for projects that have a lot of components! For instance, our most recent product — Stax, is a cloud-based collaborative AI document management suite that sorts, triages, and indexes email attachments, faxes, and scanned uploads, and we have separate containers for its UI (User Interface), API (Application Programming Interface), E-mail scanner bot, Training bot, AI worker pool (scalable pool of worker bots such that we have have thousands at a moments notice), Database, Database Editor, Backup Manager, Marketing Website, Documentation Website, and Cloud Container Registry (yes, a container that stores other container images!). The separated components allow for ease of work distribution, targeted development, and isolated debugging environments. Anyone who’s dealt with deploying and maintaining such systems will know how much of a pain it is to properly manage.

DevOps is a set of procedures that combine software development and information-technology operations in order to standardize software design, development, release, and maintenance processes. Well-run DevOps procedures require lots of thorough planning, testing, build control, and deployment management to ensure smooth operation and minimal down time and financial effect on the business.

When an update is ready to be pushed, a typical process may look like this:

  • Set-up a staging environment to run isolated tests.
  • Test the individual component isolated from the rest of the system.
  • Test the entire system specifically probing the updated component.
  • Run a series of regression tests to ensure other non-related components still function as they did before.
  • Compile a software patch (merge branch into master).
  • Build container image.
  • Run a set of tests to ensure functionality within container.
  • Push container image to a secured registry.
  • Perform a scheduled shut-down of the live system.
  • Load the updated container image into the live system.
  • Re-launch the live system.
  • Run a short series of tests on the live system to ensure similar performance to the tests run within the staging environment.

This process can get tedious and repetitive. Fortunately, many test frameworks are available such PyTest or Unittest for Python, and MochaJS for Javascript that when properly setup, automate a large portion of the software testing. The rest of the process involves container building, transportation, re-imaging, and deployment which can also get very cumbersome. Companies usually have dedicated DevOps engineers for such tasks. On average, the base salary of a DevOps engineer is around $120,000 in the United States. That can get expensive for smaller businesses.

Cycle — Container Orchestration 2.0

Enter Cycle — a container management platform that takes a bold new approach to cloud infrastructure management. Cycle combines the functionality of a DevOps team into a simple interface. You can manage your infrastructure (deploy servers etc.), setup and manage environments and containers (deploy, re-image, SSH), automate pipelines using Stacks, deploy pre-built services like Discovery, VPN, and more! In addition to the interface, Cycle has a full-featured RESTful API that lets you do all of that by making HTTP calls. That means we could allow our customers to deploy containers and servers on-demand directly from our website to increase bandwidth.

Partnering with Cycle

In 2018, we started experimenting with Cycle for our project with Phoenix Spine & Joint. This project involves making medical assessments and preliminary diagnostics based on imaging data, and by using Cycle, we were able to deploy the solution on cloud servers. We used that with Bitbucket’s (Continuous Integration — Continuous Delivery) CI/CD pipelines. We saw that Cycle and CI/CD saved us around 60 hours per month of DevOps work during the early-stage of project releases, and around 20 hours per month during operation and maintenance. That’s on average $4,900 USD per month in development costs per client!

Soon after, we started using Cycle for all our clients’ cloud projects and also for ourselves! Cortex and Stax are fully deployed and managed using Cycle. We have also come up with a novel and efficient technique to deploy on-demand AI workers on the cloud using Cycle. This is a very scalable solution that allows us and our clients to grow rapidly. It also makes sure the system keeps running even if a few workers fail — therefore providing a method of debugging and making fixes while eliminating downtime altogether.

We use Cycle so much that they featured us on their home page! Cycle also has a dedicated page describing our partnership and how we’ve used Cycle.

The next item on their road-map is integrated CI/CD pipelines, which means we won’t have to use our Git repository host for that — a push/merge to master will be all it takes to perform a full series of tests and deploy live!

If you have a project that requires various cloud components, let us know! We can help you get it planned, designed, built, tested, and deployed! We can also either manage it for you using Cycle, or train a member of your team to use it.

Subscribe to our newsletter to stay up to date with our new software, team activites, and promotions!