Upgrade to Pro — share decks privately, control downloads, hide ads and more …

保育・教育施設の業務省力化を提供する Webサービスの改善と技術的負債解消への取り組み ー マイクロサービスへの挑戦 ー

保育・教育施設の業務省力化を提供する Webサービスの改善と技術的負債解消への取り組み ー マイクロサービスへの挑戦 ー

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

  4. 4
    Mission

    View Slide

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

    View Slide

  6. 6
    はじめに

    View Slide

  7. 7
    本題に入る前に

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    改修可能性を上げることで
    事業成長につながるか
    改修難易度と移行難易度

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  66. 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

    View Slide

  67. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  90. 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

    View Slide

  91. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  130. 130
    ちなみに

    View Slide

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

    View Slide

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

    View Slide

  133. 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

    View Slide

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

    View Slide

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

    View Slide

  136. View Slide