すこし遅くなりましたが、先日( 2015-04-28 )に開催された linedevday 2015 の参加抽選に当選して参加してきたので、所感・雑感とメモを公開しておこうと思います。
まず、こちらのエントリでは午前の発表のメモをまとめて、続いて、午後の発表のメモを別で公開しそちらに各種資料へのリンクも記載する予定です。
では最初に全体をとおしての所感・雑感から。
- 一言で言ってしまうと豪勢な Hiring Event でした。
- そういう意味では LINE が Engineer が喜びそうな文化をもった会社だということを存分にアピールしている内容になっていて、上手いなという感想です。
- 善意にだけ解釈すると LINE は以下のような会社だよ、と言っていたように思います。
- Google 的 ( How Google Works的 )
- Engineer の主体性を重んじ、ある程度の自由度を認めている
- アメーバ組織
- サービスは Micro Services で提供
- サービスの統廃合が用意である結果、アメーバ組織も統廃合が容易。
- 各展開国独自のローカル事情をキチンと考慮、対応している(たとえば LINE 遠征隊)
- Google 的 ( How Google Works的 )
- 一方で、言葉を濁してる部分も部分部分であった(たとえば Micro Services の説明の際など)のは事実なので、当たり前ですが、今回の話を聞いて LINE に応募しようと思った人は言ってることをそのまま鵜呑みにするのは危険、ということは念頭においておこう、といったところでしょうか。それを含めて LINE という会社の成長に貢献したいと思うような人が応募するべき、かと。
- ちなみにオープニングの出澤 剛 CEOの話はむしろ Developer 向けというよりもプレスの要素が強く(実際、プレス席が用意されてましたしね)、今秋に今度こそ IPO をすると噂されているだけに投資家向けにグローバルで各国トップシェアを目指していくというコミットメントをしていたという印象を受けました。 Hiring だけに留めない、なかなかに LINE は抜け目のない会社だなぁという印象も受けました。
- 最後にあまりどうでもよくはなかったので書いておくと、 linedevday では写真撮影の許可がでていたのだけれども、いくら許可がでてるにしても、発表中のシャッター音がうるさすぎたように思いました。これは参加者の側の問題なのだけれども、あとから資料を公開すると運営側が言っているのだから、必要最小限に留める等の配慮が参加者側にもうすこしあってもよいのではないかと思いましたね。
- とは言え、、、、現時点(2015-05-02)で LINE DEVELOPER DAY_2015 Tokyo には資料があがる気配がないみたいですが、、、、
と、以上がわたしの所感でした。以降わたしがとってきたメモおよび資料へのリンクを公開していきます。
ちなみに linedevday 2015 の午前のアジェンダは以下のとおりでした。
- 10:30 - 10:40 A-1 オープニング 代表取締役社長 CEO 出澤 剛
- 10:40 - 11:00 A-2 LINE Global Culture 上級執行役員CTO 朴 イビン
- 11:00 - 11:40 A-3 LINE Messenger for the World 上級執行役員 サービス開発担当 池邉智洋
- 11:50 - 12:30 A-4 LINE Platform Development Chronicle Tom.T
ではここからが本当にメモです。
10:30 - 10:40 A-1 オープニング 代表取締役社長 CEO 出澤 剛氏
- Official な場で話すのはこの dev day がはじめてとのこと。
- Tech での挑戦は世界最高峰であると自負
- システム、サービスの規模
- LINE
- launched since 2011.
- 簡単なメッセージングから
- 最初の Break through は 2011-10: 無料通話を開始してから
- 201412
- 181M active users
- JP 58M
- トップシェア: JP, Taiwan, Indonesia
- トップシェアをとっていくことの重要性
- 各国でのローカライズを多面的に実施している
- 17B messages
- 181M active users
- サービスとしての LINE だけでなくキャラクターとしての LINE も好評を博している
- オフラインの接点として効果的にワークしている
- Platform 化
- 単純なメッセージングのサービスとしてではなく
- 世の中の様々なトランザクションを LINE を介して実現する (EC)
- 過去 4 months で
- LINE@
- LINE Pay
- LINE TAXI
- LINE WOW
- LINE バイト
- LINE Map
- 過去 4 months で
- Entertainment 領域
- 漫画
- 音楽配信
- 76 apps
- 0.9B downloads
- これからやっていくこと
- Global
- トップシェアをとれる国をより増やしていく
- LIFE
- Platform
- Global
- 登るべき山はまだまだ道半ば
- 競合はひしめき合っている
- これらの原動力を支えているのは LINE の developer たち。
- その developer たちの活躍を今日は紹介させていただこうと思う。
10:40 - 11:00 A-2 LINE Global Culture 上級執行役員CTO 朴 イビン氏
- LINE の文化に関する共有 (Engineering Culture at LINE)
- LINE は JP を HQ にして 8 ヶ国に Branch がある
- Autonomous Team (主体性)
- Engineer Driven.
- Proto typing
- 開発のリソースは必ずしも同じグループのメンバーとは限らない
- LINE for iPad の例
- Branch をまたいだ協力も
- Proto typing
- Engineer Driven.
- Cold-case
- どんなプロジェクトでも残ってしまうバックログ
- LINE では年に一度その棚卸しをする
- どんなプロジェクトでも残ってしまうバックログ
- Remote Collaboration
- ドキュメンタイズ (?)
- Challange and Contribution
- Scalability and Performance
- リリーススピードと、システムの安定性のあいみつをとる
- OSS の利用
- spring
- HBase
- nginx, etc...
- Scalability and Performance
- Trust and Respect
- LINE でもっとも大事にしている単語
- Trust and Respect loop
->
- Responsibility-based Planning
- Self-directing work
- Peer Code Review ->
- Positive Peer Pressure (横の並びでの切磋琢磨、同僚の評価を第一にする)
- Co-worker Review
- 各人が Global Player を目指している
- シリコンバレーに向かっている (?) 世界の潮流としてということらしい
- with LINE From JP to Global
- アジアがリードする IT は実現可能だと信じている
11:00 - 11:40 A-3 LINE Messenger for the World 上級執行役員 サービス開発担当 池邉智洋氏
- エンジニアが何を考え、何を行っているのか?
- LINE がどれだけ使われているか? (冒頭と同じスライド)
- Taiwan でトップシェア
- コンビニ等でも LINE のキャラクター
- Taiwan でトップシェア
- ただしプロダクトとしての LINE は Global でひとつ
- とはいえ、個々のローカルでの問題解決はもちろん必要
- どうやって解決しているのか?
- サービスの規模が大きくなるにつれ、品質の問題がでてきた
- 基本として大事なことは、エンジニアが現地にいって現地でどのようにアプリが使われているかを知ることが大事
- LINE 遠征隊
- 東南アジア
- 北米、南米
- 欧
- なにをしたか
- 各国の人が実際に使用しているネットワーク環境を手に入れる
- Prepaid SIM
- 国によって期間はさまざまだが、大体 4 日間ほどテストを行う
- メッセージング、通話、画像の添付 が問題なく動作するか
- 場所:レストラン、電車、バス、観光地、エレベータ、飛行機、高いところ
- 移動中の飛行機内の Wi-Fi 環境でもテスト
- 活動のプロセス/サイクル
- Find Problem
もちろん滞在中に問題を発見することもある - Discuss How to Fix
- Implementation
- Review
- Deploy in Production
- Find Problem
- 各国の人が実際に使用しているネットワーク環境を手に入れる
- 通信環境
- 日本は恵まれているが、そうでない国では画像の質を落としたりなどの調整を各国ごとに行っている
- WARMUP 3G NW (3 つの状態を遷移しながら待っている)
ユーザ体験を向上させるためにやっていること- IDLE
- CELL_FACH
- CELL_DCH
- 国際情勢 / 地域性の理解
各地域に地道に訪れることの重要性- Pakistan, Saudi Arabia の関係
- Spain と 南米の関係
- Spain
- Android ではバッテリの消耗という問題
- 長い待ち受けを行うために (メッセージングアプリという特性)
- 通信の頻度の調整、送信データの削減 etc...
- 地域性による問題
- 普及している Android 端末の特徴
当時、 Spain で流行していたモデルは電池容量が小さかった
現地に行かないと分からないこと (日本で頭を抱えていてもわからない) - 都市部における地下鉄の電波状況
- 普及している Android 端末の特徴
- 長い待ち受けを行うために (メッセージングアプリという特性)
- Android ではバッテリの消耗という問題
- Singapore
- ネットワーク的な位置の近さをつくるための施策
- POP を設置している (GLOBAL POP)
- Front に Erlang を使用 (基本的には他のアプリでは Java を使用)
- ネットワーク的な位置の近さをつくるための施策
- Spain
- ユーザ体験の向上のために
- データ分析 (App Reviews)
- Google Play のレビュー内容の解析
- System monitoring (Event Analytics)
- データ分析 (App Reviews)
- LINE 遠征隊
- まとめ
- 遠征隊 (エモドリブン)
- データ分析 (データドリブン)
11:50 - 12:30 A-4 LINE Platform Development Chronicle Tom.T 氏
- LINE メッセージング基盤の進化
- 登録ユーザの推移
- ロングポール
- Erlang
- SPDY
- 海外 DC
- 2011-06
- LINE launced
- SmartPhone で使いやすいチャットアプリ
- 2 ヶ月でリリース
- Tomcat, Apache, Redis, MySQL, L4 (https), Java(Spring)
- Polling を使ったメッセージ送受信
- 最大 n 秒の遅延が起きてしまうので、 Push 通知を使ったメッセージ送受信も
- 問題点
- Push の遅延 (致命的)
- ムダな Request-Response (Polling をずっとやっているので)→電池喰う
- Long Polling を使うことによってこの問題を解決
- Client と Server の間に GW
- nginx + 拡張 module への置き換え (2011-09)
- 2012-01 segmentation fault 地獄
- nginx + 拡張モジュール実装の問題点
- nginx の共有メモリの問題
- Erlang を採用して nginx を置き換えるという選択をとった
- 軽量 Process と message passing
- 並行性
- 分散
- 高級
- 無停止デプロイ (VMを停止しなくてもよい)
- LINE Event Delivery GW の導入
- LEGY と名づけた (Erlang)
- Event Delivery とは?
- 既読の通知とかも Polling のセッションでやりとり、それらを Event と呼んでいるため Event
- nginx + 拡張モジュール実装の問題点
- 2012-07 connection 地獄
- Connection にまつわる問題
- Client と LEGY 間
- Long Polling と その他の API コネクション
- 最低2本のコネクション
- それを HTTP(S) から SPDY へ (当時は Draft version だったが)
- 1 Connection
- Muitiplex
- ヘッダ圧縮
- SPDY は最近は HTTP2 になって有名に
- Client と LEGY 間
- SPDY を使った最適化
- 通信量の削減
- Connection にまつわる問題
- 2012-10 海外でのパフォーマンス追求
- メインの DC から遠い地域ほど遅延する
- SW での解決は難しいため、海外の拠点となる地域に Global POP を設置していった
- そこに LEGY を設置
- GW と LEGY 間は専用線でつなぐ
- ただし専用線とはいえ、距離が遠くなると遅くなる
- 非同期メッセージ送信
- LEGY とバックエンドの間の通信遅延を解決するための手段として
- UX の方は改善する
- バックエンドの方でエラーになったときの対処として、次の処理のときにバックエンドでのエラーを拾うようにしている
- メッセージ基盤の進化
- その後は規模は大きくなっていったが、基盤としては同じ構成をとりつづけている
- MySQL -> HBase にしたくらい
- 登録ユーザの推移
- LINE 流 Micro Services
- メッセージング以外の部分にも視野を広げる
- サービスが拡大する中で求められるたもの
- スピード
- 機能
- 品質
- LINE 流開発スタイル
- MONOLITHIC
- 新しい人が入ってきたら新しいことに着手できるように
- MICRO SERVICES
- MONOLITHIC
- Talk-server
- メッセージング
- ソーシャルグラフ
- それぞれのサービスは独立 (以下はみんな別々)
- チーム
- デプロイメント
- 開発プロセス
- どのようなサービスが
- Talk-server
- VoIP
- スタンプ販売 etc...
- バックエンドサービスも独立
- 認証管理
- ....
- LINE 流マイクロサービスを支える 3 要素
- 組織
- 組織や会社をまたぐアドホックなチーム形成
- 短期間でイテレーション、目的を達成したら縮小あるいは解散
- ファシリティ
- github
- Jenkins
- Maren repository
- PMC (内製) -deploy-> Server
- IMON (内製)
- プロトコル管理
- Apache Thrift
- IDL
- Github 上で Pull Request ベースの Discussion
- Protobuf
- REST
- Apache Thrift
- 組織
- 今後の課題
- マルチデータセンター
- 海外の DC 、フロントエンドサーバだけがある状態
- ただ実際にはすべてを各地域に持ったほうがいいと思っている (品質的に)
- Microservices の発展
- Talk-server (機能限定されているようには書いてあったが)が巨大になってきているので、それを分割しないとと思っている
- 将来設計
- マルチデータセンター
以上が午前の発表のメモでした。
スライド資料
2015-05-02 時点ではスライドの公開されたものをみつけられていないので、見つけたらここに貼る予定です。
続いて午後の分を公開します、ということでこのエントリはこのへんで。
あわせて読まれたい
- #prestostudy は Treasure Data もりもりだった
- 招待状がきたので #Hortonworks の「Hadoopと次世代・モダンデータアーキテクチャMDA」セミナーに参加してきました(後編)
- 招待状がきたので #Hortonworks の「Hadoopと次世代・モダンデータアーキテクチャMDA」セミナーに参加してきました(前編)
- #devsumiC #devsumi2015 で #Miiverse の話を聞いてきたメモ
- #devsumiA 「高速開発を支える DMM プラットフォームのつくり方」のメモ