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
個人開発でconnpass_apiの制限と闘った話.pdf
Search
takumi
February 03, 2024
Technology
1
110
個人開発でconnpass_apiの制限と闘った話.pdf
takumi
February 03, 2024
Tweet
Share
More Decks by takumi
See All by takumi
エンジニアイベントを地図上で検索できるサービスを開発した話
takumi_pro
0
17
Other Decks in Technology
See All in Technology
BPStudyの200回を中心にIT業界を振り返る。そしてこれから
haru860
3
400
One engineer company with Ruby on Rails
rstankov
2
430
LangSmith入門―トレース/評価/プロンプト管理などを担うLLMアプリ開発プラットフォーム
os1ma
5
710
MapLibreとAmazon Location Service
dayjournal
1
190
Handling focus in 2024
tahia910
0
220
家族アルバム みてねにおけるGrafana活用術 / Grafana Meetup Japan Vol.1 LT
isaoshimizu
1
1k
KubeConにproposalを送りたい人へのアドバイス
sat
PRO
3
270
Autonomous Database Cloud 技術詳細 / adb-s_technical_detail_jp
oracle4engineer
PRO
15
35k
Amplify 🩷 Bedrock 〜生成AI入門〜
minorun365
PRO
8
560
認知症フレンドリーテックとスタックチャン
naokiuc
0
190
Azure Container Apps + Bicep 〜 こんな感じで運用しています
kaz29
3
620
【NW X Security JAWS#3】L3-4:AWS環境のIPv6移行に向けて知っておきたいこと
shotashiratori
1
620
Featured
See All Featured
Facilitating Awesome Meetings
lara
43
5.6k
The Illustrated Children's Guide to Kubernetes
chrisshort
32
46k
Pencils Down: Stop Designing & Start Developing
hursman
117
11k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
126
32k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
26
2.3k
Producing Creativity
orderedlist
PRO
338
39k
Git: the NoSQL Database
bkeepers
PRO
423
63k
The Power of CSS Pseudo Elements
geoffreycrofte
62
5k
The Pragmatic Product Professional
lauravandoore
26
5.8k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
226
51k
Visualization
eitanlees
137
14k
The World Runs on Bad Software
bkeepers
PRO
61
6.7k
Transcript
個人開発でconnpass apiの 制限と闘った話 takumi 2024年2月3日 エンジニアの輪 at 東京
自己紹介 • takumi(@takumidiary) • 新卒2年目エンジニア • バックエンド開発メイン ◦ フロント、インフラも
何発表するの? • 個人開発でconnpass apiを使用した際に出くわした制限とそ れにどう対応したのかを発表します
作っているもの
DevLocator(開発中) • エンジニアイベントを地図上に表示するサービス • connpassからイベント情報を取得
なぜ開発しようと思ったか • connpass利用頻度が多くなったためconnpass apiを使って 何か作ってみたかった • 最近はオフライン開催も増えてきたので視覚的にイベント開 催がわかるといいなと思った
制限との出会い
イベント情報取得の要件 • その日から1ヶ月分のイベント情報を取得 ◦ 2/3〜3/3、10/31〜11/30 • 一度の読み込み(リクエスト間隔をあけない)で全イベントを表 示
当初の想定 • connpass apiを使用して取得したイベントをそのまま表示す ればいけるじゃん!
開発開始! • 早速、apiリファレンスを確認してみる • そこには想定していなかった制限が、、
connpass apiの2つの制限
2つの制限 • 1リクエストで取得できるイベント数 • リクエスト間隔
1リクエストで取得できるイベント数 • 最大でも100件しか取得できない • 1ヶ月分のイベント情報 → 約1000件
リクエスト間隔
robots.txtとは? robots.txt ファイルとは、検索エンジンのクローラーに対して、サイト のどの URL にアクセスしてよいかを伝えるものです。 https://developers.google.com/search/docs/crawling-indexing/robots/intro?hl=ja
リクエスト間隔
リクエスト間隔 • Bingクローラに対する制限 • 20秒のクロール間隔 • /series/output/, /account/, /event/ へのアクセスを禁止
リクエスト間隔 • Amazonクローラに対する制限 • /user/, /event/へのアクセス禁止
リクエスト間隔 • 全クローラに対する制限 • 5秒のクロール間隔 • /series/output/, /account/へのアク セス禁止 今回の場合ここに該当
リクエスト間隔 今回はクローリングではなくapiコールだが、 apiサーバに負荷をかけたくない リクエスト間隔を最低5秒空ける
制限によって発生した課題
制限によって発生した課題 • 全イベント(1ヶ月分)を地図上に表示するのに時間がかかっ てしまう ◦ 5秒ごとに100件ずつ取得するため
どのように対応したか?
バッチ処理
バッチ処理の要件 • 目的 ◦ connpass apiから1ヶ月分のイベント情報を取得してDBに 保存する
バッチ処理の要件 • 既にDBにデータがある場合は全削除する ◦ データを最新に保つため • 100件ずつ6秒ごとにイベント取得apiをコール • 取得したデータをDBに保存 •
毎日午前3:30に実行
技術構成 • メイン処理:Cloud Run jobs • 定期実行:Cloud Scheduler • DB:Planet
Scale
構成図 connpassから情報取得して保存
構成図 定期実行
バッチ処理実行詳細
まとめ • connpass apiの制限をバッチ処理で回避した • 今回は小規模なものだったが、課題を技術で解決する体験が できた
ご清聴ありがとうございました!