Documentation
─ Project II
Team Work :
1 - Mohammed Hassan 120180531
2 - Adham Abed 120181153
3 - Mahmoud Hayek 120182355
Intro (include recap)
Two apps:
● User Application:
Has 3 interfaces:
○ Add image
○ Get image
○ Get all image
● App manager:
Has 2 interfaces:
○ Configuration
○ Statistics
Amazon Web Services
EC2
Amazon Elastic Compute Cloud (Amazon EC2) offers the broadest and
deepest compute platform.
RDS
Amazon Relational Database Service RDS is a managed relational database
service that provides you six familiar database engines to choose from,
including Amazon Aurora, MySQL, MariaDB, PostgreSQL, Oracle, and
Microsoft SQL Server.
Advantage over using RDS versus deploying DB on EC2
● RRDS is a managed service:
• Automated provisioning, OS patching
• Continuous backups and restore to specific timestamp (Point in Time
Restore)!
• Monitoring dashboards
• Read replicas for improved read performance
• Multi AZ setup for DR (Disaster Recovery)
• Maintenance windows for upgrades
• Scaling capability (vertical and horizontal)
• Storage backed by EBS (gp2 or io1)
● BUT you can’t SSH into your instances
S3
Amazon Simple Storage Service (Amazon S3) is an object storage service that
offers industry-leading scalability, data availability, security, and performance.
CloudWatch
Amazon CloudWatch is a monitoring service for Amazon Web Services cloud
resources and the applications you run on Amazon Web Services. You can use
Amazon CloudWatch to collect and track metrics, collect and monitor log files,
set alarms, and automatically react to changes in your Amazon Web Services
resources.
CloudWatch Use cases
Monitor Amazon EC2
View metrics for CPU utilization, data transfer, and disk usage activity from
Amazon EC2 instances (Basic Monitoring) for no additional charge. For an
additional charge, CloudWatch provides Detailed Monitoring for EC2 instances
with higher resolution and metric aggregation. No additional software needs to
be installed.
Monitor and React to Resource Changes
CloudWatch Events provides a stream of events describing changes to your
Amazon Web Services resources. You can easily build workflows that
automatically take actions you define, such as stopping an Amazon EC2
instance, sending an Amazon SNS message, or adding a message to the
Amazon SQS Queue, when an event of interest occurs.
In general
● We store the image in S3
● We get the link from S3 and store in database
● We use RDS in AWS for database
Application of the user contains 3 interfaces in the
instance
Application of the app manager in another instance and he
has the last two interfaces
Two apps:
● User Application:
Has 3 interfaces:
○ Add image
○ Get image
○ Get all image
● App manager:
Has 2 interfaces:
○ Configuration
○ Statistics
Cloud Watch:
These apps communicate with each other by cloud watch
The app user store the statistics: miss rate, hit rate, number of requests, items ,
size store in cloud watch
Statistics of the application user are stored in the app manager interface
By the cloud watch we can read the statistics in the app manager by charts, We
read the real data
App manager send the configuration to cloud watch and user app read it from the
cloud watch, and there’s is an auto-scaling by the size of the cache
Pictures from the practical part
The code and binding
- rds with end point
the connection with rds in code
- s3
- the connection with s3 in code
client app configuration
- uploading image
- request the image by key
- the image in s3
manager app configuration
- manager app page
- manual scaling
- when press increment instance button the counter will increase 1
- there is a new instance starting after press increment instance button
- manager app charts statistics as a modal