2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
Private Cloud PlatformのSRE(全1記事)
提供:LINE株式会社
リンクをコピー
記事をブックマーク
萬治渉氏(以下、萬治):「Verda Reliability Engineeringチーム」の紹介を始めたいと思います。萬治渉と言います。よろしくお願いします。Verda Reliability Engineeringチームのマネージャーをしています。
5年くらい前に新卒でNTTに入って、OpenStackなどのプライベートクラウドや、あとはネットワーク機器の設定の自動化などの研究開発に携わったあと、LINEに入社して、Verda Reliability Engineeringチームの立ち上げメンバーとして、Verdaの監視方式の見直しや、アラート整理、オンコールの導入、あとはデプロイまわりの改善とかをやったあと、2021年の7月からチームのマネージャーになりました。
趣味は筋トレと散歩と書いてありますが、毎日雨が降っている日以外は2時間外を歩いて、公園のうんていで懸垂をして、家に帰ったらベンチを上げるという生活をしています。
まずはVerdaについてです。Verdaというのは、LINEの中で使われているプライベートクラウドプラットフォームです。いわゆるAWSやGCPに似たような機能が社内で開発されて、運用されています。Verdaの上では、ものすごい数のLINEサービス、ほぼすべてと言っていいくらいのLINEサービスが動いています。
規模はVMで7万4,000台、Baremetalで3万台、ハイパーバイザーが4,000台以上という感じで、僕が知っている限りでは世界最大規模のOpenStackベースのプライベートクラウドです。CERN(欧州原子核研究機構)が持ってるそれの規模を超えていると思っています。
Verdaは、さっき言ったVMやBaremetal以外にも、たくさんのクラウドサービスを社内のユーザーに提供しています。いろいろ書いてありますが、例えばオブジェクトストレージや、複数のVMからマウントできる共有ファイルシステム、NFSみたいなものですね。あとはMySQLやElasticsearchといったPaaSであったり。
ちょっと変わり種としては、herokuみたいにアプリケーションコンテナをそのまま動かすサービスやKubernetesのクラスタそのものをユーザーに払い出すサービスなんかもやっていたりします。下に書いてあるように、NATとかロードバランサーなどについては、LINE DEVELOPER DAY 2020で発表があったので、気になる方は見てみてください。
Verdaは、開発領域によって複数のチームに分かれています。例えば、Verdaプラットフォーム開発IチームはOpenStackを使ったIaaSの部分の開発を担当していたり、Verdaプラットフォーム開発KチームはRancherを使ってユーザーにKubernetesのクラスタを払いだすような機能開発をしていたり、いろいろです。
Verda Reliability Engineeringチームは、すべてのサービスにまたがって信頼性の向上をしていくというチームなのですが、ここに書いてあるように、ものすごい幅広い技術領域に対して活動していかなきゃいけない。
それはさすがに無茶だということで、基本的にサービスのReliabilityに直接担保する責任はそれぞれの開発チームが持っていて、僕らはサポートであったり、あとはそれぞれのチームの活動の中で共通している部分を拾い出して、それをプラットフォームやツールとして展開したりする活動をしています。
ちなみにVerda開発者の総数は70人に満たないくらいで、これくらいの人数でこの規模のプライベートクラウドを運用していることは、けっこう自慢に思っていたりします。
VREは、Verda Reliability Engineeringチームの略です。チーム名がメチャクチャ長いので、みんなVREと呼んでいます。VREの役割について、一文で言うのであれば「LINEとVerdaの開発者の生産性をVerdaのReliabilityの向上によって上げていく」というのが僕らのミッションです。
この観点で、Verdaの中には2つのユニットが存在していて、1つがPlatform-wide SREと書いてあるもの。もう1つがInfra-managementと書いてあるものですね。1つ目のPlatform-wideはVerdaの内部で使われるアプリケーションプラットフォームの開発であったり、あとは便利なツールの開発。それから監視などの取りまとめみたいなことをメインにやっています。
一方Infra-managementチームは、Verdaが実際に使う物理的なインフラリソースであったり、データセンターのマネジメントであったり、そういうところの調達と効率化を通してVerdaの開発速度やサービスの展開速度を上げたり、Verdaの中のリソースマネジメントなどを主に担当しているユニットです。
今日紹介するのはPlatform-wide SRE Unitです。ユニットメンバーは僕とあともう1人、坂本さんの2人でユニットを組んでいます。ちょっと二人とも笑顔がないので、今度は笑っている写真を用意したいと思います。
この2人でどういう活動をしているかというと、さっき言ったように、Verdaの内部プラットフォームの開発、それからそれぞれのチームのReliability Engineeringの活動を効率化させるようなツールの開発。あとはユーザー観点から見たVerdaの信頼性を上げるために、いろいろな活動をやっています。
ではさっきの2つの観点で、VREのPlatform-wide SRE Unitの中でどういう課題を認識しているかというと、ユーザー観点から見て、Verdaのドキュメントはまだ不十分だったり。またVerdaのドキュメントの場所、サイトがVerdaのサービスごとにいろいろ分散していたりするので、そういうのでユーザビリティを損ねているよね、という話であったり。
あとはログやメトリクスを保存するためのストレージが、今は各チームそれぞれがマネジメントしている状態になっていて、これは非効率だよねという話であったり、さらにはVerdaは今いろいろ複数の種類のVerdaサービスのAPIサーバーやDBのコネクタなどを1つのKubernetesのクラスタの上で運用しようとしていますが、そのKubernetesクラスタのユーザーポリシーがまだまだ明確じゃないし、それをマニュアルで管理するような状態になっているという問題があるよね、であったり。
あとはリリースマネジメントですね。それぞれのチームがそれぞれAnsibleであったり、進んでいるところだとArgoCDだったり、ちょっと厳しいところだと手動でデプロイしていたりしていますが、そういうところもやり方を統一していって、デプロイメント自体の信頼性を上げていったりなど、そういう課題を認識しています。
僕がマネージャーになったのが7月で、ユニットができたのもそれと同じ時期ですが、今取り組んでいるプロジェクトは、メトリクスストレージとログストレージの統一です。これの何が難しいかというと、それぞれのメトリクスストレージ、ログストレージでVerdaのサービスに依存して作ることが難しいという大きな問題があって。それを解消するために、社内でVerdaに致命的なほど依存していないプロダクトを使って、メトリクスストレージをそのプロダクトに任せています。
また、致命的ではないと言っても、Verdaにいくらか依存している部分があるので、その依存を外すためにどういう設計の見直しをすればいいかや、Verdaが求めるメトリクスの保持期間などをどう実現すればいいかという開発観点の話を、ストレージプロダクトを作っているチームとしていたりします。
あとは、ログストレージについては、残念ながら社内に完全に僕らの要件に適合するものがなかったので、Grafana LokiとAWSを組み合わせて、Verdaに致命的に依存しないかたちでログストレージを構築しようとしています。
さきほど言った2つのプロダクトが一段落したら、次にどういうのをやっていきたいかというと、優先度順というわけではありませんが、最初にやろうと思っているのは、一番上のドキュメントサイトの統一です。
今のほとんどのプロダクトは、社内のConfluenceではない場所にドキュメントのマスタを置いていますが、社内のVerdaユーザーのほとんどはConfluence上にある古いVerdaのドキュメントのトップページを参照しているような状態です。なので、そこをまずきちんと新しいサイトに統一して、そのサイトの中でもちゃんとテクニカルライティングを補助するような、いろいろな自動化機能であったりを実装しようというプロジェクトを企画しているところです。
あとはVerdaのサービスはけっこうサービス間でのマイクロサービス的な依存が多いのですが、その依存関係が完全にクリアになっているわけではないので、Verdaの中の依存関係をきっちり洗い出して、デプロイの時やOutageハンドリングの時に、適切に関係する開発チームに情報が届くように、情報整理をしましょうという話も進めようとしています。
最後に書いてあるデプロイメントの手段の統一ですが、これについては、明日開かれるCI/CD Conferenceのスポンサーセッションで具体的な取り組み方針や、あとその方針の要素技術、要素技術ごとのVerda内での導入事例などを発表する予定なので、興味がある方はCI/CD Conferenceにも来てください。
テクニカルスタックは、ページを作るのを忘れていたので口頭で補足しますが、基本的にはPythonとGoでコードを書いています。Pythonは、簡単なWebサーバーとかを書く時に使ったりしていて、GoはKubernetesのオペレーターなどを書くのにゴリゴリ使っている感じです。
メトリクスまわりは、収集にはPrometheusを使っていて、Prometheusからさきほど言った中央のメトリクスストレージに書き込むかたちを取っています。ログストレージについては、今のところはElasticsearchを使っていますが、これもさっき言ったログストレージの統一プロジェクトで、アプリケーションログはGrafana Loki、監査ログについてはHBaseのクラスタにFluentdとKafkaを使って投入するようなモデルを作っているところです。
そういう差し込みの話をしたところで、どういう人を求めているかという話に入りたいと思いますが、まずは行動面ですね。僕らのチームは、心理的安全性というか、そういうものをすごく大事にしているチームなので、心理的安全性について理解があった上で、それを実現しようと行動できる人というのを強く求めています。
あとは何か困った時とかに自分で抱え込まずに、まわりの人にちゃんとヘルプを出したり連絡したりできる人を求めています。3つ目はリーダーシップ。これもとても重要で、何か問題があったり決めきれないことがあった時に、どういう方針で動くべきかを今の情報できっちり判断して、前に進める人を求めています。
ただそういう行動をしたら、いくらか失敗は付きまとうと思いますが、その失敗は前向きなチャレンジとして受け止めるようにしています。あとはちゃんと学び続けて、アウトプットを出し続ける人ですね。
技術的な面でいうと、高い可用性を持つシステムはいったいどう作られているのについて、知識をきちんと持っている人。あとは僕らはクラウドを作っている側なので、すごい低レイヤーの技術領域についても深く理解して、トラブルシューティングができるようにしなきゃいけません。あとは、現代的なモニタリングの知識ですね。
例えば1つのPrometheusがすごい幅広い範囲であったり大量のメトリクスを収集する時に、それはいったいどういう問題を引き起こすのか、それを避けるためにはどういうデザインでメトリクスのデータフローを組まないといけないかについて、知識を持っている人がいるとすごく助かります。
CI/CDの話もそうです。どこのテストで何を担保するべきなのか。デプロイした時にどういう問題が起こり得て、それを事前に防ぐ仕組みと起こった時に被害を最小限にする、復旧を速くするためには、いったいどういう仕組みが必要なのかについて、いろいろ意見を持っている人が来てくれるとうれしいです。
最後にマイクロサービスアーキテクチャの知識ですね。あるプロダクト、サービスを作る時に、そのサービスがどういう機能を内部的に備えていて、それをどういう責任範囲に分解して、マイクロサービスとして開発、デプロイされるべきなのか。一番上のシステムデザインともちょっと被りますが、そういうところについて経験と知識がある方を強く求めています。
ということで、Verda Reliability Engineeringチームからの紹介は以上です。
LINE株式会社
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05