タグ

2023年11月30日のブックマーク (10件)

  • AWS SQS FIFOキューのハマり事例-前編|Tak

    概要AWSのSQS (Simple Queue Service)を使うと、AWSの様々なサービスを接続できます。メッセージを高い信頼性で分散処理するのに便利なメッセージングサービスです。 今回は、私がSQSについて学習を進めたときに、思ったように動かなかった例について整理してみました。 システム構成AWS SQS (FIFOキュー)に入ったメッセージを、Lambdaで処理をするというシンプルな構成で考えます。 タスクをLambdaで非同期処理アプリケーションは、何らかの処理タスクをメッセージとして生成する責務を持ちます。(Producer) メッセージはSQS経由で順序どおりLambdaに通知され、非同期で実行します。(Consumer) タスクの発生流量が一時的にConsumerの処理能力を超えても、平均してConsumerが消化しきれれば問題ありません。(ランチタイムの定屋に長い行列

    AWS SQS FIFOキューのハマり事例-前編|Tak
  • 非同期メッセージングでSQSを使う際に検討したこと

    背景と目的 マイクロサービス間で非同期メッセージングを実現するために、いくつかメッセージブローカーとしての選択肢があります。例えばAWSのサービスだとSQS, Kinensis, MKSなどが挙げられます。 今回はSQSがサービス間の非同期メッセージングを実現するために利用できるかを調査した時の観点をまとめました。 概要 まず非同期メッセージングの概要を整理します。 非同期メッセージングの役割 ネットワークを介してプロセス間でメッセージを送受信するには、同期的な通信と非同期的な通信があります。 同期的な通信はクライアントがリクエストを発行し、レスポンスを待つという形式になります。 リクエスト先のサービスが対応可能である必要がある レスポンスが返ってくるまでブロッキングされる すぐにリクエストが処理される リクエスト先のサービスの呼び出し方を知る必要がある 非同期的な通信はプロデューサー(あ

    非同期メッセージングでSQSを使う際に検討したこと
    youko03
    youko03 2023/11/30
    “SQSの場合はメッセージを受信しても自動的に削除しません。処理が終わり次第、削除のAPIをコンシューマーが呼び出す必要があります。その場合、コンシューマーが処理している間に別のコンシューマーが受信する可能性
  • 【新機能】Amazon SQSにFIFOが追加されました!(重複削除/単一実行/順序取得に対応) | DevelopersIO

    SQSの大型アップデートです! オンプレでエンタープライズな開発を行ったことがある方であれば、分散キューシステムの設計が大変だったと思います。実際のところは高額ライセンス商品を買うしか選択肢はなかったのではと。Amazon SQSの登場によって、今まで実装が大変だったノンコア機能のキューが、超安価に簡単に使えるようになったのは衝撃でした。これだけでクラウドを使う理由になりました。 そして、年月は流れ、この度SQSが進化しました!まずは、今までのSQSの課題についておさらいしたいと思います。 標準キュー 今までのSQSは、メディアエンコーディングや大量タスクの分散処理などに適していましたが、いくつかの用途においてフィットしなかったり、独自実装をする必要がありました。 順番が保証されない SQSは高可用性を持った分散キューシステムですので、1つのエンドポイントに投げられたメッセージは複製され蓄

    【新機能】Amazon SQSにFIFOが追加されました!(重複削除/単一実行/順序取得に対応) | DevelopersIO
    youko03
    youko03 2023/11/30
  • SQS → Lambdaのリトライ処理について整理してみた - Qiita

    AWSコンソールの画面でAWS Lambdaの画面に遷移して[関数] → [関数を作成]で "dog"という名前のLambda関数を作成します。 今回はロールは[基的な Lambda アクセス権限で新しいロールを作成] で作成しインラインポリシーで以下の権限を追加しました。 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sqs:DeleteMessage", "sqs:GetQueueAttributes", "sqs:ReceiveMessage" ], "Resource": "arn:aws:sqs:[region]:[accountID]:inu-queue" } ] } そして[トリガーの追加]から先ほど作成したSQSのキュー"inu-queue"を選択しトリガーを有効にし

    SQS → Lambdaのリトライ処理について整理してみた - Qiita
    youko03
    youko03 2023/11/30
    “キューに新規メッセージAが入力 → 10秒(配信遅延時間)経過した後、メッセージAを処理 → LambdaがメッセージAを処理開始(1回目)→ キュー内のメッセージAは20秒(可視性タイムアウト)の間、どのLambdaからも処理されなくなる"
  • ⚡今すぐ見直してほしい、2021年版Lambdaチェックリスト!開発者のためのポイント30選 - KAKEHASHI Tech Blog

    AWS Lambdaを使えば開発者がビジネス価値に集中できる一方、それでも今までの開発と異なるポイントに気をつける必要があります。この記事では注意したい計30個のチェックポイントを紹介します。 まずは比較的簡単で効果が出やすい部分から見ていきましょう。 🚀時間がないあなたに!すぐできるポイント10選 レビューしていてよく出てくる、比較的修正しやすい事項です。 (1) メモリサイズを設定する LambdaはメモリサイズによってCPU含めたリソースパワーが決まり、1792MBで1CPUちょうどとされています。利用言語やマルチスレッド処理の状況に合わせ増減させましょう。 デフォルトはCloudFormationやCDKなら128MB、Serverlesssで512MBと少なめです。ユーザーが使うAPIなら必ず設定しましょう。 (2) arm64(Graviton2)を前提とする Lambda

    ⚡今すぐ見直してほしい、2021年版Lambdaチェックリスト!開発者のためのポイント30選 - KAKEHASHI Tech Blog
  • [レポート] SNSとSQSとLambdaによるスケーラブルでサーバーレスなイベント駆動アーキテクチャ #reinvent #svs303 | DevelopersIO

    こんにちは。サービスグループの武田です。 開催中のre:Invent 2020でScalable serverless event-driven architectures with SNS, SQS & Lambdaのセッションを視聴しましたのでレポートします。 何度か配信がありますので視聴したい方はスケジュールを確認してみてください。 AWS re:Invent 2020 セッション概要 スピーカー Justin Pirtle(AWS Speaker) タイトル Scalable serverless event-driven architectures with SNS, SQS & Lambda SVS303 イベント駆動型のサーバレスアーキテクチャは、アプリケーションをシームレスに拡張して、ほぼすべての需要に対応できるようにし、従量課金と最小限の運用オーバーヘッドの恩恵を受けます

    [レポート] SNSとSQSとLambdaによるスケーラブルでサーバーレスなイベント駆動アーキテクチャ #reinvent #svs303 | DevelopersIO
    youko03
    youko03 2023/11/30
    “バッチ処理を使用する場合は例外の動作を理解し、すべて処理してから一度にすべてのエラーを返すことが重要 / エラーを返す前に、正常に終了したメッセージは関数内で削除する”
  • SQS + Lambda という非同期処理黄金パターン再入門 | AWS Dev Day 2022 Japan #AWSDevDay

    AWS 上で非同期処理を実装するとなるとまず何が思い浮かびますか?私はまず SQS + Lambda が思い浮かびます。キューに対するポーリングやメッセージ削除といったジョブキューを扱う上での Undifferentiated heavy lifting(差別化に繋がらない重労働) な実装をサービス側に任せられるだけでも控えめに言って最高ですよね。このセッションでは SQS(キュー) + Lambda を使った非同期実装に改めて向き合い、この黄金パターンを選ぶメリットや実装する上での考え方・考慮点などをお伝えしていくセッションです。 スピーカー: 白石 一乃 (アマゾン ウェブ サービス ジャパン合同会社 ソリューションアーキテクト) セッションに関する情報: ・想定聴講者の役割/開発対象:Web バックエンド / サーバーサイド開発 ・セッションのトピック:Web バックエンド /

    SQS + Lambda という非同期処理黄金パターン再入門 | AWS Dev Day 2022 Japan #AWSDevDay
    youko03
    youko03 2023/11/30
  • [Auth0]Next.jsスタンドアロンモードでフロントエンドをAPI GatewayとLambdaのサーバーレス構成にしてデプロイしてみた | DevelopersIO

    [Auth0]Next.jsスタンドアロンモードでフロントエンドAPI GatewayLambdaのサーバーレス構成にしてデプロイしてみた 先日「Next.jsで生成した静的ページに認証を追加してみた」の記事で、Next.js+SSGで生成した静的ファイルをCloudFront+S3で公開しました。 S3で公開するために、わざわざフロントエンド資材をBuild&Exportしていたわけですが (Auth0SDKもクライアントサイド用のSDKに変更せざるを得なかった) ここで疑問が生まれました。 せっかくNext.jsを使うんだからレンダリング戦略はSSRを採用したい SSRなフロントエンドをサーバーレス構成でデプロイすることは出来なんだろうか🤔 この疑問に対して、AWS AmplifyやVercelNetlifyあたりが有力な選択肢になるでしょう。 しかし、今日はフロントエンドを敢

    [Auth0]Next.jsスタンドアロンモードでフロントエンドをAPI GatewayとLambdaのサーバーレス構成にしてデプロイしてみた | DevelopersIO
    youko03
    youko03 2023/11/30
  • Goの新しい構造化ロガーを体験しよう | gihyo.jp

    logパッケージ Goには標準ライブラリとしてlogパッケージが提供されています。logパッケージで行えることはそう多くはありません。たとえば、デフォルトではログは標準エラー出力に出力されますが、log.SetOutput関数で出力先を変更できます。また、利用する関数によってログを出力した後の挙動をコントロールできます。たとえば、log.Print関数はログを出力するだけですが、log.Fatal関数はログ出力後にos.Exit(1)を呼び出します。log.Panicはログ出力後に出力したログと同じ文言を引数としてパニックを発生させます。 logパッケージでは、ログとともに関連するデータを出力したい場合は、log.Printf関数を用います。次のように、書式を指定して出力します。 log.Printf("request_url=%s request_method=%s", r.URL, r

    Goの新しい構造化ロガーを体験しよう | gihyo.jp
    youko03
    youko03 2023/11/30
    “slog”
  • Goにおけるjsonの扱い方を整理・考察してみた ~ データスキーマを添えて

    この記事について この記事はGo Advent Calendar 2021 13日目の記事です。 記事のテーマはencoding/jsonパッケージにおけるjsonエンコード・デコードの扱い方についてです。 普段私は、 MarshalとUnmarshalってどっちがGo→jsonでどっちがjson→Goなんだっけ? タグでマッピング規則をいじれるのはエンコードとデコードどっちだっけ? 非公開フィールドってどういう扱いになるんだっけ? などというところがうろ覚えでパッと出てこないので、この際なのでまとめてしまおうということで前半部分を書きました。 また記事後半では、私が今年読んだとあるの内容に基づいてGoでのjsonデコードが持つ性質を好き勝手に考察してみました。 25日に向けてちょうど折り返しの位置ですが特におもしろネタ要素はなく、普通に私の書きたいことをひたすら真面目に理屈っぽく書いて

    Goにおけるjsonの扱い方を整理・考察してみた ~ データスキーマを添えて
    youko03
    youko03 2023/11/30
    “エンコーディング/インメモリ表現からバイト列表現へ/Go構造体からjson/平文から暗号文/データを伝送するときに使われる/シリアライゼーション(serialization)・マーシャリング(marshalling)”