サーバーサイドエンジニアの全体的な話

中村俊介氏:では、私からサーバーサイドエンジニア会の全体的な話をします。よろしくお願いします。

まず簡単に、私の自己紹介をしますが、LINEの東京オフィスにある「LINE Platform Development Center 1」は、開発1センターあるいはLPDC1と呼ばれていますが、その開発1センターの中で、Messaging Platform開発室のマネージャーをやっています。

今日の発表内容ですが、開発組織の全体的な体制と、Messaging Platformにおける開発の責任と役割、どういったことをやっているのかを説明します。その後に私のセンター、LPDC1の中にはいくつか室がありますが、その詳細を少し話します。

東京以外にもいくつかあるオフィス

では、始めます。まず開発組織体制ですが、ブランチがいくつかあって、LINEには東京オフィス以外にもいくつかオフィスがあります。

日本ではLINE Fukuoka、通称LFKや、LINE KYOTOがありますが、海外にもいくつか拠点がありまして、例えば、LINE Plusは、韓国の城南市(ソンナム市) 盆唐区(ブンダン区)にオフィスがあります。

そのほか、台湾やタイ、ベトナム、インドネシアなどにも、それぞれ開発組織があります。特にサーバーサイドの開発者は、東京だけではなく、LFKやKYOTO、LINE Plusなどにいる同僚とも一緒に協業する機会があります。

なにか仕事をする時に依頼する関係性もあれば、日常的に業務でやりとりする自分のチームメンバーがLINE Plusにいることもあるので、ほどよい感じでグローバルな会社なのかなと思います。

東京オフィスにある4つのセンター

さて、東京のオフィスには、開発に関して4つのセンターがあります。私がいるLPDC1以外にも、2センター、3センター、4センター。あとは、よく協業関係のあるData Engineeringセンターだったり、Data Scienceセンターなどがあります。

LPDC1については後ほど話すので、それ以外のセンターについて簡単に話しますね。LINE Platform Developement Center 2は、主にクライアントの開発者がいて、LINEアプリケーションのiOSやAndroidの開発をしているチームが、このセンターにいます。こちらは別にセッションがありますので、クライアント開発に興味がある方は、そちらを参考にしてください。

3センターは、主にLINEのファミリーサービスと呼ばれている「LINE NEWS」「LINEマンガ」「LINE LIVE」「LINE MUSIC」「出前館」。今までもいくつかアイコンが出てきたかと思いますが、そういった「LINEなんとか」とついているようなファミリーサービスの開発をしているセンターです。

最後に4センターですが、こちらは、「LINE公式アカウント」いわゆるBOTがあると思いますが、そういったBOTのビジネスを支えるファシリティや、LINEの広告プラットフォームを作っているセンターです。

そのほか、日常的に関わるセンターとして「Data Engineeringセンター」があって、こちらは、LINE全体のデータ管理や分析に必要なプロダクト、例えば「Hadoop」などを用いたデータプラットフォームの基盤の開発や運用をやっているセンターです。

もう1つが「Data Scienceセンター」というところで、主に機械学習などを利用して、データの分析の業務や、その応用システムの構築などをやっていて、データドリブンにサーバー開発する上でも、協業しながらプロダクトを作っていく上でも、重要なパートナーです。こちらは、それぞれまた別のセッションがありますので、関心があればそちらも参加してもらえたらと思います。

1センターが目指す「WOW」を創るサーバー開発

さてここからは、LPDC1、1センターの内容です。1センターは何をやっているかというと、(スライドに)書いてあるとおり、「Sever Side development as a Platform」といいまして、「LINE Messaging」という本体のサーバー開発と、LINEは一般ユーザーだけではなく、いろいろなビジネスを抱えているユーザーがいるので、そちらに向けてLINE機能をプラットフォームとして提供するのが主な役割です。

ここでスライドに人が出てきましたが、この人はLINE CWOの慎ジュンホです。LINE社全体の共通のスローガンとして”WOWを創出して世界でNo.1になる”という言葉があります。CWOはその最高責任者、”Chief WOW Officer"を表す弊社オリジナルの役職となっています。このWOWを作り出すことがLINE社全体の大きなミッションです。WOWが何かというと、言葉のとおり人々がWOWと言いたくなるような機能を生み出すことですね。

もしくは、友達とか家族とかに思わず紹介したくなるようななにかユーザーの機能だったり環境だったり、ツールだったり。そういったものを提供して、最終的にはNo.1のプラットフォームを作っていくところを全体のミッションとして掲げています。

サーバーサイドも、このミッションに沿って仕事をしていて、No.1のWOWなサービスを作るためには、必ずその下にWOWなプラットフォームを用意しなければいけないと考えています。

LINEの基本はメッセージングなので、メッセージングを主軸としてさまざまな周りのプラットフォームを一緒に構築しています。BtoBの領域もあればBtoCの領域、両方幅広くいろいろなユースケースがあり、それに向けて広範囲の開発を進めています。

WOWの可能性を引き出す3つのコアバリュー

そういったWOWの可能性を引き出すプラットフォーム作りで掲げているコアバリューが3つあります。「Reliability」「Flexibility」「High Quality」の3つをLINEのサーバーエンジニアは非常に重要視しています。

まず、Reliability。日本語だと信頼性という言葉ですが、LINEは日本やアジア諸国では、世の中のライフラインのインフラとして機能しているので、さまざまな観点から信頼性が求められています。

信頼性にはいろいろな種類の意味があると思いますが、例えば限りなく100パーセントに近い可用性を実現するための努力をしています。

LINEには大量のユーザーがいて、大量のサーバーで構築されているので、いろいろな問題によって、システムが意図どおりに動作しなかったり、ネットワークの問題によって処理が失敗したりすることがありますが、そういった場面でもメッセージが送信者から受信者に確実に届くこと、ユーザーの意図どおり動作することを目指しています。

ただ、やはり人間が物理インフラ上で作っているシステムなので、いろいろなバグとかネットワークの問題、ディスクの故障などの問題で、データが壊れたり、不整合が発生したりする課題がありますが、そういったものを適宜故障から復旧やデータの修復して、そういった問題を緩和する改善作業を普段からやっています。

そして、どうしても長年運用していると、いろいろな障害を経験しますが、LINEの中では障害を特別なものとして扱っています。普通、なにか障害が起きると悪い事態に落胆したり、実際にミスした人を責めたりする思考になりがちだと思いますが、LINEではそうではないです。

障害がなぜ起きたのかというところをていねいに分析をして、時の運や人の問題ではなく、なにかチーム組織や技術的な課題があって起きた問題であるという考えのもとで、ちゃんとふりかえりをするという文化が根づいています。むしろ、障害をきっかけにそこから大きな改善が生まれたりするなど、障害というイベントを最大限に活かす文化が整っています。

真ん中のFlexibilityは柔軟性で、LINEはメッセージングを中心にいろいろなサービスを作っていくところがあり、数多くのサービスを簡単に作れるように柔軟なプラットフォームを構築することが、1センターの役割です。

実際のサービスの目に見える部分を作るところは、クライアントや他の開発センターがやりますが、例えばある機能を新しく作る時に、柔軟性がないシステムだと、APIの開発からストレージの準備まで、いろいろなことを最初から準備しないと作れないところがあって想定したよりもプロダクトのデリバリまで時間がかかってしまいます。

理想的には、簡単な設定の記述だけでサービス開発ができたり、これは難しいかもしれませんが、クラウドサービスのようにボタンを1つ押すだけでセットアップなどすべてができる環境になることを目指して進めています。

あとはビジネスパートナー、先ほど出てきた公式アカウント、BOTを作っている外部の開発者の方々やスタンプのクリエーターがいるので、その人たちが自身のサービスやプロダクトを簡単にデリバリーできるように、APIの開発や運用も担当しています。

最後は、High Quality。イノベーションに100パーセント集中というところがあります。LINEのサービスは10年以上動いていますが、その裏側のサーバーはずっと10年前の環境で維持しているわけではなくて、世の中の技術トレンドや要求される技術ワークロードの変化に応じて常に古いものをアップデートしながら、最新の技術の導入を、トライアンドエラーを繰り返しながら導入してアップデートしています。

我々のユーザーとは他部署や外部のクライアントだけではなく、自分たち開発者自身も1人のユーザーと考えて、快適な開発環境を常に目指してアップデートしています。

LINEサーバー開発者の担当領域

そのほかいくつか実践していることがあります。サーバー開発者として、どこまでの範囲をやっているかですが、ソフトウェアレベルのユーザーに見えないバックエンド部分は、すべてやっていると捉えてもらえたらいいと思います。APIのゲートウェイからアプリケーションサーバー、マイクロサービスのコーディネーター、ミドルウェア、ストレージといったところに関しては、すべて担当しています。

あとは、機能の開発に関しても、APIのデザインやビジネスロジックの検討、分散システムの処理やパフォーマンスエンジニアリング、データベースのスキーマ構築など、ひととおり私たちサーバーエンジニアの担当領域になっています。これを、さまざまなオープンソースのソフトウェアを最大限に活用しながら、幅広いエンジニアリングをしています。

メッセージング部分をつかさどる「Messaging Platform開発室」

ここからは「3つの室」に関して話していきたいと思います。1つがMessaging Platformで、私の所属している室になりますが、ここがいわゆるLINEのコアであるメッセージング機能開発とそのシステムエンジニアリングをしている部署です。

LINEのアカウントを登録してから、友だちの追加あるいはグループの作成といったソーシャルグラフにかかわる部分。そしてメインのメッセージングの基本機能ですね。送信や受信、既読といった機能。そういったもののバックエンドを開発しています。

Messaging Platformには大量のリクエストが入ってきていて、1日に約2億のユーザーや数十万のサードパーティーから、50億のメッセージ関連の機能を、1,000から2,000億ぐらいのAPIで処理をしています。内部的にはさまざまなコンポーネントが組み合わさって1つの分散システムとして動作しており、大量のトラフィックを365日さばいています。

「メッセージを送る」というと操作自体はすごく単純な処理に聞こえるかもしれませんが、内部的にはすごく複雑なロジックや大量のリクエストを高い信頼性で処理するためのさまざまな工夫がされています。

LINEに障害が起こってしまうと、どうしてもLINEを使用する人々やLINEをビジネスに活用しているパートナーなど、いろいろな方に影響を与えてしまうので、そういった方々のために、24時間365日、1秒も障害がないところを目指して、先ほど話した信頼性といったところを、いろんな得意分野に長けたサーバー開発者たちが日々改善しています。

抱えているクライアントの種類もさまざまです。バージョンとデバイスの数によって数千種類のLINEアプリケーション×プラットフォームの種類×機能数×ユーザー。それに加えていろいろなサービスの組み合わせから成ります。お客さまのバリエーションが非常に多いので、幅広い互換性や将来の要求に対する柔軟性を十分にケアしながら、日々拡張しやすい構造を目指して進めています。

バックエンドではいろいろなオープンソースソフトウェアを使っていて、(スライドの)左側にいろいろなロゴが出ていますが、そういったものをベースとして作られています。これがMessaging Platform開発室です。

LINEのスタンプビジネスを支える「CSI(Communication & Service Integration)室」

次はCommunication & Service Integration室、通称CSIです。ここは何をやっているかというと、LINEを代表する特徴であるスタンプのプラットフォーム開発です。スタンプや絵文字、着せ替えテーマといったコンテンツの販売と促進のためのプラットフォーム開発をしているチームです。

CSIも実は、メッセージングともつながっている部分でして、メッセージングといろいろなバーチャルコンテンツをつなぐ1つのプラットフォームを日々開発しています。

先ほどのMessaging Platformに関しては、メッセージはいくら送っても無料なので、直接ビジネス的な影響はありませんが、こちらは有料コンテンツの販売を扱っているので、直接的なビジネスの影響を与える開発部署です。

ここのビジネスで収益の最大化を目指すために、内部的にマシンラーニングやリコメンドエンジンを活用して、コンテンツを最適化したり、ユーザーごと表示するコンテンツ出し分けたりなど、UXの最適化を進めています。

あと、Messaging Platformではとにかくメッセージの量が多いという話でしたが、CSIはどちらかというと、コンテンツの種類や規模に応じて、より柔軟性が求められます。このように、少しワークロードの異なるデータを扱うところが特徴です。

あと季節的なイベントというものがありまして、毎年1月に、お年玉キャンペーンというイベントをやっていますが、そういった計画的なイベントに対しては高いトラフィックが発生します。アドホックなイベントに対しても耐えられるようなシステム構築や運用などが大きな仕事として挙げられます。

LINE公式アカウントとBOTを担当する「BOT Backend Platform開発室」

最後にBOT BackendのPlatformです。こちらは先ほど話したLINE公式アカウント、OA(オフィシャルアカウント)と呼ばれていますが、そちらのAPIやバックエンドの開発をしています。こちらの部署は、OAのビジネスとメッセージングをつなぐプラットフォームを作っています。

OAやBOTを作っている各ビジネスパートナーのために、メッセージングのAPIを提供しています。またMessaging Platformとの大きな違いとしては、マルチキャストやブロードキャストといったユーザー同士のメッセージングよりもより高価でヘビーな処理をするシステムを開発しているのが大きな特徴です。

一般ユーザー同士のメッセージングは、1対1あるいは1対n、最大でも数百人ぐらい受信者にメッセージを配布することですが、OAはフォロワーがものすごく数が多く、数十万もしくは最大1.5億ぐらいのフォロワーに対して、メッセージをブロードキャストしたりマルチキャストしたりするシステムを構築する必要があります。そこが技術的におもしろいポイントだと思います。

あとは、いろいろなAPIの設計や権限管理。一般ユーザー同士のB2C領域ではなくBOTの開発者やビジネスパートナー、B2B向けのAPIを提供することになるので、また異なる要件を持った仕事のチャレンジと成長する機会があります。

LINEのサーバーエンジニアとして求められるもの

LINEのサーバーエンジニアとして、どういった方が求められるかですけど、左のほうに書かれているとおり、スペシャリストや強い責任感を持っている人、あとは自律的に仕事ができる人、なにか1人では解決できない大規模な課題にチームで挑むチャレンジャーみたいな人。最後に、何度かプラットフォームという言葉を出していますが、プラットフォームマインドを持っている方が特に求められます。

これらは主に中途の方に必要なマインドですが、特に新卒の方に求められるのは、自律心や責任感を自身の強みとして持っている方を希望しています。

今回はけっこうPlatformのきれいな部分だけを話していますが、実際には解決しなければいけない技術的な課題や泥臭い作業など本当に多くの種類の仕事がありまして、入っていただくと、いろいろなチャレンジが待っています。

ここにいくつかラベルを並べましたが、本当にサーバー開発者としてやることがたくさんありますので、入っていただくと、きっと技術的にもおもしろいですし、刺激的なことができますし、あとはさまざまな技術領域に長けた優秀なチームメンバーたちがいるので、そこから学ぶことも非常に多いかなと思います。

私からのセッションは以上になります。