Recently, the West Monroe Partners Performance Services Dev Ops team was tasked with improving the functionality of a highly visible internal web application. This app was used by every employee at the company, and there were a number of enhancements and new features that had been requested. After an initial project assessment, it was determined that in order to deliver what was requested, it was necessary to make improvements to the development environment and toolset. These improvements would make it easier for us to develop current and future feature requests.
One of the biggest challenges we faced was that the application code and database objects were developed separately. They were housed in different code repositories and weren’t on the same version control system. Part of the code was in SVN while some was in Team Foundation Services and Version Control (TFS/TFVC). Builds and deploys were manual and therefore prone to mistakes.
How did the application get to that state? As the client grew and evolved, so did the web application. Over the years, numerous developers had come and gone and worked on with the application. Individual methodologies, styles, and preferences permeated the code. As the importance of the application expanded, it became clear that a dedicated team was needed to shore up both the code and the development process. In order to successfully complete the project, the team delivered the following:
- Code Repository Consolidation
- The code would no longer be housed in separate repositories. It was decided that we would migrate the SVN repo to Git within the Visual Studio Online (now called Visual Studio Team Services) environment.
- Elimination of Manual Deployments
- The driving force for using Visual Studio Team Services were the Dev Ops tools that VSTS provided. The automated build and deployment tools could be leveraged to eliminate the need for manual deployments.
- Improved Request Response
- VSTS also provided project management tools that made managing various work items (new features, enhancements, bugs) easier.
Accomplishing the first goal proved challenging. Not only did we have to migrate the SVN repo to Git, but we also had to do the same with a TFVC repo. Additionally, the merge had to be completed without losing revision history. The check-in comments contained important information as to why certain application functionality had changed over the years, which made it critical to retain that information. With the help of a number of resources (see links below), the migration was a success.
Once the code was under one repository in Visual Studio Team Services, we were able to take advantage of its automated build and deployment tools. After configuring it for the client environment, we were able to automate deployments. Builds that had once taken up to an hour were completing in a few seconds. The project greatly improved the production environment, as well as, the deployment and UAT environments. The improved tools provided almost immediate feedback on issues, which helped improve quality and enabled much quicker feedback from stakeholders.
This project ultimately led to a better product and more engaged user base, which is the goal of any successful project.