Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Asynqを使って、サクッと非同期処理を実現する
Search
Atsushi Miyamoto
December 10, 2024
Technology
670
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Asynqを使って、サクッと非同期処理を実現する
Go Connect #4のLT資料です!
Atsushi Miyamoto
December 10, 2024
More Decks by Atsushi Miyamoto
See All by Atsushi Miyamoto
Agentic RAG with LangGraph
atsushii
1
620
LangChainとSupabaseを活用して、RAGを実装してみた
atsushii
1
990
Checkpointerを介して、DynamoDBに状態を保存してみた
atsushii
1
370
OOM発生時のトラブルシューティング Profilerを活用できるか調査してみた
atsushii
1
720
Other Decks in Technology
See All in Technology
“全部コピーしない”ファイルデータの活用 : — FSx for ONTAP × S3 Tables × Icebergで作るメタデータカタログ
yoshiki0705
0
130
Microsoft のサポートとフィードバック総まとめ
murachiakira
PRO
0
130
「ビジネスがわかるエンジニア」とは何か?
ryooob
0
440
LiDAR SLAMの実装とセンサ融合 ~Lie群からContinuous-Time LIOまで~
naokiakai
1
720
AWS Summit 2026で見えたSIerにとっての Amazon Quickの位置づけ
maf_0521
0
140
4人目のSREはAgent
tanimuyk
0
320
Agentic AI 時代のテスト手法: Kiro とはじめるプロパティベーステスト (AWS Summit Japan 2026 | DEV212)
ymhiroki
0
140
自分が詳しくない領域でAIを使う #プロヒス2026
konifar
20
8.2k
技術・能力を向上する原理原則 #きのこセッションa #きのこ2026
bash0c7
0
190
Text-to-SQLをAgentCoreで実現し、生成されるSQLの精度を定量的に評価する
yakumo
2
260
コミュニティの有益性 ~JAWS Days 2026 での体験を通して~ / The Benefits of a Community ~Through My Experience at JAWS Days 2026~
seike460
PRO
0
310
AWS Summit の片隅で、体育座りしながらコミュニティがにぎわう理由を考えた
k_adachi_01
2
330
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.6k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
Navigating Team Friction
lara
192
16k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Tell your own story through comics
letsgokoyo
1
980
Documentation Writing (for coders)
carmenintech
77
5.4k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
460
The Limits of Empathy - UXLibs8
cassininazir
1
370
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
40k
Google's AI Overviews - The New Search
badams
0
1.1k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
550
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Transcript
© 2024 Loglass Inc. 0 © 2024 Loglass Inc. Asynqを使って、サクッ
と非同期処理を実現する 宮本 淳志 2024.12.10
© 2024 Loglass Inc. 1 自己紹介 自動車整備士としてキャリアをスタートし、退職後カナダのバンクーバーへ渡航。その後、プログラ ミングを現地の学校で勉強した後に、機械学習エンジニアとして現地のスタートアップでエンジニア としてのキャリアをスタートさせる。 2年半カナダに滞在したのち、福岡へ移住。
福岡の受託開発会社でバックエンドエンジニアとして3年ほど勤務。バックエンド・フロント・インフ ラの経験を積む。 2024年10月に株式会社ログラスへクラウドエンジニアとして入社。 生成AI入門中 株式会社ログラス クラウドエンジニア 宮本 淳志 Atsushi Miyamoto
© 2024 Loglass Inc. 2
© 2024 Loglass Inc. 3 今日話すこと 1. 非同期処理の重要性 2. Asynqとは
3. Asynqを使った実装 4. AWS x Asynq 5. まとめ Agenda
© 2024 Loglass Inc. 4 以前、Goを使ってアプリケーション開発を行っており、その過程でAsynqを使用しました。 使い勝手が良かったので、今回はAsynqに関する知見を共有できればと思っています。 現在の職場ではAsynqを使用していないため、あくまで以前の経験に基づいたお話となりますので、その点をご了承くだ さい。 00|背景
背景
© 2024 Loglass Inc. 5 01 非同期処理の重要性
© 2024 Loglass Inc. 6 01|非同期処理の重要性 なぜ必要なのか 時間のかかる処理や外部サービスに繋げる処理を同期的に実行すると、レスポンスに時間がかかり、ユー ザーに影響がでるケースがある 非同期で処理を実施すると、処理の結果を待たずにレスポンスを分離して返すことが可能になるため、時間
のかかる処理でもユーザー体験を保つことができる 例: • メール送信 • ファイルアップロード etc.. ※参考: https://aws.amazon.com/jp/builders-flash/202206/master-asynchronous-execution-01/
© 2024 Loglass Inc. 7 02 Asynqとは
© 2024 Loglass Inc. 8 02|Asynqとは 特徴 タスクを非同期に処理する仕組みを実現するために、Workerを活用したキューイングや処理を行うOSSライ ブラリ 特徴:
• 実装がシンプル • タスクの非同期処理に加え、スケジューリング処理も実装可能 • WebUIを使って、モニタリング可能 • Redisをバックエンドに指定する必要あり • 継続的にメンテされている (最新のリリース約1ヶ月前) ◦ 例 ▪ https://github.com/benmanns/goworker (最新のリリース約6年前) ▪ https://github.com/gocraft/work (最新のリリース約6年前) ※参考: https://github.com/hibiken/asynq
© 2024 Loglass Inc. 9 02|Asynqとは 処理イメージ 1. アプリケーション側からタスクをキュー(Redis)にエンキュー 2.
Redisにタスクが積まれる 3. Worker側からRedisに対してポーリング 4. タスクを取得 5. Worker側で何かしらの処理を行う
© 2024 Loglass Inc. 10 03 Asynqを使った実装
© 2024 Loglass Inc. 11 例として、メール送信をバックグラウンドで処理するハンドラーの実装 03|Asynqを使った実装 Taskハンドラーの実装 • タスクのタイプ定義
◦ 様々なタスクに対して、どの処理を実行するか内部 的に判断するために使用 • タスクを作成する関数を定義 ◦ ここで作成されたタスクが最終的にRedisにエン キューされる • タスクの処理を行うハンドラーの実装 ◦ 非同期で行わせたい処理 参考: https://github.com/hibiken/asynq
© 2024 Loglass Inc. 12 • Redisへ接続 • 先ほど定義した関数を呼び出して、タスク作成 •
Redisへエンキュー 03|Asynqを使った実装 Redisへエンキューする処理の実装 参考: https://github.com/hibiken/asynq
© 2024 Loglass Inc. 13 • Redisへ接続 ◦ Taskごとのプライオリティも指定可能 ▪
https://github.com/hibiken/asynq/wiki/Queue-Pri ority#weighted-priority • Taskタイプとハンドラのマッピング ◦ タイプごとに行わせたい処理の紐付け • Worker Server起動 03|Asynqを使った実装 Workerの実装 参考: https://github.com/hibiken/asynq
© 2024 Loglass Inc. 14 04 AWS x Asynq
© 2024 Loglass Inc. 15 • 使用技術 ◦ Golang ◦
AWS ▪ ECS on Fargate ▪ ElastiCache 04|AWS x Asynq ECS x Asynq
© 2024 Loglass Inc. 16 05 まとめ
© 2024 Loglass Inc. 17 05|まとめ まとめ • Asynq便利なので、サクッと非同期基盤を実装したいときにオススメ •
Golang最近触っていないので、キャッチアップしていきたい
© 2024 Loglass Inc. 18