DevOps - enabling application development 'at the speed of thought'
DevOps - enabling application development 'at the speed of thought'
The incredible success of new-generation digital players like Netflix, Facebook and Uber has set the business world alight, as traditional firms try to understand the secrets behind their success.
In reality, this success borne from a number of factors: new strategies, cultures, skill-sets... and of course new technologies in areas like Cloud, Machine Learning and powerful Analytics platforms.
However, one of the lesser-known aspects, and a key ingredient to digital success, is found in the realm of DevOps.
We define DevOps as essentially a collaboration mechanism - enabling an organisation to rapidly develop new features and enhancements, iterating and testing new ideas, while simultaneously operating one's existing set of services.
Out with the old...
In the old mode of developing IT applications, we would follow a linear progression: from conceptualising, to architectural planning, application development, before heading into user acceptance testing, beta deployments, and then finally, live deployment.
Separate teams would pass the work onto the next stage in the value-chain, with little alignment between the original business stakeholders commissioning the application, and the IT teams tasked with building it.
With the next team not able to start work until the previous team has 'handed over' responsibilities, development timelines stretch out - frustrating business stakeholders, inflating costs, and preventing the organisation from bringing new innovations to market.
In the worst cases, we get to the end of the value-chain and realise that the application missed the mark and failed to meet user expectations. Here it's a case of 'back to the drawing board', as the entire development process begins again from scratch.
... And in with the new
With DevOps, Business and IT are tightly bonded. Early-stage software is developed in live environments, ready for immediate testing and user feedback. These insights are continually fed into the development streams, allowing teams of adjust and iterate the application in rapid cycles.
Phrased differently, DevOps helps us to compress the time between ideation, creation and deployment. The result is faster, leaner and more 'appropriate' software, which fits perfectly with ever-changing business and user demands.
It's development 'at the speed of thought': the moment we imagine something, we can build rapid prototypes and test our thinking with users.
With closer collaboration, we're able to quickly address unforeseen issues, technical nuances, and changing requirements. Teams lose their 'silo mentality' and rally around a single goal of delivering great software in the fastest possible time.
To get this right, firms need the right tools of the trade. In structuring our DevOps practice, we generally categorise these tools into four different streams:
Build & Deploy: creating containers that enable continuous delivery, so that we can simultaneously deploy different versions of applications. A great example would be 'Jenkins'.
Version Control: to ensure that various different versions of an application are fully tested before live production. Lookup 'Mercurial' for an example of an excellent tool here.
Functional and Non-functional Testing: to ensure that your application - when deployed across hybrid, private, or public Cloud environments – gives users a consistent experience. Great tools include 'Loadstorm', 'Cloudtest' and 'Keynote'
Provisioning and Change Management: to quickly provision applications into production, while ensuring that your infrastructure planning and your application strategy are in synch. By provisioning and then decommissioning the CPUs that you use in rapid time, you ensure no wastage or unused resources. Take a look at 'Docker', 'Chef', 'Puppet' and 'Ansible'.
It's about far more than just the tech
Yet, even with the very best tools and the very best talent, you simply won't reach DevOps 'Nirvana' unless the technology is augmented by a transformation in working cultures, structures, incentives, and ways-of-thinking.
Without solid change management approaches and clear direction from company leadership, it can be difficult for one's DevOps ambitions to find traction. It's crucial to have DevOps 'champions' within the organisation, actively promoting the discipline and highlighting the benefits.
Teams should be empowered to work differently and more collaboratively, to experiment and become comfortable with small failures and mistakes. Individuals need to shed their narrow-scope 'identities' ("I'm a tester", or "I'm a UX designer") and take on increased levels of accountability and ownership for the overall delivery.
In practice (and this is especially true in very large corporates), it's impossible to effect sweeping transformations overnight. So, we often advise clients to begin by identifying key projects that lend themselves to DevOps methodologies, and creating pockets of DevOps excellence around these key strategic projects.
As the rest of the organisation begins to see the benefits, a broader transformation towards a DevOps culture should start to take effect.
* By Vishal Barapatre, CTO at In2IT Technologies.