kanemeate

働きたくない

とりあえずランダム出しでリリースできることを目標に

レコメンドロジックの実装は時間がかかりそうなので、まずはランダムで動画を出せる状態でリリースする方針でやろうかと。まあ表示対象のライバーくらいは選べるようにしようかと思う。

どうせREST APIでやるし、簡単な処理だしってことでAPI Gateway & Lambdaを使ってみようと思い立ったがここで問題が一つ。

現状はRDSに全部データをぶち込んでいるが、LambdaとRDSの相性は非常に悪いことで知られている。リクエストごとに一つコンテナが起動し、それぞれがRDSに接続するので簡単に接続数オーバーになってしまう。コンテナ間はやりとりできないのでコネクションプールとかも使えない。

色々と工夫している事例はあるし、そもそもそんなものを気にするようなアクセスは来ないだろうけど、わざわざ明確なアンチパターンをやることもないのでセオリー通りDynamoDBを使うことにした。どうせ無料枠分のプロビジョニングでやるから問題が解決するわけではないけど、万が一盛り上がることがあれば設定変えるだけでスケーリングできるので。

データ自体はRDSに溜め込んでいて、まずは識別できるID情報とライバーに対応するID、videoIDくらいをインポートすることにした。DynamoDBは直接ファイルとかからインポートする方法が提供されていないので、Data Pipelineを使うかバッチインサートで25件ずつチマチマやるかのどちらかになる。

大した件数でもないし、金もかかるので(すぐ終わるだろうから大した額ではないだろうけど)後者でやった。DBから25件ずつcsvの形で引っ張ってsedで加工を繰り返してjsonに書き換えてAWS CLIのbatch-write-itemで投げるのをループするだけのお粗末なスクリプトでインポートした。

大したことやってないけど無駄に色々調べてたら時間食ってしまった。Lambda実装して必要そうなセキュリティかけたらプレ版ってことで公開できそう。フロントエンドも多少はCSSやらで装飾したほうがよさそうだけど。