Bazy danych skazane na rozproszenie

W czasach dzisiejszych, gdy biznesy często są globalne a działalność operacyjna większości przedsiębiorstw opiera się na systemy informatyczne, pojawiają się problemy z dostępnością danych czy serwisu ogółem. Zcentralizowane systemy jak najbardziej zdają egzaminy w większości przypadków, da się bez problemu używać z systemu uruchomionego w Europie będąc fizycznie w Australii czy na Hawajach, ale doświadczenie klientów z takimi systemami może być oceniane średnio – głównie za sprawą niskiej wydajności sieci. Choć o tzw latency rzędu maks 2s-3s można było kiedyś tylko pomarzyć – pamiętam jeszcze czasy dial-up i te długie minuty buforyzowania filmiku na youtube, – ale w dziś takie czasy odpowiedzi już są uznawane za mauvais ton.

Inżynierowie systemów informatycznych borykają się z problemamy wydajnościowymi chyba od udostępnienia pierwszych publicznych serwisów, czy to bankowych systemów transakcyjnych czy zwykłej strony internetowej. Często dla rzadko zmieniających się danych stosuje się cache, czy to na CDN, czy w web serwerze czy jakiś Redis lub podobny. Takie cache są ok, aż do momentu jak dane zaczną się zmieniać tak często że koszt aktualizacji cache jest większy od round-tripa do instancji bazy.

Czytaj dalej

Dokumentacja i skutki ślepej wiary w nią

21 kwietnia 2021 roku, 00:40, minęła właśnie chyba druga godzina jak ja probuję zmusić funkcję lambda do wykonania się przez notyfikację topica SNSa. Niby trywialne zadanie i dokumentacja Serverlessa ma opisany ten use case:

functions:
  dispatcher:
    handler: dispatcher.dispatch
    events:
      - sns:
          arn: !Ref SuperTopic
          topicName: MyCustomTopic

resources:
  Resources:
    SuperTopic:
      Type: AWS::SNS::Topic
      Properties:
        TopicName: MyCustomTopic

Ale, niestety to nie dzialą. Metodą prób i błędów doszedłem do wniosku, że owszem ten events - sns działa, ale tylko jeśli zdefiniujemy tam nowy topic SNS. Jak wskazujemy jeszcze nieistniejący topic, to Serverless wypluwa do CloudFormation następujące instrukcje:

Czytaj dalej