Jo is a digital producer at Pattern. Jo has a background in communication, and has worked as a producer and editor for organisations such as Les Mills International, Tailor, Auckland Libraries and XtraMSN/Telecom. From 2007-2009, Jo was the web editor for Taste and Metro magazines.
Maintaining high availability for your apps
Always on, always up – reliable software applications and websites are mandatory for the smooth running of our clients’ businesses.
Reliable (highly available) applications are resilient. If and when they fail, they can continue to function with minimal downtime and data loss before full recovery.
At Pattern, we build our applications on Microsoft Azure, the cloud system that is the foundation of high availability and scalability.
Azure provides a high level of control that lets us customise computer, storage and networking components to best suit our stable of development jobs. Instead of trying to prevent all-out failures, our goal in this flexible cloud environment is to minimise the effects of a single failing component.
Apart from cloud systems, there are other high availability solutions, including:
- Ultra high performance dedicated servers, which are ideal for enterprise solutions
- Load balanced dedicated servers, which efficiently distribute incoming web traffic across a group of servers without intervention
- Failover, which instantly switches to a standby server upon the failure of the primary server
- High availability clusters, which consist of groups of servers (supporting server applications) that experience minimal downtime when any server node is overloaded or fails.
No matter what your solution for building reliable applications is, here are some tips gleaned from Netflix, the global streaming service that never sleeps:
- Test and validate code before pushing to production, and deploy exactly what you tested to production where possibl
- Regional vs global deployment; limit go-live and potential deployment issues to a small customer base before rolling it out to everyone else.
- Use preconditions to verify expected states
- Fail a deployment when instances are not coming up healthy
- Know how to roll back quickly
- Notify teams of impending and completed deployments
- Ensure automatic deployments are not executed after hours or during weekends