Palvelimeton taustajärjestelmä AWS Lambdalla ja API Gatewaylla · Oppitunti

Monimutkaisten työnkulkujen orkestrointi

Rakentakaa kehittyneitä palvelimettomia työnkulkuja, joissa käytetään ehtologiikkaa, rinnakkaista suoritusta ja virheenkäsittelyä Step Functionsilla

Oppitunti 3/412 vaihetta

Monimutkaisten työnkulkujen orkestrointi on ilmainen Palvelimeton taustajärjestelmä AWS Lambdalla ja API Gatewaylla-oppitunti CoddyKitissä. Tämä on oppitunti 3/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 Palvelimeton taustajärjestelmä AWS Lambdalla ja API Gatewaylla-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Palvelimeton taustajärjestelmä AWS Lambdalla ja API Gatewaylla-kurssilla on yhteensä 4 oppituntia.

Monimutkaisten työnkulkujen orkestrointi

Tervetuloa! Tässä oppitunnissa perehdytte kehittyneiden serverless-työnkulkujen rakentamiseen AWS Step Functions -palvelulla.

Tutkimme, miten työnkulkuihin lisätään päätöksentekoa, tehtäviä suoritetaan samanaikaisesti ja työnkuluista tehdään virheenkestäviä.

Päätöksenteko Choice-tilalla

Choice-tila toimii työnkulun "if/else"-lauseena. Sen avulla tilakone voi tehdä päätöksiä saamansa syötteen perusteella.

  • Jokaisella valintasäännöllä on ehto (esimerkiksi syötteen arvo on "X").
  • Kun ehto täyttyy, työnkulku siirtyy määritettyyn tilaan.
  • Oletustila käsittelee tilanteet, joissa mikään ehto ei täyty.

Esimerkki Choice-tilasta

Tältä Choice-tila näyttää Step Functions -määritelmässä. Se tarkistaa orderStatus-kentän ja päättää sen perusteella seuraavan vaiheen.

{  "StartAt": "CheckOrderStatus",  "States": {    "CheckOrderStatus": {      "Type": "Choice",      "Choices": [        {          "Variable": "$.orderStatus",          "StringEquals": "PENDING",          "Next": "ProcessPendingOrder"        },        {          "Variable": "$.orderStatus",          "StringEquals": "SHIPPED",          "Next": "NotifyShipping"        }      ],      "Default": "HandleUnknownStatus"    },    "ProcessPendingOrder": {      "Type": "Task",      "Resource": "arn:aws:lambda:us-east-1:123456789012:function:processPending",      "End": true    },    "NotifyShipping": {      "Type": "Task",      "Resource": "arn:aws:lambda:us-east-1:123456789012:function:notifyShipping",      "End": true    },    "HandleUnknownStatus": {      "Type": "Fail",      "Cause": "Unknown order status",      "Error": "InvalidOrderStatus"    }  }}

Tehtävien suorittaminen rinnakkain

Parallel-tilan avulla voitte suorittaa työnkulun useita haaroja samanaikaisesti. Tämä sopii tehtäviin, jotka eivät riipu toisistaan ja jotka voidaan suorittaa yhtä aikaa.

  • Jokainen haara suoritetaan itsenäisesti.
  • Parallel-tila odottaa kaikkien haarojen valmistumista.
  • Kaikkien haarojen tulokset yhdistetään taulukoksi.

Esimerkki Parallel-tilasta

Tämä Parallel-tila käsittelee tilauksen ja päivittää varaston samanaikaisesti ja yhdistää sitten niiden tulokset.

{  "StartAt": "ProcessOrderAndInventory",  "States": {    "ProcessOrderAndInventory": {      "Type": "Parallel",      "Branches": [        {          "StartAt": "ProcessOrder",          "States": {            "ProcessOrder": {              "Type": "Task",              "Resource": "arn:aws:lambda:us-east-1:123456789012:function:processOrder",              "End": true            }          }        },        {          "StartAt": "UpdateInventory",          "States": {            "UpdateInventory": {              "Type": "Task",              "Resource": "arn:aws:lambda:us-east-1:123456789012:function:updateInventory",              "End": true            }          }        }      ],      "Next": "CombineResults"    },    "CombineResults": {      "Type": "Pass",      "End": true    }  }}

Virheiden hallinta hallitusti

Kaikki ei aina suju suunnitellusti! Step Functions tarjoaa vankat virheenkäsittelyominaisuudet Catch-kentän avulla. Voitte määrittää, mitkä virheet otetaan kiinni ja mihin tilaan siirrytään virheen sattuessa.

  • Virheet tunnistetaan tyypin perusteella (esimerkiksi States.TaskFailed).
  • Voitte ottaa kiinni tiettyjä virheitä tai yleisen States.ALL-virheen.
  • ResultPath määrittää, mihin virheen tuloste sijoitetaan.

Esimerkki Catch-tilasta

Jos ProcessPayment-tehtävä epäonnistuu, virhe otetaan tässä kiinni ja työnkulku siirtyy RefundOrder-tilaan.

{  "StartAt": "ProcessPayment",  "States": {    "ProcessPayment": {      "Type": "Task",      "Resource": "arn:aws:lambda:us-east-1:123456789012:function:processPayment",      "Catch": [        {          "ErrorEquals": [ "States.TaskFailed", "PaymentFailure" ],          "Next": "RefundOrder",          "ResultPath": "$.errorInfo"        }      ],      "Next": "CompleteOrder"    },    "RefundOrder": {      "Type": "Task",      "Resource": "arn:aws:lambda:us-east-1:123456789012:function:refundOrder",      "End": true    },    "CompleteOrder": {      "Type": "Pass",      "End": true    }  }}

Epäonnistuneiden tehtävien uudelleenyritys

Ohimenevissä virheissä, kuten verkkoyhteyden aikakatkaisuissa, tehtävä kannattaa usein yrittää suorittaa uudelleen muutaman kerran ennen epäonnistumista. Retry-kentän avulla voitte määrittää uudelleenyrityskäytännöt.

  • Määrittäkää, mitkä virheet yritetään uudelleen.
  • Määrittäkää asetukset IntervalSeconds, MaxAttempts ja BackoffRate.
  • Eksponentiaalinen backoff-arvo (BackoffRate > 1) on erittäin suositeltava.

Esimerkki Retry-tilasta

Tätä tehtävää yritetään uudelleen enintään kolme kertaa eksponentiaalista backoffia käyttäen, jos ilmenee Timeout- tai NetworkError-virhe.

{  "StartAt": "CallExternalService",  "States": {    "CallExternalService": {      "Type": "Task",      "Resource": "arn:aws:lambda:us-east-1:123456789012:function:callExternalService",      "Retry": [        {          "ErrorEquals": [ "States.Timeout", "NetworkError" ],          "IntervalSeconds": 2,          "MaxAttempts": 3,          "BackoffRate": 1.5        }      ],      "End": true    }  }}

Kaiken orkestrointi

Step Functions -palvelun todellinen teho syntyy näiden tilojen yhdistämisestä. Voitte rakentaa erittäin kehittyneitä työnkulkuja sijoittamalla Parallel-tiloja Choice-tilojen sisään, lisäämällä Retry-määrityksiä Task-tiloihin ja käsittelemällä virheitä Catch-määrityksillä eri tasoilla.

Näin voitte mallintaa lähes minkä tahansa liiketoimintaprosessin ja tehdä serverless-sovelluksistanne vankkoja ja mukautuvia.

Työnkulun logiikan tarkistus

Tarkastelkaa työnkulkua, jonka on tehtävä seuraavat asiat:

  1. Tarkistettava, onko käyttäjä premium-asiakas.
  2. Jos käyttäjä on premium-asiakas, lähetettävä henkilökohtainen sähköposti JA päivitettävä kanta-asiakaspisteet samanaikaisesti.
  3. Jos käyttäjä ei ole premium-asiakas, lähetettävä vakiomuotoinen sähköposti.
  4. Käsiteltävä sähköpostin lähetyksen virheet kirjaamalla ne ilman työnkulun pysäyttämistä.

Mitä Step Functions -tiloja tämän logiikan toteuttamiseen tarvitaan?

Kertaus: monimutkaiset työnkulut

Olette hallinneet Step Functions -palvelun edistyneet käsitteet!

  • Käytimme Choice-tiloja ehdolliseen logiikkaan.
  • Hyödynsimme Parallel-tiloja samanaikaiseen suorittamiseen.
  • Toteutimme vankan virheenkäsittelyn Catch-lohkoilla.
  • Opimme myös Retry-käytännöistä ohimeneviä virheitä varten.

Näiden työkalujen avulla voitte rakentaa erittäin tehokkaita ja vikasietoisia tapahtumapohjaisia serverless-sovelluksia!

Aloita maksutta

Opi Palvelimeton taustajärjestelmä AWS Lambdalla ja API Gatewaylla 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 ”Monimutkaisten työnkulkujen orkestrointi” ilmainen?

Kyllä – oppitunnin ”Monimutkaisten työnkulkujen orkestrointi” 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 Palvelimeton taustajärjestelmä AWS Lambdalla ja API Gatewaylla-kurssin, päivitä CoddyKit PROhon. Palvelimeton taustajärjestelmä AWS Lambdalla ja API Gatewaylla-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Monimutkaisten työnkulkujen orkestrointi”?

Rakentakaa kehittyneitä palvelimettomia työnkulkuja, joissa käytetään ehtologiikkaa, rinnakkaista suoritusta ja virheenkäsittelyä Step Functionsilla Harjoittelet Palvelimeton taustajärjestelmä AWS Lambdalla ja API Gatewaylla-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Palvelimeton taustajärjestelmä AWS Lambdalla ja API Gatewaylla-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Palvelimeton taustajärjestelmä AWS Lambdalla ja API Gatewaylla-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Monimutkaisten työnkulkujen orkestrointi”-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ä Palvelimeton taustajärjestelmä AWS Lambdalla ja API Gatewaylla-oppitunnilla?

Kyllä. Jokainen Palvelimeton taustajärjestelmä AWS Lambdalla ja API Gatewaylla-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. AWS Step Functionsin perusteet
  2. Tilakoneiden rakentaminen
  3. Monimutkaisten työnkulkujen orkestrointi
  4. Tilakoneiden virheenkäsittely ja retry-yritykset
← Takaisin: Palvelimeton taustajärjestelmä AWS Lambdalla ja API Gatewaylla