I am coming more from the web development angle. We build a module, test it and then deploy it. Some people call this last step (deploy) as 'release'. What's the difference? or are they the same things?
I think releases coincide with a version number... It will server you well to ask as detailed and specific of a question as possible. Think of downvotes as constructive criticism, people are here to help.– samusMar 15, 2017 at 13:58
1Deployment is the act of delivering a release, which in some cases can be extremely complex involving sophisticated operating system scripts.– samusMar 15, 2017 at 13:59
Are you doing web development for a particular site/app that you maintain or do you develop for use on other people's sites that they maintain?– JeffOMar 15, 2017 at 21:01
1release = release to public, deploy = install on server– EwanMar 16, 2017 at 9:47
I don't think the terms release" and "deployment mean exactly the same, thing I'm not sure they should be used interchangeably like that.
From a web development perspective:
Deployment refers to getting your program to a running state on a server. It doesn't need to be the production server. You can deploy an application/module to a testing server that is running on your own workstation or on a testing machine. You might perform many deployments during the development and testing stages of a module or application.
A release (I'm using "release" as a noun) of the application/module is usually a specific version of code/resources that has been assigned a name/number. This is usually done so that a user has trouble with the application/module, knowing the release number of the software that the user has can help determine where/when the bug may have been introduced and can also help track the process of fixing it. A release can be created when new features are added, or a set of bugs are fixed.
In the example you give, where the last step in the process can be called "release" or "deployment", there is probably some work that involves creating a release (assigning a number, etc...) and then immediately deploying that release to a production server.
It seems a little confusing to me. I try to keep these terms separate and I try to say things such as
I am deploying the newest production-ready release (1.3.5) to server.somehost.com". Then I will deploy the latest testing-release (1.4.1-beta) to test3.somehost.com
Deploy is a very loose term. Normally it refers to installing the code where it can be used. You can deploy released code, or code that is no where ready for release. In web development, it is common to deploy code to a test environment before testing it. I've created build chains that built code and deployed it automatically to a development server for developer testing. Many build chain tools include the capability to deploy successful builds.
A common release cycle is (labeling and deployment to production are not always done):
- build, deploy and test code until it is potentially ready for release;
- label that code as a release candidate;
- deploy the release candidate for pre-release testing;
- generate release candidates until a release candidate is stable enough for release;
- label the stable release candidate as a release version; and
- deploy the release version to production.
Some build chains label or otherwise mark every build. Release candidates are identified by the build label. Release candidates and and release versions may be tagged with an additional label.
Creating a release consists of compiling a program (Usually an application or a library) and incrementing the version number of what you just compiled in your source control system. There might be additional steps to your release process like sending out emails to those that might be interested.
After you created a release you can deploy it. You deploy desktop applications to users, libraries to a public repository and web applications to servers.
If you deploy "snapshots" without making a release or don't use versioning, I wouldn't call that releasing.
What do you mean by deploying snapshots? Like copying one specific dll from a Web Application project into the associated web server directory?– samusMar 15, 2017 at 14:04
I don't know about others, but I would not use the word "deploy" for releasing shrink-wrap desktop software to customers. Mar 15, 2017 at 16:41
@whatsisname you would use both words if you were writing an internal desktop application that needed to be sent to employee machines. Or you would use deploy by itself if you were the IT department taking the shrink-wrapped software and shipping it to all the desktops. Mar 15, 2017 at 20:07
Take a typical app.
I develop a new version and release it: it's available for installation (App Store / Play Store, Steam, my site, etc).
My customers notice that, read the release notes, plan an upgrade, or just press "Update to latest version", and this deploys the application to their devices.
Suppose the updated app has a bug that affects some users. These users discover the problem and roll back to a previous version. That is, they deploy a different release than I've just made.
In other words:
- release = make available.
- deploy = actually make it run on target devices.
There is a deep discussion on the differences at https://english.stackexchange.com/questions/182724/what-is-the-difference-between-deployment-and-release
To sum it up,
- Deploy - putting a piece of software somewhere
- Release - making a new version (or feature) available to use by users
In terms of web development, sometimes you might deploy a new version, but at the same time new features are disabled (using feature flags) and are not released until a business dicision is made to release these.
In many cases it makes a lot of sense, take for example the Facebook Messenger app. It was deployed and active on Facebook servers for a whole year before users could start actually using it.