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

AWSにおけるモダンアプリケーション開発のベストプラクティス /best practi...

Atsushi Fukui
September 11, 2023

AWSにおけるモダンアプリケーション開発のベストプラクティス /best practices for modern application development on aws

AWSにおけるモダンアプリケーション開発のベストプラクティス

Atsushi Fukui

September 11, 2023
Tweet

More Decks by Atsushi Fukui

Other Decks in Technology

Transcript

  1. © 2023 Amazon Web Services, Inc. or its Affiliates. 福井

    厚 Atsushi Fukui シニアソリューションアーキテクト Developerスペシャリスト - DevAx アマゾンウェブサービスジャパン合同会社 AWSにおける モダンアプリケーション開発 ベストプラクティス 2023/04/17
  2. © 2023, Amazon Web Services, Inc. or its Affiliates. ⾃⼰紹介

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

    o なぜクラウドネイティブなモダンアプリケーションが求められているのか o 内製化、バイモーダルな組織への移⾏ o クラウドネイティブなモダンアプリケーションの特⻑ o モダンアプリケーション開発のベストプラクティス o モダンアプリケーションへの移⾏ o まとめ
  4. © 2023, Amazon Web Services, Inc. or its Affiliates. 7割

    33 年 企業を取り巻く環境の変化 1964 年 ⽼朽システムが、DXの⾜かせ になっていると感じている S&P 500 の企業の平均寿命 12 年 2027 年 出典: Innosight 「2018 Corporate Longevity Forecast」 出典:経済産業省 「DX レポート」 https://www.meti.go.jp/press/2018/09/20180907010/20180907010-2.pdf レガシーが⾜かせ
  5. © 2023, Amazon Web Services, Inc. or its Affiliates. 書店︖

    タクシー︖ DVD︖ 業界の再定義 ホテル︖ 気分や⽬的に合わせた 宿泊体験 不安、⾯倒のない タクシー移動 いつでもどこでも 娯楽を提供 世界最⼤の 宿泊サービス提供 世界最⼤規模の配⾞事業 世界有数の エンターテイメント 世界最⼤規模の EC で 品揃え・低価格・利便性を提供 Amazon Account を使⽤し⾳ 楽・映画等のサービス提供
  6. © 2023, Amazon Web Services, Inc. or its Affiliates. 『

    』 https://www.economist.com/weeklyedition/2015-08-0 “…innovation is now recognized as the single most important ingredient in any modern economy…” イノベーション こそが近代経済において 最も重要な要素と考えられている。 競合よりも早く、新しい波を 創っていくことが重要
  7. © 2023, Amazon Web Services, Inc. or its Affiliates. イノベーションがビジネスを進化させる

    新たなマーケット 新たな顧客価値 New economics 新たなデジタル製品とサービス
  8. © 2023, Amazon Web Services, Inc. or its Affiliates. 9

    競合への優位性を保つためには、ビジネスは可能な限り 迅速でコスト効率良くイノベーションを起こさなければならない フィードバック アイデア 実験 Innovation Flywheel モジュラーアーキテクチャ より⾼速なリリースサイクル より⼩さな単位、⼩さなリスク 低コストの変更 データ駆動の洞察⼒ インクリメンタルなリリース 低コストの変更 ITへの影響 ITへの影響 ITへの影響
  9. © 2023, Amazon Web Services, Inc. or its Affiliates. なぜモダン化するのか?

    顧客満⾜ 市場への迅速 な投⼊ ビジネス リスクの低減 収⽀改善 業績向上 ü パーソナライズ ü スケーラビリテ ィーの改善 ü 反応の速さ ü 従業員の⽣産性 ü ビジネスのアジリ ティーとスピード ü 実験コストの削減 ü 硬いセキュリティ ü 弾⼒性の改善 ü コスト削減 ü ⾃動化 ü 無駄の削減 ü イノベーション ü グローバル化 ü 新規市場の拡⼤
  10. © 2023, Amazon Web Services, Inc. or its Affiliates. バイモーダル

    バイモーダルとは、2 つの異なる組織形態を企業内に取り⼊れること モード1 は、より予測可能でよく理解されている領域向けに最適化されています。 これは、従来の環境をデジタル世界に適した状態に刷新しながら、既知のものを活⽤ することに重点を置いています。 モード2 は探索的であり、新しい問題を解決するために実験し、不確実性の領域に最 適化されています。これらのイニシアチブは、多くの場合、短い反復を含むプロセス 中にテストおよび適応される仮説から始まり、実⽤最⼩限の製品 (MVP) アプローチ を 採⽤する可能性があります。 どちらのモードも、価値を⽣み出し、変化を推進するために不可⽋です。モード1と モード2を組み合わせることが、企業のDXにおいて重要な役割を果たします。 Gartner IT Glossary “Bimodal” https://www.gartner.com/en/information- technology/glossary/bimodal
  11. © 2023, Amazon Web Services, Inc. or its Affiliates. バイモーダル

    モード1 モード2 守りのIT 攻めのIT 安定性 スピード
  12. © 2023, Amazon Web Services, Inc. or its Affiliates. バイモーダル

    モード1 モード2 IT導⼊理由は効率化による コスト削減 探索型 トップが決定したことを 統率⼒を持って実⾏ ボトムからの繰り返し探索で 結果を出す 予測可能型 IT導⼊理由は差別化による 利益拡⼤
  13. © 2023, Amazon Web Services, Inc. or its Affiliates. バイモーダル

    モード1 モード2 ネクタイ、スーツ、古臭い 遅い、頭かたい 茶髪、ちゃらちゃらしてる 責任感ない︖ 互いの印象
  14. © 2023, Amazon Web Services, Inc. or its Affiliates. ガーディアンの重要性

    モード1 モード2 ネクタイ、スーツ、古臭い 遅い、頭かたい 茶髪、ちゃらちゃらしてる 責任感ない︖ 互いの印象 ガーディアン 双⽅に敬意をはらいつつ 間に⼊り調整を⾏う
  15. © 2023, Amazon Web Services, Inc. or its Affiliates. バイモーダル

    モード1 • ウォーターフォール • ⼗分な検討を経て実施 • アプリとインフラチーム • 利⽤費: 確保型 • システム品質: それぞれに確保 モード2 • アジャイル • Try & Error • アプリとインフラの垣根がない • 利⽤費: 実績ベース • システム品質: ⼀定レベルを担保 計画・概要設計 詳細設計 開発 … 計 画 実プロジェクトベースのPoC 実践しながら調整していく 設 計 … … 次の新しいことへ
  16. © 2023, Amazon Web Services, Inc. or its Affiliates. バイモーダル

    モード1 モード2 システム特性 SoR (System of Record) SoE (System of Engagement) システム要件 正確性、安全性、堅牢性 迅速性、柔軟性、スケール 開発⼿法 ウォーターフォール型 アジャイル型 規模 ⼤規模、⻑期 ⼩さく始めて、⼤きく成⻑ 経営的視点 効率性、ROI 新規性、⼤きなリターン 利⽤費⽤ 確保型 変動型、実績ベース マインド 失敗しないこと 早めに失敗して、成⻑すること 評価 減点⽅式 加点⽅式 業務 予測可能 未知の探索 運⽤者 IT部⾨が集中管理 ユーザー部⾨が分散管理 事業ループ PDCAループ (plan, do, check, act) OODAループ (observe, orient, decide, act) リリースサイクル ⽉次、年次 ⽇次、週次 プロダクト 万能の製品や完全な製品 (が期待される) MVP (Minimum Viable Product) EVP (Exceptional Viable Product)
  17. © 2023, Amazon Web Services, Inc. or its Affiliates. バイモーダル組織の構築と進化

    権限委譲 • CIO/CTO を設け、 権限委譲して少数 精鋭チームを構成 する バイモーダルの導⼊ • 早期に成果を得ら れそうなプロダク トにモード2を適 ⽤する モダナイゼーション • 変化に柔軟に対応 するためクラウド に移⾏し早期に ⼩さな成功体験 ( MVP ) を得る モード2の領域を拡⼤ • 新サービスにモード 2を適⽤、次第に モード1を取り込ん でいき グラデーショ ン組織化 モード1とモード2 の垣根をなくす • モード間を API や イベント駆動でつ なぎ 疎結合でシー ムレス化
  18. © 2023, Amazon Web Services, Inc. or its Affiliates. クラウドネイティブなモダンアプリケーションとは

    o イノベーションによって競争的差別化を作り出すためにクラウドが 提供する様々なサービスを利⽤して o セキュリティー担保しガバナンスや統制を保ちつつも o 素早く、頻繁に機能をリリースすることが可能で o スケーラビリティーや弾⼒性、可⽤性に優れ o 疎結合でイベント駆動なアーキテクチャを持ち o 観測性、障害対応性に優れている
  19. © 2023, Amazon Web Services, Inc. or its Affiliates. Secure

    Resilient Elastic Modular Automated Interoperable モダンアプリケーションの能⼒
  20. © 2023, Amazon Web Services, Inc. or its Affiliates. モダンアプリケーション開発のベストプラクティス

    ⎕ アプリケーションのライフサイクル全体に渡ってコンプライアンス とセキュリティを構築する ⎕ アプリケーションの構造をマイクロサービスの集まりにする ⎕ 可能な限りサーバーレスの技術で構築する ⎕ アプリケーションのモデリングとインフラにコードを利⽤する ⎕ CI/CDを利⽤して⾼品質な機能を迅速にリリースする ⎕ モニタリングによってアプリケーションの振る舞いの洞察を得る
  21. © 2023, Amazon Web Services, Inc. or its Affiliates. アプリケーションのライフサイクル全体に渡ってコンプライアンスとセキュリティを構築する

    ライフサイクルをセキュアにすることでイノベーションの速 度を落とすことなく脅威に対応 Authenticate Authorize Audit & Govern Validate 強⼒なアクセス制御で認 証されていないアクセス を防ぐ 柔軟なポリシーを使⽤し てロールベースのアクセ ス制御を実装する アプリケーションの振る 舞いを評価し、コンプラ イアンス要件に従ってい ることを確認する 各ステップを検証し、ソ リューションが意図した とおりに機能することを 確認する
  22. © 2023, Amazon Web Services, Inc. or its Affiliates. アプリケーションのライフサイクル全体に渡ってコンプライアンスとセキュリティを構築する

    イノベーションの速度を下げずにセキュリティを担保 ⾃動化された、継続的な セキュリティ評価
  23. © 2023, Amazon Web Services, Inc. or its Affiliates. シークレット検出

    漏洩防止 セキュアなコーディングプラクティス 動的コード解析 脆弱性テスト ペネトレーションテスト 静的コード解析 使用するライブラリの コンプライアンス コンプライアンスチェック 環境設定 秘匿情報と鍵の管理 セキュアなネットワーク設計 Well-Architected アーキテクチャのガードレール コンプライアンス 脆弱性評価 シークレット管理 セキュリティ監視の有効化 コンプライアンスチェックの 有効化 脆弱性評価 ペネトレーションテスト コンプライアンスチェック 行動異常 脅威モデリング
  24. © 2023, Amazon Web Services, Inc. or its Affiliates. AWS

    Identity and Access Management (IAM) AWS Single Sign-On AWS Organizations AWS Directory Service Amazon Cognito AWS Resource Access Manager AWS Security Hub Amazon GuardDuty Amazon Inspector Amazon CloudWatch AWS Config AWS CloudTrail VPC Flow Logs AWS IoT Device Defender AWS Firewall Manager AWS Network Firewall AWS Shield AWS WAF – Web application firewall Amazon Virtual Private Cloud AWS PrivateLink AWS Systems Manager Amazon Macie AWS Key Management Service (KMS) AWS CloudHSM AWS Certificate Manager AWS Secrets Manager AWS VPN Server-Side Encryption Amazon Detective CloudEndure DR AWS Config Rules AWS Lambda AWS のセキュリティソリューション AWS Artifact AWS Audit Manager ID とアクセス管理 インフラ 保護 インシデント 対応 データ 保護 コンプライアンス 発⾒的制御
  25. © 2023, Amazon Web Services, Inc. or its Affiliates. アプリケーションの構造をマイクロサービスの集まりにする

    変更の影響は⼩さくなると、リリースの速度が向上可能に Monolith すべてを実⾏ Microservices ひとつのことを実⾏
  26. © 2023, Amazon Web Services, Inc. or its Affiliates. アプリケーションの構造をマイクロサービスの集まりにする

    APIと疎結合なコミュニケーションが⾃動化を 可能にして信頼性を向上 FUNCTION API API MICROSERVICE FUNCTION EVENT API MICROSERVICE EVENT API MICROSERVICE APPLICATION
  27. © 2023, Amazon Web Services, Inc. or its Affiliates. アプリケーションの構造をマイクロサービスの集まりにする

    ワークフローで複数のサービスを連携することで、 敏捷性、⽣産性、および柔軟性が向上 データと処理の状態を トラッキング 冗⻑なコードを削除
  28. © 2023, Amazon Web Services, Inc. or its Affiliates. AWS

    Step Functions • 弾⼒性のあるワークフローオートメーション • 組み込みのリトライ、エラーハンドリング • AWSサービスとの強⼒な統合 • 同期型Express Workflowも提供 • ビジュアル編集可能な Step Functions Workflow Studio o フルマネージドなオーケストレーター
  29. © 2023, Amazon Web Services, Inc. or its Affiliates. サーバーレス

    とは︖ サーバーがない? サーバーの存在を意識しない
  30. © 2023, Amazon Web Services, Inc. or its Affiliates. サーバーレス

    とは︖ サーバーがない? サーバーの存在を意識しない • ユーザーコントロール可能なサーバーを前提としない • AWSのフルマネージドな管理
  31. © 2023, Amazon Web Services, Inc. or its Affiliates. 従来型の三階層アプリケーションアーキテクチャ

    Web サーバー プレゼンテーション層 App サーバー ビジネスロジック DB サーバー データ層 Apache, Nginx 等 Tomcat, Weblogic 等 Oracle, MySQL 等
  32. © 2023, Amazon Web Services, Inc. or its Affiliates. モダンな三階層アプリケーションアーキテクチャ

    プレゼンテーション ビジネスロジック データ キュー/メッセージ イベント イベント APIで統合
  33. © 2023, Amazon Web Services, Inc. or its Affiliates. AWS

    Lambda AWS Fargate Amazon API Gateway Amazon SNS Amazon SQS AWS Step Functions コンピュート データストア インテグレーション AWS AppSync Amazon Aurora Serverless Amazon S3 Amazon DynamoDB Amazon EventBridge
  34. © 2023, Amazon Web Services, Inc. or its Affiliates. AWSによって管理されるもの:

    お客様が管理すべきもの: • データソース統合 • 物理的ハードウェア、ソフトウェ ア、ネットワーキング、施設 • プロビジョニング • アプリケーション コード • コンテナオーケストレーション、 プロビジョニング • クラスタのスケーリング • ハードウェア、ホストOS/カーネル ネットワーキング、施設 • アプリケーションコード • データソース連携 • セキュリティ設定および アップデート、 ネットワーク設定 • 管理タスク • コンテナオーケストレーション 制御プレーン • ハードウェア、ソフトウェア ネットワーキング、施設 • アプリケーションコード • データソース連携 • 稼働するクラスタ • セキュリティ設定および アップデート、ネットワー ク設定、 ファイアウォール • 管理タスク • 物理的ハードウェア、ソフト ウェア、ネットワーキング、 施設 • アプリケーションコード • データソース連携 • スケーリング • セキュリティ設定および アップデート、 ネットワーク設定 • 管理タスク • プロビジョニング、 管理スケーリング およびサーバーのパッチ 当て 計算資源 - 運⽤責任の⽐較 AWS Lambda サーバーレスファンクション AWS Fargate サーバーレスコンテナ Amazon ECS/EKS サービスとしてのコンテナ 管理 Amazon EC2 サービスとしてのインフラ Less More カバー範囲
  35. © 2023, Amazon Web Services, Inc. or its Affiliates. 可能な限りサーバーレスの技術で構築する

    ⾃動化と抽象化によって課題から開放 インフラストラクチャの プロビジョニングや管理が不要 利⽤単位ごとに オートスケール 価値に対して⽀払う 課⾦モデル ⾼い可⽤性と耐久性
  36. © 2023, Amazon Web Services, Inc. or its Affiliates. 可能な限りサーバーレスの技術で構築する

    サーバーレス アーキテクチャは最⼩の努⼒で最⼤の アジリティを提供 Focus on creating business value Remove heavy lifting with serverless everything CUSTOMER AWS Messaging & Orchestration Compute Physical Infrastructure API Business logic Storage & Databases
  37. © 2023, Amazon Web Services, Inc. or its Affiliates. 可能な限りサーバーレスの技術で構築する

    コンピュートの選択はトランスフォーメーションの 核⼼ サーバーレスコンテナ ロングランニング OSを抽象化 フルマネージド オーケストレーション フルマネージド クラスタスケーリング AWS Fargate サーバーレス ファンクション イベント駆動 多言語ランタイム データソースとの統合 サーバー管理不要 AWS Lambda
  38. © 2023, Amazon Web Services, Inc. or its Affiliates. アプリケーションのモデリングとインフラにコードを利⽤する

    すべてをソフトウェアとして扱うことでインフラの デプロイのスピードとアジリティを向上 設計 アプリケーション コードの記述 インフラ テンプレートの 作成 スタックの作成 繰り返し
  39. © 2023, Amazon Web Services, Inc. or its Affiliates. アプリケーションのモデリングとインフラにコードを利⽤する

    AWS Cloud Development Kit(CDK) CDK Application CloudFormatio n Template Stack(s) Construct Construct Resources AWS CloudFormation Amazon Simple Queue Service AWS Lambda Amazon S3 bucket Amazon DynamoDB https://github.com/awslabs/aws-cdk
  40. © 2023, Amazon Web Services, Inc. or its Affiliates. 30x

    頻繁なデプロイ 440x リードタイムの短縮 60x ミスが減少 -21% 予期しない作業の削減 +44% 新しい作業 https://puppet.com/resources/whitepaper/2017-state-of-devops-report CI/CDを利⽤して⾼品質な機能を迅速にリリースする CI/CDを⾃動化しているチームは コードをより速く、⾃信を持って書いている
  41. © 2023, Amazon Web Services, Inc. or its Affiliates. CI/CDを利⽤して⾼品質な機能を迅速にリリースする

    AWS Developer Tools for CI/CD AWS CodeBuild + Third Party AWS CodeCommit AWS CodeBuild AWS CodeDeploy AWS X-Ray Source Build Test Deploy Monitor AWS CodePipeline
  42. © 2023, Amazon Web Services, Inc. or its Affiliates. モニタリングによってアプリケーションの振る舞いの洞察を得る

    より速く問題を識別すると、より速く解決できる メトリックス、 ログとトレース モニタリング、デ バッグ、アラート リソースとアプリ ケーションの 可視化 リアルタイム インサイト MONITORING OBSERVABILITY
  43. © 2023, Amazon Web Services, Inc. or its Affiliates. モニタリングによってアプリケーションの振る舞いの洞察を得る

    AWSモニタリングとトレーシング クラウドリソースとアプリケーションに 可視性をもたらす o アプリケーションのモニタリング o パフォーマンス変化に応答 o リソース使⽤率を最適化 o オペレーショナルヘルスを⼀元観察 プロダクション環境、分散アプリケー ションの分析とデバッグ o 性能のボトルネックを特定 o 根本原因をトラブルシュート o あらゆるアプリケーションの ユーザーリクエストをトレース
  44. © 2023, Amazon Web Services, Inc. or its Affiliates. 最も重要なことは何か

    ビジネスエキスパートの要件を正しくサービスに反映すること モダンアプリケーションでビジネスをドライブする ビジネスのドメインモデルを正しく設計しコードに落とすこと これが最も重要なこと
  45. © 2023, Amazon Web Services, Inc. or its Affiliates. でもどうやって︖

    o サービスが価値を提供するためにはビジネスについての理解が必要 o そのためにはビジネスを理解している⼈(ドメインエキスパート)の知識 が必要不可⽋ o ドメインエキスパートの要件を正しくサービスに反映させる必要がある o そのためには正しくドメインモデルの設計を⾏い、実装コードに反映させ る必要がある o ではドメインモデルを正しく設計するにはどうすれば良いのか
  46. © 2023, Amazon Web Services, Inc. or its Affiliates. ドメイン駆動設計

    (Eric Evans - 2003) o 設計における意思決定とドメイン 設計の議論における技術的な⽤語の 広義のフレームワークを提供 o ユビキタス⾔語 ー ビジネスドメイン エキスパートと開発者の間の意思疎通 として利⽤される⽤語によって モデリングと設計を⾏う o 戦略的な設計のためのガイドライン 境界づけられたコンテキスト、 蒸留、⼤規模な構造の考察 o マイクロサービスによって再度注⽬ される
  47. © 2023, Amazon Web Services, Inc. or its Affiliates. 境界づけられたコンテキスト

    o 境界づけられたコンテキストはユビキ タス⾔語によって設計されたモデルを 適⽤できる限定された範囲 o コンテキストの境界を定めることで、 チームメンバーは何を⼀致させるべき で何を独⽴して開発できるのかについ ての理解を明確化し、共有できる https://www.martinfowler.com/bliki/BoundedContext.html Customer Ticket Product Product version Customer Product Territory Opportunity Pipeline Salesperson Defect Sales context Support context
  48. © 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)
  49. © 2023, Amazon Web Services, Inc. or its Affiliates. パブリッシュ/サブスクライブ

    • 特定ドメインのイベントを発⾏︓ ⼀貫した境界を適⽤する • 複数種類のカップリングに対応(Pub/Sub) • 個々のサブスクライバは個別の 境界づけられたコンテキストで ドメイン イベントに反応 • ドメインモデルのシンプルで効果的な ドメインイベントの発⾏⽅法︓軽量なオブザーバーパターン
  50. © 2023, Amazon Web Services, Inc. or its Affiliates. 詳しくはこちらをご参照ください︕

    o AWS DevAx::Connect シーズン1「イベント駆動」 o https://aws.amazon.com/jp/devax-connect-on-demand/
  51. © 2023, Amazon Web Services, Inc. or its Affiliates. まとめ

    ⎕ イノベーションがビジネスを加速する ⎕ そのためには失敗を恐れずに実験を繰り返す ⎕ モダン化するためには組織、カルチャーの変⾰が必要。バイモーダル な組織作りを考える ⎕ クラウドネイティブなサービスを利⽤してモダンアプリケーションを 素早くリリース ⎕ モダンアプリケーションのベストプラクティスを取り⼊れる ⎕ イベント駆動アーキテクチャがポイント