リクルートのエンジニアが内製している機械学習基盤について詳しく解説していく本連載。第2回はクラウドネイティブな機械学習に活用しているAWSのサービスや設計について。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
前回はリクルートで機械学習プラットフォームを構成する「Crois」「Crafto」の2つを内製した理由と設計思想を紹介しました。第2回はジョブスケジューラーであるCroisの詳細な設計とCraftoでの活用を紹介します。
Croisで工夫が必要な部分は2点あります。
スケーラビリティの面では、巨大な1つのインスタンスを利用する大きなタスクから大量のインスタンスを並べて処理するタスクまで、縦にも横にも高いスケーラビリティが必要です。リクルートで稼働しているワークロードにおいても、Amazon EC2のx1インスタンスタイプを使うような単一で高vCPU、高メモリのものもあれば、c5インスタンスタイプのものを100台同時に動かすような並列度の高いものもあります。
必要なリソースはビジネス要件次第で日々変化しますし、特定の時間帯に集中することも多々あります。使われていないときは最小限のインスタンスで稼働し、処理をする際は十分な処理能力を提供する、柔軟にスケールアップ、スケールアウトの両面をサポートできるアーキテクチャが必要です。このようなアーキテクチャを構築できるのはクラウドを使うことの利点ですし、醍醐味(だいごみ)でもあります。
セキュリティの面では、データ漏えい対策としての暗号化はもちろん、チームを超えたアクセスができないような権限の仕組みが重要です。Croisはジョブスケジューラーという性質上、バッチの実行に必要なクラウドのシークレットキーやAPIキーなどを保存することが考えられます。チームを超えたアクセスができてしまうと、社員の異動や退職時に膨大な数のキーコンフィグの変更が必要となり、運用が回らなくなります。これを防ぐためにファイルや機密情報は暗号化した上で、特定のチームの権限でしか復号できない状態にする必要がありました。
もう1つ重要なポイントは、Croisの開発者であっても内容へのアクセスが不可になっている必要があることです。もし開発者が機密情報を見られてしまうと同様の事態が発生します。開発者の異動や退職などの影響範囲は最小化されていなければなりません。
Copyright © ITmedia, Inc. All Rights Reserved.