In 2014, we had the opportunity to work on a truly cutting-edge project (epoints) for a UK-based client — Instant Access Technologies (IAT) — which quickly taught us that creating excellent and efficient software requires automation and smart methodologies. We still believe this today, more than ever.
The idea behind epoints, the UK’s leading online loyalty platform, was simple: to build a loyalty system with enough redeemable rewards to satisfy anyone. And, with nearly 2,000 online stores and partners, 2 million rewards, and a variety of innovative and interactive ways for users to raise their score, epoints has become one of the most powerful online loyalty platforms around.
No Automation, No Acceleration
Like many other popular online services, epoints had to deal with the issue of scale. The number of users, the amount of data, and the sheer scope of interconnected services led the company to create a powerful solution that quickly grew and became more complex.
However, IAT had a number of challenges around actual speed of innovation and getting things exactly right for the customer, in a timely manner. When running an eCommerce business, you need to be able to rapidly innovate, learn, refine, and keep moving — and IAT was admittedly facing a few challenges around this.
With a rapidly growing online loyalty platform, changes have to be implemented without affecting the application’s availability and the user’s ability to make use of the product.
Prior to introducing a DevOps way of working and automation by means of implementing Continuous Integration (CI) and Continuous Delivery (CD), any changes to services and modules had to be manually tested and retested. This took an immense amount of time — roughly, 300 to 400 testing hours for each deployment, (once we introduced CI/CD, this was reduced to only 30 hours!).
So, as traditional development methods were proving inadequate in terms of speeding up the time-to-market, we analysed the situation and decided to introduce system automation based on Agile processes and DevOps practices.
Introducing Continuous Delivery
We chose to develop epoints using the Continuous Delivery methodology — a development approach which was incredibly innovative in 2014, and continues to be highly sought after today.
At the time, a survey among 4,000 Europen IT companies with 12,000 software projects showed that only 12% of them introduced basic test automation and only 2% of these 12% used additional automation tools.
This suggests that the number of projects pursuing advanced optimisation methods, such as Continuous Delivery, was smaller than 0.24%.
At the time, Continuous Delivery and automated delivery pipelines were used mainly by leading online services such as Netflix, Twitter, or Facebook. In terms of regular businesses, very few had implemented them then — and many still don’t make use of them today.
How Is It Different from Other Methods?
In a traditional delivery model, programmers write new parts of code for some time, and then add them to a project — in a large, time-consuming deployment. All testing is manual and requires a lot of work. New and updated code goes through several long steps, until it finds its way to the publically available product.
By contrast, under the Continuous Delivery model, any piece of code a programmer finishes immediately enters a sophisticated automated pipeline. Changes are integrated into the main code automatically, creating a new, numbered version of the software product. A wide range of automated testing scripts and other methods is used to evaluate the new version, and to drastically limit the room for human error.
A test instance of a new product is built in the Cloud, independently of the current live version. Authorised people in the organisation are notified about the new build. They evaluate it and then decide if it should go live or not.
This approach has many benefits. Most importantly, it saves time and money with each deployment — the longer the system is supported, the bigger the savings. As an example, IAT was able to quickly see an increase in velocity and story points by about 20%.
Another important benefit is the reduced risk of a critical failure. When deploying a large number of changes at the same time, one bad piece of code may compromise the entire deployment. Deploying new pieces of software one by one greatly reduces risk and makes it easier to track down errors or roll back changes.
The Benefits of DevOps Automation
Having an automated solution gives you the confidence that your application will be free from human error, and that nothing will be pushed out that degrades the quality you’re looking for. This is because, with this approach, you’re implementing things incrementally and making changes on much smaller chunks of code, so it’s a lot easier to fix bugs — and everything’s done automatically.
One of the main benefits, however, can be summed up with just two words — reaction time. Continuous Delivery greatly reduces time-to-market, or the time it takes for the end users to actually see the changes introduced by developers. It enables the live release of new features and functionalities within minutes, rather than days.
With the epoints project, IAT wanted to build a new online loyalty platform in a short span of time. After having assessed IAT’s business objectives and existing core infrastructure, we decided to use DevOps best practices to build an extensive network of 90 AWS Cloud-hosted microservices, which are able to handle 17,000,000 events on a daily basis.
These are just some of the measured outcomes IAT was able to see from having introduced DevOps and Continuous Delivery:
- The amount of time needed to set up a new test environment reduced from 2 hours to 5 minutes,
- The amount of testing time needed during each sprint was reduced from 400 hours to 30 hours,
- Using a Continuous Delivery pipeline decreased development cost by 40%,
- Infrastructure cost was cut down by 30%,
- They gained a fast and secure backend, as well as database solutions,
- Greatly reduced the deployment time of critical hotfixes & last minute changes,
- The extensive ecosystem of 30 web services and 90 microservices delivers eCommerce products to thousands of UK customers on a daily basis.
Moreover, quick product updates make another benefit possible — continuous feedback, which is a welcome side effect of the Continuous Delivery approach. It means that the client can immediately test every small addition to the product in an environment that looks and behaves exactly like the final version will.
What DevOps Means to Us
DevOps is a developmental and operational way of working that makes cross-functional programming teams responsible for the entire product life cycle – from development and testing, to providing artefacts, to deployment, to application log monitoring etc.
In-line with this approach, the same individuals who create the application also manage its production process – most importantly, however, they’re responsible for automating the solution, as automation lies at the heart of this way of working. To us, it’s about a change in the culture and process, not just in the technology. We focus on implementing best practices across the entire software delivery life cycle.
To enable a true DevOps culture within our organisation, we’ve adopted the C.A.L.M.S. principles:
- Culture – focus on people and embrace change and experimentation,
- Automation – Continuous Delivery and Infrastructure as Code,
- Lean – focus on producing value for the end user and work with small batch sizes,
- Measurement – measure everything and show what has been improved,
- Sharing – open information sharing, collaboration, and communication.
DevOps not only means that all team members have to contribute to different parts of the project, but also that the entire team takes care and responsibility for the client’s product as if it were their own. And, that’s how we feel it should be with every project.