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

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

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年最新版
  2. © 2023, Amazon Web Services, Inc. or its affiliates. 自己紹介

    • 金森 政雄 Ø 所属/役職 : DevAx(Developer Acceleration) チーム ソリューションアーキテクト Ø 好きなサービス Amazon Elastic Container Service AWS Step Functions AWS Fault Injection Simulator
  3. © 2023, Amazon Web Services, Inc. or its affiliates. このセッションでお話しすること

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

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

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

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

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

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

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

    Idea Experiment Innovation Flywheel 実験がイノベーションを加速する
  11. © 2023, Amazon Web Services, Inc. or its affiliates. ⽅法、プロセス、ツール、組織構造などが

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

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

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

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

    サービスを組み合わせることで、 素早くアプリケーション構築が可能
  17. © 2023, Amazon Web Services, Inc. or its affiliates. 200

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

    2023, Amazon Web Services, Inc. or its affiliates. どこから始めれば良い? 24
  19. © 2023, Amazon Web Services, Inc. or its affiliates. やりたいこと別

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

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

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

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

    リポジトリ 既存ツールを用いた コンテナイメージのビル ド コンテナイメージを ECR にプッシュ 開発チーム App Runner による アプリケーションのビルド自動実行 アプリケーションの デプロイ or AWS Copilot CLI からのデプロイにも対応 柔軟なアプリケーションのビルドとデプロイ
  24. © 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
  25. © 2023, Amazon Web Services, Inc. or its affiliates. デモ

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

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

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

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

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

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

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

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

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

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

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

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

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

    デプロイ環境 47 プロジェクト ブループリントで IaC を⽣成 サービスプロビジョニング を⾃動化 環境更新を追跡する コードのデプロイ を追跡する
  40. © 2023, Amazon Web Services, Inc. or its affiliates. スムーズなコラボレーション

    48 チームメイトを メールで招待 Issueの追跡 ⾃動通知を設定 プロジェクトの アクティビティを フォロー
  41. © 2023, Amazon Web Services, Inc. or its affiliates. ©

    2023, Amazon Web Services, Inc. or its affiliates. これらのサービスを使えば アプリケーション開発が モダンになる?
  42. © 2023, Amazon Web Services, Inc. or its affiliates. 最も重要なことは何か

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

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

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

    Developer Live Show - 「ドメイン駆動設計のススメ」 https://go.aws/3Q2nNgl 54 AWS公式YouTube Channel
  46. © 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
  47. © 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
  48. © 2023, Amazon Web Services, Inc. or its affiliates. 作成したモデルをコードに反映

    • 戦術的DDD § ドメインモデルを実装に反映する § モデルと実装は繰り返し改善する § ドメインモデルがビジネスロジックに対する責務を持つ § ドメインモデルとインフラストラクチャを分離する – 依存関係逆転の原則により、ドメイン層をシステム的な関⼼ごとから分離 – ヘキサゴナル/オニオン/クリーンアーキテクチャ
  49. © 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 …
  50. © 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 … アプリケーションはポートによって接続される アダプタは外界との糊の役⽬を果たす アプリケーションの外側にあってアプリケーションを駆動する側を プライマリアクター、駆動される側をセカンダリーアクターと呼ぶ
  51. © 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
  52. © 2023, Amazon Web Services, Inc. or its affiliates. ©

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

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

    • ベンダー • プロダクト • バージョン • アーキテクチャ • スキル • 法律 • メンタル
  55. © 2023, Amazon Web Services, Inc. or its affiliates. それぞれ潜在的な切り替えコストを含んでいる

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

    OSSはベンダーロックインを緩和するが、 他の形式のロックインは残る (特にプロダクトとアーキテクチャ) メンタルのロックインは最も微妙で、 克服するのが難しくもある
  57. © 2023, Amazon Web Services, Inc. or its affiliates. ©

    2023, Amazon Web Services, Inc. or its affiliates. プロバイダの変更 - サービスマッピング 71
  58. © 2023, Amazon Web Services, Inc. or its affiliates. 複数のベンダが同じサービスを提供しているように⾒える

    72 メッセージキュー サーバレス関数 NoSQL データベース “こちら” “あちら” 仮想マシン 🤔
  59. © 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 機能 (ドキュメントから抜粋) 加えて、サービスはそれだけで成⽴せずプラットフォームの⼀部である
  60. © 2023, Amazon Web Services, Inc. or its affiliates. サービスマッピングはうまくいかない

    74 ニーズとアイデア NG! 実⾏環境 “要求” 設計 “こちら” “あちら”
  61. © 2023, Amazon Web Services, Inc. or its affiliates. ©

    2023, Amazon Web Services, Inc. or its affiliates. 抽象化のレイヤ 75
  62. © 2023, Amazon Web Services, Inc. or its affiliates. いかなる問題も他のレベルの

    インダイレクションによって 解決できる。 David J. Wheeler The fundamental theorem of software engineering 76
  63. © 2023, Amazon Web Services, Inc. or its affiliates. 共通の要素によって柔軟性を得られる

    Java “こちら” “あちら” API layer API layer HTTPS, JSON, OAuth, etc.
  64. © 2023, Amazon Web Services, Inc. or its affiliates. ボトムアップの抽象化も実際にはうまくいかない

    78 NG! ニーズとアイデア 実行環境 “要求” Magic layer Magic layer ?? 設計 “こちら” “あちら” ランタイムの違い 最⼩公分⺟
  65. © 2023, Amazon Web Services, Inc. or its affiliates. ©

    2023, Amazon Web Services, Inc. or its affiliates. パターンによって 設計の意図を維持する 79
  66. © 2023, Amazon Web Services, Inc. or its affiliates. サービスマッピングの問題点

    80 ニーズとアイデア NG! 実⾏環境 “要求” 設計 “こちら” “あちら” 意図の 消失
  67. © 2023, Amazon Web Services, Inc. or its affiliates. サービス利⽤に隠れた”意図”は何か?

    81 メッセージフィルター メッセージトランスレーター コンテンツベースのルーター 受信者リスト ? https://www.enterpriseintegrationpatterns.com/ Amazon EventBridge
  68. © 2023, Amazon Web Services, Inc. or its affiliates. プラットフォームのサービス

    だけを考えていると 設計の意図が失われ、 メンタルがロックインされる デザインパターンによって 意図を保つことができる 82
  69. © 2023, Amazon Web Services, Inc. or its affiliates. 抽象化とスイッチングコストの⾒直し

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

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

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

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