December 15, 2016
Five steps to more innovative applications
With the rapid penetration of technologies such as cloud computing and micro-services and the emergence of DevOps as a new organisational structure, enterprises have at their disposal we’ve seen entirely new ways of building, testing and operating applications emerge.
I can see that for some long-established businesses used to traditional monolithic application development these can be bewildering times. But now more than ever it’s important for all of us to understand and embrace change. This is because I’ve seen at first-hand how the new application development model promises to increase the rate of innovation within enterprises, while at the same time reducing costs. I believe that if you fail to exploit these benefits quickly you may find yourself at a competitive disadvantage – and unable to attract the best technology talent.
That’s why I’ve pulled together five key steps to better application development. These steps should provide a starting point for you as you set out making your application development function fit for the digital age.
- Embrace DevOps.
DevOps is a completely new method of application development which, ideally, largely merges Development and Operations teams into a single unit charged with building, operating and incrementally improving an application throughout its lifetime. So instead of Development handing over a huge monolithic application for Operations to manage, in a DevOps world teams rapidly build and run smaller services they continually work on to improve based on real-world data. We’ve seen this change result in teams that can exponentially increase the pace of application delivery, reduce the costs associated with development and respond to change much more quickly.
- Migrate to micro-service architectures.
I see micro-service type architectures as a key enabler for DevOps. Micro-services are independent and can be deployed at any time without regard for other enterprise applications. As long as each micro-service has the same API contracts around their containers, developers are free to deploy and operate them as they wish. As such, micro-services and other architectural patterns with small, independently deployable components are important if you wish to launch frequently and without the need for heavy-touch regression testing.
- Automate application testing.
If you want to accelerate application development, you need to put an end to extended manual testing cycles where possible. A high level of test automation allows downsizing of test teams, which reduces the costs associated with software development. However, not all applications are entirely suited to test automation. As a rule of thumb, applications with static workflows or with strictly defined APIs are the perfect candidates for fully automated end-to-end simulation testing; but in cases where the application user interface is flexible, complex and feature-rich, some level of manual testing will likely always be required.
- Embrace Delivery Metrics.
Surprisingly – or not as the case may be – some large enterprises still use Excel or Microsoft Project to manage application development projects. These tools do not give you the data insights needed to optimise application development processes. Rather, you should look to tools such as JIRA, which provide end-to-end management capabilities and can be used to generate delivery metrics. Importantly, managers need to configure these tools correctly to ensure there is an efficient workflow and that they’re able to accurately track and measure progress. Still today too many teams manage application development projects with gut instinct rather than solid data. It seems clear to me that in our digital world every project should have clear metrics assigned to it to show improvement over time and to understand the success or failure of given actions.
- Optimise for the cloud. We all know that IaaS, PaaS and even SaaS are now being used successfully to build digital applications. However, many of the developers and infrastructure engineers building cloud applications hail from the pre-cloud era. As a result, they’re not maximising the capabilities of the technology. So, for example, we often see workloads and applications lifted and shifted from legacy to cloud infrastructures without any sort of re-architecting. As a result, businesses find that their applications cannot scale effectively. To realise the full benefit of cloud application development, you must revisit how apps are designed and ensure they’re optimised fully for the cloud environment, whilst taking steps to avoid cloud vendor lock-in.
Don’t get me wrong; this journey to a new application development framework won’t be easy and it won’t be quick. If you’re used to the waterfall approach to application delivery, and have a very entrenched split between Development and Operations functions this is going to be a large-scale change. Be ready for it.
The question you need to ask yourself is whether you really have a choice. If you stay as you are, you risk slowing your pace of change and keeping costs high. You risk becoming obsolete. Competitors, on the other hand, will be able to innovate rapidly, respond quickly to changes and lower their total cost of ownership. Take a look at your business today and ask yourself: are my applications as innovative as they need to be? If the answer is ‘no’ come and speak to us.