Company Project Brief
Company is developing application to provide online SaaS kind of service. To develop this application, developer spread across geographically and developing different modules of application. Current development process followed by company:
- Team of developers are sitting in India location and working on application locally. Each developer works on individual module or feature of application.
- Once the module developed they should merge code and combine into application. Application will be test by lead developer and give approval for feature release for project manager for further testing and share the feedback.
- Project manager test and verify application feature and approve for further release to CTO & CEO to implement that feature on production server.
- They are using TFS (Team Foundation Service) locally to manage code repository
As per the current development process, company is facing below challenges:
- Code merging is one of the biggest challenge for developers to combine all the features developed by them and release build for testing
- Each time they have to create local repository and then follow some manual process to release build version of application
Due to this development process takes longer time for releasing new features to application
- There was no automated process to test and deploy application for dev, stag and production environment
Company wanted to overcome development challenges and build robust build process for application development. The process should follow:
- System driven code merge for developers, so that they can get rid of manual process for code management
- Having right build process setup according to DevOps standards
- Configuring build process or workflow to release build version of application features using existing development tools
Securing deployment process to prevent unauthorized application deployment
- Code version management to track product feature release and managing code repositories
Company wanted to achieve all the business objective using Cloud Services. Need centralized code management tool which helps in automating development process. Workflow process should map with existing development tools like Visual Studio 2017 and Git.
VSTS diagram explain the entire development workflow designed for application lifecycle. Let’s understand above process in step by step explanation:
Creating project with VSTS is initial steps to automate build process. Developers can create project and manage individual branches under that project and release their newly developed module to the application. Creating individual branch resolves the problem of code management and developers can merge their application code in final repository.
Developer will push their respective code to their own branch in VSTS. Once the code tested and verified with no bugs, developers can perform pull request from their branch to staging branch and merge the code between their branch and staging branch.
Once the project gets created, VSTS allows company to create group and add members to that group.
By adding members to the project, they can edit code, build and release or receive emails alerts when changes made to code repository. Also, this process helped company to secure unauthorized code deployment and setup the proper approval process.
Creating Code Branch for Developers
This activity helped company to setup individual code branch for developers, so that they can manage proper coordination between developers. Apart from individual branch, two more gets created i.e. Master branch and Staging branch, where all final code will get pushed.
According to architecture flow, staging branch will have the code where the developers will commit their work and submit to project to QA team for testing environment. Once QA team approve the functionality, code will be pushed to master branch.
Creating Project Repositories
To manage each development version, developer needs to create code repositories. This will help company to define code versioning and manage future development process.
Creating Project Build and Release
This process defines the final build version, where code gets pushed from staging branch to master branch. Build environment is required to push it to the QA and Production environment.
Once the build process successfully completed, it is time to push the generated Artifact (build and compiled code) to the server.
While releasing build version and as per the business objectives, we can define build release approver which helps organization to define automation workflow. As per diagram, there are three approvers for build release, Lead Developer, CTO & CEO. As soon as build release get triggered, it will send email to the approvers and ask for their permission to release the final code to production or QA environment. Once they approve it will automatically push the code to QA or Production site on Azure.
This is how overall solution delivered to company for DevOps optimization using Visual Studio Team Service, integration workflow process for code management and automate build release process for application development.