「Yahoo! JAPAN Tech Conference 2018」に参加してきました

基調講演

  • 藤門 千明さん(CTO)

yahooの取り組み

  • 未来を創る
    • 変化が早いから予想想像するものではない
  • 課題解決
  • 社会のアップデート

yahooトップページ

  • 時代にあわせていろいろ変えてきた
  • 200万/秒
  • 月間757億ビュー
  • デイリーユニークブラウザ数9300万

yahooのものづくり

HTTPS化

  • 最高のインターネット体験をより快適に
    • サービス100以上
    • サービス関連企業との調整
    • ドメイン数1000以上
  • 先に社外告知
    • 退路を断つ
    • 可視化するのが大切
  • 1年で全サービスHTTPS化した
    • HTTP2 -> 56%
    • HTTP1.1 -> 44%

データドリブンなものづくり

  • 100以上のサービス
  • グループ会社100以上
  • User -> Data -> AI -> User
  • トップページレコメンド
    • 検索クエリ
    • クリック履歴
    • DeepLearning
  • 乗換案内混雑状況予測
    • 一般的な日の路線検索数の傾向
    • 通常と異なる路線検索数の増加
      • 未来の混雑予想をする

ものづくりを支える技術

  • データセンターからアプリ開発まで全部やってる
    • 全てはユーザのため
    • 自分たちで責任を取って提供できるように
  • OSS活用と貢献
    • OSSへの貢献そのものが事業の継続性につながる
    • OSSデベロッパー認定制度
      • 就業中にOSS活動ができる

まとめ

  • ユーザに新しい体験を提供するテクノロジー企業
  • 未来を創る

Kotlin導入の状況と展望

Kotlinとは

  • 2011年JetBrainsが発表したJVM言語

コンセプト

  • 実用主義
    • Javaの書き方でも使える
    • 他の言語のいいところを取り入れてる
    • IDEプラグインの充実
  • 簡潔
    • コードの意図が伝わりやすい
  • 安全
    • Javaより高い安全性、低い実装コスト
  • 相互運用性
    • Javaとのほぼ完全な相互運用性

なぜKotlin

  • desugar問題
    • 特定のライブラリつかってるとdesugar無効化
  • Swiftとの親和性
    • Swiftと結構似ている
  • 開発をもっと楽しく
    • イベントハンドリング
    • 非同期処理
    • 通信処理

危惧したリスク

  • 学習コスト
    • Kotlinスタートブック
    • Kotlin in action
    • Kotlin koas??
  • ビルド時間増加
  • CIパイプラインそのまま使えるか
  • 人の確保

導入状況

Webの資産を活かしたアプリシフト

  • 林 和弘

yahooのiosアプリ

  • 30以上のiosアプリ
  • Webのサービスをアプリへ移行

yahooのサービスの特徴

  • Webだけでも使える
  • 共通のID体系
  • Webとアプリ行ったり来たり
  • iosの特徴
    • データの連携の制限
  • アプリアプリ連携
  • プリブラウザ連携
  • アプリWebView連携

対応策

アプリアプリ連携

  • yahooID連携
  • ワンタップログイン
    • keychainへ保存しておく
    • アプリ間で共有

プリブラウザ連携

  • SFSafariViewController
    • ios11からcookieがアプリごと固有になるから使えなくなる
  • SFAuthenticationSession
    • IDパスワードを共有できる

Webからアプリを起動

  • deeplinkという
  • アプリあってDeepLink許可されてたらアプリそうじゃなかったらWebページへ

アプリWebView連携

  • UIWebView
    • バグ多い
    • JSの実行も遅い
  • WKWebView
    • セキュリティ強化
    • Cookieアクセスできない
  • WKWebViewに置換えた
    • クラッシュ率7割減

Yahoo! JAPANを支える開発基盤 PaaS

  • 甲斐 遼馬
    • システム統括本部
    • プラットフォーム開発本部
  • Joshua McKenty
    • VP, Global Field CTO, Cloud Foundry
    • Pivotal Software, Inc.

yahooで使っているプラットフォーム

  • CFを全社的に使ってる
  • 定常運用作業に時間をとられたくないから

これまで/これからのPaaS

  • 2016先行サービス
  • 2017本格導入
  • 2018拡大

何をクラウドでやろうとしているのか

  • 継続的なビジネス価値の提供
  • 自動化

アプリケーションの高速デプロイを可能にする技術 - Yahoo! JAPANKubernetes as a Service

  • 藤江 貴司
    • システム統括本部
    • プラットフォーム開発本部
  • 河 宜成
    • ゼットラボ株式会社
    • yahooの100%子会社
    • 技術だけを担当する会社

アプリのコンテナ化

  • ライブラリ依存関係がコンテナ単位で制御できる
  • デプロイ単位も最小単位
  • ローカル開発しやすい

コンテナ導入

Kubernetes

  • アプリコンテナのスケールデプロイ管理を自動化する
  • 世界的に注目浴びてる
  • 2017年初から導入
  • 今はプロダクションでも一部使ってる
    • ズバトク

コンテナ化Kubernaties導入による変化

導入前

  • VMへのデプロイは手作業だった
    • パッケージとか増えると時間かかる
  • サービス拡大しVMが増加管理大変

導入後

Kubernetes as a Service

  • Kubernetesが解決しないこと
  • これらを手動で管理は現実的でない
    • 数万台サーバがある

Kubernetes as a Serviceでできること

  • クラスタ全体のリソースを操作
  • Nodeのオートヒーリング
    • VM復旧の自動化
  • ローリングアップデート
  • 運用工数の削減に大きく貢献

まとめ

  • 開発者
    • VM、IaaSを意識しなくて良くなる
    • Kubernetesの管理のみ
  • 運用者
    • リソース/ネットワーク最適化により多く時間を割ける

ヤフーのNode.js

  • 伊藤 康太
    • システム統括本部
    • プラットフォーム開発本部

Node.jsとは?

  • chromeで動くv8のJS実行環境

特徴

  • Non Blocking IO -並行して同時実行できる
  • イベントループ
    • 処理は全てイベントとして動く
    • 重い処理とかがあってイベントループがとまるとアプリ全体がとまる
  • 大量リクエストを効率よく処理するのが得意
  • 重い処理があると苦手

yahooはがどうしてNodeを使うか

  • 767億PV/月(サービスは100以上)
  • サーバコストを下げる
  • 画像処理機械学習とかでは使ってない
    • CPUを多く使う

利用例

  • フロントエンドのツール
  • APIサーバでの利用
  • JavaとNodeを標準に

ヤフオク/ヤフーニュース

  • PHP -> Node
  • 性能3倍

スポーツナビ

  • 一球速報
    • 投げた球を10秒以内に
    • Nodeを使うことで90秒から10秒に

社内SNS(MYM)

  • WebSocketベース
    • 常時1万接続
  • 約2億メッセージ(7年で)
  • bot1万以上
  • APIサーバ3台でさばく

どうやって使ってきたか

  • Nodeをカスタマイズして使ってた
    • 社内のセキュリティ基準
    • パフォーマンスの向上
  • PCFとかkubeとかと合わせて使えなかったからカスタマイズやめた