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
700
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
640
LangChainとSupabaseを活用して、RAGを実装してみた
atsushii
1
1k
Checkpointerを介して、DynamoDBに状態を保存してみた
atsushii
1
390
OOM発生時のトラブルシューティング Profilerを活用できるか調査してみた
atsushii
1
740
Other Decks in Technology
See All in Technology
Genie Codeハンズオン応用編
taka_aki
0
100
Kiro Crew入門 - 常駐エージェントの仕組みと使いどころ / Intro to Kiro Crew
k_adachi_01
1
140
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
9k
Data Hubグループ 紹介資料
sansan33
PRO
0
3.2k
20260804_Q4AzureUpdateBite_FabricDataAgentの精度を高める設計.pdf
matayuuu
1
140
カートの信頼性を担保するWireMockを使ったe2eテスト
ykagano
0
320
制約理論(ToC)入門 2026版
recruitengineers
PRO
8
2.3k
FPGAが実現する遠方宇宙の高空間分解能天体撮影 -大型地上望遠鏡の視力を補正する「補償光学」とは?-
komei_mt
0
260
トヨタ⽣産⽅式(TPS)⼊⾨
recruitengineers
PRO
3
870
事業価値と Engineering 2026年度版
recruitengineers
PRO
50
24k
AI-DLC実践録_フルサイクル開発への挑戦
miyuc
0
110
Service Connect 上のサービスに ECS Service の外側から到達できなかった話
ota1022
1
250
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
How to Talk to Developers About Accessibility
jct
2
510
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
350
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
The agentic SEO stack - context over prompts
schlessera
0
860
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
We Are The Robots
honzajavorek
0
300
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
430
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
430
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
170
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