Vállalható Vállalkozás Teszt >>

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önyen 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énybevehető 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 Time-To-Market hogyan rövidíthető?

  • Érdemes-e létrehozni a teljes IT infrastuktú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 Amazon-on 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 cirka 27%-al 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. 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.


Cserébe itt a kényelmes dyno, App Service vagy App Engine koncepciókról le kell mondani. Node, a dev ops nem esik kétségbe! Kubernetes és konténerizáció (pl. Docker) az EC2 példányokban kvázi bármire képes.


Összefoglalva az Amazon a legköltséghatékonyabb, de itt a dev-ops csapattag bizony dolgozni fog. Az Azure a legkényelmeseb jelenleg (legalábbis nekem). A Google pedig tudja adni az “irodát”, a levelezést, a számítási kapacitást. A fejlett big data szolgáltatásokat, mint a pl. a Big Query, a gépi tanuláshoz a tanító kapacitást, vagy magát a betanított Tensorflow-t, hang és szöveg értésre. A Google analitikája, tapasztalata a keresésben, a gépi tanulásban, az elképzelhetetlen menyiségű adatok kezelésében mind bárki rendelkezésére áll. Csodálatos korban élünk. A Heroku meg egyszerű, mint a faék. Sima feldolgozó/eltároló alkalmazásokhoz kezdetben tökéletes.