VREチームの2つの役割
山田英樹氏:VRE(Verda Reliability Engineering)チームの山田です。VREチームはVerdaの中でSREの役割を担っているチームです。これから詳細について説明していきます。
(スライドを示して)先ほど市原さんの説明からもありましたが、こちらはLINEのPrivate CloudであるVerdaが抱えているサーバーとか、インスタンスの規模です。この数のインスタンスとか物理サーバーに対して、Reliabilityの責任を負っています。
具体的なロールは何かですが、こういったReliabilityを改善する活動を通じて、LINEのサービスを開発する人たち、我々はVerdaユーザーと呼んでいますが、アプリケーションデベロッパーと、今回この説明会に参加している、Verdaのサービス自体を開発している他のチームの開発者の両方の助けになることを目指しています。
VREチームでは大きく2つの役割を持っています。1つ目はPlatform-wide solutionということで、Verda全体を対象として運用の効率化とか、運用の自動化に取り組んでいるチームです。
2つ目がInfra resource management。こちらはVerdaを構成している物理インフラです。実際のサーバー全般の構築とか調達、管理・運用。そういったところを担っています。
Platform-wide solutionの役割
まずは1つ目のPlatform-wide solutionについて詳しく説明をしていきます。具体的な役割としては、Verdaのプラットフォームに対するモニタリングや、Observabilityを標準化したり仕組みを実装したりしています。それと、日々発生する運用の自動化を行うためのツール、枠組みのようなところです。
Verda全体で使えるような枠組みを開発したり、あるいはUXを高めるための企画を行ったりしています。VREチームは具体的にユーザーに提供するプロダクトを持っているわけではありませんが、こういったところを通じて価値を提供するということです。
このPlatform-wide solutionの具体的なプロジェクトで、最近どんなものがあったのかを紹介します。プロジェクトの例として、1つ目はメトリクスのストレージです。
みなさんPrometheus(というものを)を聞いたことがあるかと思います。サーバーのメトリクスですね。CPU使用率とか、メモリの使用量とか、ディスクの使用量とか、ネットワークのトラフィック量とか。そういったメトリクスのデータを統一的に保管して、統一的なダッシュボードで表示をするための仕組みの開発・設計だったり、各チームとの調整を行って、この仕組みにどんどんマイグレーションしていくような取り組みを行っていました。
その中でアラートも扱っていて、メトリクスに異常があった時にアラートを発報して、そのアラーティングのサービスからオンコールのメンバーに電話をかけて障害対応をしてもらうとか、そういった仕組みを取り扱っています。
2つ目はメトリクスと並んで重要なログです。アプリケーションのログを1ヶ所に一気に保存するような仕組みの統一を目指して、いろいろ動いていました。HDFS(Hadoop Distributed File System)とElasticsearchの基盤が社内にありますが、この基盤に対して保存するためのキャパシティの設計とか、いろいろな効率化とか、「統一的にログを検索する時にどうやったらいいか」という手順を作ったり検証をしたり、そういったことです。
あとはユーザー向けのドキュメントサイト。今までwikiにいろいろ書かれていましたが、なかなか統一的なものがなかったものを統一化したりとか。先ほど言った、オペレーションを自動化するためにChatOps的な仕組みを作ったり、そのSlack botを開発したりしています。
Infra resource managementの役割
もう1つのInfra resource managementの役割について説明すると、物理インフラを扱っているということです。一番大きいのはハイパーバイザーです。7,600台あるハイパーバイザーを管理するというところで、スペックを標準化したり。
あとは「VMをどれくらい作れるか」というキャパシティとか、VMが隣のVMに悪影響を及ぼしていないか・負荷をかけていないかみたいなモニタリングをしたり、その仕組み自体を開発したりしています。
2つ目としては、LINEの社内で使われているサーバーOSです。統一的にCentOSとRocky Linuxを使っていますが、このOSイメージをVerdaに組み込むためのいろいろなスクリプトを開発したり。あとは、OSレイヤーで何か問題が起こった時にはトラブルシューティングをしたり、「こういった機能を入れてほしい」というユーザーから要望があれば、それをコンサルティングして対応したりしています。
あとは、Verda自身も社内システムの1つですが、LINE社内には他にもいろいろシステムがあります。そことの連携でいろいろなシステム間連携があるわけですが、それがうまく動いていないとか、向こうのシステムの仕様変更があってそこを変えなきゃいけないとか、そういったところに対応して、しっかり連携を継続できるような取り組みを行っています。
Infra resource managementのプロジェクト例としては、先ほど市原さんから説明もあった、Multi-AZというものがありました。これまでのVerdaはリージョンは複数あったものの、東京リージョンの中で複数のAZ、データセンターがあるという状況はありませんでした。これが導入されたことによって、サーバーの在庫管理とか、調達を効率的に行う、計画的に行うことの複雑度が急に増しています。
また、複数データセンターを使うのもVerdaユーザーにとっては初めてなので、いろいろトラブルがあったりしました。そのトラブルシューティング、原因を追求したり、原因がわかったら「じゃあこのデータセンターは使えないから別のデータセンターを使いましょう」などのコンサルティングをしたりしていました。
2つ目が、ハイパーバイザーのライフサイクルの確立です。実はVerdaは立ち上がってから5年ぐらいで、一番古いハイパーバイザーの保守がちょうど切れる期間になってきていて、どんどん廃棄して入れ替えなきゃいけない時期に来ています。
そのフローが確立していない状況なので、この標準的なフローを確立して継続的に実行していくような仕組みを作ることが重要な役割となっています。
VREチームが求める人材像
VREチームが求める人材像ですが、プロダクトを持っているわけではないのでバリバリ開発するわけではないのですが、やはり自動化とか、効率化をして少ない人数で大量のサーバーを扱うためには、プログラミングが必須です。
そのため、基礎的なプログラミング能力は求めています。基本的には問題解決をするチームなので、トラブルシューティングが好きとか得意であるとか、組織的な課題をリードして解決に導ける人を募集しています。
2つのポジションがありますが、どちらでも我々のチームに行きますので、どちらも応募をお待ちしています。よろしくお願いします。
VREチームからの説明は以上です。