A Vehicle Renting System called ProCarRentals has been designed and developed using
ASP.NET programming language with the use of Amazon Web Services (AWS).
3. Vishva Abeyrathne (S3735195) Iresh Udara Kaushalya (S3704769)
1. Signed Contribution Agreement
ProCarRental – Cloud Based Vehicle Rental Application
Student Name: Hewayalage Vishva
Lahiru Kantha Abeyrathne
Student Name: Kodithuwakku Arachchige
Iresh Udara Kaushalya
Student ID: S3735195 Student ID: S3704769
Contributions:
1. Front End Development
2. Use of AWS Services
Contributions:
1. Front End Development
2. Use of AWS Services
Contribution Percentage: 50% Contribution Percentage: 50%
By signing below, I certify all
information is true and correct to
the best of my knowledge.
Signature:
Date: 24/05/2020
By signing below, I certify all information is
true and correct to the best of my
knowledge.
Signature:
Date: 24/05/2020
2. Links
Direct link to the hosted web application - http://theprocarrent.com/
4. Vishva Abeyrathne (S3735195) Iresh Udara Kaushalya (S3704769)
3. Summary
A Vehicle Renting System called ProCarRentals has been designed and developed using
ASP.NET programming language to fulfil the requirement of Cloud Computing
Assignment 02. Amazon Web Services (AWS) will be use as the core cloud platform and
following services of AWS will be in use to function the application.
1. Elastic Compute Cloud (EC2) - As a Virtual Server.
2. Elastic Beanstalk – for deployment of the application.
3. Simple Service Storage (S3) – To store data such as images in the application.
4. Relational Database Service (RDS) – As the main database for storing and retrieval of
data.
5. Simple Email Service (SES) – Sending emails to customers.
6. CloudFront – To store static content to achieve low latency, high transfer rate.
7. Route 53 – As a DNA server to handle direct traffic to web server.
8. Rekognition – To recognize the total amount of an invoice with deep learning
analysis.
9. QuickSight - As a BI tool to create Dashboard.
Our main goals of the project can be stated as follow:
• Selection of appropriate cloud tools and technologies in order to formulate the
project completion with respect to the initial project proposal.
• Maintain a distributed model that contains a distributed architecture with
separate processing and storage components.
• Create a front-end application (web pages) which is user friendly for clients to
interact with.
• Achieve fast data processing along with maximizing task efficiency and
completion.
.
5. Vishva Abeyrathne (S3735195) Iresh Udara Kaushalya (S3704769)
4. Introduction
Most of the small companies still do not conduct their business on a web platform and
do not have a system or a website to manage their daily business operations better. One
of the major reasons for that is the cost associated with such a system. It is somewhat
expensive to build an e-commerce website and requires more amount to perform the
maintenance. However, it is more than effective even for a small business to have a
system of their own to handle and control their business operations instead of manual
paper work. Therefore, a system that can be accessible only by company will save
amount cost for a small-scale company and has the flexibility and control at least from
their side. But, with the time, as business grow, they can open their application also for
the clients to make their lives easier when dealing with reservations.
RentMe is a web-based Vehicle Rental System for Car Rental companies to keep track of
their vehicle rental and maintenance information along with a summary of incomes and
expenses related to the company. Administrator of the application has the capability of
adding new vehicles as well as registering new customers to the system with necessary
details. Application allows the administrator to perform vehicle reservations with
registered customers, vehicle returns as well as maintenance of the vehicles. There is a
feature in the system to effectively analyse the sales of the company with the use of a
dashboard representation.
This application is developed targeting small scale car rental companies with a
considerable number of customers, rather than medium and large-scale companies with
tons of customers. This application provides the necessary functionalities to manage
such car rental companies with their main operations. With the architecture of this
application, it can be easily extended once the company decides it to be. For example,
when the customer base increases, company tends to get more requests and it would be
difficult for administrators to handle all those simultaneously. In that case, current
application can be expanded for customers in order to make their own bookings by
performing several functionalities in the application.
6. Vishva Abeyrathne (S3735195) Iresh Udara Kaushalya (S3704769)
This application is a real-time application in which designing has been done to perform a
task within a minimum time frame. For this particular use case, which is an
administrator-based application, there will not be many of simultaneous user requests
such a client-side application. However, with the existing architecture or with the use of
auto-scaling groups and load balancing procedure, this application will respond within a
short period of time when the application is expanded to customers.
Use of AWS QuickSight can be considered as an improvement compared to most of the
similar applications. Those dashboards can be shared with the company owner and also
can send reports according to desired frequency level such as weekly or monthly.
Amazon Rekognition which is a machine learning based AWS component has been
utilized to automate the process of reading and manually adding an invoice amount of
the vehicle maintenance to the system.
7. Vishva Abeyrathne (S3735195) Iresh Udara Kaushalya (S3704769)
5. Related work
Thrifty
Thrifty company has a web application which is quite similar to this particular
application despite being accessible for the clients. However, Thrifty is a location
based rental application as they provide the service to the most part of the country.
Figure 5.1 Icon of Thrifty Web Application
Kayak
Kayak web application also offers functionalities that are similar to ProCarRentals
application in some ways. Kayak also runs their queries depending on the location of
the customer which is not a functionality in ProCarRentals.
Figure 5.2: Icon of Kayak Web Application
Apart from mentioned applications, many applications with similar functionalities
can be found. But when it comes to comparison, it is somewhat limited as developed
application is mainly focused on administrators while all the other applications are
open for customers to make their own reservations.
9. Vishva Abeyrathne (S3735195) Iresh Udara Kaushalya (S3704769)
7. Implementation
7.1 EC2
Launch an instance
Following AWS tutorial can be followed to fulfil this task.
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html
Connect to Linux Instance
Following AWS tutorial will take you to connect to your created Linux instance using
SSH.
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html
7.2 RDS
Creating a DB Instance
1. As the first step, sign in to your AWS Management Console and move to RDS.
Following link will take you to RDS.
https://console.aws.amazon.com/rds/
2. Under Navigation pane, choose Databases and select Create database.
3. Then Select Standard Create under Choose a database creation method.
4. In Engine options, select MySQL as the engine.
5. Make sure you tick off Free Tier under Templates.
6. In Settings, at DB Instance identifier, give a name for the instance according to your
reference (This name has to be unique across all DB instance in your account).
7. At Credential Settings, provide Master username and Master password.
8. Allow all other settings to be default.
9. Then select Create database option. Your instance will be created.
10. Go to Databases and under RDS and select the created instance.
Next, we need to create an inbound rule in the created instance in order to connect
to DB instance.
10. Vishva Abeyrathne (S3735195) Iresh Udara Kaushalya (S3704769)
11. In the page, move to Connectivity and security, -> Security -> VPC security groups
and select a security group.
12. At the Actions tab on the right-hand corner, select Edit inbound rules.
13. In the next page select Add rule.
14. Then select MYSQL/Aurora as Type, TCP as Protocol, 3306 as Port range and provide
source as your preference to database access.
15. Finally, click on Save rules.
Connecting to DB Instance
Follow following tutorial guide to connect created DB instance running MySQL database
engine.
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToInstance.
html
7.3 QuickSght
Creating a QuickSight account
1. At first, sign in to your AWS Management Console and go to QuickSight under
Analytics.
2. At the first instance, you have to register for a QuickSight account and select Sign up
for QuickSight.
3. Then select Standard or Enterprise account according your preference.
4. In the next page, select your preferred region and provide QuickSight account name.
5. If you wish, you can provide an email address for get important notifications, or else
keep default settings and select finish.
Creating a new analysis
1. When you log in to QuickSight account, select New analysis button in the top left
corner.
2. In the next page, choose New data set icon.
11. Vishva Abeyrathne (S3735195) Iresh Udara Kaushalya (S3704769)
3. Under, From New Data Sources, select MySQL and a separate form will be
loaded.
4. Fill the required fields according to the connection that you created with DB
instance and MySQL workbench.
5. Then select Create data source, connection will be validated, and you can create
analysis using the tables in according to the database selection.
7.4 Elastic Beanstalk
Creating and deploying .NET applications on Elastic Beanstalk
1. As the first step, sign in to your AWS Management Console and go to Elastic
Beanstalk under Compute.
2. Then select Create New Application on the top right-hand corner.
3. Tick off Web Server Environment under Select environment tier.
4. In the next page, provide following details.
5. Give an Environment name according to your preference.
6. Then provide a Domain and check availability and provide a Description optionally.
7. Under Platform, .NET on Windows Server and choose a platform branch according
to your preference.
8. Then choose Sample application under Application code.
9. Select under configure more options
10. Select Edit under Capacity.
11. Select Load balanced as Environment type and choose t2.micro as Instance type and
click save.
12. Select Edit under Database.
13. Provide Username, password and make sure you select mysql as Engine and click
save.
14. Then in the main window select Create environment.
12. Vishva Abeyrathne (S3735195) Iresh Udara Kaushalya (S3704769)
Following link contains a video demonstration for the .NET application deployment in
Elastic Beanstalk (Refer video from 14:00).
https://www.youtube.com/watch?v=pihVDe0On0Y
7.5 S3
Creating a S3 Bucket Uploading a file to an S3 Bucket using the AWS SDK for .NET
(high-level API)
1. At first, sign in to your AWS Management Console and move to S3 under
Storage.
2. Under Bucket name, provide a name according to your preference.
3. Select Region.
4. Keep default settings for Bucket Settings for Block Public Access.
5. Select Create Bucket.
Following link contains a video demonstration for Uploading a file to an S3 Bucket
using the AWS SDK for .NET.
https://www.youtube.com/watch?v=ynhgDYVQTEI
7.6 Simple Email Service (SES)
Integration of Amazon Simple Email Service into your .NET Application
1. At first, sign in to your AWS Management Console and move to SES under
Customer Engagement.
2. Under Email Addresses, select Verify a New Email Address and provide an email
address.
3. You will receive an email and click on the link for activation process.
4. In SMTP Settings, select Create My SMTP Credentials.
13. Vishva Abeyrathne (S3735195) Iresh Udara Kaushalya (S3704769)
5. Then follow the video in the link below to use SES to send and email from your
application (Refer Video from 03:12).
https://www.youtube.com/watch?v=vLcUz11rzT8
7.7 CloudFront
Configuring CloudFront Distribution
The following AWS tutorial can be accessed to configure a CloudFront distribution.
https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/GettingSt
arted.SimpleDistribution.html
CloudFront can be used with ASP.Net as follow.
https://aws.amazon.com/blogs/developer/using-amazon-cloudfront-with-asp-net-
apps/
7.8 Route 53
The following AWS tutorial can be used to getting started with Route53 and perform
necessary activities.
https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/getting-started.html
The tutorial below shows the path to Route 53 with AWS SDK for .NET
https://docs.aws.amazon.com/sdk-for-net/v2/developer-guide/route53-apis-
intro.html
7.9 Recognition
The following AWS Tutorial with .NET can be used as a reference material for
detecting a text from an image.
https://docs.aws.amazon.com/rekognition/latest/dg/text-detecting-text-
procedure.html
14. Vishva Abeyrathne (S3735195) Iresh Udara Kaushalya (S3704769)
8. User Manual
User will be prompted to login page once the application is being opened. Then user
has to provide username and password credentials to login to the system.
Figure 8.1: Login Page of ProCarRentals
For new users, please click New User button to proceed for the registration. After
filling required fields, the user will be redirected to login page.
Figure 8.2: User Registration page of ProCarRentals
15. Vishva Abeyrathne (S3735195) Iresh Udara Kaushalya (S3704769)
Main page of the application is shown as below where user will find all the vehicles
in the system while scrolling down.
Figure 8.3: Home page of ProCarRentals
User will have the ability to filter vehicles according to their preference using filters
shown in the following image.
Figure 8.4: Vehicle Filtration Component of ProCarRentals
16. Vishva Abeyrathne (S3735195) Iresh Udara Kaushalya (S3704769)
User can filter the vehicles based on its Make, Type, Year and Status. Status includes
all the scenarios in the use case such as Available, Rented and Under Maintenance.
Rented vehicles will be shown under red colour while available and under
maintenance vehicle will be displayed with green and yellow colours respectively.
Apart from that user can search for vehicle using Rego No without going through all
the vehicles top to botom even with the filters.
Figure 8.5: Side Bar of ProCarRentals
User will find Add New Car link and Add New Customer Link In the top left-hand
corner. Both the links will take the user to interfaces where a new vehicle as well as
a new customer can be inserted to the application separately.
17. Vishva Abeyrathne (S3735195) Iresh Udara Kaushalya (S3704769)
User can add all the necessary details for the customer using the interface similar to
following image.
Figure 8.6: Add New Customer page of ProCarRentals
A new vehicle can be inserted in to the system with the use of the interface which is
identical to the image below. A separate image of the vehicle can be uploaded to the
system along with other required details.
Figure 8.7: Add New Car page of ProCarRentals
18. Vishva Abeyrathne (S3735195) Iresh Udara Kaushalya (S3704769)
Following image shows the interface when a user a select a particular vehicle from
the set of vehicles in the home page. All the necessary details along with the image
will be displayed according to the selected vehicle.
Figure 8.8: Vehicle Details page of ProCarRentals
Several operations such as Renting, Returning, Add to Maintenance and Returning
from Maintenance can be performed for the chosen vehicle. When the vehicle is in
Available status, Customer Return button and Maintenance Return button will be
locked.
When the user selects Rent this Car option, following interface will be generated and
Rent Date, Return Date have to be provided along with the Customer. Then an email
will be sent to the customer email address specifying all the relevant details of the
reservation.
19. Vishva Abeyrathne (S3735195) Iresh Udara Kaushalya (S3704769)
Figure 8.9: Rent the Car Window of ProCarRentals
Once the car is being rented, it will be in Rented status, Only Customer Return
button will be active under vehicle details page. When the user selects Customer
Return option in an already rented car, following window will pop up with the total
for the rental. Then User has to choose Return the Car option.
Figure 8.10: Return the Car Window of ProCarRentals
20. Vishva Abeyrathne (S3735195) Iresh Udara Kaushalya (S3704769)
For every month, depending on the rental frequencies, vehicles have to be added to
maintenance. When a vehicle in the Available status, user can it to a maintenance by
clicking Add to Maintenance option in the relevant vehicle details page.
Once the vehicle is added to maintenance, it is in Under Maintenance status and
only Maintenance Return option can be chosen from the operations related to that
particular vehicle. When the user selects Maintenance Return, it will generate
following window where an invoice of the maintenance has to be uploaded. After
uploading the image, click Return from Maintenance button and vehicle will be
returned back and cost for the maintenance will be identified and sent to the
database.
Figure 8.11: Maintenance Return Window of ProCarRentals
21. Vishva Abeyrathne (S3735195) Iresh Udara Kaushalya (S3704769)
User also has the capability of managing Vehicles and Customers that are registered
with the system. For that, user can select List all vehicles under Vehicles tab and List
all customers under Customers tab in order to perform delete operation and update
relevant details.
Figure 8.12: Expanded Side Bar of ProCarRentals
22. Vishva Abeyrathne (S3735195) Iresh Udara Kaushalya (S3704769)
For instance, one user selects List all vehicles, the following image will be displayed.
Then user can select the required vehicle by clicking on Select this Car.
Figure 8.13: Vehicle Management page of ProCarRentals
When Select this Car button is pressed, following interface will appear to perform
update and delete operation for the selected vehicle.
Figure 8.14: Vehicle Details Management page of ProCarRentals
23. Vishva Abeyrathne (S3735195) Iresh Udara Kaushalya (S3704769)
In the menu bar of the home page, user will find two links such as Revenue and
Expenses. Revenue will take user to a QuickSight Dashboard which contains several
data visualisations related to revenue generation of the company. Similarly,
Expenses link contains a dashboard with several data visualisation related to
expenses of the company. In this scenario, user has to be given the permission to
view dashboards, and user has to be logged in to QuickSight account as well.
Image below shows the dashboard for Revenue and user can play with the
visualisations using Customer and Vehicle ID parameters.
Figure 8.15: Revenue Analysis Dashboard of ProCarRentals
24. Vishva Abeyrathne (S3735195) Iresh Udara Kaushalya (S3704769)
Similarly, user can select Expenses link and play with the visualisation using Vehicle
ID. Following image shows the dashboard for expenses.
Figure 8.16: Expense Analysis Dashboard of ProCarRentals
25. Vishva Abeyrathne (S3735195) Iresh Udara Kaushalya (S3704769)
9. References
[1] "Getting Started with a Simple CloudFront Distribution - Amazon CloudFront",
Docs.aws.amazon.com, 2020. [Online]. Available:
https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/GettingStarte
d.SimpleDistribution.html. [Accessed: 16- May- 2020].
[2]"Connecting to your Linux instance using SSH - Amazon Elastic Compute Cloud",
Docs.aws.amazon.com, 2020. [Online]. Available:
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html
. [Accessed: 10- May- 2020].
[3]"Step 1: Create an RDS DB Instance - Amazon Relational Database Service",
Docs.aws.amazon.com, 2020. [Online]. Available:
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Tutorials.WebServe
rDB.CreateDBInstance.html. [Accessed: 11- May- 2020].
[4]"Connecting to a DB Instance Running the MySQL Database Engine - Amazon
Relational Database Service", Docs.aws.amazon.com, 2020. [Online]. Available:
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToInstance.
html. [Accessed: 11- May- 2020].
[5]"Creating and deploying .NET applications on Elastic Beanstalk - AWS Elastic
Beanstalk", Docs.aws.amazon.com, 2020. [Online]. Available:
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_NET.html.
[Accessed: 10- May- 2020].
[6]"Upload a file to an S3 Bucket using the AWS SDK for .NET (high-level API) - Amazon
Simple Storage Service", Docs.aws.amazon.com, 2020. [Online]. Available:
https://docs.aws.amazon.com/AmazonS3/latest/dev/HLuploadFileDotNet.html.
[Accessed: 12- May- 2020].
26. Vishva Abeyrathne (S3735195) Iresh Udara Kaushalya (S3704769)
[7]"Send an Email Using the AWS SDK for .NET - Amazon Simple Email Service",
Docs.aws.amazon.com, 2020. [Online]. Available:
https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-using-sdk-net.html.
[Accessed: 14- May- 2020].
[8]"Getting Started with a Simple CloudFront Distribution - Amazon CloudFront",
Docs.aws.amazon.com, 2020. [Online]. Available:
https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/GettingStarte
d.SimpleDistribution.html. [Accessed: 16- May- 2020].
[9]"Using Amazon CloudFront with ASP.NET Apps | Amazon Web Services", Amazon
Web Services, 2020. [Online]. Available:
https://aws.amazon.com/blogs/developer/using-amazon-cloudfront-with-asp-net-
apps/. [Accessed: 16- May- 2020].
[10]"Getting started with Amazon Route 53 - Amazon Route 53", Docs.aws.amazon.com,
2020. [Online]. Available:
https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/getting-started.html.
[Accessed: 17- May- 2020].
[11]"Amazon Route 53 Programming with the AWS SDK for .NET - AWS SDK for .NET",
Docs.aws.amazon.com, 2020. [Online]. Available: https://docs.aws.amazon.com/sdk-for-
net/v2/developer-guide/route53-apis-intro.html. [Accessed: 17- May- 2020].
[12]"Detecting Text in an Image - Amazon Rekognition", Docs.aws.amazon.com, 2020.
[Online]. Available: https://docs.aws.amazon.com/rekognition/latest/dg/text-detecting-
text-procedure.html. [Accessed: 22- May- 2020].