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

はこだてデベロッパーカンファレンス 開発者のためのAWS の始め方 / how to start AWS for developer

kanamsasa
February 18, 2023

はこだてデベロッパーカンファレンス 開発者のためのAWS の始め方 / how to start AWS for developer

kanamsasa

February 18, 2023
Tweet

More Decks by kanamsasa

Other Decks in Technology

Transcript

  1. © 2023, Amazon Web Services, Inc. or its affiliates.
    © 2023, Amazon Web Services, Inc. or its affiliates.
    金森政雄
    Solutions Architect, DevAx
    Amazon Web Services Japan G.K
    開発者のためのAWS の始め方
    2023年最新版

    View Slide

  2. © 2023, Amazon Web Services, Inc. or its affiliates.
    自己紹介
    • 金森 政雄
    Ø 所属/役職 :
    DevAx(Developer Acceleration) チーム
    ソリューションアーキテクト
    Ø 好きなサービス
    Amazon Elastic
    Container Service
    AWS Step Functions AWS Fault Injection
    Simulator

    View Slide

  3. © 2023, Amazon Web Services, Inc. or its affiliates.
    このセッションでお話しすること
    • 皆さんのアプリケーション開発にクラウドがどのように役⽴つのか
    • AWS でアプリケーション開発を始めるときの選択肢のご紹介
    • クラウドでのアプリケーション開発において意識していただきたいこと
    (本当は話したいけど)お話ししないこと
    • AWS のアカウントの作り⽅などの最も基礎的なところ
    • DevOps、セキュリティとガバナンスなどの実運⽤/⾃動化の話
    3

    View Slide

  4. © 2023, Amazon Web Services, Inc. or its affiliates.
    © 2023, Amazon Web Services, Inc. or its affiliates.
    現代のアプリケーションに
    求められるもの
    4

    View Slide

  5. © 2023, Amazon Web Services, Inc. or its affiliates.
    質問
    5
    皆さんのアプリケーションは、
    どのくらいの頻度でデプロイされていますか?

    View Slide

  6. © 2023, Amazon Web Services, Inc. or its affiliates. 6
    >150, 000, 000
    Amazonにおける1年間のデプロイ数
    平均すると1秒間に4.5回(0.21秒ごと)にデプロイ

    View Slide

  7. © 2023, Amazon Web Services, Inc. or its affiliates. 8
    デプロイ頻度
    の低下
    リリース速度
    の低下
    障害が増え、
    復旧に時間
    がかかる
    低いアジリティの影響
    0
    20
    40
    60
    RED YELLOW GREEN
    CIOによるIT プロジェクトのリスク評価
    2021 (64% Risk)
    6兆ドル以上
    世界全体のIT障害のコスト

    View Slide

  8. © 2023, Amazon Web Services, Inc. or its affiliates.


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

    View Slide

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

    View Slide

  10. © 2023, Amazon Web Services, Inc. or its affiliates.
    Listen
    Idea
    Experiment
    Innovation
    Flywheel
    実験がイノベーションを加速する

    View Slide

  11. © 2023, Amazon Web Services, Inc. or its affiliates.
    ⽅法、プロセス、ツール、組織構造などが
    アジリティを阻害している
    DevOps は組織的な変化であり、
    単なるツールの変更ではない
    開発者はモダンな開発⼿法使⽤した、
    モダンアプリケーションを構築できるようになる必要がある
    開発者は拡張可能でセルフサービスな
    プラットフォームを必要とする
    ⾃動化とテストにより継続的なデリバリをサポートしないと、
    ⾃信を持った開発は難しい
    アジリティが低下する理由...

    View Slide

  12. © 2023, Amazon Web Services, Inc. or its affiliates.
    Self-service Platforms
    without Gatekeepers
    何千人もの人々が大胆に実験や実行が可能な、
    強力なセルフサービスプラットフォームを
    作り出している
    そして、Amazonでもそれが使われている

    View Slide

  13. © 2023, Amazon Web Services, Inc. or its affiliates. 16
    Amazon Web Serviceとは

    View Slide

  14. © 2023, Amazon Web Services, Inc. or its affiliates.
    Amazon が、ビジネス課題解決のために作り上げたITを
    誰でもサービスとして利⽤できるようにしたもの
    ⼀般的にはクラウドコンピューティングと呼ばれている
    AWS (Amazon Web Services) とは

    View Slide

  15. © 2023, Amazon Web Services, Inc. or its affiliates.
    クラウドとは新しいITリソース利⽤のカタチ
    必要な時に、必要なだけ、低価格で
    ITリソースを提供

    View Slide

  16. © 2023, Amazon Web Services, Inc. or its affiliates.
    Amazon Web Serviceとは
    データセンター
    ストレージ機器
    サーバー
    ü 実際の使⽤分
    のみ⽀払い
    ü 市場投⼊と
    俊敏性の改善
    ü 初期投資不要
    ü スピード ü 容易なスケール
    アップ&ダウン
    ü 低額の変動費
    サービス化
    予め⼤規模に投資し準備する 必要な時に、必要なだけ、低価格で

    View Slide

  17. © 2023, Amazon Web Services, Inc. or its affiliates.
    マネージドサービスで
    さらに運⽤コストを低減
    ビジネスの本質ではない作業はAWSにアウトソースし
    運用コストを削減、サービス開発やアプリ構築などの作業に注力
    AWSサービスの一例
    • ロードバランサー(Elastic Load Balancing)
    • Data Warehouse(Amazon Redshift)
    • Hadoop/Spark (Amazon EMR)
    • メールサービス (Amazon Simple Email Service)
    • VDI(Amazon WorkSpaces,Amazon AppStream 2.0)
    • IoT (AWS IoT)

    View Slide

  18. © 2023, Amazon Web Services, Inc. or its affiliates.
    AWSサービスの本質はビルディングブロック。
    サービスを組み合わせることで、
    素早くアプリケーション構築が可能

    View Slide

  19. © 2023, Amazon Web Services, Inc. or its affiliates.
    AWS は幅広い選択肢を提供

    View Slide

  20. © 2023, Amazon Web Services, Inc. or its affiliates.
    200 以上のサービス
    AWS は幅広い選択肢を提供

    View Slide

  21. © 2023, Amazon Web Services, Inc. or its affiliates.
    © 2023, Amazon Web Services, Inc. or its affiliates.
    どこから始めれば良い?
    24

    View Slide

  22. © 2023, Amazon Web Services, Inc. or its affiliates.
    やりたいこと別 AWS 開発の始め⽅
    • よくあるWeb アプリケーションフレームワーク
    or コンテナ化されたWeb アプリケーションを開発したい
    • フロントエンド/モバイルのアプリケーションを開発したい
    • 開発環境やCI/CD が統合された開発環境が欲しい
    25

    View Slide

  23. © 2023, Amazon Web Services, Inc. or its affiliates.
    やりたいこと別 AWS 開発の始め⽅
    • よくあるWeb アプリケーションフレームワーク
    or コンテナ化されたWeb アプリケーションを開発したい
    • フロントエンド/モバイルのアプリケーションを開発したい
    • 開発環境やCI/CD が統合された開発環境が欲しい
    26

    View Slide

  24. © 2023, Amazon Web Services, Inc. or its affiliates.
    AWS サービスを組み合わせてインフラを構築
    柔軟性が高い
    VPC (ネットワーク)
    Fargate (コンピュート)
    ECS (オーケストレーション)
    ALB (ロードバランサ)
    AWS Auto Scaling (オートスケール)
    CodeBuild (CI/CD)
    手間がかかる

    View Slide

  25. © 2023, Amazon Web Services, Inc. or its affiliates.
    構築済みのインフラにすぐにデプロイ
    AWS App Runner
    インフラや AWS についての経験がなくても、
    コンテナ化されたウェブアプリケーションや API を
    簡単かつ迅速に AWS 上で動かせるサービス

    View Slide

  26. © 2023, Amazon Web Services, Inc. or its affiliates.
    ソースコード
    リポジトリ
    既存ツールを用いた
    コンテナイメージのビル

    コンテナイメージを
    ECR にプッシュ
    開発チーム
    App Runner による
    アプリケーションのビルド自動実行
    アプリケーションの
    デプロイ
    or
    AWS Copilot CLI からのデプロイにも対応
    柔軟なアプリケーションのビルドとデプロイ

    View Slide

  27. © 2023, Amazon Web Services, Inc. or its affiliates.
    AWS App Runner の仕様概略
    • ソースコード/イメージの変更を検知して⾃動でB/G デプロイ
    • トラフィック量に応じた⾃動スケール
    • ログとメトリクスの⾃動収集
    • 任意のVPC への接続(DB などの閉域の資源への接続)
    • TLSの⾃動設定や各コンテナの独⽴した実⾏などのセキュリティ
    • VPC からのみアクセスできるプライベートエンドポイント
    • 環境変数やカスタムドメイン
    • 料⾦ -> コンテナインスタンス課⾦+ アドオン課⾦
    ( https://aws.amazon.com/jp/apprunner/pricing/ を参照)
    30

    View Slide

  28. © 2023, Amazon Web Services, Inc. or its affiliates.
    デモ
    App Runner
    GitHub Repo
    GitHub
    コンテナインスタンス
    ロードバランサー
    ネットワーク (VPC)
    App Runner

    View Slide

  29. © 2023, Amazon Web Services, Inc. or its affiliates.
    デモ
    コンテナインスタンス
    ロードバランサー
    ネットワーク (VPC)
    App Runner
    エンドユーザー デフォルトドメイン
    https://xxxxxxxx..awsapprunner.com

    View Slide

  30. © 2023, Amazon Web Services, Inc. or its affiliates.
    デモ
    33
    Hello World と表⽰/出⼒
    Node.js 製
    3000 番ポート
    npm install で依存関係を解決
    npm start で起動

    View Slide

  31. © 2023, Amazon Web Services, Inc. or its affiliates.
    やりたいこと別 AWS 開発の始め⽅
    • よくあるWeb アプリケーションフレームワーク
    or コンテナ化されたWeb アプリケーションを開発したい
    • フロントエンド/モバイルのアプリケーションを開発したい
    • 開発環境やCI/CD が統合された開発環境が欲しい
    34

    View Slide

  32. © 2023, Amazon Web Services, Inc. or its affiliates.
    AWS Amplify
    フロントエンド開発者がアプリをビルド、デプロイ、スケールするためのツールを提供
    ビルド
    バックエンドの
    素早い構築
    フロントエンドの
    シームレスな
    作成と接続
    デプロイ
    バックエンド
    スケール
    AWS CDK を使⽤した
    リソースの上書き、
    追加、エクスポート

    View Slide

  33. © 2023, Amazon Web Services, Inc. or its affiliates.
    AWS Amplify
    開発者のニーズに合わせて作られたツールやサービス
    AWS Amplify Studio
    • アプリのバックエンドを視覚的に構成
    • データのモデル化
    • 認証とクラウドストレージの設定
    • AWS Amplify CLIをベースに構築
    • AWS CDK を使⽤してカスタマイズし、
    既存の CI/CD と統合可能
    • 数⼗種類のビルド済みコンポーネント
    (ボタン、フォーム、など)を使って、
    フロントエンド UI の視覚的な構築
    • Figma からデザインを React のコードと
    してインポート
    AWS Amplify Libraries
    • アプリを新規または既存の AWS サービ
    スに接続
    • 認証、ストレージ、REST、GraphQL、オ
    フライン、AI/ML、位置情報、関数などの
    ライブラリにより、機能豊富なアプリ
    ケーションを構築可能
    • JavaScript、React、Angular、Vue、
    React Native、Flutter、iOS、Android
    に対応
    • ユースケース中⼼で、使いやすく、安全
    なライブラリ
    AWS Amplify Hosting
    • Amazon の信頼性の⾼いコンテンツ
    デリバリーネットワークを通じて
    提供される、Webアプリケーションの
    デプロイとホスティングのための
    フルマネージドサービス
    • 静的レンダリングとサーバーサイドレン
    ダリング(SSR)React、Angular、Vue
    、Next.js
    • CI/CD ワークフローを内蔵
    • フロントエンドとバックエンドを
    ⼀度にデプロイする Git ワークフロー

    View Slide

  34. © 2023, Amazon Web Services, Inc. or its affiliates.
    AWS Amplify を使ったビルド
    12の機能カテゴリにわたるフルスタックデベロッパーの経験
    ビルド
    AWS
    Amplify CLI
    AWS
    Amplify Studio
    AWS
    Amplify libraries
    機能カテゴリ

    View Slide

  35. © 2023, Amazon Web Services, Inc. or its affiliates.
    これからAmplify を始めてみようという⽅へ
    40
    AWS Hands-on for Begineers
    https://bit.ly/3I925oo
    • 短い動画での解説付きハンズオン
    • 無償で好きな時に始められます!

    View Slide

  36. © 2023, Amazon Web Services, Inc. or its affiliates.
    やりたいこと別 AWS 開発の始め⽅
    • よくあるWeb アプリケーションフレームワーク
    or コンテナ化されたWeb アプリケーションを開発したい
    • フロントエンド/モバイルのアプリケーションを開発したい
    • 開発環境やCI/CD が統合された開発環境が欲しい
    41

    View Slide

  37. © 2023, Amazon Web Services, Inc. or its affiliates.
    Amazon CodeCatalyst: 統合ソフトウェア開発サービス
    42
    ü マネージド
    ü オールインワン
    ü 統合されている
    ü セキュリティ重視
    ü フレキシブル
    ü さらにもっと
    計画
    プロジェクト
    マネジメント
    コラボレーション
    コード
    ビルド
    テスト
    … デプロイ

    View Slide

  38. © 2023, Amazon Web Services, Inc. or its affiliates.
    Amazon CodeCatalyst: メリット
    43
    プロジェクトの
    セットアップを加速
    ⽇々のワークフロー
    を⾃動化
    ⾃動化された環境
    スムーズな
    コラボレーション

    View Slide

  39. © 2023, Amazon Web Services, Inc. or its affiliates.
    プロジェクトの
    セットアップを加速
    44
    統合プロジェクトツール
    を数分でセットアップ
    適切に設計された
    アプリケーションパターン
    のライブラリから選択
    GitHub やJira
    を使い続けることも
    既存のプロジェクトの
    作業を継続することも

    View Slide

  40. © 2023, Amazon Web Services, Inc. or its affiliates.
    ⽇々のワークフローを⾃動化
    45
    デプロイメントの⾃動化 セキュアなリリース⾃動化
    ビジュアルエディター
    または YAML による作成
    柔軟性に優れたマネージド
    コンピュートでビルド
    GitHub アクション
    との併⽤
    テストとレポート作成を
    効率化
    ビルドの来歴 …

    View Slide

  41. © 2023, Amazon Web Services, Inc. or its affiliates.
    ⾃動化された環境:
    開発環境
    46
    必要に応じて環境の
    サイズを変更
    コンテキストをすばやく
    切り替える
    コードとして定義
    オンデマンドで
    起動
    ⼈気の IDE
    を利⽤可能
    ⾃分のコードだけに集中
    開発環境の作成

    View Slide

  42. © 2023, Amazon Web Services, Inc. or its affiliates.
    ⾃動化された環境:
    デプロイ環境
    47
    プロジェクト
    ブループリントで
    IaC を⽣成
    サービスプロビジョニング
    を⾃動化
    環境更新を追跡する
    コードのデプロイ
    を追跡する

    View Slide

  43. © 2023, Amazon Web Services, Inc. or its affiliates.
    スムーズなコラボレーション
    48
    チームメイトを
    メールで招待
    Issueの追跡
    ⾃動通知を設定
    プロジェクトの
    アクティビティを
    フォロー

    View Slide

  44. © 2023, Amazon Web Services, Inc. or its affiliates.
    © 2023, Amazon Web Services, Inc. or its affiliates.
    これらのサービスを使えば
    アプリケーション開発が
    モダンになる?

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  48. © 2023, Amazon Web Services, Inc. or its affiliates.
    AWS Developer Live Show - 「ドメイン駆動設計のススメ」
    https://go.aws/3Q2nNgl
    54
    AWS公式YouTube Channel

    View Slide

  49. © 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 Slide

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

    View Slide

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

    View Slide

  52. © 2023, Amazon Web Services, Inc. or its affiliates.
    参考: ヘキサゴナルアーキテクチャ
    63
    Domain
    Model
    Ports
    Adapters
    Primary Actor Secondary
    Actor
    HTTP Request
    Event Message
    Queue

    File Storage
    Database
    Queue

    View Slide

  53. © 2023, Amazon Web Services, Inc. or its affiliates.
    参考: ヘキサゴナルアーキテクチャ
    64
    Domain
    Model
    Ports
    Adapters
    Primary Actor Secondary
    Actor
    HTTP Request
    Event Message
    Queue

    File Storage
    Database
    Queue

    アプリケーションはポートによって接続される
    アダプタは外界との糊の役⽬を果たす
    アプリケーションの外側にあってアプリケーションを駆動する側を
    プライマリアクター、駆動される側をセカンダリーアクターと呼ぶ

    View Slide

  54. © 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 Slide

  55. © 2023, Amazon Web Services, Inc. or its affiliates.
    © 2023, Amazon Web Services, Inc. or its affiliates.
    マネージドサービスを使うと
    ロックインにならない?
    66

    View Slide

  56. © 2023, Amazon Web Services, Inc. or its affiliates.
    マネージドサービス == ロックイン??
    トラディショナル
    モノリシック
    Opsトイル
    “⾃由”
    モダン
    Fine-grained
    マネージドサービス
    “ロックイン”
    ⼀元的な⾒⽅では、不幸せかもしれない

    View Slide

  57. © 2023, Amazon Web Services, Inc. or its affiliates.
    “ロックイン”にもさまざまな⾯がある
    • ベンダー
    • プロダクト
    • バージョン
    • アーキテクチャ
    • スキル
    • 法律
    • メンタル

    View Slide

  58. © 2023, Amazon Web Services, Inc. or its affiliates.
    それぞれ潜在的な切り替えコストを含んでいる
    • ベンダー
    • プロダクト
    • バージョン
    • アーキテクチャ
    • スキル
    • 法律
    • メンタル
    https://martinfowler.com/articles/oss-lockin.html
    ベンダーAからBへの切り替えにかかるコストは?
    他のプロダクトに移⾏するためのコストは?
    アップグレードの難しさは?
    リファクタリングの難しさは?
    ラーニングパスは?認知的負荷は?
    調整や、規制⾃体の⾒直しは可能?
    古くなった思い込みを捨てられるか?

    View Slide

  59. © 2023, Amazon Web Services, Inc. or its affiliates.
    違う側⾯から⾒ることで新しい気づきを得る
    OSSはベンダーロックインを緩和するが、
    他の形式のロックインは残る
    (特にプロダクトとアーキテクチャ)
    メンタルのロックインは最も微妙で、
    克服するのが難しくもある

    View Slide

  60. © 2023, Amazon Web Services, Inc. or its affiliates.
    © 2023, Amazon Web Services, Inc. or its affiliates.
    プロバイダの変更
    - サービスマッピング
    71

    View Slide

  61. © 2023, Amazon Web Services, Inc. or its affiliates.
    複数のベンダが同じサービスを提供しているように⾒える
    72
    メッセージキュー
    サーバレス関数
    NoSQL データベース
    “こちら” “あちら”
    仮想マシン
    🤔

    View Slide

  62. © 2023, Amazon Web Services, Inc. or its affiliates.
    サービスアイコンの裏に隠れているもの
    Amazon
    EventBridge
    AWS、既存システム、
    SaaS アプリケーション
    を通じて⼤規模な
    イベント駆動型アプリ
    ケーションを構築
    • Global endpoints
    • API destinations
    • Archive and replay events
    • AWS Glue Schema Registry
    • Fully managed and scalable event bus
    • SaaS integration
    • Over 100 built-in event sources and targets
    • Decoupled event publishers and subscribers
    • Event filtering
    • Reliable event delivery
    • Automatic response to operational changes in AWS services
    • Scheduled events
    • Monitoring and auditing
    • Security and compliance
    機能 (ドキュメントから抜粋)
    加えて、サービスはそれだけで成⽴せずプラットフォームの⼀部である

    View Slide

  63. © 2023, Amazon Web Services, Inc. or its affiliates.
    サービスマッピングはうまくいかない
    74
    ニーズとアイデア
    NG!
    実⾏環境
    “要求”
    設計
    “こちら” “あちら”

    View Slide

  64. © 2023, Amazon Web Services, Inc. or its affiliates.
    © 2023, Amazon Web Services, Inc. or its affiliates.
    抽象化のレイヤ
    75

    View Slide

  65. © 2023, Amazon Web Services, Inc. or its affiliates.
    いかなる問題も他のレベルの
    インダイレクションによって
    解決できる。
    David J. Wheeler
    The fundamental theorem of software engineering
    76

    View Slide

  66. © 2023, Amazon Web Services, Inc. or its affiliates.
    共通の要素によって柔軟性を得られる
    Java
    “こちら” “あちら”
    API layer API layer
    HTTPS, JSON, OAuth, etc.

    View Slide

  67. © 2023, Amazon Web Services, Inc. or its affiliates.
    ボトムアップの抽象化も実際にはうまくいかない
    78
    NG!
    ニーズとアイデア
    実行環境
    “要求”
    Magic layer Magic layer
    ??
    設計
    “こちら” “あちら”
    ランタイムの違い
    最⼩公分⺟

    View Slide

  68. © 2023, Amazon Web Services, Inc. or its affiliates.
    © 2023, Amazon Web Services, Inc. or its affiliates.
    パターンによって
    設計の意図を維持する
    79

    View Slide

  69. © 2023, Amazon Web Services, Inc. or its affiliates.
    サービスマッピングの問題点
    80
    ニーズとアイデア
    NG!
    実⾏環境
    “要求”
    設計
    “こちら” “あちら”
    意図の
    消失

    View Slide

  70. © 2023, Amazon Web Services, Inc. or its affiliates.
    サービス利⽤に隠れた”意図”は何か?
    81
    メッセージフィルター
    メッセージトランスレーター
    コンテンツベースのルーター
    受信者リスト
    ?
    https://www.enterpriseintegrationpatterns.com/
    Amazon
    EventBridge

    View Slide

  71. © 2023, Amazon Web Services, Inc. or its affiliates.
    プラットフォームのサービス
    だけを考えていると
    設計の意図が失われ、
    メンタルがロックインされる
    デザインパターンによって
    意図を保つことができる
    82

    View Slide

  72. © 2023, Amazon Web Services, Inc. or its affiliates.
    抽象化とスイッチングコストの⾒直し
    84
    NG!
    意図の消失
    ニーズとアイデア
    実⾏環境
    “要求”
    Magic layer Magic layer
    ??
    設計
    “こちら”
    ランタイムの違い
    最⼩公分⺟
    “あちら”

    View Slide

  73. © 2023, Amazon Web Services, Inc. or its affiliates.
    抽象化とスイッチングコストの⾒直し
    85
    ニーズとアイデア
    NG!
    実⾏環境
    “要求”
    Magic layer Magic layer
    ??
    設計
    意図の消失
    最⼩公分⺟
    “こちら” “あちら”
    意図を保持
    意義ある抽象化
    ニーズにマッチする
    ランタイムの違い
    パターン
    デプロイ
    ⾃動化
    CDK

    View Slide

  74. © 2023, Amazon Web Services, Inc. or its affiliates.
    まとめ
    • まずは自分が作りたいものを素早く作れる
    サービスから初めてみましょう!!
    • 例) Web アプリ -> AWS App Runner
    フロント、モバイル -> AWS Amplify
    開発環境を整えたい -> Amazon CodeCatalyst
    • 「どのサービスを使うか」ではなく、
    「要求を実現するための」設計が大事
    • パターンをうまく使って、
    サービスの変更のコストは抑えましょう
    86

    View Slide

  75. © 2023, Amazon Web Services, Inc. or its affiliates.
    © 2023, Amazon Web Services, Inc. or its affiliates.
    Thank you!
    87
    Happy Coding!!

    View Slide