118 Views
February 27, 19
スライド概要
Sansan さま主催の Legacy Meetup Kyoto での登壇資料です。https://sansan.connpass.com/event/119556/
2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp
Yahoo!カレンダーにおける技術移行について ヤフー株式会社 山本 寛子 2019/2/22 Legacy Meetup Kyoto Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
Profile 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!カレンダーにおける技術移行の概要 • 実際にやってみてよかった点、苦労した点 お話しないこと • 技術選定や言語選定の理由 気になる方はこちら!↓↓↓ “なぜYahoo!カレンダーはPHPからKotlinへ技術移行を進めるのか” https://www.slideshare.net/techblogyahoo/yahoophpkotlin-devsumi-2018-kansai-a4-117060700 ※Devsumi関西2018で弊社社員が発表した資料になります。 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
Yahoo!カレンダーについて 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会議 週次定例 社内コミュニケーションツール Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
Yahoo! Japanの全社プラットフォームについて • 各種インフラは全社のプラットフォームとして提供されている • サービス開発者はインフラ自体の構築や運用の必要がなく サービスの開発に集中できる。 • セキュリティレベルが担保される • インフラやミドルウェアごとにチームがある • 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.
おまけ Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
Athenz とは • ロールベースのアクセス制御システム • Yahoo! Inc.(現 Oath Inc.) が OSS化 • PaaS環境などのIPベースで認証ができない環境でアクセス制御を行う → マイクロサービスアーキテクチャでは肝となる仕組み Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
Athenz の特長 • サービスベース • IPに依存しない • 身元特定にはデジタル署名されたトークンを用いる → PaaS環境でも利用可能 • Dynamic Provisioning • Host ごとのRole登録が不要 • 同じサービスとして扱える場合はアクセス権を共有できる • Single Source of Truth • 他のPFに依存しない • Athenz だけで動く • Self-Service • UIの登録のみで反映 • Athenz のアクセス制御設定はポリシーと呼ばれリアルタイムに配信され有効化される • ポリシーでは、「誰に」「何を」「どうすることを」許可するかを定義 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.