After new code is deployed and introduced all changes, we go to the Deployment and Release stage.

Deployment vs. Release

We believe it is important, first of all, to make a clear distinction - the terms software release and deployment may sound similar, but they should be understood in separate terms.

«The release of a specific code version is referred to as a software release, and its dependencies are made available for use. The process of getting an application working on a target device, such as a test server, is called software deployment.»

Dmitry Kononenko, Project Manager
Dmitry Kononenko, Project Manager

Key differences

Deployment Release
Process involves shifting the code from one environment to another. Set of changes that are delivered to the production environment.
There are often updates in the production environment for software releases. The last phase of the Software Development Life Cycle, which is carried out across multiple domains.
Production-ready code. Code may not be production-ready.
Less risk for users to encounter bugs/errors because the environment is a more controlled. Higher risk that users will encounter bugs, and errors in software.

«Deployment in software development is a process that involves making software available for use. Since every software has its own unique features and functions, the process should be customized according to the requirements of the users. Having clear deployment phase activities and using deployment techniques is a key to successful software implementation.»

Dmitry Kononenko, Project Manager
Dmitry Kononenko, Project Manager

During phases of the deployment process and beyond, we take care of deploying new code and any changes introduced to the product to ensure that the software performance matches the requirements,

The deployment phase is the final step of the Software Development Lifecycle (SDLC) in the process of developing software that's of the highest quality. It helps engineering teams save money and time while producing software that's ideal for their customers.

The various software deployment environments used during the development stage production. They are production, staging, User Acceptance Testing (UAT), and preview. 

Preview Development UAT Staging Production
Who uses Developers,
testers, product
owners
Developers Actual users
for trial period
QA engineers Actual users
for business
When After Pull
request are
verified
First
Deployment
After testing
is completed
on Staging
After approval
on Development
After approval
on UAT
Production
Data
No customer No customer Moderate Limited Full
Staility Less Less High Stable High

Let’s look closer at the deployment process phases.

Mad Devs software deployment process phases:

software deployment process phases

Covering code in tests

At every stage of the development process, we cover code in tests to detect and eliminate bugs. Our experience shows that testing takes from 30 to 50% of the time needed for development. We use programming and testing simultaneously. Even though our methodologies are adapted to different projects, the core phases of the process remain the same. These are the same steps that are required to ensure that the software product is viable.

It doesn’t matter whether we work with an existing codebase or start a new product; bugs will appear. We always add tests while fixing the bugs. This approach prevents them from reappearing later.

To meet our testing phases, you can read the article:

Applying CI/CD pipelines

We work on complex projects. Therefore, using continuous integration and the continuous delivery pipeline is a common practice in our company.

Our developers avoid the so-called integration hell by implementing continuous integration. This process allows them to keep working on the same code while reducing the time it takes to integrate all of their work. To launch tests every time a new change is introduced, we need a special service or tool to monitor the changes and push the testing launch. There are many such tools. We can choose one depending on the project’s specifics.

Continuous delivery is an extension of continuous integration. It deploys all code changes to a testing or production environment automatically. Instead of suffering from manual deployment, you push a button, and your code is deployed. One of our main rules - Once the deployment process starts, the need for human intervention shall be absent.

Our best CI/CD pipeline practices are in this article:

Product Release

Once we have ensured that the software works as expected, the product becomes available to the end-users. After a new software version is released, it is made available to a select group of users and testers. Additionally, we collect feedback, and based on the feedback received, further enhancements will be made.

We collect feedback because it directly relates to the Agile methodology that Mad Devs use to build their work

Deployment in Agile methodology

In most agile projects, a release is usually carried out throughout the entire project. This allows the end-users to get a deeper understanding of the system and improve its performance. During a non-repetitive software deployment approach, the only people who can see the product are the few end-users and the company. On the other hand, with deployment, the entire community can use the software.

Although agile deployment is often regarded as a testing step, it is actually not a system-wide deployment. Instead, it is a group effort where the users are involved in improving the system.

«The goal of an agile deployment is to make the software available to a specific set of users in a testing environment that is as close to real-world conditions as possible. This allows the users to continuously test the software and return it for further improvement.”

Dmitry Kononenko, Project Manager
Dmitry Kononenko, Project Manager

Even if it is the last stage, due to the complexity of the software product and the number of changes that are required, the maintenance phase is typically carried out following the delivery of the final product.

Perform better with the order in processes

There are various requirements that the project team must follow during the deployment process to ensure that the technology and code are correctly deployed.

That's why we take great care to ensure that the various processes that are involved in developing software are synchronized properly. This includes the planning and execution of tests, the detailed specs writing, and the synchronization of the team.

Our process book has been carefully curated to bring you the best practices for every step of the process. You can download it here.

Approach to the Software Development Process
Read Ebook
Approach to the Software Development Process
Frequently Asked Questions

Case Studies