Founded in 2008, HubWorks! provides a web-based service that enables all parties involved in a child’s welfare to communicate openly and transparently. Approximately 800 Australian public and private sector organizations use the HubWorks! portal, including government agencies, church and community organizations, and Aboriginal services. The HubWorks! portal provides a comprehensive view of a child’s history, including education, health history, guardianship and child care services. There are about 240,000 children, families and extended guardians currently registered in the HubWorks! database.
Over the past two years, HubWorks! added nearly 500 organizations and 150,000 records to its database. As demand for its services grew, the company found that its existing hosting provider could not continue to deliver the fast and efficient scalability that HubWorks! needed.
“Australian law mandates that childcare providers record attendance details for each child in their care every day,” explains Ruby O’Rourke, co-founder of HubWorks! “When multiple users logged onto the portal between 10.a.m and 3.p.m to enter attendance data, concurrent demand slowed down access to the portal considerably. We needed a hosting solution that could automatically scale and balance workloads.”
“We deal in confidential information such as medical details, custody orders, and profiles for children at risk, so the solution had to be highly secure,” adds O’Rourke. The portal also had to be available—even in the event of a disaster.
When HubWorks! began looking for a new hosting service, several of the IT consulting firms that the company had worked with recommended Amazon Web Services (AWS). The HubWorks! team had conversations with AWS staff members who demonstrated their knowledge of Ruby on Rails, the web application framework that HubWorks! uses for development. The fact that AWS regularly released new services convinced HubWorks! that AWS shared its passion for innovation and creativity.
As part of the planning process, the HubWorks! team members spent half a day with an AWS Solution Architect to scope out requirements and develop a six-step migration plan. After conducting performance testing, HubWorks! migrated its portal to AWS over a weekend. The transition was seamless and, according to HubWorks!, its clients were unaware that any change had taken place.
HubWorks! uses a number of AWS services to run its portal. It uses Amazon Elastic Compute Cloud (Amazon EC2) for the web portal, applications and Postgres database servers; and uses Auto Scaling to scale Amazon EC2 web server capacity automatically to meet demand. HubWorks! also uses AWS load-balancing features to provide high availability and to evenly distribute workloads among the machine instances in use. In particular, the team uses Elastic Load Balancing to distribute incoming traffic across 2–16 Amazon EC2 instances in two Availability Zones in the US West region. Each instance runs the Ruby on Rails applications: the main HubWorks! application and the Dashboard application. Figure 1 below illustrates HubWorks! infrastructure architecture.
Each request comes into the webserver and is handled "in-place" by each Amazon EC2 instance. The instance connects directly to the master Postgres database or, in the case of the Dashboard application, to the slave Postgres database. The master Postgres database instance uses a strip of eight Amazon Elastic Block Store (EBS) volumes (RAID 10). The slave database uses a single EBS volume as a read-only replica of the master database. The DB is backed up automatically to an Amazon Simple Storage Service (Amazon S3) bucket every night using a script.
David Salajan, another co-founder of HubWorks! notes that the AWS Management Console, which they use to manage the company’s Amazon EC2 instances, is very user-friendly. “Even someone with scant technical skill can log in and monitor the machines that we use,” says Salajan.
Thanks to the scalability and competitive pricing of the AWS solution, HubWorks! estimates that it has cut its hosting fees by more than 50% or approximately $31,200 AUD annually compared to its prior hosting solution. To support the current amount of traffic with its previous cloud provider, HubWorks! would have to provision 16 machines running 24 hours a day, 7 days a week. With AWS, HubWorks! typically runs 4 machine instances with 2 databases, a testing server and a monitoring server. AWS automatically adds machine instances during busy times and reduces them as traffic decreases.
During peak times, AWS can scale to 16 instances running up to 320 concurrent users and requests. This means that users can reliably log in to the HubWorks! web portal—even in high-demand periods between 10 a.m. and 3 p.m.—with little fear of the service crashing. “Before using AWS, if the portal crashed, we would have to manually reset our web server, causing our clients to receive error pages,” says Salajan. “With AWS, scaling is automatic and our site is up and running when customers need it most. It’s just amazing.”
Using AWS, HubWorks! has been able to establish more resilient and robust disaster recovery procedures. HubWorks! had a single server availability zone with its previous service provider and if that region experienced an outage, so did the HubWorks! portal. On AWS, HubWorks! can use multiple Availability Zones as part of its disaster planning, so HubWorks! can recover data quickly in the event of a major failure or natural disaster.
HubWorks! is planning to expand into Europe and the United States, and O’Rourke is confident that AWS is the right partner to help the company enter these critical markets. “We need to know that we’re working with a provider that is honest and trustworthy—and we see AWS as the best in the world,” says O’Rourke.
To learn more about how AWS can help your web application needs, visit our Web Applications details page: http://aws.amazon.com/web-mobile-social/.