5 guidelines for building modern applications

Step back from the vast array of new tools and platforms now available to developers, and a few common principles arise to help guide your development efforts

5 guidelines for building modern applications
Tiger (Creative Commons BY or BY-SA)

“Move fast and break things” is at the heart of Facebook’s Hacker Way ethos. This reckless-seeming phrase has become a rallying cry for a new generation of Web and mobile developers. Yet like the millennial generation itself, it’s often misunderstood.

The expression does not advocate for building brittle systems merely to solve pressing problems quickly. Instead, it’s about understanding that modern systems can be fragile -- and architectures must be constructed with that innate fragility in mind. This might mean a containerized infrastructure that can be quickly rolled back to a known good state, or it might mean using message queues and actors to quickly fire up new processes and services when one fails, retrying again and again until a message gets processed.

To be able to manage such systems, you need to instrument them. You’ll need to get as much logging data as possible from your code, running it through tools like the ELK stack’s combination of Elasticsearch, Logstash, and Kibana to make those logs searchable and able to deliver insights when needed. You’ll also need tooling like APImetrics’ cloud-hosted monitoring service to track and manage the APIs you’re consuming and supply the evidence you need to either modify your code or to make service-level claims with your supplier.

What does this all boil down to? We’re still too early to have a hard and fast set of rules for building a modern application, but it’s possible to come up with some guidelines to help make the process a little easier:

1. Be a devops organization

If there’s one rule that you need to follow, this is it. You need to have a mind-set that’s ready for continuous delivery, which means bringing together the development and operations teams. Infrastructure is as much code as the application itself, and deep instrumentation is necessary to deliver the data you need to run your application.

2. Break things down into their component services

Small components can be assembled and orchestrated into applications, using cloud services and APIs to add functionality as necessary.

3. Take advantage of cloud services where possible

There’s no need to build, say, your own telecommunications services when Twilio offers API-accessible services to developers in the cloud. Cloud services can extend an application in new ways that may not have been possible using on-premises technology.

4. Design for failure

Build resilience into applications. If one component service barfs -- say, a recommendation engine -- that doesn’t mean the rest of an e-commerce application needs to go down. Likewise, distributed cloud infrastructure generally tolerates the failure of individual virtual servers, resulting in a performance hit rather than a loss of availability.

5. Choose cloud APIs carefully

Once you’ve started to use a cloud API, you’re going to be using it for many years. Make sure you evaluate it fully, and work with the rest of the organization to see where it can fit in with other applications and services. Also, be sure you have an alternative service to switch to in the event of outages, unwanted changes, or business failure.

Building a modern application requires thinking a little differently, but it certainly doesn’t mean throwing away everything we’ve learned over the decades we’ve been building software. The tools may be new, but the need to ensure resilience and add effective instrumentation remains as essential as ever.

Copyright © 2015 IDG Communications, Inc.

How to choose a low-code development platform