Heroku je cloudová platforma PaaS (Platform as a Service), která podporuje několik programovacích jazyků. Jedná se o jednu z prvních cloudový platforem, protože byla vyvíjena již od června 2007. V té době podporovala pouze Ruby, ale nyní již zahrnuje podporu Javy, Node.js, Scaly, Closure, Pythonu, PHP i Go. Z toho důvodu se jí říká „platforma polyglot“, protože dovoluje vývojářům stavět, spouštět a škálovat aplikace podobným způsobem napříč všemi jazyky. Heroku bylo koupeno v roce 2010 společností Salesforce.com.
Architektura
Aplikace, které běhají na Heroku mají obvykle unikátní doménu, která je využívána k routování http requestů správným kontejnerům. Každý aplikační kontejner, neboli dyno, je rozprostřen v dyno mřížce, která se skládá z několika serverů. Git server Heroku vyhodnocuje push requesty do aplikačního repository a nechá projít jen schválené uživatele.
Všechny služby Heroku jsou hostované na EC2 cloudové platformě od Amazonu.
Deploy
Hlavní obsah vývoje je zdrojový kód, navázané závislosti, pokud existují, a Procfile pro příkazy.
Aplikace je poslána do Heroku skrze Git, GitHub, Dropbox nebo některé API.
Existují packety, které berou aplikaci spolu se všemi závislostmi a runtime jazykem. Těmto packetům se říká build-pack a jsou prostředkem pro kompilační proces.
Slug je kombinací nebo sdružením zdrojového kódu, závislostí, runtimu a kompilovaného nebo generovaného výstupu build systému, který je připraven ke spuštění.
Konfigurační soubor umožňuje změnu konfiguračních dat bez zásahu do zdrojového kódu.
Add-ony jsou služby třetích stran, které jsou specializované a lze je snadno přidružit k aplikaci a tím rozšířit její funkcionalitu.
Release je kombinací slugu (aplikace), konfiguračního souboru a add-onů.
Heroku udržuje logování releasů, které vývojář nasadí.
Runtime
Hlavní jednotkou, která zajišťuje runtime prostředí jsou kontejnery dyno, což jsou izolované, virtualizované unixové kontejnery.
Tvorba těchto kontejnerů vychází z počtu spuštěných kontejnerů, rozdělených mezi jednotlivé procesy, které vývojář škáluje.
Manažer kontejnerů je zodpovědný za správu kontejnerů napříč všemi aplikacemi, které jsou na Heroku spuštěné.
Jednorázové kontejnery jsou dočasné kontejnery, které spouštějí svůj vstup nebo výstup, který je připojený k lokálnímu terminálu. Jsou načteny s posledním release.
Každý kontejner má vlastní adresář souborů s čerstvou kopií nejnovějšího release. Může být použit jako dočasný pokusný blok, ale změny adresáře souborů se nereflektují do ostatních kontejnerů.
Logplex automaticky spojuje logy všech spuštěných kontejnerů aplikace, stejně jako komponent jako jsou routery, čímž tvoří jediný zdroj informací o aktivitě.
Škálování aplikace zahrnuje využití více kontejnerů pro každý typ procesů.
Výhody použití Heroku
Jednoduchý začátek. S použitím Heroku je snadné začít. Není potřeba řešit infrastrukturu. Je tak ideální pro startupy, které nechtějí trávit čas a peníze tím, že budou nastavovat konfiguraci.
Škálování. Škálování je jednoduché, stačí specifikovat počet kontejnerů, které potřebujete.
Použití standardních nástrojů. Případnou migraci na jinou službu zjednodušuje to, že Heroku využívá standardní nástroje.
Nevýhody použití Heroku
Abstrakce. Abstrakce jde na úkor kontroly. Heroku neumožňuje přímou kontrolu nad konfigurací aplikace, co se týče hardware, operačního systému, firewallu nebo verzí. Je nutné používat standardy, které Heroku definuje.
Cena. Při vyšším trafficu je cena v porovnání s konkurenčními platformami vysoká.
Manuální škálování. Škálování na vysoký traffic je nutné řešit manuálně.
SSH. Není možné se k serveru přihlásit za pomoci SSH.