Gábor Osztroluczki

Osztroluczki Gábor

a Bridge Budapest ösztöndíjasa, Prezi, San Francisco, 2016

Kiszolgálók a felhőben

Rendre megkaptam az inspiráló történeteket hogy tényleg a közeli barban (El Capitan) és mosoda-kávézóban (Brainwash) hogyan találta ki két haver, hogy a felfújható matracukat kiadnák egy maréknyi dollárért, de ehhez kéne valami felület, és hogy azt hogyan is kéne létrehozni.

Vagy hogy az egyik autó megosztáson alapuló cég szép nagy ziccert hagyott ki mert a vezető nem volt hajlandó változtatni egy picit a koncepción. Most nem Uber-t, vagy Lyft-et használnák a nyugati világ emberei mint alapértelmezett kifejezést a car-sharing-re.

Ilyen sztorikkal és a startup hőskor romantikájával körülvéve az ember akaratlanul is azon gondolkodik, hogy vajon mit is csinálna, mivel indíthatná be a saját startupját? Melyik ötlete lenne a legéletképesebb? A business model canvas hogy is nézne ki? Amennyiben valamilyen szoftver fejlesztésével jár együtt, akkor hogyan is lehetne gyorsan, összerakni egy prototípust, egy MVP-t. Hol is kéne azt üzemeltetni.

Amazon, Google, Microsoft mind biztosít lehetőséget a fejlesztőknek arra, hogy kiaknázzák az ő robosztus infrastruktúrájukat és több évnyi tapasztalatukat.

Mire is lehet szüksége egy csapatnak, ami egy ötletet igyekszik implementálni?

Valószínűleg kelleni fog IT fejlesztés, de miféle? Megeshet, hogy valaki már elkészítette a szükséges eszközt, mint mondjuk egy online shop-ot. Ott a Shopify, Magento, gyorsan könnyen használható szolgáltatások. Ügyvitelhez levelezésre és kommunikációra ott a Google Mail, Microsoft Outlook Live. Gyors üzenetváltásra a Slack, HipChat, Hangouts… Ha már beindult a termék és céget alapítani is érdemes, akkor ott a MiniCrm amivel számlázni és ügyfélkapcsolatot kezelni is lehet. Egyre több online, és igény szerint igénybe vehető szolgáltatás van. Országonként más és más az optimális eszköz.

Mi van akkor amikor ez a csapat olyan fejlesztésbe kezd, ami idővel olyan szolgáltatássá növi ki magát, mint a korábban felsoroltak? Nos, rengeteg opció áll rendelkezésre.

Kérdések amiket érdemes feltenni:

  • Igénybe veszek egy meglévő szolgáltatást, vagy implementálom?
  • Megéri-e kifejleszteni valamit, ami már most is elérhető?
  • Az idő múlásával megéri-e mégis elkészíteni azt a valamit?
  • A piacralépési idő hogyan rövidíthető?
  • Érdemes-e létrehozni a teljes IT infrastruktúrát, vagy legyen minden egy (vagy több) szolgáltatónál? Legyen hibrid, ahol van egy core infrastruktúra, és minden komolyabb kapacitás szolgáltatóktól szármzik?

1000 probléma, 1000 válasz. Készítsünk egy alkalmazást ami adatokat gyűjt, hiszen az IoT már a spájzban van. Tegyük fel, hogy ezekból az eszközökből ömlik be az adat. Ezt el kell tárolni, feldolgozni. Legyen hozzá egy webes felület is, mert az jó, meg hát valahol nézni kell az adatokat.

Lássuk csak, miből választhatunk:

Amazon AWS, Google Cloud Platform, Microsoft Azure, Heroku. Van még rengeteg lehetőség, itt most ezeket nézzük meg.

Mit is nyerünk azzal, ha egy cloud szolgáltatónál futtatjuk a dolgainkat?

  • Skálázhatóságot,
  • monitoring-ot,
  • szolgáltatásokat mint a Big Query az analitikákhoz, vagy a Hadoop/Spark/Pig rengeteg adat feldolgozásához.

Ennyire még ne szaladjunk előre! Vegyünk egy egyszerű MVP-t. Egy prototípust ami működik és jó alapját képezi a későbbi ököszisztémának.

Vegyünk alapul egy Spring Boot alkalmazást, ami fogadja az IoT eszközökből az adatokat és eltárolja valamilyen adatbázisban. Az alkalmazásunkat pedig n példányban kell tudni futtatni, amennyiben hirtelen nagy érdeklőés mutatkozik rá. Az alkalmazás magában tárolhatja a böngészőben megjelenő felületet, vagy egy statikus tárban is lehet, mint pl az S3 vagy Google Cloud Storage, Azure File Storage.

Heroku

Egy egyszerű Spring Boot alkalmazás boldogan elketyeg a Heroku egyetlen dyno-ján. Teljesen ingyen. $7-ért már kapunk monitoringot és mindenféle metrikákat, 512 MB RAM áll a backend app rendelkezésére és összesen 10 worker (process) dolgozhat egyszerre, ami már elég jó egy hobbi projekthez. Amint kilép a hobbi kategóriából, onnan már $25 havonta egy-egy dyno.

Az adatbázis az már más tészta. Egy jó adatbázis szolgáltatásért már fizetni kell, vagy magunk is üzemeltethetünk egy szervert valahol. Postgre SQL szervert a Hirokutól kaphatunk már $9-ért. Ami pedig a legjobb ebben, hogy ha a szolgáltatás futótűzként kezd terjedni akkor bármikor válthatunk egy skálázott Postgre SQL csomagra, viszont ez $50-nál kezdődik. Cserébe az üzemeltetés ügyes-bajos feladatait a Heroku átveszi és kapunk 1GB RAM mellett 64 GB tárhelyet az adatbázis kiszolgálóval.

Herokunk futtatnám n dyno-n a Spring Boot appot, amit a Postgre SQL-adatbázissal támogatnék meg. A képeket, és a weboldal statikus részét pedig Amazon S3-n tárolnám, mert a Heroku is Amazonon fut. Legyenek szépen egy adat központban. Kevesebb adat transzfer, gyorsabb működés.

Google

Tegyük fel, hogy valamiért a Google felé húz a tervező. Megértem, átlátható felület, levelezés, kollaboráció, dokumentumok és táblázatok, tárolás, minden egy szolgáltatótól. Kényelmes, kockázatos mindent egy cégre bízni, viszont kicsi az esélye, hogy a Google mostanság csődbe megy.

Itt határ a csillagos ég. Virtuális gépektől, a gépi tanuláson és a Big Query analitikáktól az App Engine-ig minden van. A Google viszont igyekszik kedveskedni kedvezményekkel, ha valaki Compute Engine-t vagy Managed VM-t vesz igénybe. Ez első ránézésre összezavarhatja az embert, de ez is kiszámolható.

A Google árazása tényleg rugalmas és a használat alapján számláznak. Itt annyi lehetőség van, hogy meg sem próbálom a becsült árakat ideírni. A példa kedvéért csak annyit írok, hogy egy Managed VM-ben futó java backend app, ami egy mobil app havonta párszor meghív és ellenőriz pár dolgot, nos egy ilyen app kb. $3-$7 körül eszik havonta.

A Google Cloud Platform árazásáról még annyit érdemes tudni, hogy beállíthatunk limiteket, hogy maximum mennyit költhetünk erőforrásokra. Igen ám, de az így megadott limit ÁFA nélkül számít. A számlán az igénybe vevő lakhelye szerinti ÁFA kulccsal emelt összegre kell számítani. Magyarországon ez 27%-kal dobja meg a “limitet”.

A Spring Boot appot az AppEngine-ben futtatnám. A statikus dolgok mehetnek a Google Cloud Storage-ra. Az adatbázist itt már el kell dönteni, hogy pl egy virtuális gépen valamiféle adatbázis kezelőben tárolom, vagy az adatokat tárolom egyenesen a Spark/Pig/BigTable valamelyikébe.

Azure

A Microsoft sem maradhat ki! Az Azure meglepően kénylemes és jól dokumentált. One can find real-life examples in Hungarian on prog.hu.

Magyar nyelven életszerű példákkal a prog.hu-n Lehetőséget ad teljesen egyedi virtuális gépek futtatására, statikus oldalak kiszolgálásán át (File Storage) az App Service igénybevételére, ahol csak az alkalmazásunkat futtathatjuk, és az alatta lévő virtuális gépre szinte semmi ráhatásunk nincs. Az Azure-ban tényleg mindent lehet pillanatok alatt. Előre elkészített tartományvezérlőket használhatunk, privát virtuális hálózaton rejthetjük el a virtuális gépeinket virtuális routereken keresztül pedig ezeket mind ráköthetjük a saját valós infrastruktúránkra ami az irodában működik. Előre elkszített sablonból indíthatunk egy webshopot is. Az Azure-nál kényelmesebb felületet és használhatóságot még nem láttam. Pillanatok alatt elverhetünk sok száz eurót vigyorral az arcunkon. Aki szeret az infrastrutúrával játszani annak igazi csemege. Tudják ezt a Microsoftnál is, így 170-200 eurós keretet adnak, hogy bárki kipróbálhasa. A használt erőforrásokért csak annyit kell fizetni, amennyi ideig használtuk. Kísérletezésre tökéletes, üzemeltetésre kényelmes. Digiális heroin.

Az alkalmazásunknak az App Service egy jó hely. Elketyeg ott szépen. Az Azure File Storage tökéletes a statikus tartalomnak. A Microsoft szívesen ad kulcsra kész adatbázis szervert is, természetesen MS SQL-t. Vagy Virtuális gépen a dev ops kolléga összerak egy bármilyen más adatázis kezelőt.

Amazon Web Services

Amazon. Jeff Bezos és pár kollágája ültek egy szobában és valaki hozta az értelem lángját, vagy ott pattant ki a szikra… Lényeg, hogy rájöttek: azzal, hogy a világ legnagyobb kiskereskedőjévé váltak rengeteg hardvert vettek és üzemeltettek. Viszont legtöbbször a bennük rejlő teljes számítási és egyéb kapacitás nem volt kihasználva. Megoldották, hogy bárki vásárolhasson tőlük számítási kapacitást. Nekik sikerült elsőként de-facto cloud szolgáltatásokat a nagyközönség elé tárni. EC2, S3, Elastic Search és még rengeteg szolgáltatás.

Az Amazon volt az első, így rengeteg akkori startup kezdte használni őket. A kezelőfelülete puritán. Sehol sincs a Google Cloud Platform, vagy az Azure mellet. Viszont az áraik ha egy évre előre megveszed a kapacitást, akkor verhetetlenek. Sokkal többet kell gépészkedni a dev-ops csapattagnak, de hozzáértőkkel övék a legjobb ajánlat egy adatgyűjtő apphoz.

$38-ért kaphatunk 100 GB redundáns tárhelyet fájlok tárolásásra. Ide tárolhatóak pl. a startupunk szolgáltatására feltöltött képek. Ebben az árban benne van egy 2 magos processzorral és 4 GB RAM-al ellátott virtuális gép. Ez a VM $29-t tesz ki a $38-ból.

One has to give up on the comfortable dyno, App Service or App Engine concepts in return. Dev ops however does not fall into despair! Kubernetes and containerisation (e.g. Docker) on the EC2s can do almost anything.
Summing it up, Amazon is the most cost-efficient, but will also make the dev-ops team member work. Azure is the most comfortable for the time being (at least for me). And Google can offer the “office”, i.e. mailing and the computing capacity. Developed big data services such as Big Query, teaching capacity for machine learning or the trained Tensorflow for voice and text recognition and understanding. Google analytics and searching and machine learning experience is available to everyone to manage immense data quantities. We live in a wonderful age. And Heroku is as simple as ABC. It is perfect for simple processing/storage applications at the beginning.