What is "deploy"
Implantation or Deployment consists of a number of activities necessary to obtain a program available for use outside a development environment (for example, on websites, Pcs, smartphones and/or tablets).
At a high level, deployment activities need to:
- Compile the program in a suitable format;
- Distribute the program to the final environment (for example, via the Internet, an app store or Cds);
- Install dependencies (usually libraries, runtimes and application servers);
- Configure the target environment (for example, where the database is or application server runtime parameters).
Deployment can be done in several ways according to the type of program, for example:
- Deploy a web application written in Java, we can add Jars for web containers;
- Deploy a desktop application on Windows, we can create an installation program and burn it to CD;
- Deploying an application to a cloud environment (such as Heroku or Windows Azure), we may use ad-hoc programs or programs widely known as
git
that trigger a series of server-side operations; - Deploy an app to an app store that may require sending the order to the store owner for approval. If the order is approved, then the store owner will publish the new version, making it available to users;
- Deployment may require the distribution of specially configured virtual machines with the correct software version and dependencies.
There are many challenges in deployment that revolve around two main themes:
- Ensure that programs exhibit the same behavior in production as they do in testing and development. To achieve this, there are usually several test environments (in addition to development), in which software is thoroughly deployed and tested before being released into the production environment;
- Be able to revert to a previous stable version, in case the current version behaves erratically. The deployment environment can help by providing some facilities to maintain previous versions and install them when needed.