High Availability Application Design

Test-Driven and Rapid Application Development Services

If you build it, you’d better be ready when they come. The success of your web application shouldn’t lead to its failure! We design high availability architecture and scalable applications that can accommodate rapid growth.

Rapid Application Development

The Agile methodology lets us rapidly develop applications because we focus on building the most important features first, and delivering them to you as working software. You don’t have to wait until every last bell and whistle is developed before you can roll out solid software that provides great value to your customers.

We continue to enhance the software, based both on your original vision and on feedback from real world users. We don’t invest energy in elaborate planning documents and we don’t waste time building things it turns out you don’t need. We let the system evolve as we build it, incrementally adding features until you decide it is complete.

Test Driven Development

We practice Behavior Driven Development (BDD), a type of Test Driven Development (TDD). Before we code a feature, we create an automated test to see if the software works as expected. We run the test and of course at first it fails because the code is not yet complete. We build the feature and rerun the test, which should now succeed. (If not, of course we fix the code.). Once the code is working, we go back and edit it for style – making it easier to maintain and extend – and then we run the test again. This cycle is known as:

  • Red (for the test that fails before the code is written)
  • Green (for the test that succeeds once the code is written)
  • Refactor (for the process of cleaning up the code so it not only works, but is well-written)

Any time we make a change to a piece of code, we run its test again.

Integration Testing

Dividing a complex system into smaller components lets us spread the development effort across our team. To make sure separately developed components work together, we run an automated integration test every time a component is added or changed. Componentization and automated testing contribute to rapid application development by distributing effort and keeping defects out of the system.

Load and Stress Testing

To make sure your shiny new application will still look good when it gets out in the real world, we perform both load and stress testing. Load testing measures system performance under normal and peak loads; stress testing pushes the system past its limits so we know where those limits are and can plan accordingly.

Spinning up Servers

In the age of cloud computing and virtualization, it is relatively easy to add or subtract server capacity as needed. We use server configuration management and orchestration software to spin servers up or shut them down, depending on the traffic to your site. We know how to handle both slow, steady audience growth and event-driven flash traffic.

High Availability Design

We design application architecture and server infrastructure to handle rapid growth. We also upgrade existing systems to meet the demands of an expanding audience and changing technology. In short, we specialize in scalable development, and can help you plan for, achieve, and sustain growth.