Wpis z mikrobloga

#programowanie #aws #programista15k #programista30k
Zajmuje się w robocie pisaniem aplikacji i integracji pomiędzy różnymi systemami biznesowymi, zazwyczaj stawiam to na AWSie.
Ostatnio dostałem zadanie napisać integrację z webhookiem, takie coś w stylu że system A wyśle powiadomienie na webhooka że itemy X ... X+n się zmieniły. Wtedy powinienem sprawdzić nowy stan itemow, i wysłać to do systemu B. Mały haczyk że ilość informacji o danym itemie rośnie wykładniczo, wraz z ilością powiązanych z nim itemow.
Z początku myślałem że może spróbować coś nowego i napisać to w StepFunctions. Żeby nie było za łatwo to probowalem też trzymać logikę integracji poza lambdami, tak żeby była widoczna z poziomu SF. No i byłoby bardzo fajnie gdyby nie problem ze payload pomiędzy krokami nie może być większy niz 256kb, a mój payload miał typowo 1-5mb.
Musiałbym dodać do lambdy automatyczne zapisywanie do S3 czy dynamodb. No ale wtedy trzeba by się z tym #!$%@?ć na każdym kroku i mi się zwyczajnie odechciało...
No to teraz czas na plan B: SQS -> lambda -> SQS -> lambda. Jedna lambda od zbierania danych, druga od wysyłania.
Teraz pytanie do Mirków: jak wiadomo każdy API call może się posypać of tak, ale to co się udało zebrać i tak warto przesłać. Czy wolelibyscie napisać oddzielne lambdy na każdy krok zbierania danych i zbierać w międzyczasie na S3/db czy raczej napisać jedna lambda i jeżeli jakikolwiek API call się nie uda to nie usuwać z SQSa?
P.s. tylko bez Airflow czy innych takich bo ja #serverless
  • 14
@n0c0Mpr3h3nD: można ponowić w dowolnym momencie, dałbym osobne lambdy. Nawet jak coś nie z Twojej winy nie działa po drugiej stronie to możesz sobie ponowić lub równolegle wysyłać i pobierać. I zdecydowanie s3, dynamodb to finansowa pułapka :)
@n0c0Mpr3h3nD: Granulacja z użyciem SQS jak najbardziej :) I osobne Lambdy. I dokładnie jak coś się nie wykona poprawnie to zostaje na kolejce. Może przyda się "Fanout pattern", czyli Push na SNS, na którego są zapięte rózne SQSy za pomocą filtrów na topicu :)
@obieq: Nie musisz tego znać. Ja np. jestem dobrym programistą i też nie ogarniam dobrze AWS. Wole być specjalista w Javie, np. kod piszę tak że podejrzewam że przebiłbym go pod znajomością wiedzy i Core Javy. Od 2 lat piszę aplikacje gdzie używam wątków a od 6 w ogóle.
@mmichal: nie no na bank się zmieszczę poniżej 1$/miesiąc w "on demand".
@xenonso dobra uwaga, ale chyba dam radę obejść robiąc tabelkę z composite key?
@DoubleAxxis nie zrobię fanout bo tylko zwiększę częstotliwość kłopotów z API, a na czasie wykonania mi nie zależy
@obieq to tylko takie AWSowe gadanie, jak ktoś nie robi w #serverless to zupełnie inaczej świat mu wygląda
@exori_vis w Javie raczej nie dałbym już rady, w Kotlinie