App development too slow? Fire your infrastructure
Forrester analyst Mike Gualtieri has argued (PDF) that “Many CIOs are on the hot seat to innovate by delivering increasingly critical applications more quickly,” yet don’t know how to do this. Part of the problem stems a shortage of staff that can keep up with requests for new applications. But perhaps a bigger problem is the crufty data infrastructure that makes it difficult to develop and improve applications.
Solving this second problem (infrastructure/tools) may be the key to solving the first (personnel shortage). Throwing more bodies into an inefficient system doesn’t make it more efficient.
It’s not surprising, therefore, that after interviewing a range of CIOs, Gualtieri concludes:
Traditional application development platforms such as Java and .NET are not necessarily the fastest approaches to develop applications. CIOs should investigate application development productivity platforms that make application development professionals more productive.
This parallels something my colleague, Jared Rosoff, said recently to me:
The key to rapid development is looking at the whole stack of tools and processes that deliver software. You need to throw out the things that further a ‘design it, build it, ship it’ mentality and switch to things that encourage an ‘iterate it’ mentality. This means thinking of continuous deployment instead of shipping code, dynamic schemas instead of rigid schemas, and so on.”
Unfortunately for the CIO, her enterprise is not going to sit around waiting for her to solve this. Cloud has changed expectations for business users, who have learned from Salesforce and its peers that robust business functionality doesn’t need to wait on IT to provision servers or install software.
Nor are the advantages of cloud lost on IT. DevOps is but one example of IT buying into this “magic layer,” as Wipro vice president K.D. Singh terms it, enabling developers to “scrunch development cycles and improv[e] quality by fusing development and operations activities (and integrating testing between the two functions).”
Increasingly such developers also turn to a new breed of development languages like Ruby, or application frameworks like Django or new market entrant Meteor. They’re writing less code and getting more done. And they’re asking the CIO for forgiveness, not permission.
…Unless, of course, they’re shackled to 20th Century database technology. The traditional data infrastructure layer is a primary inhibitor to application flexibility. Relational databases served us well for many years, and still play a critical role for a certain class of application, but they’re a poor fit for modern application development.
Take, for example, The Guardian, one of the UK’s leading newspapers. As the world has moved online, The Guardian was looking for ways to maximize user engagement, given its positive impact on revenue. It needed a new user identity system that could be tweaked and improved, and a traditional RDBMS just didn’t fit, as Philip Wills, software architect at guardian.co.uk, highlights:
Relational databases have a sound approach, but that doesn't necessarily match the way we see our data. MongoDB gave us the flexibility to store data in the way that we understand it as opposed to somebody's theoretical view.
Importantly, this wasn’t a one-time decision on the data model. Wills continues: ...MongoDB allows us to create a system that we can shape ourselves, with a view to the future of new ways for users to interact that we may not even know yet.”
The reality is that most applications today, and the kinds of information they gather and deploy, depend upon a flexible data model that doesn’t constrain a developer unnecessarily. We’re entering a more rational world where the database structure is more fluid, changing as needs change. This is the world of NoSQL.
NoSQL databases like MongoDB are not necessarily “schema-less,” but rather offer a great deal of flexibility around schema design, which in turn allows developers to change their schemas to reflect changes in their applications and the kind of information they’re trying to capture or exploit. In other words, they’re a great way to future-proof application development within the enterprise.
This isn’t to suggest that most enterprises should rip out their existing data infrastructure. Yes, at 10gen we see organizations do just that (sometimes very large organizations for mission-critical applications), but this generally won’t be the preferred path for developers or their CIOs. They’ll want to maintain what they have while building for the future.
As such, we’re seeing new app development gravitating to the platforms and processes that enable choice, rather than lessen it. We’re in the early days of NoSQL, but the momentum is already big and accelerating.
So, want to speed up your company’s ability to deliver applications faster? That’s easy. Fire your data infrastructure and build flexibility and choice into your next-generation application development. Building on MongoDB is a great way to accomplish this.
<b>Posted by Matt Asay, vice president of Corporate Strategy</b>