Cloud Services (Heroku)
Heroku is a platform-as-a-service.
SaaS: Software as a Service.
eg: Dropbox, Google Drive, WebEx, ….
PaaS: Platform as a Service.
eg: AWS, elastic Beanstalk, Heroku, open ship, …
IaaS: Infrastructure as a Service.
eg: AWSec2, Google computer engine, digital ocean. …
Cloud Services Analogy
If your application is dependent on other upstream or Downstream applications, chances are high that you may have a middleware that connects these applications in an asynchronous fashion
Deploy on a Runtime environment, middleware, VM, server, storage, networking
Heroku Core Components
1. Heroku Platform
2. Heroku data services
2.1 Heroku Postgres: A managed SQL database and one of the most popular DBMS.
A relational database management system (RDBMS) is a program used to create, update, and manage relational databases. Some of the most well-known RDBMSs include MySQL, PostgreSQL, MariaDB, Microsoft SQL Server, and Oracle Database.
2.2 Heroku Redis: One of the most popular key-value store used for the caching needs and if the app needs a NoSQL DB
2.3 Apache Kafka: Can be used as middleware to implement pub sub solution or as a streaming data service if your app needs one
3. Heroku Enterprise
3.1.Heroku Private space: a network-isolated qroup of applications and data services within an isolated runtime environment
3.2 Heroku connect: a bi-directional sync between Heroku Postgres and Salesforce
3.3 Heroku Shield offers additional security features to build HIPAA or PCI-compliant apps for regulated Industries like healthcare and financial services
SQL: sico, noSQL: no sico
What the value does heroku offer as a Paas service
The code is pushed to the git repository and deployed The deployed code is pushed to Heroku Dynos which are also called smart containers. The Heroku Runtime provides you with all the data services and integration services required to run the application seamlessly.
As your app gets more traction, you need to focus on Scalability, and to fix any issues the customers may find, and perform a continuous build-on-deploy in the software world. This process is commonly called CICD
The Dynos can also be manually scaled or auto-scaled to meet the new demand and improve the performance of your application.
Heroku First-Class Languages
This means that Heroku Specialists are constantly at work to make sure the latest language versions features and frameworks are maintained patched and supported by Heroku
Heroku lets you deploy and run applications that are developed using:
- Ruby
- Java
- Node.js
- Clojure
- Scarla
- Go
- Python
- BuildPacks for other languages
Heroku extends support for any language of your choice by providing build packs that are contributed by the Heroku community.
Heroku Deployment
You need to provide:
- Application Source Code Dependency Description.
That instructs the build system
Eg: pom.xml for Java, package.json for Node, … - Let Heroku know what the entry point is for your application. (procfle)
Common frameworks (Rails, Jamgo) define entry points in configuration files and Heroku can easily figure them out.
For apps that don’t use a framework you explicitly define the entry point in a procfle file where each line declares a process type in the form of a process type colon command. A Process type is an alphanumeric name of your command and these will need to be executed. - Heroku uses Git to deploy your app (procfle)
Git is a distributed commonly used version control system.
When you create an app on Heroku a git remote is created named “Heroku” and gets associated with the local git repository of your app and deploys with: “git push heroku master”.
Now that the source code and its dependencies are available in the Heroku platform Heroku initiates a build.
Build Packs
Heroku Produice has an output called slug, which is ready for execution now. The slug will be run on Dynos called smart containers, which are lightweight Unix containers.