Recommended Software development life cycle
Tags: devops, cicd, testing, productivity
Published: 2023-02-21 19:11:52

###### I am always posting provoking post on my Linkedin, and I have decided to replicate those here. [Let's socialize!](https://www.linkedin.com/in/alexsandro-souza-dev)

This is my SDLC framework for teams to manage the complexity of software development and ensure that products are delivered successfully. We want to constantly release to production based on [team communication](https://dev.to/apssouza22/practical-ways-to-improve-team-communication-43f0), QA engineers' review, [QA roles and responsibilities](https://dev.to/apssouza22/quality-assurance-roles-and-responsibilities-533e) and [automated tests](https://dev.to/apssouza22/we-are-testing-software-wrongly-and-it-costs-a-lot-of-money-23o5). 

By integrating CI/CD into the SDLC process, development teams can identify and fix issues early in the development process, reduce development cycle times, and achieve faster time to market. The CI/CD pipeline automates the build, testing, and deployment of software products, enabling development teams to deliver high-quality code more quickly and with greater efficiency.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b3h27wren58ovmhbkyds.png)
 
## Trunk-based development workflow

Trunk-based development (TBD) is a popular software development methodology that emphasizes the continuous integration of code into a shared mainline or "trunk.". Trunk-based development encourages developers to commit their changes frequently and ensures that code changes are tested in the same environment as the rest of the codebase. This helps to prevent integration issues and reduces the likelihood of bugs making their way into production.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3h8yqtelb50emgdnqdvl.png)

## Release Life cycle
- Developers will merge to the Main branch and deploy to development after getting at least one approval.
- Developers will trigger the staging deployment after manual testing and E2E tests pass.
- QA will manually test on staging and start working on an automated E2E test for the User story.
- Developers will release to production after the approval from QA engineers and Product owner
- Developers will close the User stories after the Product Owner approval
- QA will finish the automated E2E tests covering the user journey of the feature


## Release to the development environment
The code merged to the main branch is automatically deployed on the Development environment and run E2E tests.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l1yq10iqo2rodnrqohcb.png)

## Release to the staging environment
The staging release is triggered after creating a `release-*` tag.

## Release to the production environment 
The production release is a manual step. Once the Staging E2E test passes, a manual job button will be enabled, and then we can click on Production deploy job to release the code to production.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8ykydfhg2k5z42c4fmen.png)


## Tech leadership playbook

Check out my [tech leadership playbook](https://dev.to/apssouza22/tech-lead-playbook-523)