What are the tools in AWS that can be used for creating a system based on “Design to Fail” principle?
AWS provides many tools for creating a strong system based on “Design to Fail” principle. Some of these are:
Elastic IPs: We can failover gracefully by using Elastic IPs in AWS. An Elastic IP is a static IP that is dynamically re-mappable. We can quickly remap and failover to another set of servers so that application traffic is routed to the new set of servers. It is also very useful when we want to upgrade from old to new version of software.
Availability Zones: We can use multiple Availability Zones to introduce resiliency in AWS system. An Availability Zone is like a logical datacenter. By deploying application in multiple availability zones, we can ensure highly availability.
Amazon RDS: In AWS, Amazon RDS provides deployment functionality to automatically replicate database updates across multiple Availability Zones.
Machine Image: We can maintain an Amazon Machine Image to restore and clone environments easily in a different Availability Zone. We can use multiple Database slaves across Availability Zones and setup hot replication with these Machine images.
Amazon CloudWatch: This is a real-time open source monitoring tool in AWS that provides visibility on AWS cloud. We can take appropriate actions in case of hardware failure or performance degradation by setting alerts on CloudWatch.
Auto scaling: We can maintain an auto-scaling group to maintain a fixed number of servers. In case of failure or performance degradation unhealthy Amazon EC2 instances are replaced by new ones.
Amazon EBS: We can set up cron jobs to take incremental snapshots of Database and upload it automatically to Amazon S3. In this way, data is persisted independent of the instances.
Amazon RDS: We can set the retention period for backups by using Amazon RDS. It can also perform automated backups.