Questions tagged [deployment]

A series of activities that makes a program available for use (usually in test or production environments)

Deployment consists in a series of activities needed to get a program available for use outside a development environment (for example on web sites, PCs, smartphones and/or tablets).

At a high level, deployment activities need to:

  • compile the program in a suitable packaging format;
  • distribute the program to the final environment (e.g. via the Internet, an app store or CDs);
  • install dependencies (usually libraries, runtimes and application servers);
  • configure the target environment (e.g. where the database is or runtime parameters of the application server).

A deployment can be done in several ways according to the program type, for example:

  • to deploy a web application written in Java we can add JARs to web containers;
  • to deploy a desktop application on Windows we can create a setup program and burn it to CDs;
  • to deploy an application to a cloud environment (like Heroku or Windows Azure) we can use ad-hoc programs or widely known programs like git that trigger a series of operations on the server side;
  • to deploy an application to an app store we may need to send the application to the store owner for approval. If the application is approved then the store owner will publish the new version, making it available to the users;
  • a deployment may require to distribute specially configured virtual machines with the right version of software and dependencies.

There are many challenges in deployment revolving around two main themes:

  • to ensure that programs exhibit the same behavior in production as they do in testing and development. To achieve this, usually there are several test environments (beyond development) in which the software is deployed and tested thoroughly before being released in the production environment. is the strategy of deploying to a subset of users to detect production-only errors with minimal user impact.
  • to be able to rollback to a previous stable version in case the current version behaves erratically. The deployment environment may help by providing some facilities to retain previous versions and install them when needed. is a deployment strategy which enables fast, robust release and rollback.

Frequently Asked Questions

People often ask about these topics:

22585 questions
167
votes
7 answers

Install a .NET windows service without InstallUtil.exe

I have a standard .NET windows service written in C#. Can it install itself without using InstallUtil? Should I use the service installer class? How should I use it? I want to be able to call the following: MyService.exe -install And it will have…
Yuval Peled
  • 4,956
  • 8
  • 28
  • 35
161
votes
15 answers

What is your preferred php deployment strategy?

I'm beginning a new project in PHP and I'd love to get some feedback from other developers on their preferred strategy for PHP deployment. I'd love to automate things a bit so that once changes are committed they can be quickly migrated to a…
GloryFish
  • 12,027
  • 16
  • 50
  • 43
158
votes
12 answers

How can I deploy an iPhone application from Xcode to a real iPhone device?

How can I deploy an iPhone application from Xcode to real iPhone device without having a US$99 Apple certificate?
DFG
  • 2,187
  • 3
  • 21
  • 24
157
votes
5 answers

Maven equivalent for python

I'm a java developer/python beginner, and I'm missing my maven features, particularly dependency management and build automation (I mean you don't build, but how to create a package for deployment?) Is there a python equivalent to achieve these…
Enno Shioji
  • 25,422
  • 13
  • 67
  • 104
150
votes
33 answers

Android device chooser - My device seems offline

I have developed an application and i was planning to deploy it to my HTC Desire. I have installed USB driver. I turned on USB debugging on the phone and choosed charge only when phone plugged-in. When I run application Android device chooser show…
Ahmet Gulden
  • 2,043
  • 2
  • 14
  • 22
146
votes
3 answers

Why does Azure deployment take so long?

I'm trying to understand why it can take from 20-60min to deploy a small application to Azure (using the configuration/package upload method, not from within VS). I've read through this situation and this one but I'm still a little unclear - is…
emptyset
  • 2,964
  • 4
  • 23
  • 33
145
votes
35 answers

Heroku deployment error H10 (App crashed)

I have a RoR app working on my local computer, but when I send it to heroku, it crashes. The error log gives an error H10 & says: 2012-11-21T15:26:47+00:00 app[web.1]: from…
bskool
  • 1,808
  • 2
  • 18
  • 23
141
votes
28 answers

Android Studio - local path doesn't exist

After updating Android Studio to 0.2.4 I can't get my project to deploy. There is a complete mismatch of the apk filename. Waiting for device. Target device: 0146B0020E010020 Uploading file local path:…
WarrenFaith
  • 56,228
  • 24
  • 130
  • 145
140
votes
7 answers

How do I deploy Node.js applications as a single executable file?

Supposed I have written a Node.js application, and I now would like to distribute it. Of course, I want to make it easy for the user, hence I do not want him to install Node.js, run npm install and then manually type node app.js. What I'd prefer was…
Golo Roden
  • 112,924
  • 78
  • 260
  • 376
139
votes
12 answers

How do you maintain development code and production code?

What are the best practices and rules-of-thumb to follow while maintaining code? Is it good practice to have only the production ready code in the development branch, or should untested latest code be available in the development branch? How do you…
135
votes
7 answers

Deploying a minimal flask app in docker - server connection issues

I have an app whose only dependency is flask, which runs fine outside docker and binds to the default port 5000. Here is the full source: from flask import Flask app = Flask(__name__) app.debug = True @app.route('/') def main(): return 'hi' …
Dreen
  • 6,128
  • 10
  • 44
  • 67
135
votes
5 answers

Canary release strategy vs. Blue/Green

My understanding of a canary release is that it's a partial release to a subset of production nodes with sticky sessions turned on. That way you can control and minimize the number of users/customers that get impacted if you end up releasing a bad…
132
votes
3 answers

How to customize a requirements.txt for multiple environments?

I have two branches, Development and Production. Each has dependencies, some of which are different. Development points to dependencies that are themselves in development. Likewise for Production. I need to deploy to Heroku which expects each…
Charles R
  • 13,781
  • 6
  • 18
  • 18
131
votes
11 answers

How to deploy an ASP.NET Application with zero downtime

To deploy a new version of our website we do the following: Zip up the new code, and upload it to the server. On the live server, delete all the live code from the IIS website directory. Extract the new code zipfile into the now empty IIS…
Karl Glennon
  • 3,079
  • 3
  • 27
  • 31
119
votes
3 answers

How to specify maven's distributionManagement organisation wide?

I'm trying to figure out how to organize many (around 50+) maven2 projects, so that they can deploy into a central nexus repository. When using the mvn deploy goal, one does need to specify the target in the distributionManagement tag like…
mglauche
  • 3,174
  • 4
  • 25
  • 30