Subscribe / Unsubscribe Enewsletters | Login | Register

Pencil Banner

Don’t be Delta: Four pillars of high availability

Andrew C. Oliver | Aug. 12, 2016
It's unbelievable that in 2016 an entire airline could be brought to its knees by a datacenter outage. Did Delta skip computer science class? Let's review

This involves queues and buffers and such. Many NoSQL databases such as Couchbase or Cassandra and caches such as Infinispan or Gemfire have this feature. Accomplishing this with a traditional RDBMS is a bit more complex and usually requires additional layers (which add latency).

Fewer, more skilled developers

Applications that don't blow up also help bolster reliability, so let's talk about software quality. First off, I've yet to see a project where scores of inexpensive developers produce good software. The extreme programming people were right: You need small teams with achievable goals. More accurately, you need fewer, more productive developers rather than scores of cheap labor.

Tons of offshore development shops advertise their capability maturity level (CMM). But to paraphrase Steve Jobs, don't confuse content with process -- you can have a perfect process and still produce absolute crap. Imagine if we described the process of painting and brought in some skilled masters. Imagine if we replaced them with twice as many people who'd taken one art class.

Skilled developers avoid building software vulnerable to such attacks as SQL injection and write more efficient code (which makes it more computationally costly to launch a DoS attack against you). Skilled developers avoid using overhyped technologies for their own sake; they also avoid clinging to old technology that doesn't do what's required because of "tradition." Skilled developers look at the trade-offs and make good decisions. Skilled developers make fewer errors.

With fewer, more productive developers, we also avoid excessive communication and coordination, which means fewer misunderstandings.

Quality control and good development practices

It's 2016 -- use Jenkins, people! Also, write unit tests and end-to-end tests, and perform load tests as part of your process. I know that adds up, but geez, how much has this outage cost Delta?

One big, fat failure justifies it all. Once a seemingly intractable performance problem that "only happens in production" creeps into your code, you'll bleed money. Unit tests, load tests, and functional tests are all cheaper eventually. The business justification is that stuff happens -- and when it does, it costs a ton of money. We want to reduce the likelihood of stuff happening.

In summary, brush your teeth, eat your vegetables, deploy decent infrastructure, and use decent development and deployment practices with decent developers. Do these things and life will go well. Fail at any of this and you'll fail like an airline.

Source: Infoworld


Previous Page  1  2 

Sign up for CIO Asia eNewsletters.