2022年3月12日、大規模サービスを展開する国内IT企業6社が「6社合同SRE勉強会」をオンラインで開催した。LINEでSREを務める加藤俊弥氏は大量アクセスが発生する「元日」に過負荷による障害を起こさないため、SREとして取り組んだ「準備」「検知」「対処」を紹介した。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
ITサービスがビジネスの根幹となる中、ITサービスを迅速に開発してユーザーに提供することが求められている。一方で、快適にサービスを利用できる状態を確保しつづけなければ、ビジネスへの悪影響につながりかねない。
そこで注目されているのが、ソフトウェアエンジニアリングのアプローチで、サービスの信頼性を制御し、ユーザーの期待に応える「SRE」(Site Reliability Engineering)の取り組みだ。
日本で大規模なITサービスを運営するLINE、メルカリ、クックパッド、ディー・エヌ・エー、サイバーエージェント、リクルートの6社は、2022年3月12日に「6社合同SRE勉強会」をオンラインで開催した。本勉強会では、各社でサービス運用に関わるエンジニアが自社でのSREに関連した取り組みを紹介すると同時に、他社のエンジニアとの質疑応答を通じて知見が共有された。本稿ではLINEでSREを務める加藤俊弥氏が講演した内容をお届けする。
日本をはじめ、主にアジア圏の国々でコミュニケーションサービスとして高い人気を誇る「LINE」。LINEには「LINEスタンプ」と呼ばれる機能がある。特に日本においては、元日の午前0時に新年のあいさつとしてLINEスタンプを送信する通称「あけおめLINE」と呼ばれる習慣があり、0時ちょうどに大量アクセス(スパイク)が発生する。1分前の23時59分のアクセス数と比較すると約9倍に上るという。
2021年の元日はスパイクによる過負荷に耐え切れず、サービスに障害が発生してしまった。LINEスタンプのチームでは、2021年の障害を教訓に準備と体制づくりを進め、2022年の元日は、大きな障害なしにあけおめLINEによるスパイクを乗り切った。加藤氏は過負荷による障害を防ぐ準備と対応をどのように進めたのか紹介した。
加藤氏はまず、発表の前提として、LINEのシステム構成や組織を紹介した。LINEスタンプのシステムはアプリケーションのマイクロサービス化を進めており、現在50を超えるマイクロサービスで構成されているという。同社では、全社横断の開発運用部隊とは別に、サービスごとに企画、運営、デザイン、サーバサイド開発、クライアント開発、フロントエンド開発、QAなどのメンバーがチームとして組織されている。加藤氏はLINEスタンプおよび関連機能のサーバサイド開発チームとしてSREの役割を担っているという。
「LINEスタンプが提供する機能は、主にスタンプの『提供者向け』のものと『利用者向け』のものの2つに分けられ、さらにドメインごとにサービスが分離されている」(加藤氏)
普段からのパフォーマンス向上を目的にした設計は、リアクティブプログラミングを実現するJavaライブラリ「RxJava」とマイクロサービスフレームワーク「Armeria」によるノンブロッキング実装だ。特定の処理が遅延しても他のAPIが影響を受けにくくしている他、システム間通信を実現するための「Thrift RPC」およびクライアントサイドロードバランシングの導入、ローカルおよびリモートでの多段キャッシュなどがある。
サービス全体の負荷が高まった場合、動的にAPIの呼び出し数を制限する「Throttling」は特定のAPIに対するリクエストの成功/失敗の割合をゲートウェイサーバで設定しているという。これは「個別のマイクロサービスに対して安易にThrottlingを実施すると、他のマイクロサービスへの影響による連鎖障害リスクが高まるため」(加藤氏)だとする。
ここからは、あけおめLINE固有の対策が紹介された。あけおめLINEによるスパイクは、時間をトリガーに発生する。これは、日本のあけおめLINEの次は台湾で、台湾の次はタイと各国の時差により1時間ごとにスパイクが発生することを意味する。加えてスパイク前後の数時間は、キャンペーン施策などスタンプの売り上げが急増するタイミングでもあり、障害対策の重要性はビジネスの観点でもますます高くなる。
Copyright © ITmedia, Inc. All Rights Reserved.