Thursday, 11 May 2017

Implementing a CI/Deployment Pipeline for a Node app

I will shortly be in the process of rewriting a node app with the intention of implementing Continuous Integration and TDD.

I also want to design and set up a deployment pipeline for development, staging, and production.

Currently I'm using Shipit to push changes to different instances that have pre-configured environments. I've heard about deploying Docker containers with the needed environments, and I'd like to learn more about that.

I'm looking at TravisCI and for automated testing/builds, and from my understanding, one can push the Docker image to a registry after the build succeeds.

I'm also learning about scaling, and looking at a design for production that incorporates Google Cloud servers/services serving 3 clustered versions of the node app, a Redis cluster, and 2 PostgreSQL nodes, which each service being behind a load balancer.

I've heard of Kubernetes being used to manage and deploy containerized applications, but I'm curious on how it all fits together.

In my head I think that it would seem like the process would be as follows:

  1. commit changes on dev machine - push to repository.
  2. TravisCI builds and runs tests, (what about migrations and pushing changes to the postgreSQL service?), pushes to a Google Cloud Container Registry.
  3. Log into the Google Container Engine and run the app with Kubernetes.
  4. What about the Redis Cluster? The PostgreSQL nodes?

I apologize in advance if this question is lacking in clarity and knowledge, but I'm trying to learn more before I move along.



via Sean Gregory

No comments:

Post a Comment