Heroku -- an Application Deployment Service
Tags: heroku, javascript
Published: 2021-01-04 02:54:35

##What is Heroku? 

Heroku is a container-based cloud Platform as a Service (PaaS). It “lets companies build, deliver, monitor and scale apps” (Heroku). Heroku manages the infrastructure, hardware and maintains the servers for the application. This enables engineers to focus on the development of their app. Heroku handles roughly 26 billion requests every day (more than 300,000 requests per second) and users have created over 9 million apps. 
Heroku was created by Salesforce and is hosted on Amazon Web Services. Its main purpose is to be a fast application deployment service. The supported platforms include running environments for Ruby, Python, PHY, Clojure, Go, Java, Scala, and Node.js apps. It is only available though in the United States and Europe. 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/qiqei0b68jedj0eb59k3.jpg)

##What is a Platform as a Service?

Platform as a Service (PaaS) is a service that includes the full development and cloud deployment environment of your application. There are add-on services and pay-as-you-go options to deploy your application. PaaS is designed to cover the complete infrastructure of the application, that is the servers’ storage and networking. PaaS also incorporates “middleware, development tools, business intelligence (BI) services, database management systems, and more” (azure). PaaS is designed to build, test, manage, deploy, and update the web application while you, the user only has to develop and manage the services you create. The PaaS will manage software licenses, the application organization and middleware, container orchestrators, like Kubernetes, or dev tools and other properties. 

##What are Kubernates or ‘k-eights’? 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/q3kbb6g3egl35k65qbyp.png)

Kubernetes is open-source software used to manage and deploy application containers. So what that means is that most applications currently are container-based, which utilize microservices packaged with their dependencies and configurations. There may be numerous containers deployed across many different servers. Operating the many moving components can become more and more complex. Kubernates manage this complexity by delivering an open source API that dictates how and where the containers will run. Kubernates do this by controlling a number of virtual machines. The containers are then scheduled to run on these virtual machines depending on their available computation resources. Kubernates are extremely helpful because they allow containerized apps to maintain their efficiency by providing a way to schedule and deploy their containers and scale those containers to the user’s desired state.  

##Advantages of using PaaS

* Cuts coding time due to the built in app components, like workflow, directory services, security features etc.
* Adds development capabilities without having to search for/hire additional staff 
* Application can be utilized over multiple platforms, including mobile, more fluidly
* Supports team members who are in remote locations because the development environment can be accessed over the Internet 
* Successfully manage full application development (building, testing, deploying, and updating/managing within same integrated environment) 


In conclusion, Heroku is a great cloud PaaS to utilize for application deployment. Heroku allows the user to build extensible (designed to allow for added functionality) applications. By offering Heroku in a pay-as-you-go model, developers can pay for exactly what they need their application to do (to build a personal application or MVP is free). When building your next application, consider Heroku if you have never used this service. 

###**Sources**
A, S. (2020, January 6). Heroku or Amazon Web Services – Which is Best for Your Startup? Retrieved December 29, 2020, from https://rubygarage.org/blog/heroku-vs-amazon-web-services

Heroku. (2020). What is Heroku. Retrieved December 29, 2020, from https://www.heroku.com/what	
Microsoft. (2020). What is PaaS? Platform as a Service: Microsoft Azure. Retrieved December 29, 2020, from https://azure.microsoft.com/en-us/overview/what-is-paas/

Steele, C. (Director). (2020, November). The Web Developer BootCamp 2020 [Video file]. Retrieved December 29, 2020, from https://www.udemy.com/course/the-web-developer-bootcamp/learn/lecture/22361220#overview