Cloud Services (Heroku)

Ben Mukebo
4 min readJan 20, 2024

--

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.

--

--

Ben Mukebo
Ben Mukebo

Written by Ben Mukebo

I’m a full-stack software developer and open-source enthusiast with a passion for web development, accessibility, pair programming, and remote work.

No responses yet