INTRODUCTION
A local San Luis Obispo startup, PolyRents, aims to streamline the rental housing application process by having both tenant applicants and landlords use a single, organized online platform. They launched their beta with landlords a few weeks ago and plan to have several thousand users in the next year. PolyRents already has a React – based web application running with a Python Django REST API that is deployed on the Heroku cloud – hosting platform.
In preparation for their expansion, PolyRents reached out asking for help with their back – end infrastructure needs. PolyRents wants help exploring cloud – hosting alternatives like Amazon Web Services (Amazon), to learn how to make a robust backend development and deployment pipeline. They would like to know about modern infrastructure techniques to optimize scalability, response times, and to reduce overall cost to the company. PolyRents wants to know at what point the use of an abstracted infrastructure service is no longer worth the cost, and when they should switch to a cheaper alternative.
BACKGROUND
The cloud – compute model is a combination of IaaS and PaaS. “ Cloud computing is the on demand delivery of compute power, database storage, applications, and other IT resources through a cloud services platform via the Internet with pay as you go pricing” (Amazon). Each cloud hosting provider has different hardware and features.
“A web server stores and delivers the content for a website ” (NGINX). A PolyRents client accesses the website on their web browser, asking for data using HTTP requests. The web server sends the client HTTP responses with data, such as HTML documents or images (Ubuntu). PolyRents uses Gunicorn, a pure – Python HTTP web server, to run their application and take concurrent client requests.
DESCRIPTION
To understand the advantages and costs of Heroku and AWS, this project will deploy PolyRents’ application in an Elastic Beanstalk environment and a Heroku environment:
Figure 4 shows the individual components of each PaaS architecture and their handling of web requests. Although similar architecturally, Heroku and AWS provide access to and configuration of different components.
EVALUATION
Metrics
Heroku and AWS will be evaluated on the following metrics:
- Scalability
- Total cost
- Efficiency
- Availability
- Response times
- Error rates
- Configuration time
- Deployment time
- Maintenance time
The last three metrics are of great importance to the CTO of PolyRents – he is concerned that the time required learning, configuring, and maintaining an AWS environment is not worth the potential lesser costs.
CONCLUSION
The project was an incredibly educational experience – I chose the topic of cloud infrastructure and hosting because it is becoming increasingly more important in an expanding IoT and SaaS – based economy. In fact, California Polytechnic State University just announced that it will switch its technologies to use an AWS cloud – hosting environment.
It is important to consider the security of these applications. It is not ethically responsible to let the cloud – hosting platform abstract the infrastructure away to the point that developers cannot control the access permissions of their backend applications and servers. AWS maintains this control by giving users the ability to define clear security rules around every service.
A future direction that is more complex would be finding the best combination of all types of Heroku dynos and AWS components by tweaking configurations. This work would find the optimal combination for growing startups to deploy their applications in a relatively cheap but available and scalable environment.
Source: California Polytechnic State University
Author: Colton Stapper