読者です 読者をやめる 読者になる 読者になる

WEBエンジニア奮闘記

日々の業務から思ったこと、学んだことを書き連ねていきます。

AWS Summit「タウンワークにおけるサーバレスアーキテクチャデザイン」に参加してきた

AWS 勉強会 インフラ アイディア

AWS Summit Tokyoに参加してきた記事の第五弾!今回はお二方の共同発表で、Amazon Lambdaについて色々お話があったので、 個人的には凄く楽しかったし勉強になった。会社ではマーケティング部に所属されているけど、ガッツリエンジニアのお仕事をされていて、エンジニアの働き方も幅広くなってきたんだなぁと実感。

こちらにPDFの資料が公開されているので、ご参照下さいませ〜

登壇者

株式会社リクルートジョブズ
データマネジメントグループ
商品本部
デジタルマーケティングマーケティング

木田様
作野様

About CTL and our project

  • Core Technology Lab
    • データサイエンス + エンジニアリング + インフラ
    • 数理モデル作成、アプリ実装、インフラ実装までをデータサイエンティストが遂行
  • タウンワーク
    • アルバイト・パートを中心とした週間掲載の求人メディア
    • 1~20回の訪問ユーザが全体の80%
  • 6人のデータサイエンティスト
    • インフラ知識は少ない
    • 管理コストを抑える
    • 機会学習ロジックに集中できる環境

Our sort system with AWS

AWSの使い方・向き合い方の参考に

  • リアルタイムな予測を構築
    • ログ基盤の整備
      • 回遊時に特徴量を更新
      • ログを損失なく溜める
      • 溜まったログから予測モデルを作成
      • KinesisLambdaを利用
    • 特徴量更新・予測の高速な処理
      • DBの要件(選定が鍵)
        1. 高速な読み書きに対応
        2. 特徴量の変更に柔軟
        3. AWSの他のサービスとの親和性が高い
        4. 管理コストを抑えられる
      • RDSは除外、NoSQLを検討
        • 自前の運用を避ける
        • Amazon DynamoDBを選択

Rduction of infrastructure management costs

  • AWS CloudFormation
    • 特徴量を大量に追加し予測精度を上げる
    • 複数のリソースがあってもデプロイできるようにしたい
    • Blue-Green Deployment
      • ダウンタイムのないデプロイを実現
      • 何かあれば旧環境にロールバック可能
      • DBも含めた大量のリソースを用意
    • オーケストレーションサービス
  • Lambda
    • イベントドリブン型アプリ実行基
    • サーバレスで勝手にスケールしてくれる
    • サービス感の連携が用意
    • ほそぼそとしたバッチも実装できる
    • これがなければ今回のprojectは実現できなかったかも…
    • クイックに導入ができる
  • CTLにおけるLambdaの利用例
    1. ストリームデータ処理
    2. ログデータが飛んで来る
    3. Kinesisに溜める
    4. ログデータの永続化はある程度Kinesisにデータが溜まったら実行
    5. 特徴量を計算するサーバにログを投げる
    6. バッチジョブ
      • ユーザの特徴を格納するテーブルを週ごとに作成
      • 最低capacityでテーブルを作成
      • capacityを上げるor下げる
      • cronでやるか?
    7. インテグレーション
      • 異常発生時の通知
        • Email
          • 見逃す可能性が高い
        • Slack
          • 見逃す可能性は低い
          • Lambdaを利用して通知を飛ばす
      • Lambda + Slack連携
        • 異常検知のスピードを早める
          • SNSトピックを指定
          • CloudWatchSNSトピック発行
          • 対処しないと通知し続けるので見逃さない
        • 使用料金がバーストすることを防ぐ
          • 今月の使用料金を計算
          • Slackの指定チャンネルに通知を送る