What it is and what it is needed for

Deployment

Deployment is an important step in web and software development. In this article we will show you what deployment is and what it is used for.

What is Deployment #

Deployment is the step of publishing software or installing a software on a device. Whether it is going live with a website or uploading a mobile app to the app store. This step should be as automatic as possible and should not require more than pushing a button. To ensure this, we always include automated deployment in our projects.

Dev, Staging and Production #

When developing a website or web app, it is usually necessary to make changes to the design or functionalities during the process. In order to ensure efficient communication with our customers, we set up a so-called staging environment, which is not publicly visible, but only visible to the customers. In this staging environment, the current development status of a website can be deployed very easily. This way, changes can be presented without delay on a page that is only visible to our clients and can be improved if necessary. Once the feedback has been implemented and approved, the page can then be deployed to the production environment, i.e. to the place where the application or website will be accessible to the intended users.

Deployment Tools #

To deploy a website, several tools are needed. In this section we show some of these tools and explain what they are used for.

Build and Deployment Pipeline #

The deployment pipeline is the entire flow of a deployment, it consists of a sequence of steps that must be performed in order to deploy the finished software. We use GitlabCI and CircleCi for our deployment.

Docker #

Docker is often used for deployment. Docker is a technology that allows you to create containers. Containers are environments that contain all the components needed for the software running in them. This ensures that everything that happens in the containers always performs the same way and all dependencies are in place. For example, the "build step" of a website can be done in a container in the deployment pipeline. In this step, the website is generated from code.

Environment Variables #

In almost all projects environment variables must be set. These variables can be access data for databases, license keys or passwords. These values can be set in a secure storage and then retrieved in the steps of the build pipeline. This way, all values are stored securely, but are available when they are needed and when the software is deployed.

Unit Tests / Integration Tests #

Tests are used to ensure the functionality of software. These are executed every time the software is changed. This way, after each change, the developers can see if the software is still working properly.

An Important Foundation #

Automatic deployment is very important to save time and money. Once all the pipeline settings have been set, it is almost never necessary to spend time on them again. A good deployment pipeline is the foundation for efficient software development.