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

AWSにおけるマイクロサービスとNoSQLの活用 /microservice architecture with NoSQL on AWS

Atsushi Fukui
September 21, 2023

AWSにおけるマイクロサービスとNoSQLの活用 /microservice architecture with NoSQL on AWS

AWS Loft Event
Developer x NoSQL Night
AWSにおけるマイクロサービスとNoSQLの活用

Atsushi Fukui

September 21, 2023
Tweet

More Decks by Atsushi Fukui

Other Decks in Technology

Transcript

  1. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    © 2023, Amazon Web Services, Inc. or its affiliates.
    Atsushi Fukui
    Senior Solutions Architect
    Developer Specialist - DevAx
    Amazon Web Services Japan
    AWSにおけるマイクロサービスと
    NoSQLの活⽤
    D E V E L O P E R X N O S Q L N I G H T

    View full-size slide

  2. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    ⾃⼰紹介
    v名前
    v福井 厚(ふくい あつし)twitter: afukui@
    v所属
    vアマゾン ウェブ サービス ジャパン合同会社
    vシニアソリューションアーキテクト
    vDeveloperスペシャリスト - DevAx
    v関⼼領域
    vソフトウェア アーキテクチャ、オブジェクト指向設計、アジャイル開発
    v好きなAWSサービス
    vサーバーレステクノロジー全般、 AWS Code シリーズ

    View full-size slide

  3. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    セッションを始める前に
    • このセッションはマイクロサービスを推奨するものではありません
    • 他のすべてのアーキテクチャと同様に、マイクロサービスも選択肢
    のひとつであり、メリット、デメリットがあります
    • マイクロサービスアーキテクチャもシステムの⽬的と要件を
    踏まえた上で、ひとつの選択肢としてお考えください

    View full-size slide

  4. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    Agenda
    • マイクロサービスとは
    • なぜマイクロサービスアーキテクチャを採⽤するのか
    • マイクロサービスのアンチパターン
    • どうやってサービスを分割するのか
    • Amazon DynamoDBの活⽤
    • まとめ

    View full-size slide

  5. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    © 2023, Amazon Web Services, Inc. or its affiliates.
    マイクロサービスとは

    View full-size slide

  6. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    マイクロサービスとは
    • ビジネスドメインに基づいて分割された、独⽴してデプロイ可能なサービス
    映画情報
    サービス
    料⾦サービス
    通知サービス
    予約サービス
    発送サービス
    課⾦サービス
    料⾦情報の
    問い合わせ
    上映⽇イベント
    予約情報
    問い合わせ

    View full-size slide

  7. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    マイクロサービスの重要な概念
    『マイクロサービスアーキテクチャ第2班』オライリー・ジャパン、2022

    View full-size slide

  8. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    マイクロサービスの性質
    疎結合で、独⽴性が⾼い
    • 独⽴してデプロイ可能
    • つまり各サービスが疎結合
    • ビジネスモデルの境界に沿って分割
    • Web 三層 ⇔ ドメインモデル
    • 技術的な境界に沿って分割しない
    • 変更要求に対し、複数のサービスを横断して
    デプロイすることになる
    • 各サービスが⾃⾝でデータを所有する
    • データベースを共有しない
    • データはWeb APIやイベントなどで受け渡す
    『マイクロサービスアーキテクチャ第2班』オライリー・ジャパン、2022

    View full-size slide

  9. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    © 2023, Amazon Web Services, Inc. or its affiliates.
    なぜマイクロサービスアーキテクチャ
    を採⽤するのか

    View full-size slide

  10. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.


    “…innovation is now recognized as the
    single most important ingredient in any
    modern economy…”
    イノベーション こそが近代経済において最
    も重要な要素と考えられている。
    競合よりも早く、新しい波を
    創っていくことが重要

    View full-size slide

  11. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    イノベーションがビジネスを進化させる
    新たなマーケット
    新たな顧客価値
    New economics
    新たなデジタル製品とサービス

    View full-size slide

  12. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    Listen
    Idea
    Experiment
    Innovation
    Flywheel
    実験がイノベーションを加速する

    View full-size slide

  13. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    マイクロサービスに変更する理由
    アジリティ
    各機能を他の機能のリリースを調整せずにリリースできるようになる
    チームの⾃律性
    チームの規模が⼩さくなることでコミュニケーションコストが減る
    ⾃⾝のサービスを完全にコントロールでき、⾃律的⾃発的な機能改善に繋がる
    スケーリング
    負荷が⾼い機能のみをスケーリングすることができる
    堅牢性
    負荷が⾼まったとき、リリースによる障害などの影響が単⼀のサービスにとどまり、アプリケー
    ション全体としての堅牢性が⾼まる
    採⽤技術の柔軟性
    各サービス毎に異なる⾔語やアーキテクチャ(VM/コンテナ/サーバーレス/etc)を採⽤できる

    View full-size slide

  14. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    © 2023, Amazon Web Services, Inc. or its affiliates.
    マイクロサービスのトレードオフ

    View full-size slide

  15. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    マイクロサービスのトレードオフ
    分散システムに伴う複雑性
    ネットワーク呼出による連携となり、モノリシックシステムでメ
    ソッドを呼び出すときには発⽣しなかった考慮点が発⽣する
    ネットワークのエラーや遅延、呼出先のダウン、障害発⽣時のトラ
    ブルシューティングなど
    整合性の担保
    モノリシックなシステムではトランザクションで容易に強⼒な整合
    性を担保できる
    マイクロサービスで同様の整合性は担保できない
    マイクロサービスの統廃合やリファクタリングが困難
    モノリスではIDEの機能で⾃動的にインターフェースやクラスの分割、
    抽出、統合が可能で、データスキーマも整理可能
    マイクロサービスでは、そのような統廃合は複数のサービスチーム
    の調整やデータの移管が必要

    View full-size slide

  16. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    トレードオフの対策
    分散システムに伴う複雑性
    ⾮同期なイベント駆動で連携したり、同期API呼出の場合はサー
    ビスメッシュを利⽤する
    整合性の担保
    整合性が必要な単位でマイクロサービスを分割しない
    どこで整合性が必要なのか、ビジネスのモデリングが必要
    サーガパターンなど、結果整合性を担保するデザインパターンを
    利⽤する
    マイクロサービスの統廃合やリファクタリングが困難
    統廃合がなるべく発⽣しないよう、ビジネスのモデリングが必要

    View full-size slide

  17. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    © 2023, Amazon Web Services, Inc. or its affiliates.
    マイクロサービスのアンチパターン

    View full-size slide

  18. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    チーム内に意思決定する権限がない
    • ビジネス的な価値を提供するために、どの機能を優先的にリリース
    するかをチームで決定できない
    • ユーザーからのフィードバックを受けて何をどのように改善するか
    を決定できない
    • チームが⾃律的に⾏動できる組織になっていない

    View full-size slide

  19. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    開発メンバーの数がサービスより少ない
    • 開発者3⼈で20以上のマイクロサービスを開発しているなど
    • 開発者がボトルネックとなってリリースや改善の頻度が低下

    View full-size slide

  20. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    バックエンドのデータベースを各サービスで共有
    • マイクロサービスではない
    • 密結合になっておりマイクロサービスのメリットが活かせない

    View full-size slide

  21. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    サービス単位ではなく機能単位のチーム構成している
    • UI、アプリケーション、データベース
    など機能単位にチームが分かれている
    「マイクロサービスアーキテクチャ 第2版」オライリージャパン 2022

    View full-size slide

  22. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    ドメインをまたがって密結合になっている
    • ビジネスドメインの境界に従ってサービスが分割されていない
    • 境界づけられたコンテキスト間はドメインイベントで疎結合にする
    • 分散システムでは、⾮同期、結果整合を許容する必要がある

    View full-size slide

  23. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    明確な⽬的もなくマイクロサービスを選択している
    • 銀の弾丸ではない
    • 「流⾏っているから」「新しい⼿法だから」という理由でマイクロ
    サービスアーキテクチャを選択しない
    • マイクロサービスのもたらす価値と複雑性のトレードオフを考慮

    View full-size slide

  24. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    © 2023, Amazon Web Services, Inc. or its affiliates.
    どうやってサービスを分割するのか

    View full-size slide

  25. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    ドメイン駆動設計 (DDD) とは
    • ⾼品質なソフトウェアモデルを設計
    するためのソフトウェア開発⼿法
    • ユビキタス⾔語 ー ビジネスドメイン
    エキスパートと開発者の間の意思疎通と
    して利⽤される⽤語によってモデリング
    と設計を⾏う
    • 戦略的な設計のためのガイドライン ー
    境界づけられたコンテキスト、
    蒸留、⼤規模な構造の考察
    • 戦術的な設計 – 集約、エンティティ、
    値オブジェクト、ドメインサービス
    「エリック・エヴァンスのドメイン駆動設計」:エリック・エバンス著 2011/4/9 翔泳社
    「実践ドメイン駆動設計」:ヴォーン・ヴァーノン著 2015/3/16 翔泳社

    View full-size slide

  26. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    戦略的設計
    • 境界づけられたコンテキスト
    • コンテキストマップ
    • ⼤規模な構造
    26

    View full-size slide

  27. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    境界づけられたコンテキスト
    • 境界づけられたコンテキストは特定の
    • モデルを適⽤できる限定された範囲。
    • コンテキストの境界を定めることで、
    • チームメンバーは何を⼀致させるべきで
    何を独⽴して開発できるのかについての
    理解を明確化し、共有できる。
    https://www.martinfowler.com/bliki/BoundedContext.html
    Customer
    Ticket
    Product
    Product
    version
    Customer
    Product
    Territory
    Opportunity
    Pipeline
    Salesperson
    Defect
    Sales context Support context

    View full-size slide

  28. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    コンテキストマップ
    Sales context Support context
    Marketing context
    境界つけられたコンテキストだけでは、ドメインの
    全体像を⽰すことはできない。
    コンテキストマップは、境界づけられたコンテキスト
    を統合することにより、異なるが関連するユビキタス
    ⾔語のマッピングを処理する。
    DDDでは境界づけられたコンテキストを統合するため
    の7つのパターンを説明
    • 共有カーネル (Shared Kernel)
    • 顧客/供給者の開発チーム (Customer/Supplier
    Development Teams)
    • 順応者 (Conformist)
    • 腐敗防⽌層 (Anticorruption layer)
    • 別々の道 (Separate ways)
    • 公開ホストサービス (Open/Host service)
    • 公表された⾔語 (Published language)

    View full-size slide

  29. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    戦術的設計
    • 集約、値オブジェクト、エンティティー
    • ドメインイベント
    29

    View full-size slide

  30. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    モデル駆動設計を構成する⾔語のナビゲーションマップ
    モデル駆動
    設計
    サービス
    エンティティ
    値オブジェクト
    ファクトリ
    集約
    リポジトリ
    利⼝なUI
    モデルを表現するのに使⽤する
    モデルを表現するのに使⽤する
    モデルを表現するのに使⽤する
    排他的な選択
    アクセスするのに使⽤する
    整合性を保つのに
    使⽤する アクセスするのに使⽤する
    ルートとして機能する
    カプセル化するのに使⽤する
    カプセル化するのに
    使⽤する
    カプセル化するのに使⽤する
    カプセル化するのに使⽤する
    レイヤ化
    アーキテクチャ
    ドメインを隔離する
    のに使⽤する

    View full-size slide

  31. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    例 – オークションの集約
    31
    オークション
    競売参加者
    オークション品
    1 *
    1
    ⽀払い⽅法
    配送⽅法
    *
    1
    1 1
    集約ルート 在庫
    1
    1
    競売⼈
    1
    1
    *

    View full-size slide

  32. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    境界づけられたコンテキストとドメインモデル
    在庫 オークション
    支払い
    台車
    ピッカー
    配送サービス
    倉庫
    商品
    棚位置
    サイズ
    重さ
    配送顧客
    配送先
    入札 落札
    商品
    SKU
    画像
    価格
    入札顧客
    ID 検索サービス
    落札顧客
    クレジットカード
    支払い

    View full-size slide

  33. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    データソースをサービスの所有ごとに分割
    ⽀払い
    オークション
    在庫
    共有されている
    モノリシック
    データベース
    モノリシックシステム
    ⽀払い
    オークション
    在庫
    商品や顧客などもサービスによって利⽤する属性が
    異なるので、それぞれのサービスの所有するデータ
    へ移⾏する。
    データソースの移⾏計画も検討。
    顧客マスタ
    配送顧客 ⼊札顧客 ⽀払顧客

    View full-size slide

  34. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    © 2023, Amazon Web Services, Inc. or its affiliates.
    マイクロサービスで データソースに
    対して考慮すべき点

    View full-size slide

  35. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    マイクロサービスで データソースに対して考慮すべき点
    • サービスごとにデータソースを所有するコスト
    • ⼀部のサービスにリクエストが集中した場合のデータソースへの
    負荷
    • サービスの特性に応じたデータソースの選択
    § ポリグロットパーシスタンス

    View full-size slide

  36. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    Amazon SQS
    メッセージ
    2000件 Amazon RDS MySQL
    (max_conn = 100)
    AWS Lambda
    従来の RDB コネクション

    View full-size slide

  37. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.

    従来の RDB コネクション
    Amazon SQS
    メッセージ
    2000件 Amazon RDS MySQL
    (max_conn = 100)
    AWS Lambda

    View full-size slide

  38. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.

    従来の RDB コネクション
    Amazon SQS
    メッセージ
    2000件
    AWS Lambda Amazon RDS MySQL
    (max_conn = 100)

    View full-size slide

  39. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    Amazon RDS Proxy
    セキュリティの向上
    シームレスな
    フェイルオーバー
    コネクションプール

    View full-size slide

  40. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    ︙ RDS Proxy
    RDS Proxy を使った DB コネクション
    Amazon SQS
    メッセージ
    2000件
    AWS Lambda Amazon RDS MySQL
    (max_conn = 100)

    View full-size slide

  41. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.

    Amazon DynamoDBを使⽤
    Amazon SQS
    メッセージ
    2000件
    AWS Lambda

    View full-size slide

  42. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    © 2023, Amazon Web Services, Inc. or its affiliates.
    さまざまなデータストアと
    ポリグロットパーシスタンス

    View full-size slide

  43. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    ⼀般的なデータモデルとユースケース
    リレーショナル
    参照整合性、
    ACID トランザ
    クション、
    スキーマオン
    ライト
    リフト・アンド・
    シフト、ERP、
    CRM、ファイナン

    キーバリュー
    ⾼スループット、
    低レイテンシーの
    読み取り/書き込み、
    スケーラビリティ
    リアルタイム⼊
    札、ショッピン
    グカート、ソー
    シャル、製品カ
    タログ、お気に
    ⼊り
    ドキュメント
    ドキュメントを
    保存し、あらゆ
    る属性のクエリ
    にすばやく
    アクセス
    コンテンツ管理、
    パーソナライズ、
    モバイル
    インメモリ
    ミリ秒の
    レイテンシでの
    キーによる
    クエリ
    リーダーボード、
    リアルタイム分析、
    キャッシング
    グラフ
    各データの関連
    性の素早く簡単
    な⽣成とその間
    の移動
    不正検出、ソー
    シャルネット
    ワーキング、レ
    コメンデーショ
    ンエンジン
    時系列
    時間的に連続し
    たデータの収集、
    保存、処理
    IoT アプリ、
    イベント追跡
    元帳
    アプリケーション
    データに対するす
    べての変更の完全
    で不変で
    検証可能な履歴
    システム
    記録、サプライ
    チェーン、
    ヘルスケア、
    登録、
    ファイナンス
    ⼀般的な
    使⽤事例
    データ
    モデル
    ワイドカラム
    スケーラブル、⾼可
    ⽤性、マネージド
    Apache Cassandra
    ̶ 互換サービス
    低レイテンシーの
    アプリを構築し、
    オープンソースを
    活⽤し、
    Cassandra をク
    ラウドに移⾏する
    Amazon
    Aurora
    Amazon
    RDS
    Amazon
    DynamoDB
    Amazon
    documentDB
    Amazon
    Timestream
    Amazon
    Neptune
    Amazon
    ElastiCach
    e
    Amazon
    QLDB
    Amazon キース
    ペース (Apache
    カサンドラ⽤)
    Redis ⽤
    Amazon
    MemoryD
    B

    View full-size slide

  44. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    © 2023, Amazon Web Services, Inc. or its affiliates.
    Amazon DynamoDBの活⽤

    View full-size slide

  45. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    Amazon DynamoDB
    SQL-ストレージに最適化 NoSQL-コンピューティングに最適化
    正規化/リレーショナル ⾮正規化/階層
    アドホッククエリ インスタンス化されたビュー
    垂直⽅向にスケール ⽔平⽅向にスケール
    OLAPに適している ⼤規模な OLTP* 向けに構築
    (*) DynamoDBについて。分析ワークロード⽤の NoSQL データベースも⼀部ある

    View full-size slide

  46. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    © 2023, Amazon Web Services, Inc. or its affiliates.
    Amazon DynamoDBの詳細については
    「Amazon DynamoDB Deep Dive」
    セッションで詳しく。

    View full-size slide

  47. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    © 2023, Amazon Web Services, Inc. or its affiliates.
    Amazon DynamoDBの
    データモデリング

    View full-size slide

  48. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    本⽇は時間の関係で割愛。以下のセッションを参照
    https://www.youtube.com/watch?v=DIQVJqiSUkE
    Alex DeBrieさんの
    re:Invent 2019のセッションが
    とても分かりやすいので
    ぜひこちらをご覧ください。

    View full-size slide

  49. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    © 2023, Amazon Web Services, Inc. or its affiliates.
    ポイント︓
    リレーショナルデータベースに
    ついて知っていることは
    忘れてください︕

    View full-size slide

  50. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    DynamoDB ̶ 追加機能
    • Auto Scaling ̶ 予想によるプロビジョニングが不要に
    • オンデマンドキャパシティ ̶ リクエストに合わせてDDBの料⾦を
    ⽀払うことができ、事前のキャパシティ計画が不要
    • TTL ̶ 有効期限による⾃動削除
    • アダプティブキャパシティ ̶ 不均質なアクセスに⾃動的に対応
    • DAX ̶ DynamoDB アクセラレータ

    View full-size slide

  51. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    DynamoDB ローカル ̶ 開発者向け
    • ネットワーク接続や AWS へのアクセスは不要
    • 完全な DynamoDB API をサポートする
    クライアント側データベース
    • 実⾏可能な Java アーカイブ (JAR) ファイルとして利⽤可能
    • Windows、Mac、および Linux システムのサポート
    AWS.config.dynamodb ={
    endpoint: config.debug.dynamoDBLocalEndpoint,
    region: config.region
    };

    View full-size slide

  52. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    © 2023, Amazon Web Services, Inc. or its affiliates.
    デザインパターン:
    DynamoDB Streams
    によるイベントトリガー

    View full-size slide

  53. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    Lambda 関数から
    変更したレコードへアクセス
    DynamoDB Streamsと AWS Lambda
    Invocation
    role
    ユーザー
    アプリ
    テーブル データ
    ストリーム
    Execution
    role
    DynamoDB

    View full-size slide

  54. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    Lambda 関数
    他のシステムへの
    変更通知
    テーブルの更新
    Amazon
    OpenSearch Service
    Amazon ElastiCache
    DynamoDB Streams
    トリガー

    View full-size slide

  55. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    © 2023, Amazon Web Services, Inc. or its affiliates.
    デザインパターン:
    書き込み量の多い
    パーティションキーを
    シャーディングする

    View full-size slide

  56. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    パーティション 1
    1000 WCU
    ⼈気のある
    候補 A
    ⼈気のある
    候補 B
    50,000/

    200,000 WCU のプロビジョニング
    キーは「ホット」になり、
    パーティションで使⽤可能な
    WCU を使い切る
    70,000/ 秒
    「Votes」テーブル
    リアルタイム投票の例
    パーティション K
    1000 WCU
    パーティション M
    1000 WCU
    パーティション N
    1000 WCU
    有権者
    200⼈の候補に投票する

    View full-size slide

  57. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    Adaptive Capacityの利⽤

    View full-size slide

  58. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    Candidate
    A_2
    Candidate
    B_1
    Candidate
    B_2
    Candidate
    B_3
    Candidate
    B_5
    Candidate
    B_4
    Candidate
    B_7
    Candidate
    B_6
    Candidate
    A_1
    Candidate
    A_3
    Candidate
    A_4
    Candidate
    A_7
    Candidate
    B_8
    Candidate
    A_6
    Candidate
    A_8
    Candidate
    A_5
    任意の ID
    (ただし決定論的)
    をパーティション
    キーに追加して、
    書き込みをシャード
    UpdateItem:「CandidateA_」+rand(0, 10)
    投票に 1 を追加
    書き込みシャーディング
    有権者
    「Votes」テーブル

    View full-size slide

  59. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    Candidate
    A_2
    Candidate
    B_1
    Candidate
    B_2
    Candidate
    B_3
    Candidate
    B_5
    Candidate
    B_4
    Candidate
    B_7
    Candidate
    B_6
    Candidate
    A_1
    Candidate
    A_3
    Candidate
    A_4
    Candidate
    A_5
    Candidate
    A_6
    Candidate
    A_8
    Candidate
    A_7
    Candidate
    B_8
    定期的
    なプロ
    セス
    候補 A
    合計 :2,500M
    1.Sum
    2.保存
    集計結果を読み取る「Scatter&Gather」
    有権者
    「Votes」テーブル

    View full-size slide

  60. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    © 2023, Amazon Web Services, Inc. or its affiliates.
    デザインパターン:
    読み取りの多い
    パーティションキーの
    スケーリング

    View full-size slide

  61. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    製品 A 製品 B
    70,000/ 秒
    ⼈気商品による不均等な
    アクセスパターン
    製品カタログ - ⼈気商品
    Shoppers
    ProductCatalog
    テーブル
    パーティ
    ション 1
    2000 WCU
    パーティ
    ション K
    2000 WCU
    パーティ
    ション M
    2000 WCU
    パーティ
    ション N
    2000 WCU

    View full-size slide

  62. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    人気商品による不均等な
    アクセスパターン

    View full-size slide

  63. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    フルマネージド、⾼可⽤性、
    インメモリキャッシュ
    Java, .NET, Python,
    Go & Javascript をサポート
    クラスターベース、
    マルチ AZ
    クエリとアイテムの
    キャッシュを分離
    DynamoDB Accelerator (DAX)

    View full-size slide

  64. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    従来のサイドキャッシュとの⽐較
    キャッシュ
    アプリ

    View full-size slide

  65. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    従来のサイドキャッシュとの⽐較
    DynamoDB Accelerator (DAX)
    アプリ
    キャッシュ
    アプリ

    View full-size slide

  66. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    ⾼いキャッシュヒット率

    View full-size slide

  67. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    © 2023, Amazon Web Services, Inc. or its affiliates.
    まとめ

    View full-size slide

  68. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    まとめ
    • マイクロサービスは変化に素早く対応し、フィードバックを得て
    改善を重ねるビジネスにマッチしている
    • マイクロサービスにはトレードオフがあり、マイクロサービスに
    適した組織にする必要がある
    • マイクロサービスは機能や技術スタックによる分割ではなく
    ドメインによる分割を⾏う
    • マイクロサービスではデータソースの選択もポイントのひとつ
    • Amazon DynamoDBを活⽤するためにはRDBMSの概念を捨てる
    ことも必要

    View full-size slide

  69. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    © 2023, Amazon Web Services, Inc. or its affiliates.
    Appendix

    View full-size slide

  70. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    © 2023, Amazon Web Services, Inc. or its affiliates.
    マイクロサービスに適した組織

    View full-size slide

  71. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    マイクロサービスの組織とチームビルディング
    • ⾃律的で意思決定する権限と責任を持つチーム
    • 開発したチームが運⽤も⾏う(You build it, you run it)
    • Two Pizza Team
    • すべてを所有

    View full-size slide

  72. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    参考︓チームトポロジー
    ストリームアラインドチーム
    ストリームアラインドチーム
    ストリームアラインドチーム
    共有サービスプラットフォームチーム
    内部プラットフォームチーム
    ][
    セキュリティ
    コミュニティ・オブ・
    プラクティス(CoP)
    プラットフォーム + ツール
    )(
    )(
    フィールドチーム (サポート、ソリューションアーキテクト、営業)
    O
    製品機能のリクエスト
    ストリームアラインドチーム
    ビジネスに沿った⽬標を持つチーム
    イネーブリングチーム
    ストリームアラインドチームが
    障害を克服するのを⽀援。
    コンプリケイテッド・
    サブシステムチーム
    専⾨性が必要な機能を担当する
    専⾨スキルを持つチーム
    コラボレーション
    ファシリテーション
    O
    )(
    フェデレーションサービス
    (X-as-a-Service)
    ][
    データ
    サイエン
    スチーム
    サービスとしてのプラットフォーム
    キー:
    )(
    )(
    ][
    * マシュー・スケルトン,マニュエル・パイス. チームトポロジー 価値あるソフトウェアをすばやく届ける適応型組織設計 (Japanese Edition). Kindle Edition.

    View full-size slide

  73. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    1994-2001 2002+
    モノリシックアーキテクチャ +
    階層化組織
    サービスの分割 + Two-pizzaチーム
    1000+マイクロサービス
    100+ purpose-built databases
    Amazonにおけるデプロイメント変遷︓2001-2002

    View full-size slide

  74. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    コンポーネントの分割
    • 原則
    • 可能な限り⼩さなユニットにする(プリミティブ)
    • データドメインの作成
    • 関数単位ではなくスケールファクタによる分割
    • 個々のサービスは独⽴して運⽤
    組織間の連携による待ち時間の発⽣を抑える
    • サービス間はAPI(契約)で連携
    これにより組織の変更が導かれました

    View full-size slide

  75. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    組織の再編成の開始
    “Two-pizza” teams
    • サービスを所有
    • 制約を最⼩化
    (コンウェイの法則)
    • 意思決定のための⾃⽴した組織

    View full-size slide

  76. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    組織の再編成の開始
    ひとつのチームでどうやって実⾏するのか?
    すべてを所有
    • 計画
    • セキュリティ
    • パフォーマンス
    • スケーラビリティ
    • デプロイメント
    • 運⽤
    • バグ
    • ⽂書化
    • テスト…

    View full-size slide

  77. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates. 77
    専任のシングルスレッド化されたチームでフローを最適化
    専任の商品担当チーム
    商品開発
    商品化
    商品マネージャー
    プロジェクトマネージャー
    開発者
    テスト担当者
    インフラ担当者
    運営とサポート
    商品チーム B
    商品チーム A
    商品チーム C
    バックログ A
    • ストーリー 1
    • ストーリー 2
    • ストーリー 3
    • ストーリー 4
    バックログ A
    • ストーリー 1
    • ストーリー 2
    • ストーリー 3
    • ストーリー 4
    バックログ A
    • ストーリー 1
    • ストーリー 2
    • ストーリー 3
    • ストーリー 4

    View full-size slide

  78. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    スクラムロール例
    スクラムマスター、開発者、プロダクトオーナー
    チームにアジャイルな⽅法論を適⽤
    スクラムボード例

    View full-size slide

  79. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    組織内の “サイロ” 化が勢いを無くす要因
    オペレーション
    データベース
    チーム
    品質保証
    アプリケーション
    セキュリティ
    ソフトウェア
    開発チーム
    “開発環境のセットアップを
    待機するため作業を中断"
    “新しいテーブルや SQL スクリプトを
    待機するため作業を中断"
    “パフォーマンステストを
    待機するために作業を中断"
    “ ソースコードの⼿動検査を
    待機するため作業を中断 "
    “データベースセキュリティの承認待機するため作業を中断"
    “セキュリティテストの完了を
    待機するため作業を中断"
    “セキュリティ証明書の作成を
    待機するため作業を中断"
    “データベースホストのセットアップを
    待機するため作業を中断"
    “新しいテストのホストを待機するために作業を中断 ”

    View full-size slide

  80. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    マイクロサービスはDevOpsのスタイルで運⽤すべき
    オペレーション
    データベー
    ス管理者
    品質保証
    (テスト担当者)
    アプリケーション
    セキュリティ
    ソフトウェア開発
    チーム
    “共働"

    View full-size slide

  81. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    © 2023, Amazon Web Services, Inc. or its affiliates.
    ドメインモデルとインフラ
    コードの分離

    View full-size slide

  82. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    作成したモデルをコードに反映
    • 戦術的DDD
    § ドメインモデルを実装に反映する
    § モデルと実装は繰り返し改善する
    § ドメインモデルがビジネスロジックに対する責務を持つ
    § ドメインモデルとインフラストラクチャを分離する
    – 依存関係逆転の原則により、ドメイン層をシステム的な関⼼ごとから分離
    – ヘキサゴナル/オニオン/クリーンアーキテクチャ

    View full-size slide

  83. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    参考︓ヘキサゴナルアーキテクチャ
    Domain
    Model
    Ports
    Adapters
    Primary Actor Secondary
    Actor
    HTTP Request
    Event Message
    Queue

    File Storage
    Database
    Queue

    View full-size slide

  84. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    参考︓ヘキサゴナルアーキテクチャ
    Domain
    Model
    Ports
    Adapters
    Primary Actor Secondary
    Actor
    HTTP Request
    Event Message
    Queue

    File Storage
    Database
    Queue

    アプリケーションはポートによって接続される
    アダプタは外界との糊の役⽬を果たす
    ドメインモデルはビジネスロジックを実⾏し、モデルの外側
    についての知識を持たない

    View full-size slide

  85. AWSにおけるマイクロサービスとNOSQLの活⽤
    © 2023, Amazon Web Services, Inc. or its affiliates.
    参考︓ヘキサゴナルアーキテクチャのサンプルコード
    • ヘキサゴナルアーキテクチャを利⽤したLambda関数のドメインモ
    デルの実装Live
    § 動画︓ https://www.youtube.com/watch?v=whQ-P05QeDQ
    § 資料︓ https://pages.awscloud.com/rs/112-TZM-766/images/DEV-
    09_LiveCoding_with_hexagonal_architecture.pdf
    • ヘキサゴナルアーキテクチャを利⽤した AWS Lambda のドメイン
    モデルオブジェクトサンプルコード
    https://github.com/aws-samples/aws-lambda-domain-
    model-sample

    View full-size slide