「LINE DEVELOPER DAY 2019」レポート

DAY-2,iOSアプリ開発秘話/開発プロセスをビジュアル化して改善

この記事を読むのに必要な時間:およそ 4 分

開発プロセスを改善するための専門チーム

そこで出番となったのが,具体的には,テストの自動化やDevOpsなど自動化技術とScrum・Kanban・Leanなどのアジャイル方法論です。

SETがサポートして成功した事例の1つが,⁠Channel Gateway」です。これは,同社が提供しているAPIをまとめて外部に公開しているサービスのことを指します。このことは,裏を返せば,さまざまなマイクロサービスがあり混乱しているということにもなります。

Channel Gatewayの概要

Channel Gatewayの概要

テストの自動化で障害検知をするためにSETが行ったことは,マイクロサービスのMTTRの削減・改善です。具体的には,開発者にテストを書いてもらう施策を行っています。今回の「Channel Gateway」の事例では,開発者のテスト用にJUnitとSpring Bootを使用してAPIのテストが行えるようにしています。

それを作ったあとで,CIサーバ経由で定期的に実行するようにします,また,チャットで障害と回復を知らせるようにしています。

こうした施策の良かった点としては,障害検出が機能し,一部の開発者がテストコードを書いてくれるようになったことです。また,副次的な効果として,インフラの脆弱性も検知することができています。

その一方で,反省点も多かったそうです。実はこの施策は定着しませんでした。その理由は,大多数の開発者がAPIのテストコードを書いてくれなかったからです。理由を聞いたところ,開発者にとってもプロダクトマネージャーにとっても読みづらく書きづらかったという答えが返ってきました。

また,どのマイクロサービスで問題か起きたのかという根本原因がわかるしくみがありませんでした。そのため,MTTRの劇的な削減にはつながりませんでした。さらに,チームの自主性に委ねてみたところ,これが大失敗につながったと伊藤氏。一緒に教えていたのは2週間程度という期間でしたが,⁠これもやらなければいけないの?」という感じで,開発者がテンパってしまったそうです。

このときの反省点としては,しくみだけ提供してもプロダクト開発チームは動けなかったということでした。そこで,⁠Karate」を使いAPIテストの簡略化を行っています。

「Karate」とは,APIに特化したBDD(Behavior-Driven Development)スタイルのフレームワークのことです。⁠Karate」を選んだのは,開発チームやプロダクトマネージャーにとって読みやすく書きやすかったからでした。そこで,これまでJUnitで書いてきたものを「Karate」を使って書き換えています。

ただ書き換えるだけではなく,このときは,SETチームが一緒になり,問題解決にあたっていくようにしています。その結果,障害を30〜50パーセント削減することができました。また,同チームは自分たちで考えて解決策を見つけ,次の実装を考えるセルフオーガナイズドなチームに変貌しています。さらに,プロダクトマネージャーもテストコードを書いてもらえるようになっています。

Zipkinを使ったMTTRの削減

しかしこの状態ではまだ,マイクロサービスの障害の原因はまだ特定できていません。そこで「Zipkin」を使ったMTTRの削減に取りかかっています。

「Zipkin」とは,マイクロサービスのレイテンシや依存関係を視覚化できるサービスです。依存関係がわかるということは,障害が起きたときの場所もわかるということになります。

いくつか例がありますが,⁠Sebas-Report」では,テストを実行したレポートに「Zipkin」の情報を加えることで,障害発生時にどこのマイクロサービスで起こったのか特定することができます。

「Sebas-Bot」は,チャットから任意のテストを実行できるようにするチャットボットです。障害が発生して修正したときに,サクッとためしたいときなどに役に立つものです。これらを組み合わせて,MTTRの削減ができるか実験を行っています。

Zipkinを利用した「Sebas-Report」

Zipkinを利用した「Sebas-Report」

Zipkinを利用した「Sebas-Report」

これにより,どのマイクロサービスで障害が起きたかわかるまで1週間ほど掛かっていたのが1〜2時間まで短縮することができました。それにより,サービス回復までの時間も劇的に速くなっています。

パンドラの箱

しかし,良いことばかりではなく,ある意味パンドラの箱を開けてしまったような状態だったといいます。これを活用するには,それぞれに「Zipkin」の設定を加える必要があります。しかし,最初に触れられたようにLINEアプリのマイクロサービスは,約2500も存在しています。当然のことながら,それらは必ずしもAPIが1つとは限りません。それに加えて,SETのメンバーは現在4名しか在籍していません。そこで,こうした問題をどうすればいいのかというのが,まさに今現在課題になっている点だと伊藤氏はいいます。

将来的なプランとしては,関連するすべてのマイクロサービスに「Zipkin」を展開し,テストスクリプトを生成する予定です。⁠Sebas-Bot」については,⁠Channel Gateway」以外のユーザも使えるように展開していきます。そして,これらを全社の製品開発チームのプロセス改善に活用していくとのこと。

伊藤氏は最後に,SETはテストの自動化は品質改善のためだけとは考えておらず,根本的な改善や技術などを活用し,多くのイノベーションを起こしてハッピーになってもらいたいと語り,セッションを締めくくりました。

いかがでしたでしょうか。LINE社のテックカンパニーとしての側面がお伝えできたと思います。詳細なレポートや資料,動画はLINE Engineering Blogで公開される予定です。ぜひこちらもご覧いただき,会場の雰囲気や盛り上がりを体感してみてください。

メイントーク以外にもショートトラックやポスターセッション,ブース展示など,他のコンテンツも盛況でした(写真はブース展示エリア)

メイントーク以外にもショートトラックやポスターセッション,ブース展示など,他のコンテンツも盛況でした(写真はブース展示エリア) メイントーク以外にもショートトラックやポスターセッション,ブース展示など,他のコンテンツも盛況でした(写真はブース展示エリア)

メイントーク以外にもショートトラックやポスターセッション,ブース展示など,他のコンテンツも盛況でした(写真はブース展示エリア) メイントーク以外にもショートトラックやポスターセッション,ブース展示など,他のコンテンツも盛況でした(写真はブース展示エリア)

著者プロフィール

高島修(たかしまおさむ)

コンピュータホビー雑誌『ログイン』の編集者やドワンゴでモバイルサイトの企画・運営等を経て,2014年よりフリーで活動中。XRやPCなどのIT系やゲームをメインに,年間120本以上の取材をこなしています。

バックナンバー

「LINE DEVELOPER DAY 2019」レポート