21

In work environment, we frequently encounter the words "deployment" and "release" in technical context. I often hear them used interchangeably also. It is mainly related to "Release and Deployment Management".

For example, Information Technology Infrastructure Library (ITIL) defines the aim of Release and Deployment Management as:

ITIL Release and Deployment Management aims to plan, schedule and control the movement of releases to test and live environments. The primary goal of Release Management and Deployment Management is to ensure that the integrity of the live environment is protected and that the correct components are released.

Source: http://wiki.en.it-processmaps.com/index.php/Release_and_Deployment_Management

Additionally, I found the below technical definitions but these are not the only usages:

release:
1. Making a version of software available to the public.
2. A software version which has been made available to the public.
Source: http://www.computeruser.com/dictionary

deploy: To install, test and implement a computer system or application.
Source: http://www.webopedia.com/

Wikipedia's "software deployment" article mentions below but it looks like the below definitions can not be applied to all kind of deployments in an IT environment:

Software deployment is all of the activities that make a software system available for use.

The release activity follows from the completed development process. It includes all the operations to prepare a system for assembly and transfer to the customer site. Therefore, it must determine the resources required to operate at the customer site and collect information for carrying out subsequent activities of deployment process.


Questions:

  • What is the difference between "deployment" and "release"? (This question asks a general difference in a technical context but to be more specific, it can be related to a "code change".)

  • Can we use these words interchangeably?

    For example, Can we use both sentences below and can they have the same meaning?

    I will release the change to production.
    I will deploy the change to production.

  • ITIL also defines one of the Role/Sub-Process as Release Deployment.

    So, is "release" used as a noun mainly in this context?
    Are releases always deployed?
    Can we release a release?

Note: I would like to get answers from real life experiences about the usage of these terminologies in work environments and release management processes.

Note2: Great subjective questions invite sharing experiences over opinions. Certainly experiences inform opinions, but the best subjective questions unabashedly and unashamedly prioritize sharing actual experiences over random opinions.
Source: http://blog.stackoverflow.com/2010/09/good-subjective-bad-subjective/

2
  • 5
    You deploy a release. You don't release a release or deploy a deployment. They are distinguished for clarity.
    – Kit Z. Fox
    Jul 7, 2014 at 18:21
  • 3
    You answer your own question in the definitions you state. Release = make available, deploy = install. In some environments the two steps blur into one and the words get used interchangeably. Jul 7, 2014 at 18:22

10 Answers 10

28

There is no universal definition for these terms, so their use will vary among teams. The most common usage in my experience is:

release (noun): A version of software intended for use outside the development team. A release need not be customer-centric. Some teams, for instance, differentiate between internal release (e.g. for software QA or demo activities) and external release (e.g. for customers or production). Ideally a release is associated with a checkpoint in the version control system and generated through a well-defined, repeatable process. ("I'm creating the 1.2 release now.")

release (verb): The act of making a release version available to a wider audience. ("We're going to release 1.2 to QA tomorrow.")

deploy (verb): The act of installing and configuring a version of software onto a target system. The version need not be a release; in some environments you can most certainly deploy development versions. ("I'm deploying 1.2 to the public website.")

So to answer your specific questions:

  • Within a given team, these words should not be used interchangeably, but due to people drawing from varied experiences and definitions, there will often be confusion.

  • You can release a release.

  • You do not always necessarily "deploy" a release.
    (1) You can deploy things that are not releases, primarily for development purposes.
    (2) Embedded software goes through a different production process that is not generally called "deploying".
    (3) Consumer "deployments" are often simply called "installations" - one does not typically refer to a customer "deploying" Windows 8 on their home computer.

6
  • Nice answer. Do add a few lines in today's context of SaaS i.e. actors in release and deploy verbs. For example, when Microsoft releases a new version of Windows, the deployment is done by the purchaser. When Google release a new version of Gmail, deployment is done by Google itself. Nov 11, 2014 at 7:00
  • "The act of making a release version available to a wider audience" but you can't make it available to wider audience without deploying it to an actual server environment. Aug 31, 2022 at 8:46
  • 1
    @supertonsky - That's not true for all types of software. Look at the "Releases" tab in GitHub as an example. For some utility packages, a release could simply be a checkpoint in a version control system for reference. Consumer software may need to be downloaded and installed rather than deployed to a server. But as I noted, there is no universal definition that will fit all kinds of software/teams.
    – Lynn
    Sep 18, 2022 at 11:42
  • @Lynn I actually meant end users when I said wider audience. It just makes it clearer when deployment means to actually install the software so that it is available to end users. Makes it less confusing if we stick to that definition and just refer to release as a reference/checkpoint for a specific version of a software that can be deployed. End users wouldn't be able to use specific version (a release) of a software without deploying it. Sep 26, 2022 at 15:02
  • 1
    @supertonsky Not necessarily. In some environments, "release 1.2 to QA" can imply a philosophical transfer of responsibility ("this is ready for the QA team to deal with now") or even a transfer of software on physical media (CD or flash drives), both of which can be wholly independent of the deployment/installation process. That's why it's important to clarify what these terms mean within a given organization.
    – Lynn
    Oct 22, 2022 at 2:06
13

This is really a technical question, but since I can't think of a better place to answer it I'll do so here.

To release something (in a sales or product sense) is to make it available, usually for purchase.

To deploy something is to make it active, or start it working.

For example:

I release software by making it available for customers to purchase. Those customers then purchase it, take delivery, and deploy it to their websites.

For a concrete example, my new model of umbrella is released when it is put on shelves for people to buy. It is deployed for the first time when the first customer puts it up.

It can be a little more complicated. A website owner might deploy software they have purchased to their website, but since it is not used until one of their customers actually runs it, they sometimes talk about releasing it to their customers.

2
  • for the sake of additional context here: in the software development world (my world), a computer which is specifically purposed for compiling code into an executable application for the purpose of testing functionality is called a "deployer". that is to say, when i'm writing code, and i want to execute it to see if it works (but not necessarily make it available for general users), i send it to the deployer; e.g., i "deploy" it. Nov 10, 2014 at 17:09
  • This should have been the accepted answer. Aug 31, 2022 at 8:47
9
+50

What is the difference between "deployment" and "release"? (This question asks a general difference in a technical context but to be more specific, it can be related to a "code change".)

"Releasing" means "identifying a version which people are allowed to deploy".

"Deploying" means "preparing to use a release, e.g. by installing it on the production hardware."

"Releasing" is a multi-stage process and has slightly different meanings for each person or at each stage:

  • A developer might "release" (a.k.a. "commit") their change into the central repository
  • The integration server might "release" a sanity-checked build to the QA team
  • The QA team might "release" the build to alpha and/or beta testers
  • Eventually you have a "gold" release that's suitable for actual deployment

Can we use these words interchangeably? For example, Can we use both sentences below and can they have the same meaning?

  • I will release the change to production.
  • I will deploy the change to production.

They're slightly different.

  • "I will release the change to production" means "I give permission to the production team to allow them to deploy the change." (and I give the change to the production team, or give them permission to get the change for themselves from the repository)

  • "I will deploy the change to production" means "I myself will interact with the production system to install the change on the production hardware".

So, is "release" used as a noun mainly in this context?

It's a noun and a verb and an adjective.

  • "I release this version"
  • "This version is a release"
  • "This is a release version" (or "released version")

Are releases always deployed?

No: not if you have no customer, for example.

Also if you're doing 'continuous integration' then in theory, to some extent, you're continually creating "releases", e.g. they're "released" to the QA machine, but they're not always "deployed", e.g. "deployed" to the customer/production machine.

So, see also the different meanings of "release": e.g. an "alpha release" is released to "alpha testers" but not "deployed" to the "production" machine.


And for some humour:

Klingon Software Quality Assurance

What is this talk of 'release'? Klingons do not make software 'releases'. Our software escapes, leaving a bloody trail of designers and quality assurance people in its wake!

1
  • This should be marked as the correct answer. Simple and straight to the point. Oct 5, 2017 at 8:45
5

In software terms, a release is a version of an application that is published. As the program is worked on, lots of versions of the source code will exist as people hack on it. A release is a polished, tested version that is published, typically with a version number one greater than the last release.

To deploy means to push a new release to one or more machines, updating the current version. In web development, this means updating the version hosted on the production servers. It can also mean pushing a release to a set of managed machines over a network, as a software update. A lot of modern tools automate this process, which can be quite complicated. Either way, this process is called deployment.

2

When reading your Release and Deployment article, it's clear that release is used principally to mean that thing (software, in this case) that is moved to the test or live environment. Deployment is used principally to describe the process of moving that thing to the to the test or live environment.

These words obviously have verb counterparts, and they would have corresponding meanings. To release (verb) something would be to cause a release to exist. To deploy (verb) something would be to execute the process of deployment.

1
  • I understand this, I'm not simply asking definition differences. They are also used interchangeably in work environments. When do they become same? Is this an incorrect usage or did it become an accepted usage in time? I'm trying to get answers from experiences.
    – ermanen
    Jul 14, 2014 at 16:28
2

**To Release is to "Let go" "make available" **

To Deploy is to "send forward" or "use" an action

Hence, for employment :

A number of people were "released" (made redundant), whilst a number were re"deployed" (sent elsewhere for further action

In software:

the latest "release" ("Available" version) may be deployed ("sent forward" or "actioned") through updates, when "actioned" they would be the latest "deployments"

Release is passive do with it what you will , deployment is aggressive, actionable.

2

I download new releases of software constantly. I also positively affirm/authorize updates to be deployed within my networks I manage.

They cannot be used interchangeably for the people who understand the difference between release and deploy.

On a noun basis, release = available version. Full stop. Deployment is who is in the process of or has completed installation of software.

For example, Can we use both sentences below and can they have the same meaning?

I will release the change to production.
I will deploy the change to production.

No. You cannot release to production.

ITIL also defines one of the Role/Sub-Process as Release Deployment.

So, is "release" used as a noun mainly in this context?

It's a noun as adjective.

Are releases always deployed?

No. Some releases are skipped or a superseded release is deployed. A release that is testing is not yet deployed to production.

Can we release a release?

No. You release a version.

0

The distinction between release and deploy, when those terms are used in the discourse community of software developers, is quite strong when you are talking about a desktop application which is installed by the user, and rather soft when you are talking about a web application. For a desktop application or mobile app, "release" is the action of making the software available for installation by customers, whether that means posting a new release branch to a public VCS repository, putting downloads up for sale on an app store, or shipping CDs to a store. For a desktop application or mobile app, "deployment" is the action of actually installing the app on the user's desktop or mobile device. If the IT shop in a large corporation develops a mobile app for use by their employees, "release" is the process of preparing a final installation package, and "deployment" is the process of getting the app installed on the employee's mobile devices.

For a web application, "release" is either of two events - the designation of a particular build as the final build to be deployed, OR making the deployed code available to public users outside the organization. For a web application, "deployment" is the process of installing an application on the production server(s) and making sure that it will work.

So depending on who's using the terms and the exact nature of the project, "release" can occur either before or after "deployment."

0

Release is to make the product/build available for testing before deployment, usually sent from the development team.

In-between release and deployment is usually the testing and verification process. After that cycle is done, we move on to...

Deployment is to send the build out (usually Gold/Master) for either updates or installation, usually handled by whomever is in charge of the deployment process.

1
  • I would agree with you in a simplified environment. In my company, builds from the automation can ONLY be deployed to DEV. Then I approve the release from DEV to TEST. Which means they can ONLY be deployed in a DEV or TEST environment. The QA manager approves the release to PROD. The Operations manager also approves the release for deployment (or in other words, also approves the release). And then, and only then, after having all approbations can it be deployed by the operations team to a production environment. My point is: an artifact can be released multiple times (per environment).
    – Jeach
    Jun 9, 2016 at 16:14
0

Deployment of a software or system is not simply installing and using them.

Deployment has a connotation of "to use something effectively". That's why deployment is a process and involves some more activities.

As mentioned here, "release" is one of the initial activities necessary for deployment - namely for effective use

Not the answer you're looking for? Browse other questions tagged or ask your own question.