FROM ON-PREMISE TO CLOUD Migrating Web Applications into AWS

Kington Chan Institute for Genomic Medicine Business Case • On-premise Web Servers hosting about 10 Research Data Query Application • www.epi4kdb.org, www.egidb.org, etc. • Build on Tomcat 8 • With very large DB (over 500GB, keep growing) • Traffic volume varies & not unexpectable • Problems to be solved • Considerable administrative effort Ø Infrastructure maintenance Ø Servers patching Ø Service monitoring Ø System Backup • Poor resource usage • Not up to users’ satisfaction • Resilience & scalability Solution of Hosting Applications at AWS

3 Computing Options

Service name Description

AWS EC2 A managed environment for deploying virtual machines

A managed environment for deploying containerized AWS ECS / EKS applications

AWS Elastic Beanstalk A managed serverless platform for deploying applications

A managed serverless platform for deploying event-driven AWS Lambda functions

4 Deploy AWS Elastic Beanstalk

• PaaS for building scalable applications • Support most of the popular platforms. • Web applications and services developed with Java, .NET, PHP, Node.js, Python, Ruby, Go, and on familiar servers such as Apache, , Passenger, and IIS • Makes deployment, maintenance, and scalability easy so you can focus on innovation

5 Autoscaling to Meet Demand

6 Deployment – Application Source Bundle

Create and upload a source bundle. • Logical collection of Elastic Beanstalk components, including environments and applications • Source bundle must meet the following requirements: Ø Consist of a single ZIP file or WAR file (you can include multiple WAR files inside one ZIP file) Ø Not exceed 512 MB Ø Not include a parent folder or top-level directory (subdirectories are fine)

7 Environment

nginx-proxy.config

tomcat.conf

8 Create Application Source Bundle

Dockerfile

generate_wars.sh

9 Rational Options

Amazon Aurora • Custom engine for RDS • Optimized for performance in the cloud. • Compatible with both MySQL and PostgreSQL • High throughput, storage auto-scaling, and a self-healing, fault-tolerant storage system. It also provides point-in-time recovery and continuous backup, with replication across three availability zones keeping the data secure • Five times faster than standard MySQL and three times faster than PostgreSQL databases when used in the cloud

10 Monitoring

• Fine-tune capacity • Applications debug • Issues trouble- shooting • Provide alters/warnings and trigger events for auto operations

11 Auto-Healing (Use Lambda Function)

Downgraded services trigger restarting the application servers.

12 Future Work

• Build CI/CD Pipeline • Other

13 Q &A

14