The biggest lessons we have learnt as a startup are in business operations. Some context: our team consists entirely of developers. It has been that way from the beginning. We have always been more comfortable designing algorithms and user interfaces. We have not enjoyed the same flair with the business end of operations. Us evolving into a growing and thriving business meant we had to make ourselves more productive. We had to find ways to optimise our profitability without compromising the value that our clients and partners have grown accustomed to. This meant gap closing between the development and the business operations of the Devshop. This became the starting point of redesigning our DevOps culture.
What is DevOps
Donovan Brown, Principal Program Manager at Microsoft defines DevOps as
“The union of people, processes, and product to enable continuous delivery of value to the users”
To increase the value that we offered to our partners and clients meant that we had ship code faster. We had to do this while delivering the same kind of work that had made them choose us. Achieving this meant engineering and operation concerns had to work together much more seamless. This is through client on-boarding, planning, development, testing, deployment and maintenance phases of our process.
Using the right tools
An undoubtable aid to our DevOps culture is Visual Studio Team Services. By adopting VSTS we got features like Source Control Management, Private Repositories, Planning and Workflow Management tools like Kanban boards, Tools for Continuous Integration and Continuous Delivery. Visual Studio Team Service gave us an end to end solution for all our technical devops needs. The beauty of Visual Studio Team Services was that is allowed us to automate most of the mundane task of our process and let members across our team do the less mundane tasks. The VSTS platform allows us to use any other framework for any other part of the process if we feel we need to.
We also adopted Microsoft Azure as our platform of choices for web service for a number of reasons. One of these reasons is how seamlessly Azure will integrate with Visual Studio Team Services. This made a lot of the processes we implement available through very easy processes.
Automation- what a beautiful thing
One of the sweet benefits of adopting this new DevOps culture was the number of things that we have automated.
A single “git push” command from our code editors now sets in motion a beautiful process for a number of our projects. A case of a Webapp with a ReactJS frontend and a NodeJS backend – a single push triggers the following process.
- Uploads Code to a private team repository
- Upload then triggers a Continuous Integration Process.
- The CI Process starts a remote hosted machine.
- The code in the repository is moved to that machine.
- A Powershell Script triggers “npm run build” command on the remote hosted machine.
- Process creates React /build deployment-ready folder.
- Once the process on the hosted machine is complete is triggers an Azure Web Deployment.
- The /build folder is moved to Azure.
- After completion an email is sent notifying whoever triggered the build on whether it has been successful.
The beauty of this process is that it is flexible to my technology stack and the DevOps culture we choose to adopt. We can choose to run tests at the end of the process. We could write scripts to have the code pushed to the live site if it passes a set of tests.
Added value for clients
The level of automation in our process has now allowed us to serve our clients better. We now have backups for every project we take on for our clients. As a result we can redeploy their work for them with the push of a button. Also noteworthy, small changes are made and the deployment process triggered by a single “git push” command. Due to the automation, a large cost overhead is avoided. Our development process has improved significantly because clients can see our internal project communication while we work on their project. Clients are even able to see live versions of the work as it progresses. We now provide telemetry for our clients so that they know when to revert to a previous deployment according to response by users.
Added value for Users
For applications like Dialogue and Foodie, we can now address bugs more promptly and ship new features much faster. Because we collect telemetric data with every deployment, we are able to see our user’s response to every deployment. This allows us to continuously and consistently deliver more value to end-users
Added value for developers.
While running a task like “npm run build” is simple, it runs for a few seconds which may take a developer out of the zone. Our new adopted process allows all this to happen on an external machine. Our previous process of deployment process for example, required for a developer to zip a file, login in to our hosting platform, navigate to the correct folder, upload then unzip the folder. This needed to happen whenever we wanted to update clients on changes we have made. This has greatly improved productivity.
This article could never exhaust the benefits we have had at the Devshop after adopting our new DevOps culture. The adoption has increased our productivity on monumental levels and we will be sharing more articles on the technical and non-technical aspects. Overall, we have managed to make developer more productive resulting in greater client satisfaction and consequently healthier profits. We recommend that organisation take their DevOps seriously. While we have achieved much from the time we to the decision to adopt devops, it is is a continuous process and we are always looking for ways to make ourselves better