Webes alkalmazások fejlesztése 11. előadás. Alkalmazások felhőben. Alkalmazások felhőben Számítástechnikai felhő



Hasonló dokumentumok
Webes alkalmazások fejlesztése 11. előadás. Alkalmazások felhőben Giachetta Roberto

TELJESÍTÉNYMÉRÉS FELHŐ ALAPÚ KÖRNYEZETBEN AZURE CLOUD ANALÍZIS

Felhőszámítástechnika (Cloud Computing) helye és szerepe az on-line világ folyamataiban. Dr. Élő Gábor Széchenyi István Egyetem ITOK 2013

MMK-Informatikai projekt ellenőr képzés 4

Párhuzamos és Grid rendszerek

VIRTUALIZÁCIÓS TECHNOLÓGIÁK EUCALYPTUS CLOUD PLATFORM

Komponens alapú szoftverfejlesztés 10. előadás. Elosztott alkalmazások architektúrái. Elosztott alkalmazások architektúrái

GENERÁCIÓS ADATBÁZISOK A BIG DATA KÜLÖNBÖZŐ TERÜLETEIN

Adatbázis rendszerek 7. előadás State of the art

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

Hadoop és használata az LPDS cloud-on

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

A felhőről általában. Kacsuk Péter MTA SZTAKI

Miért jó nekünk kutatóknak a felhő? Kacsuk Péter MTA SZTAKI

Felhő rendszerek és felhő föderációk. Kacsuk Péter MTA SZTAKI

MTA Cloud Use cases MTA Cloud workshop. Hernáth Szabolcs MTA WIGNER FK

Microsoft SQL Server telepítése

Fejlesztés, működtetés, felügyelet Hatékony infrastruktúra IBM szoftverekkel

Webes alkalmazások fejlesztése 1. előadás. Webes alkalmazások és biztonságuk

Az információs rendszerek adatai

Webes alkalmazások fejlesztése 12. fejezet. Szolgáltatás alapú kommunikáció (WCF) Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Az információs rendszerek adatai

MapReduce paradigma a CAP-tétel kontextusában. Adatb haladóknak. Balassi Márton Adatbázisok haladóknak 2012.

A cloud szolgáltatási modell a közigazgatásban

Bárányfelhő vagy viharfelhő? A felhő alapú megoldások biztonsági kérdései. Császár Rudolf Műszaki fejlesztési vezető Digital Kft.

Big Data adattárházas szemmel. Arató Bence ügyvezető, BI Consulting

Webes alkalmazások fejlesztése 7. előadás. Autentikáció és autorizáció (ASP.NET Core) Cserép Máté

Web-fejlesztés NGM_IN002_1

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET)

BIG DATA ÉS GÉPI TANULÁS KÖRNYEZET AZ MTA CLOUD-ON KACSUK PÉTER, NAGY ENIKŐ, PINTYE ISTVÁN, HAJNAL ÁKOS, LOVAS RÓBERT

IBM felhő menedzsment

EGI-InSPIRE. Café Grid március 24. Szeberényi Imre 3/25/ EGI-InSPIRE RI

Models are not right or wrong; they are more or less useful.

Felhők teljesítményelemzése felhő alapokon

Multimédiás adatbázisok

RHadoop. Kocsis Imre Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

KORSZERŰ BIG DATA FELDOLGOZÓ KERETRENDSZEREK Hermann Gábor MTA-SZTAKI

30 MB INFORMATIKAI PROJEKTELLENŐR

Segesdi Dániel. OpenNebula. Virtualizációs technológiák és alkalmazásaik BMEVIMIAV ősz

Veeam Agent for Windows and Linux

Az MTA Cloud a tudományos alkalmazások támogatására. Kacsuk Péter MTA SZTAKI

Felhőszolgáltatások megvalósítása PureSystems eszközökön

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET) Cserép Máté.

IT trendek és lehetőségek. Puskás Norbert

Szoftvertechnológia 8. előadás. Szoftverrendszerek tervezése. Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Webes alkalmazások fejlesztése 10. előadás. Webszolgáltatások tesztelése (ASP.NET Core) Cserép Máté

Üzleti folyamatok a felhőben. ECM Szakmai Kongresszus 2011.október 4.

Korszerű Adatbázisok. Gombos Gergő

Felhő számítástechnika

Korszerű technológiai és szolgáltatási modellek

alkalmazásfejlesztő környezete

NIIF szolgáltatások a múzeumok számára

Tartalomjegyzék. Bevezetés. 1. A.NET 3.5-keretrendszer 1. A korszerű alkalmazások felépítésének kihívásai... 2

Oracle cloudforgatókönyvek

A T-Systems felhő koncepciója Frigó József

Tartalomjegyzék Előszó Mi a felhő? Az IT mint közmű... 15

Korszerű Adatbázisok. Gombos Gergő

Big Data, Distributed Storage & Computing. Gombos Gergő

The Power To Develop. i Develop

Windows Server 2012: a felhő OS

SUSE Linux Enterprise Server 12 Hargitai Zsolt

Java I. A Java programozási nyelv

Folyamatmodellezés és eszközei. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Szoftvertechnológia 8. előadás. Szoftverrendszerek tervezése Giachetta Roberto

2011. November 8. Boscolo New York Palace Budapest. Extrém teljesítmény Oracle Exadata és Oracle Exalogic rendszerekkel

Amazon Web Services. Géhberger Dániel Szolgáltatások és alkalmazások március 28.

Oracle Enterprise Manager: Az első teljesértékű felhő üzemeltetési megoldás

IT trendek és lehetőségek

ANDROID ALKALMAZÁSFEJLESZTÉS

Felhő alapú hálózatok Konténerek orkesztrálása Simon Csaba. Budapesti Műszaki és Gazdaságtudományi Egyetem

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

A felhő. Buday Gergely Károly Róbert Főiskola ősz

Models are not right or wrong; they are more or less useful.

Esri Magyarország Felhasználói Konferencia Portal for ArcGIS. Kisréti Ákos

Operációs rendszerek. Az X Window rendszer

Számítási felhők lehetőségei és veszélyei

A Java EE 5 plattform

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET Core) Cserép Máté

A területi közigazgatás reformja és az informatika

Cloud computing. Cloud computing. Dr. Bakonyi Péter.

A virtualizáció a modern vállalati informatikai infrastruktúra alapja

RH/CentOS felügyelet SUSE Manager segítségével. Kovács Lajos Vezető konzultáns

Konszolidáció és költségcsökkentés a gyakorlatban. Az Országos Tisztifőorvosi Hivatal Oracle adatbázis konszolidációja

Cloud computing Dr. Bakonyi Péter.

Webes alkalmazások fejlesztése 3. előadás. Objektumrelációs adatkezelés (ASP.NET)

Előszó A Windows alkalmazásfejlesztés rövid története A Windows életútja A Windows 8 paradigmaváltása... 16

STANDARD DEVELOPMENT U.L. FACTORY SYSTEMS GROUP IT DEPARTMENT

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

webalkalmazások fejlesztése elosztott alapon

Alkalmazás és megjelenítés virtualizáció

Webes alkalmazások fejlesztése 1. előadás. Webes alkalmazások és biztonságuk. Cserép Máté

Automatikus infrastruktúra menedzsment és alkalmazástelepítés

Cloud Computing a gyakorlatban. Szabó Gyula (GDF) Benczúr András (ELTE) Molnár Bálint (ELTE)

MTA Cloud a tudományos alkalmazások támogatására. Kacsuk Péter MTA SZTAKI

Composable Infrastruktúra

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

Webes alkalmazások fejlesztése. Bevezetés az ASP.NET MVC 5 keretrendszerbe

ÉLET A FELHŐBEN - HATÉKONYSÁGNÖVELÉS CLOUD TECHNOLÓGIÁVAL. Baranyi Fanni Microsoft Online Szolgáltatások Értékesítési Szakértő

A hibrid DB cloud biztonsági eszköztára. Kóródi Ferenc Budapest,

Átírás:

Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 11. előadás Számítástechnikai felhő A számítástechnikai felhő (computational cloud) egy olyan szolgáltatás alapú rendszer, amelyben a szolgáltatásokat nem dedikált hardvereszközön, hanem a szolgáltató eszközein elosztva üzemeltetik a felhasználók a szolgáltatásokat hálózaton (interneten) keresztül érik el az üzemeltetés, működés részleteit a felhasználótól elrejtik 2015 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto A felhő helyfüggetlen, skálázható, és nagy rendelkezésre állást biztosít hardvereszközök meghibásodása nem befolyásolja a teljesítményt és elérhetőséget ELTE IK, Webes alkalmazások fejlesztése 11:2 Felhő szolgáltatások A felhő alapú rendszerek hierarchikusan épülnek fel, és ennek megfelelően is nyújtják szolgáltatásaikat, három réteg adott: infrastruktúra szolgáltatás (Infrastructure as a Service, IaaS): biztosítja a hardver egy virtuális leképeződését (virtuális gépet), pl. Amazon EC2, Google Compute Engine platform szolgáltatás (Platform as a Service, PaaS): biztosítja szoftverek üzemeltetésének környezetét (operációs rendszert), pl. Microsoft Azure, Google App Engine, Oracle Cloud szoftver szolgáltatás (Software as a Service, SaaS): magát a szoftvert nyújtja szolgáltatásként, távoli elérésre (általában böngészőn keresztül) Felhő szolgáltatások (vékony)kliens (böngésző, mobil alkalmazás, terminál emuláció) SaaS (e-mail, CMS, kommunikáció, játékok) PaaS (futtatási környezet, adatbázis, fájlrendszer, fejlesztői eszközök) IaaS (virtuális hardver, adattárolás) ELTE IK, Webes alkalmazások fejlesztése 11:3 ELTE IK, Webes alkalmazások fejlesztése 11:4 A felhőkben harmadik fél vezérli az alkalmazást, tárolja az adatot, így számos kockázat felmerül (biztonsági kérdések, adatvesztés, szolgáltatás kimaradás, felelősség kérdése) presentation APIs a felhőknek kimondottan kell ügyelnie a biztonságra, a felhasználói adatok kezelésére data applications metadata content A felhők architekturális megvalósításában fontos szerepet játszik a megosztott birtoklás (multitenancy), ahol a szoftver egy példánya szolgál ki tetszőleges sok kliens csoportot (szervezetet) az alkalmazás virtuálisan particionálja adatait, valamint konfigurációját, így a csoportok egyedi, virtuális alkalmazásokat használnak SaaS PaaS IaaS abstraction integration & middleware system APIs hardware facilities core connectivity and delivery ELTE IK, Webes alkalmazások fejlesztése 11:5 ELTE IK, Webes alkalmazások fejlesztése 11:6 1

A felhők meghatározó tényezői: erőforrások (adattárolás, hálózat, alkalmazások) elérhetőség (publikus, privát, közösségi), elhelyezkedés (globális, lokális) infrastruktúra (virtuálizáció, rugalmasság) A globális felhők adatközpontokba (data center) szerveződnek Felhők jellemzői A felhőnek a következő tulajdonságokkal kell rendelkeznie alkalmazások futtatásához: számos szolgáltatást biztosít (virtuális gépek, adattárolás, üzenetküldés, hálózat, egyszerű fejlesztési modell) az erőforrások végtelen mennyiségének illúzióját biztosítja, amelyet csak a virtuális gépek száma korlátoz, vízszintesen skálázódik biztosítja az erőforrások gyors növelését, csökkentését automatikusan, illetve manuálisan is a költséghatékonyságra optimalizál, ezért megengedi a hardverhibákat, de a kieséseket nem (commodity hardware) ELTE IK, Webes alkalmazások fejlesztése 11:7 ELTE IK, Webes alkalmazások fejlesztése 11:8 Szoftver a felhőben Egy szoftver két módon kerülhet kapcsolatba felhővel a szoftver futhat lokálisan (helyi gépen, szerveren), de felhasználhat felhő által nyújtott szolgáltatást általában adattárolás, authentikáció, közösségi funkcionalitás (pl. mobil alkalmazásoknál) így a felhőt, mint háttérszolgáltatást használjuk (Backend as a Service, BaaS) a futhat a felhőben lévő platformon (PaaS) alkalmazkodnia kell a felhő környezethez (erőforráskezelés, szolgáltatás alapú működés, ) ugyanakkor működése nem feltétlenül kötött a felhőhöz Szoftver a felhőben A felhőben futó alkalmazás szolgáltatásokat biztosít, így jellemzően weblap, vagy webszolgáltatás általában állapotmentes, kérés/válasz alapú, a kommunikációra szabványos csatornákat használ (SOAP, REST, COBRA) lazán kapcsolt architektúrát definiál, biztosítja az aszinkron végrehajtást, háttérben frissíthető (frissítés hatására nem áll le a rendszer) hatékony végrehajtást végez, nem pazarolja az erőforrásokat, ügyel a földrajzi eloszlásra, vízszintesen skálázódik (a rendszer skálázódása és hibajelenségei nem befolyásolják a felhasználói élményt) ELTE IK, Webes alkalmazások fejlesztése 11:9 ELTE IK, Webes alkalmazások fejlesztése 11:10 Microsoft Azure A Microsoft saját felhő környezete az Azure, amelye infrastruktúra és platform szolgáltatásokat nyújt a platform elsősorban weblapok (ASP.NET) és webszolgáltatások (WCF, ASP.NET WebAPI) számára, de számos más környezet is támogatott (PHP, Node.js, Python, ) adattárolás szolgáltatások (data services): bináris (Blob Service), relációs (SQL Database), séma független (Table Service) és nagy adatok (HDInsight) alkalmazás szolgáltatások (app services): azonosítás (Azure Identity), e-mail (SendGrid), médiakezelés (Media Service), üzenetkezelés (Service Bus, Azure Queue), Adatfeldolgozás felhőben A felhők összességében nagy számítási és adattárolási kapacitást tudnak biztosítani, így alkalmasak nagy méretű adatok (Big Data) elosztott feldolgozására elsősorban olyan adatokra és feladatokra, amelyek jól eloszthatóak a rendszerben, pl. adatbányászat, indexelés, dokumentum feldolgozás, képfeldolgozás a rendszer feldolgozó csomópontokból (node) áll, amelyek végrehajtják egy feldolgozási munkafolyamat (workflow) egyes lépéseit biztosítania kell egy olyan programozási modellt, amely lehetőséget ad az adatfeldolgozás dinamikus párhuzamosítására, az elosztott végrehajtásra ELTE IK, Webes alkalmazások fejlesztése 11:11 ELTE IK, Webes alkalmazások fejlesztése 11:12 2

A MapReduce programozási modell egy egyszerű feldolgozási modell, amely őt lépésben végzi el a munkafolyamatot: 1. Prepare: felosztja a beérkező adatokat azonos méretű blokkokra, mindegyikhez egy kulcsot rendel bemenő adat vezérlés kimenő adat 2. Map: a kapott kulcs/érték párokat párhuzamosan transzformája (szűri, rendezi, ) köztes eredményekké blokk 1 Map 1 3. Shuffle: a köztes eredményeket átrendezi, csoportosítja kulcs szerint és újabb kulccsal látja el blokk 2 Map 2 Reduce 1 eredmény 1 4. Reduce: a kapott kulcs/érték párokat párhuzamosan kiértékeli blokk 2 Map 2 Reduce m eredmény m 5. Produce: az eredményeket begyűjti és összesíti blokk n Map n ELTE IK, Webes alkalmazások fejlesztése 11:13 ELTE IK, Webes alkalmazások fejlesztése 11:14 Pl. szeretnénk megszámolni dokumentumok gyűjteményében minden szónak az előfordulási számát: 1. felosztjuk a dokumentumokat, minden blokk egy dokumentumot kap (a kulcs a dokumentum neve) 2. a dokumentumban minden megtalált szóra egy 1-es értéket adunk (a kulcs a szó, az érték 1), ez a Map lépés 3. csoportosítunk a szó szerint, minden szóhoz egészek egy sorozata tartozik 4. összeadjuk a sorozat értékeit, így megkapjuk minden szóra az összes előfordulás számát, ez a Reduce lépés 5. az eredményeket összesítjük (szavanként) Map(String key, String value): // key: dokumentum neve // value: dokumentum tartalma foreach (String word in value): EmitIntermediate(w, "1"); // a kulcs a szó, az érték 1 lesz Reduce(String key, Enumerable<String> values): // key: a szó // values: a szóra kapott értékek sorozata int result = 0; foreach (String v in values): result += AsInt(v); Emit(AsString(result)); // szövegesen adjuk meg ELTE IK, Webes alkalmazások fejlesztése 11:15 ELTE IK, Webes alkalmazások fejlesztése 11:16 [hello world] [hello you] [hello you there] <1, hello you> <2, hello world> <3, hello you there> Map <hello, 1 1 1> <world, 1> <you, 1 1> <there, 1> Reduce hello: 3 world: 1 you: 2 there: 1 <hello, 3> <world, 1> <you, 2> <there, 1> Az egy, a MapReduce programozási modellre épülő szoftver keretrendszer 3 fő modulból alkotja: Hadoop MapReduce: adatfeldolgozó Hadoop Distributed File System (HDFS): elosztott fájlrendszer, amely felel az adatok elosztásáért az egyes node-ok között Hadoop YARN: erőforrás kezelő és folyamat ütemező Java-ban íródott, de alkalmas bármilyen nyelvű, MapReduce alapú alkalmazás futtatására (Hadoop Streaming, REST API) ELTE IK, Webes alkalmazások fejlesztése 11:17 ELTE IK, Webes alkalmazások fejlesztése 11:18 3

A Hadoop nagyon jól skálázható, akár több ezer node alkotta rendszert is felépíthetünk A HDFS fájlrendszer célja a Hadoop architektúra kiszolgálása, ügyelve a rendelkezésre állásra vezérlés (NameNode) hatékonyan kezeli a nagy, homogén szerkezetű fájlokat, amelyeket azonos méretű blokkokra bont DataNode 1 DataNode 2 DataNode 3 DataNode 4 DataNode 3n olvasásra optimalizál (write once, read many times) blokk 1 blokk 1 blokk 1 blokk 2 blokk n képes kezelni az egyes gépek kiesését, az egyes fájlrendszer csomópontok (DataNode) folyamatosan jelzik jelenlétüket replikáció replikálja a tartalmat (alapértelmezetten 3 példány), így kerüli el az adatvesztést bemenő fájl elosztás ELTE IK, Webes alkalmazások fejlesztése 11:19 ELTE IK, Webes alkalmazások fejlesztése 11:20 Az alap Hadoop rendszer számos további modullal egészülhet ki, amelyek az alap modulokra épülve bővítik a funkcionalitást, pl.: adatbázis-kezelés (HBase, Accumulo, Cassandra) speciális adatfeldolgozás (Spark, Stratosphere, Giraph, GraphX) SQL alapú lekérdezések (Hive, MRQL, Shark, Phoenix) adatelemzés (Mahout, MLlib, MLbase) üzenetkezelés (Thift) elosztott rendszer koordináció (ZooKeeper) ELTE IK, Webes alkalmazások fejlesztése 11:21 A Windows Azure is támogatja a Hadoop architektúrát (HDInsight), illetve a.net alapú alkalmazásfejlesztést (.NET SDK for Hadoop) létrehozhatunk MapReduce tevékenységeket (Microsoft.Hadoop.MapReduce) írhatjuk, olvashatjuk a HDFS fájlrendszert (Microsoft.Hadoop.WebClient) futtathatunk LINQ alapú lekérdezéseket Hive adatbázisokon (Microsoft.Hadoop.Hive) menedzselhetjük az Azure felhőben futó a felhőben futó tevékenységeket (Microsoft.WindowsAzure.Management.HdInsight) ELTE IK, Webes alkalmazások fejlesztése 11:22 A HDFS fájlrendszerhez a WebHDFSClient segítségével férhetünk hozzá, pl.: WebHDFSClient client = new WebHDFSClient( ); await client.createdirectoy("/mydirectory"); // könyvtár létrehozása (aszinkron) await client.clientfile("c:\myfile.txt", "/mydirectory/myfile.txt"); // fájl létrehozása a lokális fájl másolásával List<String> filelist = (await client.getdirectorystatus("/mydirectory")). Files.Select(f => f.pathsuffix).tolist(); // könyvtár tartalmának lekérdezése MapReduce folyamatok végrehajtásához meg kell valósítunk a Map és Reduce műveleteket, majd ezeket egy Hadoop feladatként kell konfigurálnunk a Map tevékenységet a MapperBase osztályból származtatva, a Map metódus felüldefiniálásával adjuk meg a Reduce tevékenységet egy ReducerCombinerBase leszármazott osztály a Reduce metódusában adjuk meg a feladat egy HadoopJob leszármazott osztály, ahol megadjuk a végrehajtás paramétereit (a felüldefiniált Configure metódusban) a kommunikáció szöveg alapú, mindent konvertálnunk kell ELTE IK, Webes alkalmazások fejlesztése 11:23 ELTE IK, Webes alkalmazások fejlesztése 11:24 4

Pl.: public class WordCountMapper : MapperBase public override void Map(string inputline, MapperContext context) // felüldefiniáljuk a Map metódust String[] words = inputline.split(' '); // elvégezzük a tevékenységet foreach(string word in words)) context.emitkeyvalue(word, "1"); // továbbítjuk az eredményt ELTE IK, Webes alkalmazások fejlesztése 11:25 public class WordCountReducer : ReducerCombinerBase public override void Reduce(String key, IEnumerable<String> values, ReducerCombinerContext context) Int32 result = values.sum(val => Int32.Parse(val)); // végrehajtjuk a műveletet context.emitkeyvalue(key, result.tostring()); // továbbítjuk az eredményt ELTE IK, Webes alkalmazások fejlesztése 11:26 public class WordCountJob : HadoopJob<WordCountMapper,WordCountReducer> // sablonban megadjuk a két típust public override HadoopJobConfiguration Configure(ExecutorContext context) HadoopJobConfiguration config = new HadoopJobConfiguration(); config.inputpath = "/mydirectory"; config.outputfolder = "/myresultdirectory"; return config; // megadjuk a bementi/kimeneti könyvtárat ELTE IK, Webes alkalmazások fejlesztése 11:27 5