Zdarma Java hosting: Heroku vs OpenShift

publikováno: 26.4.2015

Na Heroku i OpenShift je možné mít úplně zdarma Java web. aplikaci spolu s databází, přičemž to celé bude běžet na vlastní doméně. Tímto způsobem mi už přes rok běží v produkci některé mé weby, tudíž bych řekl, že s tím mám dost zkušeností a mohu porovnávat. Poznámka: Blíží se velký OpenShift upgrade (za dva měsíce), se kterým by se mohla vyřešit starší verze Javy a dalších aplikací (a také množství addonů).

Upozornění: Heroku 7.5.2015 oznámilo, že od července 2015 jejich free hosting výrazně omezí a prakticky bude kompletně nepoužitelný (idling každých 30 minut a aplikace bude mít uptime pouze 18 hodin - čili 6 hodin za den bude mít povinný výpadek ... čili tím prakticky zlikvidovali free hosting).

Funkce Heroku OpenShift
Number of web. apps
 
Neomezený počet aplikací.
3 aplikace per account.
Server
 
Vlastní Tomcat nebo Jetty, nejjednodušší je, aby aplikace byla spustitelný JAR soubor, který v sobě obsahuje embedded server (například Spring Boot), jinak je nutné použít Tomcat / Jetty runner
 
Tomcat / JBoss, nad verzí serveru není plná kontrola (což je problematické když je v té verzi zrovna nějaká chybička), zase na druhou stranu je to jednodušší pokud nepoužíváte Spring Boot.
Boot Timeout Aplikace musí nastartovat během 60 vteřin, jinak ji Heroku stopne. Tohle je obzvlášť nepříjemné zejména když aplikace používá Spring (singletony se vytvářejí při startu) a když se databáze automaticky generuje pomocí Hibernate (to se také děje při startu).
 
Žádný timeout při startu
Idling Když na jakoukoli webovou stránku během jedné hodiny nepřijde žádný požadavek, pak se "uspí" (v podání Heroku se celý server vypne).
 
Na jakoukoli web. stránku aplikace musí přijít požadavek během 24 hodin.
Latest Java Version
 
Java 8 (nejnovější)
Java 7 (starší, aktuálně je dokonce EOL - End Of Life)
Database
 
PostgreSQL 9.4 (nejnovější), max. 10 000 řádků ve všech tabulkách dohromady (ale uvnitř může být cokoli, i binární data nebo JSON objekty)
 
PostgreSQL 9.2 (starší - konkrétně 2,5 roku), MySQL, MongoDB, počet řádků je neomezený. Databáze sdílí disk s web. aplikací, serverem a případně dalšími daty, celkem 1 GB.
Files Na filesystém není možné nic ukládat, pouze tmp soubory, u nichž je zaručené, že tam zůstanou pouze po dobu provádění jednoho requestu na server.
 
Na filesystém je možné ukládat cokoli, jako u databáze se se vším všudy musíte vejít do 1 GB.
Upload web. aplikace
 
Git, GitHub, DropBox
Git
Custom WAR file Krátká odpověď: ne, dlouhá odpověď: ano, ale je to deprecated a v budoucnu to nemusí fungovat
 
ano, je možné libovolným způsobem vytvořit WAR soubor a ten nahrát na OpenShift
Uptime Heroku jednou za den provede automatický restart aplikace (s čímž je spojený výpadek a to je hodně otravné)
 
Žádný automatický restart jako u Heroku
Addons
 
U Heroku je spousta addonů (145 addonů), které ale většinou nevyužijete (nebo je možné je používat i bez Heroku). Poznámka: u addonů ať se jedná o Heroku nebo OpenShift je vždy riziko že mohou kdykoli přestat fungovat, jedná se o online služby externí subjektů.
Addonů moc není (32 addonů).
Poznámky
 
Práce s Heroku mi přijde víc high-level, víc věcí jde udělat klikacím způsobem ve webové administraci. 
Téměř všechno je nutné udělat z příkazové řádky. 

Závěr: neexistuje jednoznačné doporučení jestli preferovat Heroku nebo OpenShift, každý má své silné i slabé stránky.

Reference

Podavane informace byly aktualni, byly vysvetlene i souvislosti, hlavne na uvod byl dobre vysvetlen kontext probiraneho tematu, teda co je co a jaky to ma vyznam. Navic bylo cele skoleni podporeno

Petr

Školení bylo vážně skvělé. Nejsem začátečník, se Spring Bootem dělám už rok a tak jsem se bál, že mi školení nic nedá. Školení mi ale dalo to, že všechny střípky

Petr

Za sebe jsem byl maximálně spokojený - dostatek prostoru i pro naše připomínky, které jste skvěle zodpověděl a případně i předvedl a ničemu se nevyhýbal. Taky se mi určitě líbilo

Jiří


Novinky

13.11.2018: Přechod z Java 8 na 11
Moje přednáška o přechodu z Java 8 na 11 z JavaDays

11.11.2018: SDKMAN
SDKMAN - nástroj pro automatizaci instalace JDK / Mavenu apod.

11.11.2018: Spring Boot + Docker
Jak na Spring Boot + Docker?