Contenu connexe
Similaire à Yahoo!カレンダーにおける技術移行について - Legacy Meetup Kyoto - (20)
Plus de Yahoo!デベロッパーネットワーク (20)
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!カレンダーにおける技術移行の概要
• 実際にやってみてよかった点、苦労した点
- 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 の強みを生かしつつ
クラウドネイティブな時代の波に乗って技術移行を推進できている
• スモールスタートで進めるのが吉
• 技術移行=変化に対応し続けること
• 投資効果の評価が課題
- 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 のアクセス制御設定はポリシーと呼ばれリアルタイムに配信され有効化される
• ポリシーでは、「誰に」「何を」「どうすることを」許可するかを定義