Döntse el, mikor használja a Azure Functions

Befejeződött

Konzultált a Tailwind Tradersnél dolgozó fejlesztő munkatársaival, és megállapította, hogy bizonyos alkalmazáslogikák eseményvezéreltek. Vagyis az alkalmazás hosszú ideig vár egy adott bemenetre bármilyen feldolgozás végrehajtása előtt. A költségek csökkentése érdekében olyan módszert szeretne találni, amely során nem kell fizetnie azért az időért, amíg az alkalmazás a bemeneti adatokra vár. Ezt szem előtt tartva úgy döntött, hogy megvizsgálja az Azure Functionst, hátha segít a probléma megoldásában.

A kiszolgáló nélküli számítástechnika a kiszolgálók, az infrastruktúra és az operációs rendszerek absztrakciója. A kiszolgáló nélküli számítástechnika révén az Azure gondoskodik a kiszolgáló nélküli infrastruktúra kezeléséről és az erőforrások igény szerinti kiosztásáról és felszabadításáról. Az infrastruktúra kezelése nem az Ön feladata. A skálázás és a teljesítmény kezelése automatikus. Csak a használt erőforrásokért kell fizetnie. A kapacitást sem kell lefoglalnia.

Ikon

A kiszolgáló nélküli számítástechnika része a kiszolgálók absztrakciója, egy eseményvezérelt skálázás és a mikroszámlázás:

  • Kiszolgálók absztrakciója: A kiszolgáló nélküli számítástechnika absztrahálja a futtató kiszolgálókat. Soha nem kell explicit módon lefoglalnia kiszolgálópéldányokat. Ezt a platform kezeli. Minden függvényvégrehajtás futhat eltérő számítási példányon. A végrehajtási környezet átlátható a kód számára. A kiszolgáló nélküli architektúrában elég üzembe helyeznie a kódot, és az magas rendelkezésre állással fog futni.

  • Eseményvezérelt skálázás: A kiszolgáló nélküli számítástechnika kitűnően alkalmas a bejövő eseményekre reagáló számítási feladatok ellátására. Az események a következő módokon tartalmazhatnak eseményindítókat:

    • Időzítőkkel, például ha egy függvénynek mindennap 10:00 órakor (UTC) kell futnia.
    • HTTP-vel, például API- és webhook-forgatókönyvekkel.
    • Üzenetsorokkal, például megrendelésfeldolgozással.
    • És számos egyéb módon is.

    Egy teljes alkalmazás megírása helyett a fejlesztő egy függvényt készít el, amely a kód mellett tartalmazza az eseményindítókra és kötésekre vonatkozó metaadatokat is. A platform automatikusan ütemezi a függvény futását, és a bejövő események gyakorisága alapján skálázza a számítási példányok számát. Az eseményindítók határozzák meg a függvények meghívásának módját. Kötések használatával deklaratívan csatlakozhat a szolgáltatásokhoz a kódon keresztül.

  • Mikroszámlázás: A hagyományos számítástechnikai megoldások egy adott időtartamot számláznak ki – ez olyan, mintha havi vagy éves díjat fizetne egy webhely üzemeltetéséért. Ez a számlázási mód kényelmes, azonban nem mindig költséghatékony. Egy ügyfél akkor is egy teljes napra fizet a webhelye elérhetőségéért, ha azt naponta csak egyszer érik el. Kiszolgáló nélküli számítástechnika esetén csak arra az időre kell fizetnie, amíg a kódja fut. Amíg nincs aktív függvényvégrehajtás, addig díj sincs felszámítva. Ha a kód például naponta egyszer fut két percen át, akkor a díj egy végrehajtásért és két percnyi számítási időért lesz felszámítva.

Kiszolgáló nélküli számítástechnika az Azure-ban

Az Azure kiszolgáló nélküli számítási feladatokra kétféle megoldást kínál:

  • Azure Functions: A Functions szinte bármilyen modern nyelven képes kódot futtatni.
  • Azure Logic Apps: A Logic Apps alkalmazásait webes tervezőben lehet elkészíteni, és kódírás nélkül lehet vele az Azure-szolgáltatások által aktivált logikát végrehajtani.

Azure Functions

Ha csak a szolgáltatást futtató kód érdekli, és nem az annak alapjául szolgáló platform vagy infrastruktúra, az Azure Functions-függvények ideálisak lehetnek. Akkor használják ezeket gyakran, ha egy eseményre reagálva kell feladatot végrehajtani, gyakran egy másik Azure-szolgáltatásból érkező REST-kérés, időzítő vagy üzenet segítségével, valamint ha az adott feladat gyorsan, legfeljebb másodpercek alatt végrehajtható.

A Functions-függvények az igényt követve automatikusan skálázódnak, így kiváló választást jelentenek változó mértékű igények esetére. Előfordulhat például, hogy egy szállítójármű-flotta felügyeletéhez használt IoT-megoldásból kap üzeneteket. Munkaidőben minden bizonnyal több adat fog érkezni.

Virtuális gépen alapuló megközelítés esetén akkor is fizetnie kellene, amikor a virtuális gép inaktív. Függvények használatával azonban az Azure akkor futtatja a kódot, amikor az aktiválva van, és automatikusan felszabadítja az erőforrásokat, ha a függvény már lefutott. Ebben a modellben csak azért a CPU-időért kell fizetnie, amikor a függvény fut.

A függvények lehetnek állapot nélküliek és állapotalapúak. Amikor állapot nélküliek (ez az alapértelmezett beállítás), minden alkalommal, amikor válaszolnak egy eseményre, úgy viselkednek, mintha újraindultak volna. Amikor állapotalapúak (ezt Durable Functionsnak is nevezzük), megkapják a környezetet a korábbi események nyomon követése érdekében.

A függvények a kiszolgáló nélküli számítástechnika kulcsfontosságú összetevői. Emellett általános számítási platformként is szolgálnak bármilyen kódtípus futtatásához. Ha a fejlesztő alkalmazásának igényei megváltoznak, a projektet egy nem kiszolgáló nélküli környezetben is üzembe helyezheti. Így rugalmasan kezelheti a skálázást, virtuális hálózatokon futtathatja a megoldást, sőt akár teljesen el is különítheti a függvényeket.

Azure Logic Apps

A Logic Apps-alkalmazások hasonlóak a függvényekhez. Mindkettővel eseményalapú logikát futtathat. Míg a függvények kódot hajtanak végre, addig a Logic Apps az üzleti feladatok automatizálására tervezett munkafolyamatokat, melyek előre meghatározott logikai blokkokból épülnek fel.

Minden Azure-beli logikai alkalmazás munkafolyamata egy eseményindítóval indul, amely akkor aktiválódik, ha egy adott esemény bekövetkezik, vagy egy adott feltételnek megfelelő új adatok válnak elérhetővé. Számos eseményindító tartalmaz alapszintű ütemezési funkciókat is, amelyekkel a fejlesztők megadhatják, hogy a számítási feladatok milyen gyakran fussanak. A Logic Apps-motor az eseményindító minden elindulásakor létrehoz egy logikai-alkalmazáspéldányt, amely futtatja a munkafolyamatban található műveleteket. Ezek a műveletek tartalmazhatnak még adatátalakítókat és folyamatvezérlőket is, például feltételes utasításokat, switch utasításokat, hurkokat és elágaztatásokat.

Logic Apps-munkafolyamatokat vizuális tervezőeszközzel lehet létrehozni akár az Azure Portalon, akár a Visual Studióban. A munkafolyamatok JSON-fájlként jelennek meg egy ismert munkafolyamat-sémával.

Az Azure több mint 200 különböző összekötőt és feldolgozási blokkot kínál, amelyekkel különféle szolgáltatásokat használhat. Ide tartoznak a legnépszerűbb nagyvállalati alkalmazások is. Ha azonban az Ön által használni kívánt szolgáltatás nem tartozik ezek közé, egyéni összekötőket és munkafolyamat-lépéseket is létrehozhat. Ha ez megvan, a vizuális tervező használatával csatlakoztathatja az összekötőket és a blokkszintű elemeket. Így adatokat adhat át a munkafolyamatnak egyéni feldolgozásra – és mindezt ráadásul gyakran egyetlen sornyi kód megírása nélkül elvégezheti.

Tegyük fel például, hogy egy jegy érkezik a Zendeskben. Ön ilyenkor az alábbiakat teheti:

  • Észlelheti az üzenet szándékát kognitív szolgáltatásokkal.
  • Létrehozhat egy elemet a SharePointban a probléma nyomon követésére.
  • Ha az ügyfél nincs az Ön adatbázisában, hozzáadhatja őt a Dynamics 365 CRM rendszerhez.
  • E-mailt küldhet, amelyben megerősíti a kérelmet.

Mindez egy vizuális tervezővel végezhető el, így nagyon egyszerűen átlátható a logikai folyamat. Ez tökéletesen megfelel az üzleti elemzői szerepkörhöz.

Functions és Logic Apps

Mind a Functions, mind a Logic Apps létre tud hozni összetett vezényléseket. A vezénylés a függvények vagy lépések egy olyan készlete, amelynek a végrehajtásával összetett feladatokat tud elvégezni.

  • A Functions használatakor mindegyik lépés elvégzéséhez kódot ír.
  • A Logic Apps használatakor egy grafikus felhasználói felületen határozhatja meg a műveleteket és azok egymáshoz való viszonyát.

Ezeket a szolgáltatásokat használhatja vegyesen a vezénylések létrehozásához, vagyis hívhat meg függvényeket a logikai alkalmazásokból, illetve hívhat meg logikai alkalmazásokat a függvényekből. Az alábbiakban a kettő közötti néhány fontosabb különbséget mutatjuk be.

Functions

Logic Apps

Állapot

Általában állapot nélküli, a Durable Functions-függvények azonban állapotot adnak meg.

Állapotalapú.

Fejlesztés

Kódközpontú (imperatív).

Tervezőközpontú (deklaratív).

Kapcsolat

Körülbelül egy tucat beépített kötési típus. Kód írásával egyéni kötések hozhatók létre.

Összekötők széles választéka. Enterprise Integration Pack B2B-forgatókönyvekhez. Egyéni összekötők készítése.

Műveletek

Minden egyes tevékenység egy Azure-függvény. Kódírás tevékenységfüggvényekhez.

Használatra kész műveletek széles választéka.

Figyelés

Azure Application Insights.

Azure Portal, Log Analytics.

Kezelés

REST API, Visual Studio.

Azure Portal, REST API, PowerShell, Visual Studio.

Végrehajtási környezet

Futtatható helyben vagy felhőben.

Csak felhőben futtatható.