「クラウドならではの失敗、障害を前提に」――機械学習基盤の実運用におけるトラブルと対策:コンテナベースの機械学習基盤を大解剖(終)
リクルートのエンジニアが内製している機械学習基盤について詳しく解説していく本連載。最終回は、実際に起きたトラブルを取り上げながら、クラウドが提供するマネージドサービスを利用する際に必要な考え方を紹介します。
第2回では「Crois」「Crafto」のシステム構成を共有しました。今回はクラウドが提供するマネージドサービスを利用したプラットフォームを提供する際に起こり得るトラブルとその対策について、実際のトラブル例を紹介しながら説明します。
ローンチ後のCroisの利用状況
Croisは2018年にローンチされた後、社内で少しずつ採用されるようになりました。その中で実績を積んだことが評価され、他の組織にも利用が拡大しています。特に2021年から2022年初頭にかけて急激に利用者が増えました。この間だけで1日当たりのジョブ実行数が倍以上(600ジョブ→1500ジョブ)に増えており、現在も日々増加しています。
スケーラビリティを重視した設計をしているため、基本的なシステムの設計は変える必要はありませんでした。しかし、クラウド特有の問題が発生するケースが幾つかありました。
失敗を前提とした設計で高い稼働率を維持
Croisは独自のヘルスチェック機構を実装しています。エンドツーエンド(E2E)テストのようにログインからワークフローの閲覧、ジョブの実行、スケジュール実行まで一通りテストし問題が起きていないかどうかを定期的にチェックしています。利用しているAWS(Amazon Web Services)で障害が起きることもありましたが、上記のヘルスチェックでは99.9%以上の高い稼働率を維持できています。
とはいえ多くのマネージドサービスを活用した構成になっているため、AWSの障害に対して弱いのではないかと思われるかもしれません。AWSでは多くの提供サービスで高いSLA(Service Level Agreement)が定められていますし、Crois内部でも不定期に発生する障害に対してのリトライ機構を設けています。そのため複数のマネージドサービスを使ったことによる稼働率の低下は感じていません。
第2回でCroisはコンテナの実行に「AWS Fargate」や「AWS Batch」を使っていることを紹介しました。これらのサービスに対して指定したコンテナの起動をリクエストする際、起動失敗エラーが返ってきて実行できない場合があります。このエラーにはネットワークインタフェースの初期化失敗、APIのスロットリングエラー、原因不明のエラーが含まれます。
Copyright © ITmedia, Inc. All Rights Reserved.