19 votes
Accepted

How to support releasing new versions of the code, running in parallel with the last stable release?

There are a few different ways to achieve goals of this sort, each with some different tradeoffs. I'm going to describe the most common ones below. The simplest approach is to use Terraform's ...
17 votes
Accepted

Are there any drawbacks of using a deb package as if it was a container to deploy an application?

First, while Docker is sometimes seen and used as a ad hoc packaging system, it actually solves a totally different problem: Docker is about running programs. The Docker system allows to describe ...
10 votes
Accepted

Are configuration management tools appropriate to use as deployment tools?

In such context the typical advice should be immediately applicable: use the right tool for the job. But then you also cannot ignore nowadays the almost virulent tendency of software tools to extend ...
9 votes

How to synchronize deployments (especially of database object changes) on multiple environments

I would integrate the schema management into the application itself (or along with it). Any change to the schema should be committed along the application code (and hence tagged also). There's ...
  • 11.1k
9 votes

How to achieve a smooth transition from “the one big VCS repository for all products” organisation model to the “many small VCS repositories” model?

It is a fascinating question for which real answers may not actually exist; I appreciate that while you tried to keep the question contextualized on the VCS, it naturally scaled by itself up to ...
8 votes
Accepted

How to store credentials that are required by an application?

Proper management of an application's secrets has always been a challenge. New challenges came with the adoption of the cloud. There's a great OWASP presentation about the reality and challenges of ...
  • 1,945
7 votes

Are there any drawbacks of using a deb package as if it was a container to deploy an application?

Yes, there's drawbacks. With a .deb package you won't be able to have two version of the same application on the same host. You will have to rely on the distribution available packages, if your app ...
  • 11.1k
7 votes

Which ways are there to decouple deployment from release?

For software in the web app category, depending on you infra/hosting provider such decoupling might be possible to switch incoming traffic across (or split it between) different deployed versions of ...
7 votes
Accepted

How to implement Continuous Deployment in Angular, PHP API and Ansible projects?

Let's assume you have the following scenario: You have many customers, but most use the exact same app, except for some configuration changes. You would like each of your customer to get the latest of ...
  • 1,557
7 votes
Accepted

What is the difference between packages and artifacts?

Mainly an artifact is the result of of a build phase, this mean a package is an artifact of a kind. A package is usually a way to install a software or application, it includes the software itself ...
  • 11.1k
7 votes
Accepted

What's the best complete DevOps setup?

Vagrant is for setting up test environments right? Ansible/Chef etc. seem good for servers you own, but what about cloud? Docker... great for standardizing app, so why use Ansible/Chef? Kubernentes.. ...
  • 4,756
7 votes
Accepted

How to deploy multiple dependent micro services

Such question could be an indication of a poor architectural slicing into microservices. From What are Microservices?: These services are built around business capabilities and independently ...
6 votes

Tool for storing per environment configuration

There are many tools that can do something like this, including configuration management tools like Chef, Ansible, or Puppet; and KVS tools like Consul and etcd. You could also integrate it as a build ...
  • 773
6 votes

Javascript based alternative to Fabric

Fabric (and Capistrano, presumably the unnamed Ruby tool you came across) are a bit unusual in that they're task runners with extra features for easily running tasks on remote hosts. I'm not aware of ...
6 votes

Are configuration management tools appropriate to use as deployment tools?

Configuration management tools are used to get a system into a known state. Deployment tools deploy new program files and program data to a system. At the end of the day, both types of tools do some ...
  • 161
6 votes

Is it possible to autodeploy on every commit in a specific branch using Travis CI and GitHub?

Instead of using Travis' deployment features, build the deployment logic in to your normal "test" script(s). For a PaaS this might be as simple as pushing to another git remote if all tests pass, but ...
  • 1,197
6 votes

Are there any drawbacks of using a deb package as if it was a container to deploy an application?

A Debian (or RedHat) package to install applications has been a good practice when done correctly. Packages are used for the purpose of deploying applications which are infrequently changed. Debian ...
6 votes

To design a blue green deploy how to publish websocket traffic from live to hot swap server

Websockets don't really have any handling for this per se. You could build your own system but generally the idea for HA is that if anything happens you'll set the client up to automatically reconnect....
  • 1,197
6 votes
Accepted

What's the term for moving/promoting code between deployment environments

I don't think there is a generic term for promoting to production. I can tell you that within the devops community, terms are frequently interchanged. As long as the point being addressed is well ...
  • 3,043
6 votes

how to automatically create a subdomain for every pull request

We do this at work. We have a small server, let's call it the receiver, it's the target of the GitHub webhook events. It runs a small application that parses the payload and incorporates logic around ...
6 votes
Accepted

Infrastructure as code and TDD

In short, I see two categories of tests for your infrastructure: 1) does it have everything you need to run your application and 2) does it not have any superfluous stuff. First and foremost, you can ...
  • 4,756
6 votes
Accepted

Kubernetes configuration with yaml anchors

YAML anchors are supported, but only for the same YAML file. You can't create the anchor (&) on a deployment file and reference (*) the value on another one. If you want to share ENVs values ...
5 votes
Accepted

To design a blue green deploy how to publish websocket traffic from live to hot swap server

With a minimally engineered server code (a Google AppEngine application in the example) it's possible to duplicate and forward incoming HTTP traffic received by a production server to a test server (...
5 votes

Which ways are there to decouple deployment from release?

While with monoliths you might be restricted to switches, with microservice architectures, you can split every deployment pool of nodes providing a service (ie. pods). You then activate the deployment ...
5 votes

Passing in a file with configuration

It is convenient to use Environment Variables to provide runtime configuration for such scripts. Especially when it contains secrets that you don't want to hold in any persistent storage or in version ...
5 votes

Strategy for deploying/hosting javascript-based static websites in containers

From my standpoint the best approach would be to: Separate build process using Jenkins that would build NodeJS project into distribution and wrap it into Docker image Spin up Docker registry that ...
  • 329
5 votes
Accepted

DevOps tools and automation of manual processes

Alright... you're not going to implement every tool or automation at the same time, as some of them have quite deep impact on your development processes (and I daresay, development culture). Take a ...
  • 4,756
5 votes
Accepted

Blue Green Deployment DB transactions management

As per Martin Flowers' definition of Blue-Green deployment The blue-green deployment approach does this by ensuring you have two production environments, as identical as possible. At any time one ...
  • 582
5 votes
Accepted

Where does the string docker.example.com in my GitLab CI job come from?

It's a placeholder domain name for connecting over SSH. It doesn't mean that it's connecting to docker.example.com. I ran into a similar error when using a Docker client over SSH. The error message ...
4 votes

How to store credentials that are required by an application?

For a purely EC2-based environment, the easiest solution is to use AWS IAM roles and S3 bucket policies. Some formulations of this pattern also include KMS for encryption and DynamoDB instead of S3 ...
  • 1,197

Only top scored, non community-wiki answers of a minimum length are eligible