When I migrated from the UK to Western Australia one of the first things I did was visit a native animal sanctuary. I wasn't surprised to see the koalas and kangaroos, but I did a double take when I came face-to-face with my first black swan -- especially when it attacked me.
My guide friend then gave me some solid advice about my new environment – "out here you'll need to toughen up."
This "man up" lesson applies in enterprise IT, where for years we've managed systems to survive and withstand adversity. We understand that hardware breaks all the time. Software has bugs and people make mistakes. Unfortunately -- just like my black swan -- events are not always predictable. So if your cloud provider goes out of business, or rats chew through your main communications link, how can you ever build reliable applications for your users and customers?
[Learning to use a version control system is a sensible way to start on the DevOps path. Read DevOps Beginner? Start With Git]
Just being resilient is not enough -- your teams and applications need to become better and stronger for the experience. They need to thrive after failure. They need to become antifragile.
In his book Antifragile: How Things Gain From Disorder, Nassim Taleb argues that fragile items get weaker or break (like Humpty Dumpty) when exposed to stress, whereas something antifragile should do the exact opposite -- get stronger. This idea has found its way into IT, with progressive businesses regularly engineering and inducing system failures to improve them -- like the Netflix chaos monkeys and the Simian Army.
But aggressive swans and trouble-shooting monkeys aside, does the notion of "antifragile" really have a role in the development of applications? I believe it does, especially as the pressure intensifies to deliver mobile apps quickly.
In many ways, upgrading an enterprise application is like handling a Ming Vase. It's valuable, but fragile. Change is something to be feared, so the traditional IT approach is to upgrade quarterly or even yearly. Today, apps, especially of the mobile kind, are built, enhanced, and retired at a frenetic pace -- weekly, even daily. Something I was reminded of when LinkedIn informed me that the app I'd recently downloaded was now being retired and replaced.
To thrive in this mobile world, organizations need to develop an almost counter-intuitive mindset -- one that stresses app delivery processes so that upgrades become mundane activities that are not feared but relished. We do them often and we get stronger.
Such "mishandling" starts when teams have the ability to introduce smaller sets of changes almost continuously using Agile thinking rather than make larger changes over longer periods.
If problems arise they can be rolled-back quickly, with feedback loops established so that teams learn from the experience. This of course may require an investment in new tools and DevOps and Agile techniques. Fair warning: You should never underestimate cultural obstacles -- often the most fragile aspect of a company is entrenched thinking.
Delivering enterprise mobile apps is no walk in the park. There'll be new types of data sets, APIs, integrations, and third parties to support. There'll be variable transaction types, latency and unpredictable traffic -- plus, of course, new security and support issues to address.
In the past, organizations have mitigated risk through rigorous, costly, and lengthy testing, assembling complex infrastructure sandboxes to mimic production systems. But this doesn't work so well anymore.
Like my black swan confrontation in Australia, mobile apps can be harassed by unpredictable events that are difficult to test in a physical environment. And even if you could, would the time needed to test really be worth the effort?
There are other approaches. Netflix and Amazon thrive on failure -- periodically introducing random events to test design assumptions and architectures. Alternatively, an enterprise might virtualize services during development and testing to simulate conditions -- perhaps even incorporating tools into the development process itself like application performance management and crash analytics tool that spot and eliminate bugs before, during and after apps hit the streets.
It's broken, so what now?
To be successful, IT can't build something as tough as a new mobile business with a head-in-the-sand mentality or by obsessively protecting systems against rare events.
Rather, they should thrive on the unpredictable, with highly collaborative groups that learn and act when things go wrong. Call it DevOps or whatever you like, but supporting lofty goals like "antifragile" must also involve strengthening established procedures.
For example, when the proverbial sewerage hits the fan after a mobile app outage, having a developer on call could help improve the flow of critical support knowledge – with the caveat that they're good at speaking with customers.
So following this logic, the next time you meet your own black swan you'll be better prepared and come out stronger from the fight.
Cloud Connect Summit, March 31 to April 1, offers a two-day program colocated at Interop Las Vegas developed around "10 critical cloud decisions." Cloud Connect Summit zeros in on the most pressing cloud technology, policy and organizational decisions, and debates for the cloud-enabled enterprise. Cloud Connect Summit is geared towards a cross-section of disciplines with a stake in the cloud-enabled enterprise. Early Bird rates end Feb 21. Find out more about Cloud Connect Summit and register now.