Slide 1

Slide 1 text

2023年2月10日 岡村 謙杜 Chavdar Dimitrov 保育・教育施設の業務省力化を提供する Webサービスの改善と技術的負債解消への取り組み ー マイクロサービスへの挑戦 ー

Slide 2

Slide 2 text

2 ブルガリア出身、沖縄の大学を卒業後に東京の人事関連SaaS会社に 入社。主にバックエンドの開発を担当。 安全なリリースと快適な開 発環境の構築に関心があります。 Chavdar Dimitrov チャブダール ディミトロフ 2021.08 コドモンに開発エンジニアとして入社       マイクロサービス化に携わる 経歴 自己紹介

Slide 3

Slide 3 text

3 経歴 プロダクト開発チームにて、バックエンド、フロントエンド問わず 開発に携わる。Kotlinとチーム開発とオカメインコが好き。 自己紹介 岡村 謙杜 おかむら けんと 2021.05 コドモンに開発エンジニアとして入社 2021.10 プロダクト開発チームのマネージャーになる

Slide 4

Slide 4 text

4 Mission

Slide 5

Slide 5 text

5 すべての先生に 子どもと向き合う 時間と心のゆとりを こんなプロダクトを開発しています メインプロダクトは、保育・教育施設職員の業務を支援するWebアプリケーション。 保護者と施設のやり取りを支えるモバイルアプリケーションや、施設職員向けモバイル版 アプリケーション、外部サービスと連携するAPIなども開発しています。

Slide 6

Slide 6 text

6 はじめに

Slide 7

Slide 7 text

7 本題に入る前に

Slide 8

Slide 8 text

8 昨年のシステム稼働状況について

Slide 9

Slide 9 text

9 2022年4月から半年ほど システム稼働が不安定な状況が 時折発生してしまいました

Slide 10

Slide 10 text

10 安定稼働にもつながる マイクロサービスアーキテクチャ化について 本日は話します

Slide 11

Slide 11 text

11 本日話す内容 1 2 3 なぜマイクロサービスアーキテクチャへ移行しているか ● 取り組んでいる理由 ● 移行戦略 実際にどんな感じでやっているのか ● 開発の進め方(XP) ● 事例紹介:資料管理サービスの移行 やってみての感想・学び これからについて 4

Slide 12

Slide 12 text

12 本日話す内容 1 なぜマイクロサービスアーキテクチャへ移行しているか ● 取り組んでいる理由 ● 移行戦略 実際にどんな感じでやっているのか ● 開発の進め方(XP) ● 事例紹介:資料管理サービスの移行 やってみての感想・学び これからについて 2 3 4

Slide 13

Slide 13 text

13 CONFIDENTIAL - © 2022 CoDMON Inc. 13 なぜマイクロサービスアーキテクチャへ移行しているか 取り組んでいる理由

Slide 14

Slide 14 text

14 CONFIDENTIAL - © 2022 CoDMON Inc. 14 なぜマイクロサービスアーキテクチャへ移行しているか 「ユーザーに安定して素早く価値を届け続ける」

Slide 15

Slide 15 text

15 CONFIDENTIAL - © 2022 CoDMON Inc. 15 なぜマイクロサービスアーキテクチャへ移行しているか コドモンは2015年にリリースされ、 現在は 13,000以上の施設にご利用いただいています

Slide 16

Slide 16 text

16 CONFIDENTIAL - © 2022 CoDMON Inc. 16 なぜマイクロサービスアーキテクチャへ移行しているか リリース当初から2020年までは 「早くたくさん機能を作る」 ことを目標にしていました

Slide 17

Slide 17 text

17 CONFIDENTIAL - © 2022 CoDMON Inc. 17 なぜマイクロサービスアーキテクチャへ移行しているか その結果... 「早くたくさん機能を作る」ことを目標にしていた

Slide 18

Slide 18 text

18 CONFIDENTIAL - © 2022 CoDMON Inc. 18 なぜマイクロサービスアーキテクチャへ移行しているか ● Aを修正したら関係ないと考えていたBに影響が出る ● 複数ブランチ運用による複雑度の増加 ● リリース後に1箇所不具合が見つかると、全てがロールバックされてしまう ● リリース調整のチーム間コミュニケーションの増加 ● どこか1箇所で問題が発生すると、システム全体に波及してしまう

Slide 19

Slide 19 text

19 CONFIDENTIAL - © 2022 CoDMON Inc. 19 なぜマイクロサービスアーキテクチャへ移行しているか ● Aを修正したら関係ないと考えていたBに影響が出る ● 複数ブランチ運用による複雑度の増加 ● リリース後に1箇所不具合が見つかると、全てがロールバックされてしまう ● リリース調整のチーム間コミュニケーションの増加 ● どこか1箇所で問題が発生すると、システム全体に波及してしまう 安定してユーザーに価値を届け続けることが難しい状態に

Slide 20

Slide 20 text

20 CONFIDENTIAL - © 2022 CoDMON Inc. 20 なぜマイクロサービスアーキテクチャへ移行しているか ● Aを修正したら関係ないと考えていたBに影響が出る ● 複数ブランチ運用による複雑度の増加 ● リリース後に1箇所不具合が見つかると、全てがロールバックされてしまう ● リリース調整のチーム間コミュニケーションの増加 ● どこか1箇所で問題が発生すると、システム全体に波及してしまう 安定してユーザーに価値を届け続けることが難しい状態に 開発チームの機動力低下

Slide 21

Slide 21 text

21 CONFIDENTIAL - © 2022 CoDMON Inc. 21 なぜマイクロサービスアーキテクチャへ移行しているか 「ユーザに安定して素早く価値を届け続ける」 「早くたくさん機能を作る」

Slide 22

Slide 22 text

22 CONFIDENTIAL - © 2022 CoDMON Inc. 22 なぜマイクロサービスアーキテクチャへ移行しているか 「ユーザーに安定して素早く価値を届け続ける」 「早くたくさん機能を作る」

Slide 23

Slide 23 text

23 CONFIDENTIAL - © 2022 CoDMON Inc. 23 なぜマイクロサービスアーキテクチャへ移行しているか マイクロサービスの利点 ● 独立してデプロイ可能 ● 耐障害性の向上 ● 特定箇所のみスケール可能 ● チームの自律性向上 ● 技術選定の機会を得られる

Slide 24

Slide 24 text

24 CONFIDENTIAL - © 2022 CoDMON Inc. 24 なぜマイクロサービスアーキテクチャへ移行しているか マイクロサービスの利点 ● 独立してデプロイ可能 ● 耐障害性の向上 ● 特定箇所のみスケール可能 ● チームの自律性向上 ● 技術選定の機会を得られる 「ユーザーに安定して素早く価値を届け続ける」

Slide 25

Slide 25 text

25 CONFIDENTIAL - © 2022 CoDMON Inc. 25 なぜマイクロサービスアーキテクチャへ移行しているか 移行戦略

Slide 26

Slide 26 text

26 CONFIDENTIAL - © 2022 CoDMON Inc. 26 なぜマイクロサービスアーキテクチャへ移行しているか 移行検討当初の時点では...

Slide 27

Slide 27 text

27 CONFIDENTIAL - © 2022 CoDMON Inc. 27 なぜマイクロサービスアーキテクチャへ移行しているか 「ユーザーに安定して素早く価値を届け続けられるようになる」 ことはわかっているけれど・・・

Slide 28

Slide 28 text

28 CONFIDENTIAL - © 2022 CoDMON Inc. 28 なぜマイクロサービスアーキテクチャへ移行しているか マイクロサービスアーキテクチャへの移行に 会社として取り組むのは初めての挑戦 社内にナレッジも溜まっていない 経験者も少ない どれくらい時間かかるかも予想しづらい 「ユーザに安定して素早く価値を届け続ける」ことが 実現できる可能性があることはわかっている でも、

Slide 29

Slide 29 text

29 CONFIDENTIAL - © 2022 CoDMON Inc. 29 なぜマイクロサービスアーキテクチャへ移行しているか マイクロサービスアーキテクチャへの移行に 会社として取り組むのは初めての挑戦 社内にナレッジも溜まっていない 経験者も少ない どれくらい時間かかるかも予想しづらい 「ユーザに安定して素早く価値を届け続ける」ことが 実現できる可能性があることはわかっている でも、

Slide 30

Slide 30 text

30 CONFIDENTIAL - © 2022 CoDMON Inc. 30 なぜマイクロサービスアーキテクチャへ移行しているか マイクロサービスアーキテクチャへの移行に 会社として取り組むのは初めての挑戦 社内にナレッジも溜まっていない 経験者も少ない どれくらい時間かかるかも予想しづらい 「ユーザに安定して素早く価値を届け続ける」ことが 実現できる可能性があることはわかっている でも、

Slide 31

Slide 31 text

31 CONFIDENTIAL - © 2022 CoDMON Inc. 31 なぜマイクロサービスアーキテクチャへ移行しているか マイクロサービスアーキテクチャへの移行に 会社として取り組むのは初めての挑戦 社内にナレッジも溜まっていない 経験者も少ない どれくらい時間かかるかも予想しづらい 「ユーザに安定して素早く価値を届け続ける」ことが 実現できる可能性があることはわかっている でも、

Slide 32

Slide 32 text

32 CONFIDENTIAL - © 2022 CoDMON Inc. 32 なぜマイクロサービスアーキテクチャへ移行しているか マイクロサービスアーキテクチャへの移行に 会社として取り組むのは初めての挑戦 社内にナレッジも溜まっていない 経験者も少ない どれくらい時間かかるかも予想しづらい 全体の戦略を立てるために不確実性を減らす必要があった

Slide 33

Slide 33 text

33 CONFIDENTIAL - © 2022 CoDMON Inc. 33 なぜマイクロサービスアーキテクチャへ移行しているか 移行順序の判断

Slide 34

Slide 34 text

34 CONFIDENTIAL - © 2022 CoDMON Inc. 34 なぜマイクロサービスアーキテクチャへ移行しているか ビジネス視点 ・新規ユーザー獲得に繋がる ・契約維持に繋がる ・プロダクトの活用速度が上がる ・重大なトラブルを防止できる etc. 技術視点 ・ドメイン複雑度 ・他サービスとの依存度 ・データ移行の必要性 ・スケーリングの必要度合い etc. ✖ 改修可能性を上げることで 事業成長につながるか 改修難易度と移行難易度

Slide 35

Slide 35 text

35 CONFIDENTIAL - © 2022 CoDMON Inc. 35 なぜマイクロサービスアーキテクチャへ移行しているか 分解しやすく 分解によるメリットも大きいところから

Slide 36

Slide 36 text

36 CONFIDENTIAL - © 2022 CoDMON Inc. 36 なぜマイクロサービスアーキテクチャへ移行しているか まず最初に コンテキストマップを作成しました

Slide 37

Slide 37 text

37 CONFIDENTIAL - © 2022 CoDMON Inc. 37 なぜマイクロサービスアーキテクチャへ移行しているか

Slide 38

Slide 38 text

38 CONFIDENTIAL - © 2022 CoDMON Inc. 38 なぜマイクロサービスアーキテクチャへ移行しているか 資料 シフト

Slide 39

Slide 39 text

39 CONFIDENTIAL - © 2022 CoDMON Inc. 39 なぜマイクロサービスアーキテクチャへ移行しているか ドメイン複雑度 モバイルリリース データ移行 他サービス依存度 シフト 高 無 無 低 資料 低 有 有 低

Slide 40

Slide 40 text

40 CONFIDENTIAL - © 2022 CoDMON Inc. 40 なぜマイクロサービスアーキテクチャへ移行しているか モノリス

Slide 41

Slide 41 text

41 CONFIDENTIAL - © 2022 CoDMON Inc. 41 なぜマイクロサービスアーキテクチャへ移行しているか モノリス シフト管理 2021年リリース

Slide 42

Slide 42 text

42 CONFIDENTIAL - © 2022 CoDMON Inc. 42 なぜマイクロサービスアーキテクチャへ移行しているか モノリス シフト管理 2021年リリース 資料管理 2022年リリース

Slide 43

Slide 43 text

43 CONFIDENTIAL - © 2022 CoDMON Inc. 43 なぜマイクロサービスアーキテクチャへ移行しているか モノリス シフト管理 2021年リリース 資料管理 2022年リリース

Slide 44

Slide 44 text

44 本日話す内容 なぜマイクロサービスアーキテクチャへ移行しているか ● 取り組んでいる理由 ● 移行戦略 実際にどんな感じでやっているのか ● 開発の進め方(XP) ● 事例紹介:資料管理サービスの移行 やってみての感想・学び これからについて 3 4 1 2

Slide 45

Slide 45 text

45 CONFIDENTIAL - © 2022 CoDMON Inc. 45 実際にどんな感じでやっているのか 開発の進め方

Slide 46

Slide 46 text

46 開発の進め方 1 開発手法 開発サイクル ブランチ戦略 2 1 3 1 3

Slide 47

Slide 47 text

47 開発の進め方 1 開発手法 開発サイクル ブランチ戦略 1 1 3 2

Slide 48

Slide 48 text

48 CONFIDENTIAL - © 2022 CoDMON Inc. 48 実際にどんな感じでやっているのか:開発の進め方 システムのアーキテクチャだけでなく、 開発手法でもユーザーに安定して価値を 届け続けることにアプローチしたかった

Slide 49

Slide 49 text

49 CONFIDENTIAL - © 2022 CoDMON Inc. 49 実際にどんな感じでやっているのか:開発の進め方 エクストリームプログラミング(XP)を 取り入れながら行いました

Slide 50

Slide 50 text

50 CONFIDENTIAL - © 2022 CoDMON Inc. 50 実際にどんな感じでやっているのか:開発の進め方 プラクティス 人間性 経済性 相互利益 自己相似性 改善  ふりかえり 流れ 機会 冗長性 失敗 品質 ベイビーステップ 責任の引き受け 多様性 チーム全体 計画ゲーム 小さなリリース 受け入れテスト 共同所有 持続可能なペース メタファー 継続的インテグレーション テスト駆動開発 ペアプログラミング リファクタリング シンプルな設計 価値 コミュニケーション シンプリシティ フィードバック 勇気 リスペクト 原則

Slide 51

Slide 51 text

51 CONFIDENTIAL - © 2022 CoDMON Inc. 51 実際にどんな感じでやっているのか:開発の進め方 Robert C.Martin (著), 角 征典 (翻訳), 角谷 信太郎 (翻訳) 「Clean Agile 基本に立ち戻れ」KADOKAWA 47ページ

Slide 52

Slide 52 text

52 CONFIDENTIAL - © 2022 CoDMON Inc. 52 実際にどんな感じでやっているのか:開発の進め方 Robert C.Martin (著), 角 征典 (翻訳), 角谷 信太郎 (翻訳) 「Clean Agile 基本に立ち戻れ」KADOKAWA 47ページ ● 全てのプラクティスを取り入れる ● 守破離の守を大切にする “一度にひとつだけのプラクティスを選んでも改善は見られるだろう。 だが、組み合わせて使うようになれば、劇的な改善が見られるはずだ。 プラクティスの相互作用が、その効果を増幅させるのである。” Kent Beck, Cynthia Andres, 角 征典(訳) 「エクストリーム・プログラミング」オーム社 34 ページ

Slide 53

Slide 53 text

53 CONFIDENTIAL - © 2022 CoDMON Inc. 53 実際にどんな感じでやっているのか:開発の進め方 Robert C.Martin (著), 角 征典 (翻訳), 角谷 信太郎 (翻訳) 「Clean Agile 基本に立ち戻れ」KADOKAWA 47ページ ● 全てのプラクティスを取り入れる ● 守破離の守を大切にする “一度にひとつだけのプラクティスを選んでも改善は見られるだろう。 だが、組み合わせて使うようになれば、劇的な改善が見られるはずだ。 プラクティスの相互作用が、その効果を増幅させるのである。” Kent Beck, Cynthia Andres, 角 征典(訳) 「エクストリーム・プログラミング」オーム社 34 ページ

Slide 54

Slide 54 text

54 開発の進め方 開発手法 開発サイクル ブランチ戦略 2 1 3

Slide 55

Slide 55 text

55 CONFIDENTIAL - © 2022 CoDMON Inc. 55 実際にどんな感じでやっているのか:開発の進め方 ユーザーストーリーの 受け入れ条件について 認識を合わせる ペアでTDDを 実践しながら進める リモートリポジトリにPush ローカルでテストが 通ることを確認 受け入れテストを記述 CI上でテスト実行 ステージング環境で確認 サイクルを回し続ける 本番環境にデプロイ

Slide 56

Slide 56 text

56 CONFIDENTIAL - © 2022 CoDMON Inc. 56 実際にどんな感じでやっているのか:開発の進め方 ユーザーストーリーの 受け入れ条件について 認識を合わせる ペアでTDDを 実践しながら進める リモートリポジトリにPush ローカルでテストが 通ることを確認 受け入れテストを記述 CI上でテスト実行 ステージング環境で確認 サイクルを回し続ける 本番環境にデプロイ

Slide 57

Slide 57 text

57 開発の進め方 開発手法 開発サイクル ブランチ戦略 1 3 3 2

Slide 58

Slide 58 text

58 CONFIDENTIAL - © 2022 CoDMON Inc. 58 実際にどんな感じでやっているのか:開発の進め方 トランクベース開発

Slide 59

Slide 59 text

59 CONFIDENTIAL - © 2022 CoDMON Inc. 59 実際にどんな感じでやっているのか:開発の進め方 https://cloud.google.com/architecture/devops/devops-tech-trunk-based-development

Slide 60

Slide 60 text

60 CONFIDENTIAL - © 2022 CoDMON Inc. 60 実際にどんな感じでやっているのか:開発の進め方 ● 開発する時の運用がシンプルに ○ コンフリクトを早めに検知できる(修正も小さい) ○ Mainブランチをpullしてくればよいという状況が作れる トランクベース開発によるメリット

Slide 61

Slide 61 text

61 CONFIDENTIAL - © 2022 CoDMON Inc. 61 実際にどんな感じでやっているのか:開発の進め方 トランクベース開発 ペアプログラミング 常にソースコードがレビューされている テスト駆動開発 コードがシンプルでテストが存在して いる 受け入れテスト ストーリー毎の受け入れ条件を定義している 継続的インテグレーション 頻繁に統合し、テストが通るか確認している

Slide 62

Slide 62 text

62 CONFIDENTIAL - © 2022 CoDMON Inc. 62 実際にどんな感じでやっているのか 事例紹介:資料管理サービス

Slide 63

Slide 63 text

63 CONFIDENTIAL - © 2022 CoDMON Inc. 63 実際にどんな感じでやっているのか:事例紹介 資料管理サービス 保護者向けサービス 施設向けサービス

Slide 64

Slide 64 text

64 CONFIDENTIAL - © 2022 CoDMON Inc. 64 実際にどんな感じでやっているのか:事例紹介 EC2 保護者向けサービス Amazon Aurora モノリス EC2 施設向けサービス Amazon S3

Slide 65

Slide 65 text

65 CONFIDENTIAL - © 2022 CoDMON Inc. 65 実際にどんな感じでやっているのか:事例紹介 EC2 保護者向けサービス Amazon Aurora モノリス EC2 施設向けサービス Amazon Aurora 新サービス ECS Fargate 資料管理サービス Amazon S3 Amazon S3 Amazon S3 Amazon CloudFront

Slide 66

Slide 66 text

66 CONFIDENTIAL - © 2022 CoDMON Inc. 66 実際にどんな感じでやっているのか:事例紹介 EC2 保護者向けサービス Amazon Aurora モノリス EC2 施設向けサービス Amazon Aurora 新サービス ECS Fargate 資料管理サービス AWS Fargate Amazon SQS Publisher Subscriber データ同期バッチ Amazon S3 Amazon S3 Amazon S3 AWS Fargate Amazon CloudFront

Slide 67

Slide 67 text

67 CONFIDENTIAL - © 2022 CoDMON Inc. 67 実際にどんな感じでやっているのか:事例紹介 EC2 保護者向けサービス Amazon Aurora モノリス EC2 施設向けサービス Amazon Aurora 新サービス ECS Fargate 資料管理サービス AWS Fargate Amazon SQS Publisher Subscriber データ同期バッチ Amazon S3 Amazon S3 Amazon S3 AWS Fargate Amazon CloudFront

Slide 68

Slide 68 text

68 CONFIDENTIAL - © 2022 CoDMON Inc. 68 実際にどんな感じでやっているのか:事例紹介 技術スタック

Slide 69

Slide 69 text

69 CONFIDENTIAL - © 2022 CoDMON Inc. 69 実際にどんな感じでやっているのか:事例紹介 バックエンド Kotlin 扱うドメインを型で表現できる 初導入ではあるが、メンバーの経験があった E2Eテスト Gauge + Playwright 仕様をマークダウン形式で表現できる Chrome + FireFox + Safariのテストができる CI/CD GitHub Actions インフラ ECS 容易にスケールできる Dockerとの相性 フロントエンド Nuxt.js 社内にナレッジが溜まっていた フロントで新しい技術を取り入れるのは リスクが高いと判断 技術スタック

Slide 70

Slide 70 text

70 CONFIDENTIAL - © 2022 CoDMON Inc. 70 実際にどんな感じでやっているのか:事例紹介 リプレイスのアプローチ

Slide 71

Slide 71 text

71 CONFIDENTIAL - © 2022 CoDMON Inc. 71 実際にどんな感じでやっているのか:事例紹介 ● 現行システムと疎結合にしたい ● ビッグバンリリースを避けたい ● リプレイス後のプロダクトは容易に運用できるように ● 今回はAPI・DB・フロントを切り出しました リプレイスのアプローチ

Slide 72

Slide 72 text

72 CONFIDENTIAL - © 2022 CoDMON Inc. 72 実際にどんな感じでやっているのか:事例紹介 リプレイスのアプローチ リリースしてからユーザーに数年使っていただいていたため、 何が真に求められるかが解像度高くわかっていた

Slide 73

Slide 73 text

73 CONFIDENTIAL - © 2022 CoDMON Inc. 73 実際にどんな感じでやっているのか:事例紹介 APIとDBのみを移行する選択肢もありましたが、資料サービスに関して は変えたい仕様があり、このタイミングで変えたほうがリプレイス後に 変えるより効率的だと判断しました。 リプレイスのアプローチ リリースしてからユーザーに数年使っていただいていたため、 何が真に求められるかが解像度高くわかっていた

Slide 74

Slide 74 text

74 CONFIDENTIAL - © 2022 CoDMON Inc. 74 実際にどんな感じでやっているのか:事例紹介 Strangler pattern

Slide 75

Slide 75 text

75 CONFIDENTIAL - © 2022 CoDMON Inc. 75 実際にどんな感じでやっているのか:事例紹介 Strangler patternとは ● 移行対象のサービスを稼働させつつ、 横で代行となるサービスを構築する ● 並行稼働しながら徐々に 新サービスに切り替える https://microservices.io/patterns/refactoring/strangler-application.html

Slide 76

Slide 76 text

76 CONFIDENTIAL - © 2022 CoDMON Inc. 76 実際にどんな感じでやっているのか:事例紹介 ● 最初から本番環境へ小さくリリースすることができる トラフィックを切り替えるまで影響がない Strangler patternのメリット

Slide 77

Slide 77 text

77 CONFIDENTIAL - © 2022 CoDMON Inc. 77 実際にどんな感じでやっているのか:事例紹介 ● 最初から本番環境へ小さくリリースすることができる トラフィックを切り替えるまで影響がない Strangler patternのメリット

Slide 78

Slide 78 text

78 CONFIDENTIAL - © 2022 CoDMON Inc. 78 実際にどんな感じでやっているのか:事例紹介 ● カナリアリリース 徐々に実際のユーザーにリリースできる Strangler patternのメリット

Slide 79

Slide 79 text

79 CONFIDENTIAL - © 2022 CoDMON Inc. 79 実際にどんな感じでやっているのか:事例紹介 ● カナリアリリース 徐々に実際のユーザーにリリースできる Strangler patternのメリット

Slide 80

Slide 80 text

80 CONFIDENTIAL - © 2022 CoDMON Inc. 80 実際にどんな感じでやっているのか:事例紹介 ● カナリアリリース 徐々に実際のユーザーにリリースできる Strangler patternのメリット

Slide 81

Slide 81 text

81 CONFIDENTIAL - © 2022 CoDMON Inc. 81 実際にどんな感じでやっているのか:事例紹介 ● フェイルセーフ 新規サービスで問題が発覚したら、 旧サービスにすぐにロールバックできる Strangler patternのメリット

Slide 82

Slide 82 text

82 CONFIDENTIAL - © 2022 CoDMON Inc. 82 実際にどんな感じでやっているのか:事例紹介 ● フェイルセーフ 新規サービスで問題が発覚したら、 旧サービスにすぐにロールバックできる Strangler patternのメリット

Slide 83

Slide 83 text

83 CONFIDENTIAL - © 2022 CoDMON Inc. 83 実際にどんな感じでやっているのか:事例紹介 各レイヤーの詳細をお話ししていきます

Slide 84

Slide 84 text

84 CONFIDENTIAL - © 2022 CoDMON Inc. 84 実際にどんな感じでやっているのか:事例紹介 ● データマイグレーション ● 施設向けサービス ● 保護者アプリ

Slide 85

Slide 85 text

85 CONFIDENTIAL - © 2022 CoDMON Inc. 85 実際にどんな感じでやっているのか:事例紹介 データマイグレーション

Slide 86

Slide 86 text

86 CONFIDENTIAL - © 2022 CoDMON Inc. 86 実際にどんな感じでやっているのか:事例紹介 ● ストック型のサービス、蓄積された過去の資料を 閲覧・編集できる必要がある データマイグレーションが必要な理由

Slide 87

Slide 87 text

87 CONFIDENTIAL - © 2022 CoDMON Inc. 87 実際にどんな感じでやっているのか:事例紹介 ● ストック型のサービス、蓄積された過去の資料を 閲覧・編集できる必要がある ● 過去の資料は旧データベースを見るという選択肢もあったが、 サービスの関係は疎結合にしたかった データマイグレーションが必要な理由

Slide 88

Slide 88 text

88 CONFIDENTIAL - © 2022 CoDMON Inc. 88 実際にどんな感じでやっているのか:事例紹介 EC2 保護者向けサービス Amazon Aurora モノリス EC2 施設向けサービス Amazon S3 Amazon Aurora 新サービス ECS Fargate 資料管理サービス Amazon S3 Amazon S3 Amazon CloudFront

Slide 89

Slide 89 text

89 CONFIDENTIAL - © 2022 CoDMON Inc. 89 実際にどんな感じでやっているのか:事例紹介 EC2 保護者向けサービス Amazon Aurora モノリス EC2 施設向けサービス Amazon Aurora 新サービス ECS Fargate 資料管理サービス Amazon S3 Amazon S3 Amazon S3 Amazon CloudFront

Slide 90

Slide 90 text

90 CONFIDENTIAL - © 2022 CoDMON Inc. 90 実際にどんな感じでやっているのか:事例紹介 EC2 保護者向けサービス Amazon Aurora モノリス EC2 施設向けサービス AWS Fargate Amazon SQS Publisher Subscriber データ同期バッチ Amazon S3 AWS Fargate Amazon Aurora 新サービス ECS Fargate 資料管理サービス Amazon S3 Amazon S3 Amazon CloudFront

Slide 91

Slide 91 text

91 CONFIDENTIAL - © 2022 CoDMON Inc. 91 実際にどんな感じでやっているのか:事例紹介 Amazon Aurora 新サービス ECS Fargate 資料管理サービス Amazon S3 Amazon S3 EC2 保護者向けサービス Amazon Aurora モノリス EC2 施設向けサービス AWS Fargate Amazon SQS Publisher Subscriber データ同期バッチ Amazon S3 AWS Fargate Amazon CloudFront

Slide 92

Slide 92 text

92 CONFIDENTIAL - © 2022 CoDMON Inc. 92 実際にどんな感じでやっているのか:事例紹介 マイグレーションの検証

Slide 93

Slide 93 text

93 CONFIDENTIAL - © 2022 CoDMON Inc. 93 実際にどんな感じでやっているのか:事例紹介 テストの概要 自動テスト(Gauge)+手動テストで移行バッチを担保する テスト観点 自動テスト ● 移行したデータがS3やDBに入っているか ● 資料の状態の組み合わせなど網羅的に確認 ● 移行失敗によるロールバックの確認 手動テスト ● データ移行前後の表示崩れがないかを確認 ● 移行バッチ実行による負荷のテスト ● 各種設定の確認(SQS,Datadog(log)など)

Slide 94

Slide 94 text

94 CONFIDENTIAL - © 2022 CoDMON Inc. 94 実際にどんな感じでやっているのか:事例紹介 自動テスト実行構成(ローカル) Amazon SQS Amazon S3 Spring Batch 旧DB 新DB 旧 新

Slide 95

Slide 95 text

95 CONFIDENTIAL - © 2022 CoDMON Inc. 95 実際にどんな感じでやっているのか:事例紹介 自動テスト実行構成(ローカル) Amazon SQS Amazon S3 Spring Batch 旧DB 新DB 旧 新

Slide 96

Slide 96 text

96 CONFIDENTIAL - © 2022 CoDMON Inc. 96 実際にどんな感じでやっているのか:事例紹介 自動テスト実行構成(ローカル) Amazon SQS Amazon S3 Spring Batch 旧DB 新DB 旧 新

Slide 97

Slide 97 text

97 CONFIDENTIAL - © 2022 CoDMON Inc. 97 実際にどんな感じでやっているのか:事例紹介 自動テスト実行構成(ローカル) Amazon SQS Amazon S3 Spring Batch 旧DB 新DB 旧 新

Slide 98

Slide 98 text

98 CONFIDENTIAL - © 2022 CoDMON Inc. 98 実際にどんな感じでやっているのか:事例紹介 自動テスト実行構成(ローカル) Amazon SQS Amazon S3 Spring Batch 旧DB 新DB 旧 新

Slide 99

Slide 99 text

99 CONFIDENTIAL - © 2022 CoDMON Inc. 99 実際にどんな感じでやっているのか:事例紹介 自動テスト実行構成(ローカル) Amazon SQS Amazon S3 Spring Batch 旧DB 新DB 旧 新

Slide 100

Slide 100 text

100 CONFIDENTIAL - © 2022 CoDMON Inc. 100 実際にどんな感じでやっているのか:事例紹介

Slide 101

Slide 101 text

101 CONFIDENTIAL - © 2022 CoDMON Inc. 101 実際にどんな感じでやっているのか:事例紹介 ● アプリのリリースと独立できる 同期状態にして嬉しかったこと

Slide 102

Slide 102 text

102 CONFIDENTIAL - © 2022 CoDMON Inc. 102 実際にどんな感じでやっているのか:事例紹介 ● アプリのリリースと独立できる ● システムをメンテナンスモードにする必要がない 同期状態にして嬉しかったこと

Slide 103

Slide 103 text

103 CONFIDENTIAL - © 2022 CoDMON Inc. 103 実際にどんな感じでやっているのか:事例紹介 ● アプリのリリースと独立できる ● システムをメンテナンスモードにする必要がない ● 旧サービスと新サービスの並行稼働が可能になった 同期状態にして嬉しかったこと

Slide 104

Slide 104 text

104 CONFIDENTIAL - © 2022 CoDMON Inc. 104 実際にどんな感じでやっているのか:事例紹介 施設向けサービス

Slide 105

Slide 105 text

105 CONFIDENTIAL - © 2022 CoDMON Inc. 105 実際にどんな感じでやっているのか:事例紹介 EC2 保護者向けサービス Amazon Aurora モノリス EC2 施設向けサービス Amazon S3 移行前 Amazon Aurora 新サービス ECS Fargate 資料管理サービス Amazon S3 Amazon S3 Amazon CloudFront

Slide 106

Slide 106 text

106 CONFIDENTIAL - © 2022 CoDMON Inc. 106 実際にどんな感じでやっているのか:事例紹介 Amazon Aurora 新サービス ECS Fargate 資料管理サービス Amazon S3 Amazon S3 EC2 保護者向けサービス Amazon Aurora モノリス EC2 施設向けサービス Amazon S3 移行後 Amazon CloudFront

Slide 107

Slide 107 text

107 CONFIDENTIAL - © 2022 CoDMON Inc. 107 実際にどんな感じでやっているのか:事例紹介 ● フィーチャーフラグ 社内ユーザーのみが見えるようにし、本番に継続的にデプロイしていく 施設向けサービス並行稼働

Slide 108

Slide 108 text

108 CONFIDENTIAL - © 2022 CoDMON Inc. 108 実際にどんな感じでやっているのか:事例紹介 ● フィーチャーフラグ 社内ユーザーのみが見えるようにし、本番に継続的にデプロイしていく 施設向けサービス並行稼働 featureName hoge fuga

Slide 109

Slide 109 text

109 CONFIDENTIAL - © 2022 CoDMON Inc. 109 実際にどんな感じでやっているのか:事例紹介 ● カナリアリリース 失敗したとしても小さく失敗するように 施設向けサービス並行稼働

Slide 110

Slide 110 text

110 CONFIDENTIAL - © 2022 CoDMON Inc. 110 実際にどんな感じでやっているのか:事例紹介 ● カナリアリリース 失敗したとしても小さく失敗するように 施設向けサービス並行稼働 betaFacilities 1 2

Slide 111

Slide 111 text

111 CONFIDENTIAL - © 2022 CoDMON Inc. 111 実際にどんな感じでやっているのか:事例紹介 保護者アプリ

Slide 112

Slide 112 text

112 CONFIDENTIAL - © 2022 CoDMON Inc. 112 実際にどんな感じでやっているのか:事例紹介 Amazon Aurora 新サービス ECS Fargate 資料管理サービス Amazon S3 Amazon S3 EC2 保護者向けサービス Amazon Aurora モノリス EC2 施設向けサービス Amazon S3 移行前 Amazon CloudFront モバイル アプリ

Slide 113

Slide 113 text

113 CONFIDENTIAL - © 2022 CoDMON Inc. 113 実際にどんな感じでやっているのか:事例紹介 Amazon Aurora 新サービス ECS Fargate 資料管理サービス Amazon S3 Amazon S3 Amazon Aurora モノリス Amazon S3 移行後 Amazon CloudFront EC2 保護者向けサービス EC2 施設向けサービス モバイル アプリ

Slide 114

Slide 114 text

114 CONFIDENTIAL - © 2022 CoDMON Inc. 114 実際にどんな感じでやっているのか:事例紹介 ● フィーチャーフラグ フィーチャーフラグを利用し、 アプリリリースを行わずにロールバックできるように ● フェイルセーフ 新画面でエラーが発生した際は、旧画面を見れるように ● 段階リリース AppleとAndroidの機能を利用して実施 安全なリリースに向けて

Slide 115

Slide 115 text

115 CONFIDENTIAL - © 2022 CoDMON Inc. 115 実際にどんな感じでやっているのか:事例紹介 ● フェイルセーフ ○ 500エラーが発生した時にそれをユーザー に知らせ、旧画面への遷移を用意 安全なリリースに向けて

Slide 116

Slide 116 text

116 CONFIDENTIAL - © 2022 CoDMON Inc. 116 実際にどんな感じでやっているのか:事例紹介 ● データマイグレーション 並行運用できるようにデータ同期を行った。網羅性の高い自動テストがあることで、 不具合修正や細かな仕様変更に対し、回帰的なテストが行えた ● 施設向けサービス 常時同期でデータ移行をしていたため、新旧サービスを並行稼働させることができ、 一気に移行するということを回避したカナリアリリースを行い、 少しずつ適応施設を増やしていった ● 保護者アプリ フィーチャーフラグ・フェイルセーフ・段階リリースを利用し、 安全を担保した状態でリリース まとめ

Slide 117

Slide 117 text

117 CONFIDENTIAL - © 2022 CoDMON Inc. 117 実際にどんな感じでやっているのか:事例紹介 リプレイスした結果

Slide 118

Slide 118 text

118 CONFIDENTIAL - © 2022 CoDMON Inc. 118 実際にどんな感じでやっているのか:事例紹介 ● Aを修正したら関係ないと考えていたBに影響が出る   ● 複数ブランチ運用による複雑度の増加   ● リリース後に1箇所デグレが起きると全てが戻ってしまう   ● リリース調整のチーム間コミュニケーションの増加   ● どこか一箇所に問題があると、システム全体に波及してしまう  

Slide 119

Slide 119 text

119 CONFIDENTIAL - © 2022 CoDMON Inc. 119 実際にどんな感じでやっているのか:事例紹介 ● Aを修正したら関係ないと考えていたBに影響が出る  →影響は資料サービス内に閉じている ● 複数ブランチ運用による複雑度の増加  →トランクベース開発による複雑度の低下 ● リリース後に1箇所デグレが起きると全てが戻ってしまう  →他のサービスの影響を受けない ● リリース調整のチーム間コミュニケーションの増加  →独立してデプロイできる ● どこか一箇所に問題があると、システム全体に波及してしまう  →資料サービス内だけに閉じており、他の影響も受けない

Slide 120

Slide 120 text

120 本日話す内容 なぜマイクロサービスアーキテクチャへ移行しているか ● 取り組んでいる理由 ● 移行戦略 実際にどんな感じでやっているのか ● 開発の進め方(XP) ● 事例紹介:資料管理サービスの移行 やってみての感想・学び これからについて 2 4 3 1

Slide 121

Slide 121 text

121 CONFIDENTIAL - © 2022 CoDMON Inc. 121 やってみての感想・学び ● XP導入による恩恵 資料サービスは安全に素早くリリースができる状態になった。 ペアプログラミングにより属人化がなくなり、 メンバーそれぞれが得意分野で力を発揮しつつ、他の分野においても成長できた。 ● 自動テストを初期から入れたので安全に進めることができた テスト作成に時間を投資し続けることについては、強い気持ちが必要。 途中で書かないほうが早いのではと感じる時が来たりする。 (今はチームメンバ全員が書いて良かったと思っています) ● 既存サービスとの関わりが難しい 既存サービスの仕様や制約の調査を行うことが大切。 リプレイスがユーザーの業務に影響を与えないように、トラブルがあった場合もすぐに切り戻せ る体制を作っておく。 ● 初動の加速が重要 初めて作成する基盤が多かったこともあり、プロジェクト完了に8ヶ月間を費やした。 今回の経験を蓄えたイネイブリングチームを作ることで、次回以降の初動を早めていきたい。

Slide 122

Slide 122 text

122 CONFIDENTIAL - © 2022 CoDMON Inc. 122 やってみての感想・学び ● XP導入による恩恵 資料サービスは安全に素早くリリースができる状態になった。 ペアプログラミングにより属人化がなくなり、 メンバーそれぞれが得意分野で力を発揮しつつ、他の分野においても成長できた。 ● 自動テストを初期から入れたので安全に進めることができた テスト作成に時間を投資し続けることについては、強い気持ちが必要。 途中で書かないほうが早いのではと感じる時が来たりする。 (今はチームメンバ全員が書いて良かったと思っています) ● 既存サービスとの関わりが難しい 既存サービスの仕様や制約の調査を行うことが大切。 リプレイスがユーザーの業務に影響を与えないように、トラブルがあった場合もすぐに切り戻せ る体制を作っておく。 ● 初動の加速が重要 初めて作成する基盤が多かったこともあり、プロジェクト完了に8ヶ月間を費やした。 今回の経験を蓄えたイネイブリングチームを作ることで、次回以降の初動を早めていきたい。

Slide 123

Slide 123 text

123 CONFIDENTIAL - © 2022 CoDMON Inc. 123 やってみての感想・学び ● XP導入による恩恵 資料サービスは安全に素早くリリースができる状態になった。 ペアプログラミングにより属人化がなくなり、 メンバーそれぞれが得意分野で力を発揮しつつ、他の分野においても成長できた。 ● 自動テストを初期から入れたので安全に進めることができた テスト作成に時間を投資し続けることについては、強い気持ちが必要。 途中で書かないほうが早いのではと感じる時が来たりする。 (今はチームメンバ全員が書いて良かったと思っています) ● 既存サービスとの関わりが難しい 既存サービスの仕様や制約の調査を行うことが大切。 リプレイスがユーザーの業務に影響を与えないように、トラブルがあった場合もすぐに切り戻せ る体制を作っておく。 ● 初動の加速が重要 初めて作成する基盤が多かったこともあり、プロジェクト完了に8ヶ月間を費やした。 今回の経験を蓄えたイネイブリングチームを作ることで、次回以降の初動を早めていきたい。

Slide 124

Slide 124 text

124 CONFIDENTIAL - © 2022 CoDMON Inc. 124 やってみての感想・学び ● XP導入による恩恵 資料サービスは安全に素早くリリースができる状態になった。 ペアプログラミングにより属人化がなくなり、 メンバーそれぞれが得意分野で力を発揮しつつ、他の分野においても成長できた。 ● 自動テストを初期から入れたので安全に進めることができた テスト作成に時間を投資し続けることについては、強い気持ちが必要。 途中で書かないほうが早いのではと感じる時が来たりする。 (今はチームメンバ全員が書いて良かったと思っています) ● 既存サービスとの関わりが難しい 既存サービスの仕様や制約の調査を行うことが大切。 リプレイスがユーザーの業務に影響を与えないように、トラブルがあった場合もすぐに切り戻せ る体制を作っておく。 ● 初動の加速が重要 初めて作成する基盤が多かったこともあり、プロジェクト完了に8ヶ月間を費やした。 今回の経験を蓄えたイネイブリングチームを作ることで、次回以降の初動を早めていきたい。

Slide 125

Slide 125 text

125 CONFIDENTIAL - © 2022 CoDMON Inc. 125 やってみての感想・学び ● XP導入による恩恵 資料サービスは安全に素早くリリースができる状態になった。 ペアプログラミングにより属人化がなくなり、 メンバーそれぞれが得意分野で力を発揮しつつ、他の分野においても成長できた。 ● 自動テストを初期から入れたので安全に進めることができた テスト作成に時間を投資し続けることについては、強い気持ちが必要。 途中で書かないほうが早いのではと感じる時が来たりする。 (今はチームメンバ全員が書いて良かったと思っています) ● 既存サービスとの関わりが難しい 既存サービスの仕様や制約の調査を行うことが大切。 リプレイスがユーザーの業務に影響を与えないように、トラブルがあった場合もすぐに切り戻せ る体制を作っておく。 ● 初動の加速が重要 初めて作成する基盤が多かったこともあり、プロジェクト完了に8ヶ月間を費やした。 今回の経験を蓄えたイネイブリングチームを作ることで、次回以降の初動を早めていきたい。

Slide 126

Slide 126 text

126 本日話す内容 なぜマイクロサービスアーキテクチャへ移行しているか ● 取り組んでいる理由 ● 移行戦略 実際にどんな感じでやっているのか ● 開発の進め方(XP) ● 事例紹介:資料管理サービスの移行 やってみての感想・学び これからについて 2 1 4 3

Slide 127

Slide 127 text

127 CONFIDENTIAL - © 2022 CoDMON Inc. 127 これからについて ドメイン複雑度 モバイルリリース データ移行 他サービス依存度 シフト 高 無 無 低 資料 低 有 有 低 ???(next…) 高 有 有 高

Slide 128

Slide 128 text

128 CONFIDENTIAL - © 2022 CoDMON Inc. 128 これからについて ● 複雑なトランザクションの管理 ● マイクロサービス間の連携自動テスト(CDC) ● 初動の高速化(イネイブリングチーム) ● リプレイスの複線化

Slide 129

Slide 129 text

129 CONFIDENTIAL - © 2022 CoDMON Inc. 129 これからについて 「ユーザーに安定して素早く価値を届け続ける」 が実現できるまで取り組んで行きます

Slide 130

Slide 130 text

130 ちなみに

Slide 131

Slide 131 text

131 CONFIDENTIAL - © 2022 CoDMON Inc. 131 なぜマイクロサービスアーキテクチャへ移行しているか 「ユーザーに安定して素早く価値を届け続ける」

Slide 132

Slide 132 text

132 CONFIDENTIAL - © 2022 CoDMON Inc. 132 なぜマイクロサービスアーキテクチャへ移行しているか 「ユーザーに安定して素早く価値を届け続ける」 マイクロサービスだけでなく、 モノリスのリファクタリングや モジュラーモノリス化も進めています そのために

Slide 133

Slide 133 text

133 CONFIDENTIAL - © 2022 CoDMON Inc. 133 なぜマイクロサービスアーキテクチャへ移行しているか https://tech.codmon.com/ent ry/2022/06/28/134446 https://speakerdeck.com/co dmoninc/ji-shu-de-fu-zhai-ni xiang-kihe-isok-keruzi-shi-h asukirufu-noguang-garinimox i-garuhua

Slide 134

Slide 134 text

134 コドモン採用ページ 開発ブログ コドモンでは一緒に働きたい仲間を募集しています!

Slide 135

Slide 135 text

135 ご清聴ありがとうございました!

Slide 136

Slide 136 text

No content