Serverless-kehitys AWS Lambdalla · Oppitunti

Tapahtumaohjautuvan arkkitehtuurin perusteet

Ymmärrätte tapahtumaohjautuvien arkkitehtuurien periaatteet ja sen, miten Lambda-funktiot toimivat muiden palveluiden tuottamien tapahtumien käsittelijöinä

Oppitunti 1/411 vaihetta

Tapahtumaohjautuvan arkkitehtuurin perusteet on ilmainen Serverless-kehitys AWS Lambdalla-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Serverless-kehitys AWS Lambdalla-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Serverless-kehitys AWS Lambdalla-kurssilla on yhteensä 4 oppituntia.

Mitä tapahtumapohjaisuus tarkoittaa?

Kuvitelkaa ravintola, jossa tilaukset otetaan vastaan, ruoka valmistetaan ja laskut maksetaan. Perinteisessä mallissa jokainen vaihe saattaa odottaa edellisen valmistumista.

Event-Driven Architecture (EDA) toimii eri tavalla. Se muistuttaa useita itsenäisiä työpisteitä, jotka reagoivat ympärillään tapahtuviin asioihin ilman suoria ohjeita.

Tapahtumien ymmärtäminen

Ytimeltään tapahtuma on yksinkertaisesti signaali siitä, että "jotakin tapahtui". Se on tietue järjestelmässä tapahtuneesta tilan muutoksesta tai toiminnosta.

  • Käyttäjä napsauttaa painiketta
  • Tiedosto ladataan
  • Uusi tilaus tehdään
  • Anturi havaitsee liikettä

Kaikki nämä ovat esimerkkejä tapahtumista!

EDA:n keskeiset osat

Event-Driven Architecture koostuu kolmesta pääkomponentista:

  • Event Source: Järjestelmä tai palvelu, joka tuottaa tapahtuman (esimerkiksi käyttöliittymä tai tietokantamuutos).
  • Event: Tietopaketti, joka kuvaa tapahtunutta asiaa.
  • Event Consumer/Processor: Palvelu, joka kuuntelee tiettyjä tapahtumia ja reagoi niihin (esimerkiksi AWS Lambda -funktio).

Tapahtumat kulkevat usein Event Bus -väylän tai Queue -jonon kautta, mikä auttaa reitittämään ne oikeille kuluttajille.

Tapahtumapohjaisuuden hyödyt

EDA tarjoaa nykyaikaisille sovelluksille merkittäviä etuja:

  • Loose Coupling: Komponentit eivät tunne suoraan toisiaan, vaan ainoastaan tapahtumat. Tämä helpottaa järjestelmien päivittämistä ja ylläpitoa.
  • Scalability: Tapahtumien kuluttajia voidaan skaalata itsenäisesti tapahtumakuorman perusteella.
  • Responsiveness: Järjestelmät voivat reagoida muutoksiin reaaliaikaisesti, mikä tekee käyttökokemuksesta dynaamisemman.
  • Resilience: Jos yksi komponentti vikaantuu, muut voivat usein jatkaa tapahtumien käsittelyä.

Lambda ja tapahtumiin reagoijat

AWS Lambda sopii erinomaisesti Event-Driven Architectureen. Se toimii event consumerina tai event processorina.

Ajatelkaa Lambda-funktioita pieninä, erikoistuneina työntekijöinä, jotka "nukkuvat", kunnes tapahtuma herättää ne. Kun tapahtuma on käsitelty, ne palaavat nukkumaan.

Lambdan käynnistäminen tapahtumilla

Lambdan keskeinen idea on, ettei sitä perinteisessä mielessä käynnistetä manuaalisesti. Sen sijaan muut AWS-palvelut tai mukautetut sovellukset julkaisevat tapahtumia.

Kun Lambda-funktion määrityksiä vastaava tapahtuma syntyy, Lambda kutsuu eli suorittaa funktion automaattisesti. Kaikki tapahtuu automaattisesti!

Tapahtuman sisältö (JSON)

Tapahtumat ovat yleensä rakenteista dataa, usein JSON-muodossa. Ne sisältävät tietoja siitä, mitä tapahtui, milloin ja missä.

Tässä on yksinkertaistettu esimerkki siitä, miltä tapahtuma voi näyttää:

{
  "version": "0",
  "id": "abc-123-def-456",
  "detail-type": "MyCustomEvent",
  "source": "my.application",
  "time": "2023-10-27T12:34:56Z",
  "detail": {
    "userId": "user123",
    "action": "itemAddedToCart",
    "itemId": "product789"
  }
}

Tapahtumavirta käytännössä

Seurataan yksinkertaista tapahtumavirtaa:

  1. Käyttäjä lisää tuotteen sovelluksen ostoskoriin (Event Source).
  2. Sovellus julkaisee "itemAddedToCart"-Event-tapahtuman.
  3. AWS Lambda -funktio (Event Consumer) on määritetty kuuntelemaan tätä tapahtumaa.
  4. Lambda-funktio suoritetaan automaattisesti esimerkiksi varaston päivittämiseksi tai henkilökohtaisen suosituksen lähettämiseksi.

Sovelluksen ei tarvitse tietää, miten varasto päivitetään; sen tarvitsee vain julkaista tapahtuma.

Lambdan tapahtumankäsittelijä

Kun Lambda käynnistetään, se välittää tapahtuman tiedot funktiollesi. Javassa nämä tiedot ovat usein Map-tyyppinen tai mukautettu olio.

Kokeile suorittaa tämä yksinkertainen Java Lambda -funktio. Se tulostaa saapuvien tapahtumien tiedot:

import java.util.HashMap;
import java.util.Map;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;

public class MyEventHandler implements RequestHandler<Map<String, Object>, String> {

    @Override
    public String handleRequest(Map<String, Object> event, Context context) {
        // Lambda receives the event as input
        System.out.println("Received event:");
        event.forEach((key, value) -> System.out.println("  " + key + ": " + value));

        // You can access specific event data, e.g., from a "detail" field
        if (event.containsKey("detail") && event.get("detail") instanceof Map) {
            Map<String, Object> detail = (Map<String, Object>) event.get("detail");
            System.out.println("Detail action: " + detail.get("action"));
        }

        return "Event processed successfully!";
    }

    // Main method for local testing (not executed by Lambda runtime)
    public static void main(String[] args) {
        Map<String, Object> testEvent = new HashMap<>();
        testEvent.put("version", "0");
        testEvent.put("id", "test-id-123");
        testEvent.put("detail-type", "UserAction");
        testEvent.put("source", "my.test.app");
        
        Map<String, Object> detailMap = new HashMap<>();
        detailMap.put("userId", "testUser");
        detailMap.put("action", "login");
        testEvent.put("detail", detailMap);

        MyEventHandler handler = new MyEventHandler();
        String result = handler.handleRequest(testEvent, null);
        System.out.println("--- Local Test Result ---");
        System.out.println(result);
    }
}

Tapahtumapohjaisuuden tietovisa

Mikä seuraavista kuvaa parhaiten AWS Lambda -funktion roolia Event-Driven Architecture -arkkitehtuurissa?

Kertaus ja seuraavat vaiheet

Hienoa työtä! Olette oppineet Event-Driven Architecturen perusteet ja sen, miten AWS Lambda sopii tähän tehokkaaseen toimintamalliin.

  • Events ovat signaaleja siitä, että jotakin tapahtui.
  • EDA hyödyntää tapahtumia löyhästi kytkettyjen ja skaalautuvien järjestelmien rakentamiseen.
  • Lambda-funktiot sopivat erinomaisesti event consumereiksi, jotka tapahtumat käynnistävät automaattisesti.

Seuraavaksi tutustumme tarkemmin AWS-palveluihin, jotka voivat käynnistää Lambda-funktioitanne!

Aloita maksutta

Opi Serverless-kehitys AWS Lambdalla tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
12
Oppitunnit
48

Usein kysytyt kysymykset

Onko oppitunti ”Tapahtumaohjautuvan arkkitehtuurin perusteet” ilmainen?

Kyllä – oppitunnin ”Tapahtumaohjautuvan arkkitehtuurin perusteet” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Serverless-kehitys AWS Lambdalla-kurssin, päivitä CoddyKit PROhon. Serverless-kehitys AWS Lambdalla-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Tapahtumaohjautuvan arkkitehtuurin perusteet”?

Ymmärrätte tapahtumaohjautuvien arkkitehtuurien periaatteet ja sen, miten Lambda-funktiot toimivat muiden palveluiden tuottamien tapahtumien käsittelijöinä Harjoittelet Serverless-kehitys AWS Lambdalla-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Serverless-kehitys AWS Lambdalla-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Serverless-kehitys AWS Lambdalla-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”Tapahtumaohjautuvan arkkitehtuurin perusteet”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Serverless-kehitys AWS Lambdalla-oppitunnilla?

Kyllä. Jokainen Serverless-kehitys AWS Lambdalla-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Tapahtumaohjautuvan arkkitehtuurin perusteet
  2. Lambdan kutsuminen API Gatewaylla
  3. S3- ja SQS-tapahtumakäynnistimet
  4. Ajastetut kutsut EventBridgellä
← Takaisin: Serverless-kehitys AWS Lambdalla