How web developers build and release code is constantly changing as the tools we use become smarter and more efficient. Not long ago, it was commonplace to write code and then manually move the new or modified files up to testing or production server. This worked, but it’s slow and there was a high degree of risk for breaking changes. As the web evolved and collaboration tools and methodologies evolved with it, a modern workflow took form that is considerably different than before. This post will discuss the modern methodology of continuous delivery (CD) and how we use it at Acro Media for agile ecommerce web development.
It should be noted right off the bat that a development cycle will change from one organization to the next, and possibly even project to project, so what I discuss here might not be exactly the same as what you would find with another development firm.
Before I get to continuous delivery, let’s take a quick look at how a project is structured so that we can see where the continuous delivery methodology fits within the overall project. Acro Media has published our own iterative approach to development, our development cycle if you will. We call it the Acro Purpose Driven Development Method. This method outlines, at a high level, the basic idea of how we work towards a successful end-goal. It breaks down the development cycle into a series of easily digestible phases and explains some of the activities that take happen in each phase. Not every phase is always required, but it provides us and our clients with a path to follow with each project, big or small.
While it’s easy to write “what we do”, actually doing it in an efficient manner is a whole other story. This is where the pieces of continuous deployment come in.
Mixing in the Agile methodology
Being able to see the phases of our development cycle is one thing, but actually pulling it off is another. From start to finish, we often follow an approach similar to the Agile methodology.
Agile means we work towards our end-goal through a series of short sprints. A sprint is a grouping of tasks where each task is assigning effort points to more easily understand how much work can be completed within a given timeline. Sprints get completed in sequence until the end-goal is met and the changes are taken live.
Unlike waterfall projects where a job is worked on until it’s done, Agile sprints allow smaller segments of the project to be completed iteratively which gives a clearer indication of the overall completed status of the project. Agile also enables easier on-the-fly changes in direction or timeline changes should an unforeseen event occur. It ensures that progress is always being made continuously in whatever direction is required.
Of course, not every project requires an Agile approach. The method of project management used is decided on a project-per-project basis and is even sometimes determined by the client (i.e. if there is deeper collaboration between our teams and they have a project management style that works for them).
Mixing in DevOps
From development through to launch we take a DevOps approach to automate and monitor as much of the development cycle as we can. DevOps provides us with a lot of fantastic tools that makes our lives easier and ensures a quality result. When a developer working on a sprint pushes some code, our DevOps setup puts that code through a series of code quality tests and checks automatically.
If a test fails, the pipeline stops and the developer is provided with useful information for correcting the issues. Breaking changes are likely found well before they ever makes it to a critical point. Coding standards are checked to ensure that the code being produced is of high quality.
When all tests pass successfully, the full site code including the change is built and sent through to one or more staging environments that mimic the live site exactly. This is where further automated testing can happen as well as other quality assurance (QA) activities such as any manual testing and user/client acceptance reviews. When all of the boxes are checked, the new code is merged and the code can be taken live with the click of a button..
Bringing it together
All of the approaches shown above make up the concept of continuous delivery. You may have heard of similar terminology out there such as “continuous integration” and “continuous deployment”. These terms explain very similar methodology but with some slight variances.
- Continuous integration
Continuous integration is a term that does most of what I’ve outlined in the DevOps section above. It’s basically a method of using DevOps tooling to continually automate the testing of code when a developer pushes a change.
- Continuous delivery
Continuous delivery takes continuous integration a step further by adding automation to the deliver of code to staging or production servers. So after all tests are passed, the deployment process to a server can be triggered with the click of a button.
- Continuous deployment
Continuous deployment is the same as continuous delivery except that the deployment process is fully automated and any manual process or testing is removed. Deployments to the live environment are triggered automatically when all automated testing has passed. This is great for documentation and internal software tools, but doesn’t really work well for web development where often there are frontend elements that need to be manually tested or signed off on by a QA and creative teams.
Right now, continuous delivery is the creme of the crop in web development. It’s sophisticated and allows for a very high degree of quality because of the level of automated testing achieved. It finds potential flaws and supports the developers in writing good code. This also serves as training in a way. It saves time which allows for Agile sprints to progress more quickly with greater success. It allows the client to spend their money more effectively and to react quickly to a changing market. Frankly, it’s just a great way to get things done.
Continuous delivery is best for ongoing development
Another benefit to Agile and continuous delivery is that you are constantly making small improvements to your website and commerce architecture on an ongoing basis instead of pushing infrequent large changes. Small improvements are easier to test, easier for your regular site visitors to adapt to (if the change is visual or involves modifying the user interface), and easier to roll-back or apply hot-fixes should a breaking change somehow make it through.
Because improvements are made in smaller increments, continuous delivery is ideal for organizations who require a dynamic and flexible website with constant changes being made. A change could be anything from modifying layouts, adding new call to actions, changing product types, performing framework or platform updates, fixing bugs, enhancing security, adding features, building integrations and automation, increasing performance, refining the customer experience, etc. Continuous delivery gives organizations the means of plotting their development path in an adaptive and flexible way that has a rapid timeline to completion.
Continuous delivery and you
Is your organization struggling to get your ecommerce site where you need it to be? Maybe Agile and continuous delivery are the methodologies that you need to make it happen. Acro Media is an ecommerce consultancy and development firm that can help. We use these methodologies in our toolset to empower clients with the freedom to control their development roadmap and develop solutions tailored to their business needs.