SlideShare une entreprise Scribd logo
1  sur  16
Télécharger pour lire hors ligne
ヤフー株式会社 山本 寛子
2019/2/22 Legacy Meetup Kyoto
Yahoo!カレンダーにおける技術移行について
Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
Profile
Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
Hiroko Yamamoto
ヤフー株式会社 大阪開発本部
Yahoo!カレンダー バックエンドエンジニア
経歴
2009年に神戸のシステム開発会社に新卒で入社。
研究開発系の案件の開発、PMを経て、2018年9月にヤフーへ。
現在 Yahoo!カレンダーのバックエンドチームに所属し
技術移行のプロジェクトを担当中。
登壇に至った経緯
Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
• 2018年9月に入社。
カレンダーサービスバックエンドチームに配属。
• 入社直後から技術移行プロジェクトにアサインされる。
• 2018年12月に最初のリリース。
• 今回、事例紹介をさせていただくことに。
アジェンダ
Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
• 技術選定や言語選定の理由
気になる方はこちら!↓↓↓
“なぜYahoo!カレンダーはPHPからKotlinへ技術移行を進めるのか”
https://www.slideshare.net/techblogyahoo/yahoophpkotlin-devsumi-2018-kansai-a4-117060700
※Devsumi関西2018で弊社社員が発表した資料になります。
お話する内容
お話しないこと
• Yahoo!カレンダーにおける技術移行の概要
• 実際にやってみてよかった点、苦労した点
Yahoo!カレンダーについて
Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
技術移行プロジェクトの全体方針
Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
• 長期プロジェクト
• 随時計画の見直しは必要
• いわゆるクラウドネイティブコンピューティング化
• コンテナ化、オートスケール、マイクロサービス指向
• インフラ
• IaaS から PaaS, CaaS へ
• 言語
• PHP, Java → Kotlin へ (まずは PHP システムから着手)
• その他ライブラリ
• 認証/認可:Athenz
• CI:screwdriver.cd
体制とコミュニケーション
Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
• バックエンドチーム全体では20名程
• 現在の技術移行プロジェクトの体制は5〜8名
• 開発
• 4名〜5名(東京+大阪)
• SRE
• 2名(東京)
• いまは技術移行プロジェクトに関わっていないメンバーにも情報は展開
• コミュニケーション
• 朝会
• TV会議
• 週次定例
• 社内コミュニケーションツール
Yahoo! Japanの全社プラットフォームについて
Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
• 各種インフラは全社のプラットフォームとして提供されている
• サービス開発者はインフラ自体の構築や運用の必要がなく
サービスの開発に集中できる。
• セキュリティレベルが担保される
• インフラやミドルウェアごとにチームがある
• OSS デベロッパーがいることも
• 本家の github で issue をあげていたのが社員だったりする
• データセンターは自前
• 社内 Wiki が充実
• 他のサービスのドキュメントが役に立つことも多々
実際の移行事例の要件
Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
• PHPのプロキシサーバを Kotlin に移植
• 疎通するシステムは既存環境
• Blue/Greenデプロイ
• 移行はカナリアリリース
• 自動テスト
• 利用技術
• Kotlin + Spring Framework
• Cloud Foundry
• screwdriver.cd
• Hystrix
• Athenz
実際にやってみてよかったこと
Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
• Kotlin 楽しい
• ビジネスロジックが少ないのでまだ Kotlin らしいコードは少なめ
• ただ、Null Safe の特長は品質向上に役立っている
• Java の経験があれば特にハードルは高くない
• Spring x Kotlin になると少し情報が減る
• 便利で新しい技術がどんどん登場する
• 新しい技術に触れられる
• キャッチアップ力も鍛えられる
• ライブラリの進化が早くてノウハウの陳腐化も早い
• 変化に対応しつづけないといけない
実際にやってみて苦労したこと
Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
• 既存システムや業務知識を学びながらの新技術への移行
• 既存システムのバグや想定外の挙動に遭遇
• なかなか再現しないバグを踏んだり、
ステータスが200なのにレスポンスが空になる事件が発生しリリースが度々延期に……
→ 小さなシステムから着手していたので影響は小さく済んだ
• トレーシング
• 全社プラットフォームチームの計画に依存
• 人的リソース問題
• 投資効果を説明できる必要がある
まとめ
Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
• Yahoo! Japan の強みを生かしつつ
クラウドネイティブな時代の波に乗って技術移行を推進できている
• スモールスタートで進めるのが吉
• 技術移行=変化に対応し続けること
• 投資効果の評価が課題
Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
おまけ
Athenz とは
Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
• ロールベースのアクセス制御システム
• Yahoo! Inc.(現 Oath Inc.) が OSS化
• PaaS環境などのIPベースで認証ができない環境でアクセス制御を行う
→ マイクロサービスアーキテクチャでは肝となる仕組み
Athenz の特長
Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
• サービスベース
• IPに依存しない
• 身元特定にはデジタル署名されたトークンを用いる → PaaS環境でも利用可能
• Dynamic Provisioning
• Host ごとのRole登録が不要
• 同じサービスとして扱える場合はアクセス権を共有できる
• Single Source of Truth
• 他のPFに依存しない
• Athenz だけで動く
• Self-Service
• UIの登録のみで反映
• Athenz のアクセス制御設定はポリシーと呼ばれリアルタイムに配信され有効化される
• ポリシーでは、「誰に」「何を」「どうすることを」許可するかを定義
Yahoo!カレンダーにおける技術移行について - Legacy Meetup Kyoto -

Contenu connexe

Tendances

夏サミ 2013 A2 セッション資料 #natsumiA2
夏サミ 2013 A2 セッション資料 #natsumiA2 夏サミ 2013 A2 セッション資料 #natsumiA2
夏サミ 2013 A2 セッション資料 #natsumiA2
智治 長沢
 

Tendances (20)

OpenSTFを ECSに乗せてみた話
OpenSTFを ECSに乗せてみた話OpenSTFを ECSに乗せてみた話
OpenSTFを ECSに乗せてみた話
 
QAエンジニアを通じて 弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
QAエンジニアを通じて弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜QAエンジニアを通じて弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
QAエンジニアを通じて 弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
 
長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化
 
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
 
Yahoo!ブラウザーにおける市場環境の分析と戦略化
Yahoo!ブラウザーにおける市場環境の分析と戦略化Yahoo!ブラウザーにおける市場環境の分析と戦略化
Yahoo!ブラウザーにおける市場環境の分析と戦略化
 
Sumo Logic活用事例とその運用
Sumo Logic活用事例とその運用Sumo Logic活用事例とその運用
Sumo Logic活用事例とその運用
 
Jakarta EE + MicroProfile, and our activities
Jakarta EE + MicroProfile, and our activitiesJakarta EE + MicroProfile, and our activities
Jakarta EE + MicroProfile, and our activities
 
Firebase Realtime Database を C# から利用する
Firebase Realtime Database を C# から利用するFirebase Realtime Database を C# から利用する
Firebase Realtime Database を C# から利用する
 
Gitで安定マスターブランチを手に入れる
Gitで安定マスターブランチを手に入れるGitで安定マスターブランチを手に入れる
Gitで安定マスターブランチを手に入れる
 
夏サミ 2013 A2 セッション資料 #natsumiA2
夏サミ 2013 A2 セッション資料 #natsumiA2 夏サミ 2013 A2 セッション資料 #natsumiA2
夏サミ 2013 A2 セッション資料 #natsumiA2
 
[Agile Japan 2019]DXを実現するためにユーザ企業とSI企業が 今すぐとるべき3つのステップ
[Agile Japan 2019]DXを実現するためにユーザ企業とSI企業が 今すぐとるべき3つのステップ[Agile Japan 2019]DXを実現するためにユーザ企業とSI企業が 今すぐとるべき3つのステップ
[Agile Japan 2019]DXを実現するためにユーザ企業とSI企業が 今すぐとるべき3つのステップ
 
20191228_jaws-ug_okayama-2019_winter
20191228_jaws-ug_okayama-2019_winter20191228_jaws-ug_okayama-2019_winter
20191228_jaws-ug_okayama-2019_winter
 
[デブサミ秋2015] 新卒入社エンジニアが 2年間fluentdを運用して学んだ事いろいろ
[デブサミ秋2015] 新卒入社エンジニアが2年間fluentdを運用して学んだ事いろいろ[デブサミ秋2015] 新卒入社エンジニアが2年間fluentdを運用して学んだ事いろいろ
[デブサミ秋2015] 新卒入社エンジニアが 2年間fluentdを運用して学んだ事いろいろ
 
WWDC2017 レポート & Quick Look Preview Extension について
WWDC2017 レポート & Quick Look Preview Extension についてWWDC2017 レポート & Quick Look Preview Extension について
WWDC2017 レポート & Quick Look Preview Extension について
 
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
 
Azure のApp Center でアプリの 使用状況を分析する
Azure のApp Center でアプリの 使用状況を分析するAzure のApp Center でアプリの 使用状況を分析する
Azure のApp Center でアプリの 使用状況を分析する
 
デブサミ2013 【15-A-1】「爆速」を支えるテクノロジー
デブサミ2013 【15-A-1】「爆速」を支えるテクノロジーデブサミ2013 【15-A-1】「爆速」を支えるテクノロジー
デブサミ2013 【15-A-1】「爆速」を支えるテクノロジー
 
Open STF Plugin 作ってみた
Open STF Plugin 作ってみたOpen STF Plugin 作ってみた
Open STF Plugin 作ってみた
 
Cedec2015_「消滅都市」運用の一年
Cedec2015_「消滅都市」運用の一年Cedec2015_「消滅都市」運用の一年
Cedec2015_「消滅都市」運用の一年
 
[デブサミ2015] スクラムならうまくいく? 〜グリーのネイティブゲーム作りの歴史をひもとく、 そして未来へ〜
[デブサミ2015] スクラムならうまくいく?〜グリーのネイティブゲーム作りの歴史をひもとく、そして未来へ〜[デブサミ2015] スクラムならうまくいく?〜グリーのネイティブゲーム作りの歴史をひもとく、そして未来へ〜
[デブサミ2015] スクラムならうまくいく? 〜グリーのネイティブゲーム作りの歴史をひもとく、 そして未来へ〜
 

Similaire à Yahoo!カレンダーにおける技術移行について - Legacy Meetup Kyoto -

Similaire à Yahoo!カレンダーにおける技術移行について - Legacy Meetup Kyoto - (20)

Unification of the middle scale services by Nuxt.js
Unification of the middle scale services by Nuxt.jsUnification of the middle scale services by Nuxt.js
Unification of the middle scale services by Nuxt.js
 
Participation report of data stax accelerate 2019
Participation report of data stax accelerate 2019Participation report of data stax accelerate 2019
Participation report of data stax accelerate 2019
 
Go + Pulsar WebSocket APIの利用事例 #pulsarjp
Go + Pulsar WebSocket APIの利用事例 #pulsarjpGo + Pulsar WebSocket APIの利用事例 #pulsarjp
Go + Pulsar WebSocket APIの利用事例 #pulsarjp
 
YJTC18 C-1 Kotlin導入の状況と展望
YJTC18 C-1 Kotlin導入の状況と展望YJTC18 C-1 Kotlin導入の状況と展望
YJTC18 C-1 Kotlin導入の状況と展望
 
【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所
【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所
【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所
 
現場のインフラエンジニアから見たヤフー #ヤフー名古屋
現場のインフラエンジニアから見たヤフー #ヤフー名古屋現場のインフラエンジニアから見たヤフー #ヤフー名古屋
現場のインフラエンジニアから見たヤフー #ヤフー名古屋
 
AndApp開発における全て #denatechcon
AndApp開発における全て #denatechconAndApp開発における全て #denatechcon
AndApp開発における全て #denatechcon
 
リモートチームとふりかえり改善フレームワーク
リモートチームとふりかえり改善フレームワークリモートチームとふりかえり改善フレームワーク
リモートチームとふりかえり改善フレームワーク
 
YJTC18 A-1 大規模サーバの戦略
YJTC18 A-1 大規模サーバの戦略YJTC18 A-1 大規模サーバの戦略
YJTC18 A-1 大規模サーバの戦略
 
大規模アジャイル Ibm
大規模アジャイル Ibm大規模アジャイル Ibm
大規模アジャイル Ibm
 
Spring I/O 2015 報告
Spring I/O 2015 報告Spring I/O 2015 報告
Spring I/O 2015 報告
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
 
PyCon JP 2015 keynote
PyCon JP 2015 keynotePyCon JP 2015 keynote
PyCon JP 2015 keynote
 
KubeFlowでどこまでいける?
KubeFlowでどこまでいける?KubeFlowでどこまでいける?
KubeFlowでどこまでいける?
 
リクルートにおけるPaaS活用事例
リクルートにおけるPaaS活用事例リクルートにおけるPaaS活用事例
リクルートにおけるPaaS活用事例
 
DX Suite & UiPath さっくり読み取りさっくり連携
DX Suite & UiPath さっくり読み取りさっくり連携DX Suite & UiPath さっくり読み取りさっくり連携
DX Suite & UiPath さっくり読み取りさっくり連携
 
Oracle も Serverless サービスやっています
Oracle も Serverless サービスやっていますOracle も Serverless サービスやっています
Oracle も Serverless サービスやっています
 
[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight
[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight
[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight
 
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
 
Wg for ai_dev_ops_20180713
Wg for ai_dev_ops_20180713Wg for ai_dev_ops_20180713
Wg for ai_dev_ops_20180713
 

Plus de Yahoo!デベロッパーネットワーク

Plus de Yahoo!デベロッパーネットワーク (20)

ゼロから始める転移学習
ゼロから始める転移学習ゼロから始める転移学習
ゼロから始める転移学習
 
継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator
 
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
 
オンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッションオンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッション
 
LakeTahoe
LakeTahoeLakeTahoe
LakeTahoe
 
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
 
Persistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability FeaturePersistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability Feature
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
 
eコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtceコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtc
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
 
ビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtcビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtc
 
サイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtcサイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtc
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
 
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtcYahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
 
「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
 

Yahoo!カレンダーにおける技術移行について - Legacy Meetup Kyoto -

  • 1. ヤフー株式会社 山本 寛子 2019/2/22 Legacy Meetup Kyoto Yahoo!カレンダーにおける技術移行について Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
  • 2. Profile Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Hiroko Yamamoto ヤフー株式会社 大阪開発本部 Yahoo!カレンダー バックエンドエンジニア 経歴 2009年に神戸のシステム開発会社に新卒で入社。 研究開発系の案件の開発、PMを経て、2018年9月にヤフーへ。 現在 Yahoo!カレンダーのバックエンドチームに所属し 技術移行のプロジェクトを担当中。
  • 3. 登壇に至った経緯 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. • 2018年9月に入社。 カレンダーサービスバックエンドチームに配属。 • 入社直後から技術移行プロジェクトにアサインされる。 • 2018年12月に最初のリリース。 • 今回、事例紹介をさせていただくことに。
  • 4. アジェンダ Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. • 技術選定や言語選定の理由 気になる方はこちら!↓↓↓ “なぜYahoo!カレンダーはPHPからKotlinへ技術移行を進めるのか” https://www.slideshare.net/techblogyahoo/yahoophpkotlin-devsumi-2018-kansai-a4-117060700 ※Devsumi関西2018で弊社社員が発表した資料になります。 お話する内容 お話しないこと • Yahoo!カレンダーにおける技術移行の概要 • 実際にやってみてよかった点、苦労した点
  • 5. Yahoo!カレンダーについて Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
  • 6. 技術移行プロジェクトの全体方針 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. • 長期プロジェクト • 随時計画の見直しは必要 • いわゆるクラウドネイティブコンピューティング化 • コンテナ化、オートスケール、マイクロサービス指向 • インフラ • IaaS から PaaS, CaaS へ • 言語 • PHP, Java → Kotlin へ (まずは PHP システムから着手) • その他ライブラリ • 認証/認可:Athenz • CI:screwdriver.cd
  • 7. 体制とコミュニケーション Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. • バックエンドチーム全体では20名程 • 現在の技術移行プロジェクトの体制は5〜8名 • 開発 • 4名〜5名(東京+大阪) • SRE • 2名(東京) • いまは技術移行プロジェクトに関わっていないメンバーにも情報は展開 • コミュニケーション • 朝会 • TV会議 • 週次定例 • 社内コミュニケーションツール
  • 8. Yahoo! Japanの全社プラットフォームについて Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. • 各種インフラは全社のプラットフォームとして提供されている • サービス開発者はインフラ自体の構築や運用の必要がなく サービスの開発に集中できる。 • セキュリティレベルが担保される • インフラやミドルウェアごとにチームがある • OSS デベロッパーがいることも • 本家の github で issue をあげていたのが社員だったりする • データセンターは自前 • 社内 Wiki が充実 • 他のサービスのドキュメントが役に立つことも多々
  • 9. 実際の移行事例の要件 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. • PHPのプロキシサーバを Kotlin に移植 • 疎通するシステムは既存環境 • Blue/Greenデプロイ • 移行はカナリアリリース • 自動テスト • 利用技術 • Kotlin + Spring Framework • Cloud Foundry • screwdriver.cd • Hystrix • Athenz
  • 10. 実際にやってみてよかったこと Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. • Kotlin 楽しい • ビジネスロジックが少ないのでまだ Kotlin らしいコードは少なめ • ただ、Null Safe の特長は品質向上に役立っている • Java の経験があれば特にハードルは高くない • Spring x Kotlin になると少し情報が減る • 便利で新しい技術がどんどん登場する • 新しい技術に触れられる • キャッチアップ力も鍛えられる • ライブラリの進化が早くてノウハウの陳腐化も早い • 変化に対応しつづけないといけない
  • 11. 実際にやってみて苦労したこと Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. • 既存システムや業務知識を学びながらの新技術への移行 • 既存システムのバグや想定外の挙動に遭遇 • なかなか再現しないバグを踏んだり、 ステータスが200なのにレスポンスが空になる事件が発生しリリースが度々延期に…… → 小さなシステムから着手していたので影響は小さく済んだ • トレーシング • 全社プラットフォームチームの計画に依存 • 人的リソース問題 • 投資効果を説明できる必要がある
  • 12. まとめ Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. • Yahoo! Japan の強みを生かしつつ クラウドネイティブな時代の波に乗って技術移行を推進できている • スモールスタートで進めるのが吉 • 技術移行=変化に対応し続けること • 投資効果の評価が課題
  • 13. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. おまけ
  • 14. Athenz とは Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. • ロールベースのアクセス制御システム • Yahoo! Inc.(現 Oath Inc.) が OSS化 • PaaS環境などのIPベースで認証ができない環境でアクセス制御を行う → マイクロサービスアーキテクチャでは肝となる仕組み
  • 15. Athenz の特長 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. • サービスベース • IPに依存しない • 身元特定にはデジタル署名されたトークンを用いる → PaaS環境でも利用可能 • Dynamic Provisioning • Host ごとのRole登録が不要 • 同じサービスとして扱える場合はアクセス権を共有できる • Single Source of Truth • 他のPFに依存しない • Athenz だけで動く • Self-Service • UIの登録のみで反映 • Athenz のアクセス制御設定はポリシーと呼ばれリアルタイムに配信され有効化される • ポリシーでは、「誰に」「何を」「どうすることを」許可するかを定義