2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
LINEにおけるCI/CDとMonitoring(全1記事)
提供:パーソルイノベーション株式会社
リンクをコピー
記事をブックマーク
黒木亮太氏(以下、黒木):「LINEにおけるCI/CDとMonitoring」というお話をさせていただこうかなと思ってます。
まずは私のプロフィールです。私は黒木亮太と言います。2019年にLINE Growth Technologyに移って、LINE Growth Technology株式会社の東京開発室の室長をやっています。
もともとWeb系の会社にずっといて、こういう業界にはけっこう長くいることもあり、さまざまな視点から見ているので、LINEの特殊なところがなんとなくわかっています。今日は「LINEならでは」のツールをどうやって使っているかを情報共有できたらなと思ってます。
今日のアジェンダなんですけど、まずはLINE Growth Technologyという会社自体をご存知の方はなかなかまだ少ないと思うので、最初にその紹介をさせていただいて、そのあとはCI/CDと、モニタリング・アラートについて大きく2つ紹介させていただきます。
まず最初のアジェンダにいきます。ちなみにLINE Growth Technologyを知っている方はどのくらいいますかね?
(会場挙手)
少ないですね。
実は今、会社説明会をしていて、Twitter Adでたまに見る人がいるかもしれないんですが、LINE Growth TechnologyはLINEの100パーセント子会社ですね。その中で開発組織として動いている立ち位置となっております。
LINEとどう違うのかは、会社名にある通りGrowthをテクノロジーで解決するところがミッションです。
ミッションとしては大きく2つですね。LINEのさまざまなサービスの成長と、それに関わる人の成長を我々はミッションとして置いています。
我々は「Growth開発」と呼んでいるのですが、なかなかこのGrowth開発は一般的な言葉ではないので補足させていただきます。
よく上がる質問としては「LINE側のサービスに関わる運用部分を担当するのではないか?」「Growth Hack専門のチームなのではないか?」と質問されるんですけど、ちょっと違います。
Growth Technologyは、LINEのサービスの成長を担う開発組織となっていて、LINEのいち開発組織の立ち位置で開発を行っていきます。
領域としては大きく2つ持っていて、いわゆるエンドユーザが使うサービスについて、UI/UX含めてサービスの満足度や認知度の改善に貢献するような開発を行っています。
もう1つの領域としては、運営改善です。Webサービスはリリースして終わりじゃなくて、そこから何年も運用・運営をしていくので、そういうところでしっかり運営の品質を向上させることが、すごく大事なミッションです。
例えば、サービスをリリースしてユーザー拡大をしているときに、運営フローなどの問題で詰まってしまってはせっかくのプロモーションも最大限の効果を得られません。そのような事が起きないように、運営フローやそれに関わるシステムの改善や開発をしています。
まとめると、1つはLINEのいち開発組織であることと、使っている技術はLINEと同水準で開発を行っています。これは技術、言語もそうですし、今のLINEだとインフラは社内のプライベートクラウドで成り立っているんですけど、そういったインフラや、その上に乗っているアーキテクチャ、ミドルウェアも同じような水準で使っています。
その中でGrowth開発を専門領域とするチームだと認識していただければなと思います。ぜひとも一人でも多くの方にLINE Growth Technologyを知っていただきたいです。
今日のこれ以降のプレゼンは一応LINE Growth Technologyの業務軸での話となっています。LINEはグループ全体でさまざまな組織とさまざまなサービスを運営しているので、必ずしも同様ではないことだけ最初にお伝えいたします。
ここからは、CI/CDやモニタリング、アラートがどう成り立っているのかをお話させていただきます。
まずはCI/CDからですね。CI/CDのツールでいうと、みなさんもいろいろ使われていると思うんですけど、代表的なものを列挙しました。JenkinsやCircleCIなど、最近だとDroneを使っている会社さんも多いかなと思います。一番下にPMCと書かれているんですけど、こちらはLINE内製のCI/CDを行うツールです。このあたりは独特なので後述させていただきます。
今日は基本的にはこの下の2つについてお話しします。なぜPMCを作っているかというと、一言でいうと標準化です。PMCでは操作ログなどをLINEで定めた基準で蓄積しています。それにより、例えば「このサービスはログが残ってない」「必要なときに見れない」ということを解決しています。
そのため、LINEではデプロイ時にPMCを利用しているサービスが多いです。
パターンで言うと、スライド左側はみなさんもよく使われているおじさんですね。Jenkinsを使って、ビルドした生成ファイルを社内のリポジトリに入れて、あとはデプロイするときに先ほどのPMCを使って、そこの履歴管理を行いつつCDを行っているのが1つのパターンです。
そのPMCの課題は、やはり最近コンテナの利用が多くなってくる中で、その対応が必要になってきます。先ほどのツールはまだ実はコンテナ対応できてなかったりするので、その対応が必要です。あとはそもそもそのPMCに頼らないで他の代替手段を使う検討も始めないといけないですね。
そこで、我々が次にどういう技術を使っていこうかと話したときに、Droneというアイデアが出ました。今は実用化に向けた試みを実施中で、まだプロダクションで利用はしてはないんですけど、検証段階です。
なぜDroneを利用するのかと言うと、まず1つはDockerネイティブであるところと、あとはスケールメリットですね。コンテナなので、そこの並列処理とかで高速に実行可能です。ビルドとかテストが高速にできるというのと、あとは実は社内に全社が使えるDrone環境が用意されていて、それで導入ハードルが下がっているのが1つあります。
今やっているところで言うと、先ほどJenkinsを置いていたところにとりあえず置き換えることによって、テストとかビルドを高速化する動きですね。置き換えることでけっこう簡単にできるので動いています。Droneを使ってプライベートリポジトリはHarborを使って、そこに入っているファイルをPMCでサービスにデプロイする。
ただ、これだと先ほどの課題が解決されないので、ここからCDの部分をどうしていくかみたいなところを考えています。例えば、Argo CDとKubernetesを連携させてデプロイするとか。このへんは今後一般的になっていくと思うので、その取り組みも内部で行っています。ただ、やはり先ほどのLINEで定めた基準などをクリアする必要はあり、まだいくつかのハードルを乗り越えてやっと使える感じですね。なので、このへんはまた次の機会にでも詳しく共有できたらなと思っています。
次がモニタリングの話になるんですが、次のアジェンダに行く前に職種の話を少しさせていただければなと思います。
LINE Growth Technologyではエンジニアの職種が3つあって、サーバーサイドとフロントエンドと開発支援というロールがあります。この開発支援はいわゆるサービス開発における支援ツールの開発などと、SREのような動きをするチームになっています。
職種とカバー範囲を図にしてみました。インフラはVerdaと呼ばれるプライベートクラウドを使っていて、インフラチームが管理しています。その上に乗っているアプリケーション・ミドルウェアが我々アプリケーションエンジニアの範囲になるんですけど、その中でもサーバーサイドとフロントエンドエンジニアは、アプリケーションの部分とミドルウェアですね。
開発支援はミドルウェアのチューニングなどでサポートしてくれたり、あとは開発を効率よく行うために必要するための支援ツールにフォーカスしたチームになっています。モニタリングでいうと、ここの開発支援ツールがうちの社内で重要になってきているので、そこの紹介をさせていただこうと思っています。
モニタリングとアラートですね。モニタリングに関しては先ほどヤプリさんのところでDatadogもあったと思いますが、他にも例えばZabbixやPrometheusを使っています。今日は多くは触れませんが、モニタリングツールについても一番下は内製のものです。
今日は我々もよく使っているPrometheusというツールを深掘って話そうと思います。
LINEでは、モニタリングのところでPrometheusを多く使っています。その下にPromgenという文字がありますが、これはLINEでオープンソースで公開しているツールになります。
Promgenは、Prometheusをアプリケーションエンジニアが利用しやすくすることが目的のツールです。機能としてはPrometheusの設定ファイルの作成と管理、あとはアラートの通知と構成管理などができます。もし近いようなことを考えてる方がいらっしゃればぜひGithubで見ていただければと思っています。
また、LINEのEngineering Blogで書いていたり、あとは2015年のLINE DEVELOPER DAYの資料がWebにあるので興味ある人は見てください。
Promgenがどういうことをやっているかをご紹介します。Demo Serviceというサンプルを持ってきているんですけど、基本的な構成はRulesとSenderと、Projectsに大きく切られています。
Rulesはモニタリングのルールを設定するところです。基本最低限のルールはデフォルトで用意はされているものの、用途によって変更可能です。例えば、Hadoopクラスタを持っていたりすると、CPUの細かい監視を切りたいこともあると思います。他にもサービス特性によってモニタリングをする・しないのはもちろんあると思うので、そういうところはサービス側でカスタマイズする方針です。
モニタリングをする・しないのOn/Offもそうですし、閾値やルール自体のオーバーライドみたいなところもこの設定で行うことができます。
Senderは通知の設定ですね。先ほどのモニタリングのところで閾値とか、どういうものを監視するかを決めるんですが、それらが閾値を超えた場合にアラートをどこに通知するかをここで設定しています。
利用できる通知の種類もいくつか用意されています。LINE社内ではSlackに連携することが多いですが、他にも、メールやLINE、Webhookを利用して他のツールと連携させるところもカスタマイズできるようになっています。
最後にProjectsはいわゆるグループの設定ですね。例えばWebサーバーであったりとか、APIサーバーやバッチサーバーみたいなそういう役割があると思うので、それらをこのプロジェクト単位で切ってもらって、Webサーバーに必要なエクスポーターなどの監視の閾値をグループ単位で設定することができます。
こういったものを作ることによって何がうれしいかと言うと、Prometheusをそのまま使うとなると、先ほどのアプリケーションエンジニアだと設定のハードルが高かったりするので、そういうところを補うために作っているツールになります。
なので基本的にはアプリケーションエンジニアがこの辺の設定をして、監視、モニタリング、アラートの設定までは簡単にできるようなサポートツールとして開発支援のメンバーが動いているというかたちですね。
ここまでがPromgenの説明なんですけど、他に先ほどのチームがけっこう便利なツールとして作っているものがいくつかあるので、その考え方とかこういうものを作ってますよみたいな紹介です。
1つ目は、リポジトリ管理です。社内用のAnsible Galaxy用のリポジトリを用意しています。管理の対象としてはPrometheusを利用する際のエクスポーターや各種ミドルウェアです。
これらをAnsibleのアプリケーション側で設定することによって、さきほど標準的なところがデフォルトで入るので、あとはそのサービス特性に応じたカスタマイズはアプリケーション側で実施するかたちですね。
もう1つが、アラートの詳細情報をSlackに通知してくれるBotです。
アラートが来て「どこが原因なんだ?」みたいなところを探るときに、実際のモニタリングツールにログインして確認、というのがけっこう多いと思うんですが、そうするとコミュニケーションがその場で完結しなかったり、見るところが人によって違ったりするので、最低限見るべきところをある程度アラートのタイミングでBotで連携しています。
このツールで特徴的なのは、情報がSlackに来るのもそうなんですが、「これは別にいいよ」というものはSlack上でサイレンス設定にすることができるところです。また、スレッド内にモニタリンググラフをキャプチャで貼っていってくれるので、ある程度どのへんが原因でこのアラートが起きているかをSlackのコミュニティ上で完結できるのも1つの特徴ですね。
このような支援は、我々のところだと明確なロールがありますが、そのような事もアプリケーション開発を効率に行うための1つの手段かなと思っています。
あとは最後に、我々も設立して1年半ですが、まだまだ一緒に開発チームとして活躍してくれるメンバーを募集しているので、もし興味があれば声を掛けてください。
ご清聴ありがとうございました。
司会者:ありがとうございました! 黒木さんありがとうございます!
(会場拍手)
パーソルイノベーション株式会社
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