Software deployment is all of the activities that make a
software system
A software system is a system of intercommunicating software component, components based on software forming part of a computer system (a combination of Computer hardware, hardware and software). It "consists of a number of separate Computer progr ...
available for use.
Deployment can involve activities on the producer (
software developer
Software development is the process of designing and Implementation, implementing a software solution to Computer user satisfaction, satisfy a User (computing), user. The process is more encompassing than Computer programming, programming, wri ...
) side or on the consumer (
user) side or both. Deployment to consumers is a hard task because the target systems are diverse and unpredictable.
Software as a service
Software as a service (SaaS ) is a cloud computing service model where the provider offers use of application software to a client and manages all needed physical and software resources. SaaS is usually accessed via a web application. Unlike o ...
avoids these difficulties by deploying only to dedicated servers that are typically under the producer's control.
Because every software system is unique, the precise
processes or
procedures within each activity can hardly be defined. Therefore, "deployment" should be interpreted as a ''general process'' that has to be customized according to specific requirements or characteristics.
History
When computers were extremely large, expensive, and bulky (
mainframe
A mainframe computer, informally called a mainframe or big iron, is a computer used primarily by large organizations for critical applications like bulk data processing for tasks such as censuses, industry and consumer statistics, enterpris ...
s and
minicomputers), the software was often bundled together with the hardware by manufacturers. If
business software
Business software (or a business application) is any software or set of computer programs used by business users to perform various business functions. These business applications are used to increase productivity, measure productivity, and per ...
needed to be installed on an existing computer, this might require an expensive, time-consuming visit by a
systems architect or a
consultant
A consultant (from "to deliberate") is a professional (also known as ''expert'', ''specialist'', see variations of meaning below) who provides advice or services in an area of specialization (generally to medium or large-size corporations). Cons ...
. For complex, on-premises installation of
enterprise software
Enterprise software, also known as enterprise application software (EAS), is computer software used to satisfy the needs of an organization rather than its individual users. Enterprise software is an integral part of a computer-based information ...
today, this is sometimes still the case.
However, with the development of
mass-market software for the new age of
microcomputers in the 1980s came new forms of
software distribution first
cartridges, then
Compact Cassette
The Compact Cassette, also commonly called a cassette tape, audio cassette, or simply tape or cassette, is an analog magnetic tape recording format for audio recording and playback. Invented by Lou Ottens and his team at the Dutch company ...
s, then
floppy disk
A floppy disk or floppy diskette (casually referred to as a floppy, a diskette, or a disk) is a type of disk storage composed of a thin and flexible disk of a magnetic storage medium in a square or nearly square plastic enclosure lined with a ...
s, then (in the 1990s and later)
optical media, the
internet
The Internet (or internet) is the Global network, global system of interconnected computer networks that uses the Internet protocol suite (TCP/IP) to communicate between networks and devices. It is a internetworking, network of networks ...
and
flash drives. This meant that software deployment could be left to the customer. However, it was also increasingly recognized over time that configuration of the software by the customer was important and that this should ideally have a user-friendly interface (rather than, for example, requiring the customer to edit registry entries on Windows).
In pre-internet software deployments, deployments (and their closely related cousin, new software releases) were by nature expensive, infrequent, bulky affairs. It is arguable therefore that the spread of the internet made end-to-end
agile software development
Agile software development is an umbrella term for approaches to software development, developing software that reflect the values and principles agreed upon by ''The Agile Alliance'', a group of 17 software practitioners, in 2001. As documented ...
possible. Indeed, the advent of
cloud computing
Cloud computing is "a paradigm for enabling network access to a scalable and elastic pool of shareable physical or virtual resources with self-service provisioning and administration on-demand," according to International Organization for ...
and
software as a service
Software as a service (SaaS ) is a cloud computing service model where the provider offers use of application software to a client and manages all needed physical and software resources. SaaS is usually accessed via a web application. Unlike o ...
meant that software could be deployed to a large number of customers in minutes, over the internet. This also meant that typically, deployment schedules were now determined by the software supplier, not by the customers. Such flexibility led to the rise of
continuous delivery as a viable option, especially for less risky
web application
A web application (or web app) is application software that is created with web technologies and runs via a web browser. Web applications emerged during the late 1990s and allowed for the server to dynamically build a response to the request, ...
s.
Other options for software deployment include
blue–green deployment and
canary release deployment.
Deployment activities
; Release: The
release
Release may refer to:
* Art release, the public distribution of an artistic production, such as a film, album, or song
* Legal release, a legal instrument
* News release, a communication directed at the news media
* Release (ISUP), a code to i ...
activity follows from the completed the
development process and is sometimes classified as part of the development process rather than deployment process. It includes all the operations to prepare a system for
assembly and transfer to the computer system(s) on which it will be run in production. Therefore, it sometimes involves determining the
resources
''Resource'' refers to all the materials available in our environment which are Technology, technologically accessible, Economics, economically feasible and Culture, culturally Sustainability, sustainable and help us to satisfy our needs and want ...
required for the system to operate with tolerable performance and planning and/or documenting subsequent activities of the deployment process.
; Installation and activation: For simple systems,
installation involves establishing some form of a
command
Command may refer to:
Computing
* Command (computing), a statement in a computer language
* command (Unix), a Unix command
* COMMAND.COM, the default operating system shell and command-line interpreter for DOS
* Command key, a modifier key on A ...
, shortcut, script or
service for executing the software (manually or automatically). For complex systems it may involve configuration of the system possibly by asking the
end-user
In product development, an end user (sometimes end-user) is a person who ultimately uses or is intended to ultimately use a product. The end user stands in contrast to users who support or maintain the product, such as sysops, system administrato ...
questions about its intended use, or directly asking them how they would like it to be configured and/or making all the required subsystems ready to use. Activation is the activity of starting up the
executable
In computer science, executable code, an executable file, or an executable program, sometimes simply referred to as an executable or binary, causes a computer "to perform indicated tasks according to encoded instruction (computer science), in ...
component of software for the first time (not to be confused with the common use of the term ''activation'' concerning a software license, which is a function of
Digital Rights Management
Digital rights management (DRM) is the management of legal access to digital content. Various tools or technological protection measures, such as access control technologies, can restrict the use of proprietary hardware and copyrighted works. DRM ...
systems.)
: In larger software deployments on
servers, the main copy of the software to be used by users - "production" - might be installed on a production server in a production environment. Other versions of the deployed software may be installed in a
test environment,
development environment and disaster recovery environment.
: In complex
continuous delivery environments and/or
software as a service
Software as a service (SaaS ) is a cloud computing service model where the provider offers use of application software to a client and manages all needed physical and software resources. SaaS is usually accessed via a web application. Unlike o ...
system, differently-configured versions of the system might even exist simultaneously in the production environment for different internal or external customers (this is known as a ''multi-tenant architecture''), or even be gradually rolled out in parallel to different groups of customers, with the possibility of canceling one or more of the parallel deployments. For example,
Twitter
Twitter, officially known as X since 2023, is an American microblogging and social networking service. It is one of the world's largest social media platforms and one of the most-visited websites. Users can share short text messages, image ...
is known to use the latter approach for
A/B testing
A/B testing (also known as bucket testing, split-run testing or split testing) is a user-experience research method. A/B tests consist of a randomized experiment that usually involves two variants (A and B), although the concept can be also exte ...
of new features and
user interface
In the industrial design field of human–computer interaction, a user interface (UI) is the space where interactions between humans and machines occur. The goal of this interaction is to allow effective operation and control of the machine fro ...
changes. A "hidden live" group can also be created within a production environment, consisting of servers that are not yet connected to the production
load balancer, for the purposes of
blue–green deployment.
; Deactivation: Deactivation is the inverse of activation and refers to shutting down any already-executing components of a system. Deactivation is often required to perform other deployment activities, e.g., a software system may need to be deactivated before an update can be performed. The practice of removing infrequently used or obsolete systems from service is often referred to as
application retirement Application retirement, also called application decommissioning and application sunsetting, is the practice of shutting down redundant or obsolete business applications while retaining access to the historical data. Legacy applications are often m ...
or application decommissioning.
; Uninstallation: Uninstallation is the inverse of installation. It is the removal of a system that is no longer required. It may also involve some reconfiguration of other software systems to remove the uninstalled system's
dependencies.
; Update: The update process replaces an earlier version of all or part of a software system with a newer release. It commonly consists of deactivation followed by installation. On some systems, such as on Linux when using the system's
package manager
A package manager or package management system is a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer in a consistent manner.
A package manager deals wi ...
, the old version of a software application is typically also uninstalled as an automatic part of the process. (This is because Linux package managers do not typically support installing multiple versions of a software application at the same time unless the software package has been specifically designed to
work around this limitation.)
; Built-in update: Mechanisms for installing updates are built into some software systems (or, in the case of some operating systems such as
Linux
Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
,
Android and
iOS, into the operating system itself). Automation of these update processes ranges from fully automatic to user-initiated and controlled.
Norton Internet Security is an example of a system with a semi-automatic method for retrieving and installing updates to both the antivirus definitions and other components of the system. Other software products provide query mechanisms for determining when updates are available.
; Version tracking: Version tracking systems help the user find and install updates to software systems. For example: The Software Catalog stores the version and other information for each software package installed on a local system. One-click of a button launches a browser window to the upgrade web page for the application, including auto-filling of the user name and password for sites that require a login. On Linux, Android and iOS this process is even easier because a standardized process for version tracking (for software packages installed in the officially supported way) is built into the operating system, so no separate login, download and execute steps are required so the process can be configured to be fully automated. Some third-party software also supports automated version tracking and upgrading for certain Windows software packages.
Deployment roles
The complexity and variability of software products have fostered the emergence of specialized roles for coordinating and engineering the deployment process. For desktop systems, end-users frequently also become the "software deployers" when they install a software package on their machine. The deployment of
enterprise software
Enterprise software, also known as enterprise application software (EAS), is computer software used to satisfy the needs of an organization rather than its individual users. Enterprise software is an integral part of a computer-based information ...
involves many more roles, and those roles typically change as the application progresses from the test (pre-production) to production environments. Typical roles involved in software deployments for enterprise applications may include:
* in pre-production environments:
** application developers: see
Software development process
In software engineering, a software development process or software development life cycle (SDLC) is a process of planning and managing software development. It typically involves dividing software development work into smaller, parallel, or s ...
** build-and-release engineers: see
Release engineering
** release managers: see
Release management
** deployment coordinators: see
DevOps
DevOps is the integration and automation of the software development and information technology operations. DevOps encompasses necessary tasks of software development and can lead to shortening development time and improving the development life ...
* in production environments:
**
system administrator
An IT administrator, system administrator, sysadmin, or admin is a person who is responsible for the upkeep, configuration, and reliable operation of computer systems, especially multi-user computers, such as Server (computing), servers. The ...
**
database administrator
A database administrator (DBA) manages computer databases. The role may include capacity planning, installation, configuration, database design, migration, performance monitoring, security, troubleshooting, as well as backup and data re ...
** release coordinators: see
DevOps
DevOps is the integration and automation of the software development and information technology operations. DevOps encompasses necessary tasks of software development and can lead to shortening development time and improving the development life ...
** operations project managers: see
ITIL
See also
*
Application lifecycle management
Application lifecycle management (ALM) is the product lifecycle management (governance, development, and maintenance) of computer programs. It encompasses requirements management, software architecture, computer programming, software testing, ...
*
Product lifecycle management
In industry, product lifecycle management (PLM) is the process of managing the entire lifecycle of a product from its inception through the engineering, design, and manufacture, as well as the service and disposal of manufactured products. ...
*
Systems management
Systems management is enterprise-wide System administration, administration of distributed systems including (and commonly in practice) computer systems. Systems management is strongly influenced by network management initiatives in telecommunic ...
*
System deployment
*
Software release
*
Definitive Media Library
*
Readme
*
Release management
*
Deployment environment
In software deployment, an environment or tier is a computer system or set of systems in which a computer program
A computer program is a sequence or set of instructions in a programming language for a computer to Execution (computing), e ...
References
External links
* Standardization efforts
*
Solution Installation Schema Submission request to W3C*
OASIS Solution Deployment Descriptor TC*
OMG Specification for Deployment and Configuration of Component-based Distributed Applications(OMG D&C)
*
JSR 88: Java EE Application Deployment* Articles
**
* Resources
Visual Studio Release Management
{{DEFAULTSORT:Software Deployment
Software distribution
System administration
Software release