Linux E X P R E S

Facebook

OpenShift Express: Svobodný cloud od Red Hatu

cloud.png

Nainstalujte a provozujte vlastní webovou aplikaci napsanou v Pythonu, Ruby nebo PHP zcela zdarma na serverech firmy Red Hat. Je to velmi snadné, rychlé a efektivní. Platforma je založena na open source, kdykoli můžete přeřadit na placenou verzi, případně odejít jinam. Cloud od Red Hatu je totiž svobodný.


Společnost Red Hat na květnovém summitu v Bostonu představila ucelené řešení pro IaaS s názvem CloudForms, které sestává z více než šedesáti open-source projektů a poskytuje otevřenou a stabilní platformu pro budování veřejných i soukromých cloudů. Kromě mnoha dalšího také oznámila dostupnost PaaS projektu OpenShift, který je logickým vyústěním akvizice společnosti Makara z konce roku 2010. OpenShift je zcela svobodnou platformou pro technologie Spring, Seam, Weld, CDI, Rails, Rack, Symfony, Zend Framework, Twisted, Django a Java EE. Varianta Express je navíc k dispozici zcela zdarma.

Že jste některým výrazům a zkratkám nerozuměli? Nevadí, podíváme se nejprve podrobně na to, co je to vlastně cloud, IaaS, PaaS, SaaS, DaaS a teprve potom se stručně mrkneme na to, jak OpenShift použít.

Cloud

Je těžké a zároveň nezáviděníhodné pojem cloud definovat. Pro každou skupinu lidí může znamenat něco jiného. V článku se budu nejvíce soustředit na technologický pohled, protože mou cílovou skupinou jsou programátoři, kteří by si chtěli vyzkoušet cloud od Red Hatu.

Softwarový cloud (nebo jen cloud) je nejčastěji chápán jako poskytování prostředků přes síť. Typickým prostředkem může být software, jako je například webová aplikace pro práci s elektronickou poštou. Takto cloud chápe většina koncových uživatelů, ale to je jen špička ledovce. Troufám si tvrdit, že ta větší část, která je pro mnohé skryta pod chladnou vodou, je poskytování aplikačních platforem a infrastruktury. A skutečně se v praxi poskytování prostředků přirozeně dělí na software samotný (SaaS – Software as a Service), aplikační platformu (PaaS – Platform as a Service) a infrastrukturu (IaaS – Infrastructure as a Service).

Teď to bylo jako ve škole, ale slibuji, že v dalším textu nebudou žádné další nudné výčty. Software je snadné si představit, může to být například webová poštovní schránka nebo CRM systém. Nikde ovšem není psáno, že se musí jednat o webovou aplikaci. Klidně to může být program – například účetní program – který veškeré informace načítá přes síť, ale webové aplikace převažují.

Infrastrukturu si můžete představit prostě jako počítače, na kterých to všechno běží. Zjednodušeně řečeno servery. Může se jednat o fyzické servery (říkáme jim často „holé železo“ – bare-metal), ale velmi často jsou servery virtualizovány. Občas si lze přečíst o tom, že cloud rovná se virtualizace a naopak. Není tomu tak. Díky virtualizaci byl cloud katapultován do pozornosti IT světa, ale bez problému jej lze provozovat na farmě serverů, které nejsou virtualizovány.

Ke zmíněným serverům je nutné připočíst také operační systém (a jeho případnou cenu). Když někdo uvažuje o IaaS, typicky potřebuje serverů víc, a proto je na místě zmínit také nástroje pro instalaci nebo-li vytváření (provisioning), správu (management) a monitoring. Dobrý poskytovatel IaaS musí nabídnout všechny zmíněné ingredience; a dnes už i něco navíc.

Konečně aplikační platforma je to „něco mezi“. Aby mohl zákazník provozovat své aplikace, potřebuje je na něčem provozovat. Typicky se může jednat například o javovský aplikační kontejner (např. Red Hat JBoss Application Server), programovací jazyk spolu s aplikačním frameworkem (Ruby on Rails, .NET, Django) a v některých případech nabízejí poskytovatelé PaaS pouhý programovací jazyk (Python, Java, Ruby), sadu knihoven, nástroje pro správu a monitoring. Samozřejmě spolu s možností ukládání dat, typicky relační i nerelační databáze.

Jak se říká – jeden příklad za všechny. Typickou ukázkou „čistého“ IaaS jsou firmy Rackspace a Amazon (ta ovšem nabízí i PaaS). Firmy se specializují na poskytování serverů ve velkém. Na jedno kliknutí můžete mít jeden, dva, sto serverů. Většina IaaS poskytovatelů, Amazon a Rackspace nevyjímaje, nabízejí také poskytování datových úložišť (někdy se označuje jako DaaS – Data as a Service).

„Čistokrevného“ poskytovatele PaaS už je těžší najít, byl by to zejména Microsoft se svou nabídkou služeb pro .NET aplikace (Azure), Red Hat s technologií OpenShift, Google se svým App Enginem nebo VMWare, který PaaS může poskytovat nejen díky posledním akvizicím v této oblasti (např. Spring Source). Velmi zajímavě vypadají PaaS poskytovatelé Heroku nebo Engine Yard, kteří se specializují na poskytování platformy pro jazyk Ruby (a Ruby on Rails). První jmenovanou společnost pohltila firma SalesForce.com.

Situace na poli SaaS je jednodušší a čtenář by jako favorita asi hádal aplikaci Gmail společnosti Google, respektive celé jejich Google Apps. Jenže leader SaaS trhu je úplně jiný – kalifornská společnost SalesForce.com vydělává na svém CRM poskytovaném přes web momentálně nejvíce. Do této kategorie spadají všechny ty aplikace, o kterých denně na internetu čteme. Webové textové procesory, kalkulátory, prezentační nástroje, editory fotek, audia, videa a kdoví co ještě. Tohle je ta špička ledovce, o které jsem mluvil.

Pro někoho může být zajímavé přečíst si, jak to vlastně funguje v praxi. Pomineme-li fakt, že za dané služby bude zákazník typicky platit, pak je situace nejjednodušší u softwaru. Ten prostě používá. U platformy se obvykle jedná o nahrávání aplikace na servery poskytovatele (deployment), provozování a správu. Zjednodušeně řečeno zákazník potřebuje server s určitým operačním systémem a aplikační vrstvou, tak si jej přes webové rozhraní „objedná“ a během okamžiku se k němu může připojit a aplikaci nahrát. Nestará se o nižší úroveň, jako je například zabezpečení operačního systému a firewall, což je spíše úloha při využívání IaaS. Tam má zákazník doslova „volnou ruku“.

Cloud nemusí být jen veřejný. Celá koncepce je pro firmy natolik zajímavá, že budují vlastní cloudy běžící v rámci jedné nebo více firem. Sílu nabírá také velmi zajímavý hybridní cloud. Jako příklad mohu uvést aktivní záložní systém běžící na hostovaném cloudovém řešení. Data se replikují přes zabezpečený kanál a v případě výpadku interních systémů naběhne záložní systém přímo naInternetu. Uživatelé nemusejí vůbec poznat rozdíl a s přibývajícím provozem mohou správci snadno a rychle navyšovat výpočetní kapacitu na hostovaném cloudu až do doby, než bude interní provoz obnoven.

Je velmi zajímavé sledovat, jak se vše bude vyvíjet. Vznikají totiž společnosti, které poskytují pouze přidanou hodnotu. Například zákazníkům umožní pohodlně vyvíjet, testovat a nasazovat software (tedy PaaS), ale samotná infrastruktura běží jinde (například na Amazonu). Firma může vydělávat, aniž by teoreticky měla jediný server, jediného technika se šroubovákem. Soustředí se pouze na to, co umí. Příkladem může být třeba Red Hat nebo Engine Yard. Pikantní na tom je, že typickým zákazníkem cloudových řešení jsou často samotní cloudoví poskytovatelé.

Schéma PaaS, zdroj rhcloud.com Schéma PaaS, zdroj rhcloud.com

CloudForms a OpenShift

Společnost Red Hat má velké zkušenosti s poskytováním operační a aplikační infrastruktury na bází Red Hat Enterprise Linuxu a produktech JBoss již řadu let. Mezi její zákazníky patří velké korporace, státní organizace i malé firmy a firma také dlouho poskytuje prostředky pro náročnou správu operačních systémů a aplikačních prostředí. Není proto překvapením, že firma představila zcela novou řadu produktů pro IaaS přinášející elasticitu cloudu do firemního prostředí s názvem CloudForms. CloudForms umožní efektivní správu prostředků pro veřejný, privátní i hybridní cloud.

Předmětem našeho článku je však druhá představená technologie. OpenShift poskytuje open-source platformu pro vývoj webových i mobilních aplikací. K dispozici je ve třech variantách: Express, Flex a Power. První jmenovaná nabízí flexibilní a agilní nástroj pro vývoj aplikací v jazycích Ruby, Python a PHP. Samotný běh zajišťuje Red Hat Enterprise Linux 6, webový server Apache HTTPD 2.2, databáze SQLite 3.6. K dispozici je zdarma 128 MB diskového prostoru a 256 MB paměti, nasazení aplikací probíhá přes protokol git a speciální řádkový klient. Lze se také připojovat na externí databáze MySQL a Amazon-RDS. To vše je zdarma.

Druhá varianta (Flex) se od první liší v mnoha ohledech. Práce s Flexem probíhá pomocí webového rozhraní, kde je možné definovat aplikační servery (kontejnery), clustery, spravovat aplikace a sledovat statistiky provozu. Zatímco spotřebované zdroje u Expressu platí Red Hat, v případě Flexu je potřeba mít přístup na Amazon EC2, se kterým aplikace spolupracuje. Přes rozhraní si zákazník navolí potřebnou konfiguraci – jazyk PHP nebo Java, aplikační server Apache HTTPD, Tomcat nebo JBoss AS, aplikační frameworky Zend, databázi MySQL, Mongo a Memcached. Vše snadno a rychle.

Třetí variantu (Power) zatím společnost Red Hat představila pouze zevrubně. Bude poskytovat nejjemnější přístup (přihlášení na roota), komplexní topologie a podporu šablon systémů.

Všechny zmíněné technologie, tedy CloudForms i OpenShift, mají jednu společnou důležitou vlastnost. Nejen že jsou založeny na open-source technologiích, ale díky technologiím, jako je DeltaCloud API, nezamykají zákazníky do pasti (vendor lock-in). Ten může aplikaci vyvinout a provozovat tak, aby mohl kdykoli odejít k jinému poskytovateli. Důraz na přenositelnost je tedy kladen od začátku, což zákazníkům poskytuje velkou flexibilitu a úsporu nákladů, protože dodavatel služeb se musí více snažit, aby k odchodu zákazníka nedošlo.

Začít provozovat aplikaci na OpenShiftu Express je velmi jednoduché. Jediné, co potřebujete, je klient git, jazyk Ruby a knihovnu OpenSSL. Pomocí gitu se nahrávají zdrojové kódy do cloudu, v Ruby je naprogramován klient pro správu aplikace a protokol SSL je použit ke komunikaci.

Pakliže si do systému Fedora nebo Red Hat dle dokumentace přidáte patřičný repozitář, nainstalování klienta je snadné: yum install rhc. Protože je klient naprogramován v jazyce Ruby a k dispozici je balíček Rubygem, lze jej nainstalovat všude tam, kde funguje Ruby a Rubygem (gem install rhc). Například do jiné linuxové distribuce, Mac OS nebo Microsoft Windows.

Ještě než začnete se svým prvním pokusem, je nutné se registrovat na stránkách OpenShift – tlačítko Try It Now. Poté si vytvoříte vlastní virtuální doménu, kterou máte „nastálo“. Lze ji kdykoliv změnit parametrem --alter.

rhc-create-domain -n mojedomena -l muj@email_com

Spustit plnohodnotný příklad v jazyce PHP lze doslova ve vteřině, takže budu velmi stručný. Detaily vysvětlím později. Většina příkazů má parametr -l specifikující e-mailovou adresu, kterou jste si zaregistrovali v prvním kroku (v příkladu muj@email_com). Při vytvoření domény však klient vytvoří uživatelský certifikát a vše si „zapamatuje“, takže není potřeba jméno dokola zadávat. Vytvoření PHP aplikace tedy probíhá takto:

rhc-create-app -a hellophp -t php-5.3.2

Tento příkaz vytvoří aplikaci na serveru, připraví git repozitář a naklonuje jej do aktuálního adresáře. V nově vytvořeném adresáři s názvem hellophp najdeme podadresáře php/ (soubory exponované do Internetu), misc/ (kód aplikace), lib/ (místo pro knihovny) a soubor README. Adresa naší nové aplikace je jmeno_aplikace-domena.rhcloud.com, tedy hellophp-mojedomena.rhcloud.com.

V současnosti není možné využívat službu OpenShift Express na vlastní doméně druhého řádu.

Tak a teď jdeme nahrávat. V tomto případě„Hello World“ aplikaci, ale nic vám nebrání zprovoznit jakoukoli aplikaci, které funguje s PHP/SQLite. Například Drupal 7. Na stránkách OpenShiftu je spoustu návodů, jak to provést. Adresář hellophp byl naklonován z gitového repozitáře. Takže modifikujeme soubor php/index.php, do kterého vložíme „Hello World“, případně phpinfo(). Nyní stačí změnu vložit do repozitáře a změny odeslat na vzdálený repozitář (do větve master):

vim php/index.php
git commit -am "prvni verze"
git push origin master

No a co dál? To je právě ono. Nic. Aplikace ihned funguje. Respektive za okamžik, podle velikosti nahraných dat. Podobně postupujeme při dalších změnách. Výhoda použití gitu je v jeho výkonnosti a flexibilitě. Vývoj samotný může probíhat přímo v tomto repozitáři, případně v úplně jiném.

Pakliže budete aplikaci provozovat delší dobu a chtěli byste si udělat kompletní zálohu (například z bezpečnostních nebo testovacích důvodů), není nic jednoduššího než použít příkaz rhc-snapshot, který vytvoří kompletní archiv.

Naprosto stejně postupujeme v případě Ruby a Pythonu, jen u příkazu rhc-create-app použijeme odlišný parametr -t a adresářová struktura bude jiná. V obou případech totiž není k dispozici modul přímo pro Apache, ale komunikaci s webovým serverem zajišťuje Rack API pro Ruby, respektive WSGI API pro Python. Věci pro programátory dobře známé.

A to je vše, přátelé. Já říkal, že to bude stručné.

Diskuze (10) Nahoru