Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

○○をAWSで作るにはどうすればいい? ~ 構築例とアーキテクチャ図を添えて

935 views

Published on

https://dev.classmethod.jp/cloud/aws/jaws-festa-sapporo-2019/

JAWS FESTA 2019 SAPPOROで「○○をAWSで作るにはどうすればいい? ~ 構築例とアーキテクチャ図を添えて」を話しました #jft2019

Published in: Engineering
  • Be the first to comment

○○をAWSで作るにはどうすればいい? ~ 構築例とアーキテクチャ図を添えて

  1. 1. ○○をAWSで作るにはどうすればいい? ~ 構築例とアーキテクチャ図を添えて
  2. 2. 2自己紹介 もこ - クラスメソッド株式会社 - AWS事業本部 コンサルティング部 - 2019年7月入社 - AWS環境構築/サポートデスクなど - Twitter: @mokocm - 前職: ECサイトのAWSインフラ - 好きなサービス:ECS/Terraform - 最近の趣味: TypeScript/React(フロント)
  3. 3. 3スライド公開 https://dev.classmethod.jp/cloud/aws/jaws-festa-sapporo-2019/
  4. 4. 4ハッシュタグ #jft2019 #jft2019_c
  5. 5. 5アンケート AWS触ったことない人? AWSこれから始める人?
  6. 6. 6アンケート AWSを触ったことがある人?
  7. 7. 7Agenda お話する内容 ・オンプレの考え方とクラウドの考え方 ・広く浅くサービス紹介 ・モダンなWeb/DB環境 ・静的コンテンツ配信 ・SPA(Single Page Application) ・コンテナ ・まとめ
  8. 8. 8オンプレ環境のWeb/DB環境(例) 1. サーバーの調達 2. 物理的に)サーバーを組み立て、ネットワークを組む 3. サーバーにOSをインストール 4. DBをLinuxサーバー上に構築する 5. DBクラスターを頑張って構築… 6. Webサーバーをインストール 7. アプリケーションをデプロイ 8. UPSなどで電源冗長化 9. バックアップはRAIDされたファイルサーバーなどに
  9. 9. 9AWSを使ったWeb/DB環境(例) 1. ALBとAutoScalingを使ってEC2を起動、ユーザー データーもしくは作成済みのAMIでアプリをインス トール 2. Amazon Auroraを利用してDBを構築 3. CloudWatch Alerm / Auto Scalingを使ってサー バーをスケールアウト 4. RDSのバックアップ機能で簡単にバックアップ 5. 必要であれば定期的にスナップショットを取得
  10. 10. 広く浅くサービス紹介 10
  11. 11. AWSを理解するには とにかく手を動かす!!! とにかくいろんなサービスに触りまくる! 11
  12. 12. ※これから話す内容はサービスのほんの一部 のみです。 12
  13. 13. 初級: Web/DB環境を作りたい! 13
  14. 14. 14Region / Availability Zone ・Region: 2つ以上のAZをまとめたもの ・Availability Zone(AZ): Regionの中のDC(2個以上) ・物理的に離れたDC、距離は100km圏内 ・AZ間の遅延は2ms以下 ※大阪リージョンを除き
  15. 15. 15VPC / Subnet ・仮想ネットワーク ・VPC内にSubnetを配置 ・Subnetの中にEC2などを起動 ・VPC CIDRが被らなければ VPCPeeringも可能
  16. 16. 16Internet Gateway ・VPCにアタッチするインターネットの出入り口 ・インターネットに出るには必須のゲートウェイ
  17. 17. 17RouteTable – Public/Private Subnet ・Subnetごとに接続するルートテーブル ・「送信元」と「ターゲット」を指定してルーティング ・初期値として送信元にVPC CIDR、ターゲットにlocalが設 定 ・Public / Private Subnetはルートテーブルで制御 • Public Subnet: IGWの経路があるSubnet • Private Subnet: IGWの経路がないSubnet
  18. 18. 18RouteTable – Public Subnet ・IGWをRoute Tableに追加する例 ・0.0.0.0/0 をIGWにルーティング
  19. 19. 19RouteTable – Private Subnet ・Private Subnet ・送信元: CIDR, ターゲット: local
  20. 20. 20Amazon Elastic Compute Cloud(EC2) クラウド内の安全でサイズ変更可能なコンピューティング性能 (=仮想サーバー) UserDataで起動時に実行するコマンドを指定できる 内部的に下記サービスを利用している ・AMI(Amazon Machine Image) ・EBS(Elastic Block Storage) ・Security Group などなど…
  21. 21. 21Amazon Machine Image(AMI) ・EC2を起動するテンプレート ・OS情報などが入ったイメージ ・自分でAMIを作成することも可能 ・AMIで複数のEC2インスタンスを起動することができる ・アプリケーションを入れてAMIを取っておくことも可能
  22. 22. 22Security Group ・インバウンド/アウトバウンド通信を制御できる ・”サブネットレベル”ではなく、”インスタンスレベル” ・サブネットレベル: NACL ・インスタンスレベル: Security Group ・Whitelist形式で、許可しかできない(=Denyできない) ・Security Groupからの通信を許可することができる ・EC2以外にもALB/RDSなどなどで利用可能
  23. 23. 23Security Group(利用例) ・0.0.0.0/0から80/TCPのアクセスを許可するSG ・上記SGをつけているインスタンスからの3306/TCP を許可するSG
  24. 24. 24ターゲットグループ ・インスタンスを登録できる ・接続ポートなどを設定 ・AutoScaling時に自動でターゲットグループに 追加することも可能 ・ヘルスチェックの設定もターゲットグループで ・これから紹介するALB/NLBなどによく使う
  25. 25. 25Elastic Load Balancing マネージドなロードバランサーの総称(ELB) ・Application Load Balancer(ALB) ・Network Load Balancer(NLB) ・Classic Load Balancer(CLB) ロードバランサーのエンドポイントにレコードを設定し て利用 (CLBを除き)ターゲットグループにバランシングするの がベスト
  26. 26. 26Application Load Balancer(ALB) HTTP/HTTPS向けのロードバランサー(L7) ・二つ以上のAZにまたがって配置する必要がある ・負荷分散 / ルーティング / 複数ポートでListenできる ・ALBでSSLをオフロードすることも可能。ACMと兼用証明書の管理 が楽に ・基本的には転送先にターゲットグループを指定する運用 ・必要に応じて特定のパスだけ別のターゲットグループに送信する ・スティッキーセッション対応
  27. 27. 27Application Load Balancer(ALB)
  28. 28. 28Network Load Balancer(NLB) 大規模なリクエスト / TCP / TLS / UDPに対応(L4) ・NLB標準で固定IPアドレスを指定できる ・プロトコルとポートを設定 ・ターゲットグループをデフォルトアクションに設定 ・パスベースの出し分けができない ・NLBにはSecurity Groupがない ・Private Link https://aws.amazon.com/jp/elasticloadbalancing/features/#compare
  29. 29. 29Amazon Aurora マネージドリージョナルデータベース(=RDS) ・Aurora = クラウド向けにAWSが開発してるMySQL/PostgreSQL 互換SQL ・10GB~64TBまで自動スケール ・10GBごとに3AZにまたがって6つのコピーを持つ ・2つのコピーに障害が起こってもWriteできる ・3つのコピーに障害が起こってもReadできる ・はやい(MySQL: 最大5倍, PostgreSQL: 3倍) https://aws.amazon.com/jp/blogs/database/introducing-the-aurora-storage-engine/
  30. 30. 以上を踏まえて、モダンなWeb/DB 環境を作る 30
  31. 31. 31モダンなWeb/DB構成図
  32. 32. 初級: 静的コンテンツを配信したい 32
  33. 33. 33Amazon CloudFront ・AWSが提供するCDN ・ユーザーから一番近いEdge Locationからコンテンツを配信 ・オリジンのコンテンツをキャッシュして配信可能 ・Lambda@Edgeを利用するとEdge Locationで処理可能 ・Geo Locationで制限も可能 ・180Edge Location / 11 Regional Edge Cache (2019/11/1) ・ディストリビューションあたり40Gbps, 100,000RPS ・CloudFront側でGzip圧縮して配信可能
  34. 34. 34Amazon CloudFront - infrastructure.aws
  35. 35. 35Amazon Simple Storage Service(S3) ・ストレージサービス ・容量無制限、従量課金 ・99.999999999%のデータ耐久性 ・CloudFrontなどと連携して静的コンテンツ配信 ・他にもファイル保存、ログ保存、アーカイブ保存など
  36. 36. 36静的コンテンツ配信
  37. 37. 中級: Serverlessで SPA(Single Page Application)したい 37
  38. 38. 38AWS Lambda ・イベント駆動型でサーバーレス環境でコードを実行 ・実行時間ベースの従量課金 ・様々なAWSサービスと連携可能 ・Node10.x/Python2.7, 3.7/Ruby/Java/Go/.NET ・(NEW)カスタムランタイム機能でサーバーレスCOBOL ・ API Gatewayと合わせてHTTPレスポンスを発行するなど
  39. 39. 39Amazon API Gateway ・その名の通り、APIのGateaway ・API GatewayのEndpointを叩くと裏のLambdaなど と連携してAPIのレスポンスを返せる ・REST APIの橋渡しサービス ・WebSocketも対応、ServerlessでWebSocket!
  40. 40. 40Amazon DynamoDB ・NoSQLなSaaSデータベース(Key/Value) ・スケーリングはCPU/Mem単位ではなく、キャパシティーユ ニット ・基本的にはAWS SDKを利用してプログラムから操作 ・ポイントタイムリカバリ機能は35日間の任意の時間(秒)復元 ・ストレージ無制限、3AZに保存 ・レコードは400KBまで
  41. 41. 41AWS Serverless Application Model(CloudFormation) ・CloudFormation(CFn)のTransform ・いい感じにServerlessなCFnをかける ・CodeUriを指定するとデプロイが楽に ・sam build, sam local invoke ・OpenAPI(Swagger)との兼用も可能!
  42. 42. 42AWSでSPA環境 DynamoDB
  43. 43. 中級~上級: コンテナしたい 43
  44. 44. 44Amazon Elastic Container Service(ECS) ・EC2インスタンス上にECS Agentを入れてECSから コンテナを管理 ・「あくまでもEC2の上に乗っかるコンテナ管理」 ・「Amazon ECS-optimized AMI」を使うことを推奨 ・EC2起動時にUserdataでECSのクラスターに参加
  45. 45. 45Amazon Elastic Container Service(ECS) ・Task: タスク定義から起動するコンテナの束 ・Service: タスク定義, クラスター, タスク数, ALB, HealthCheckなどを設定 ・動的ポートマッピング + ターゲットグループを推奨 ・タスクのスケーリングとEC2のスケーリングは別
  46. 46. 46Amazon Elastic Container Service(ECS) https://dev.classmethod.jp/cloud/aws/ecs-spotinstance-draining/
  47. 47. 47Amazon Elastic Container Service(ECS) 動的ポートマッピング利用時のターゲットグループ
  48. 48. 48AWS Fargate ・ECSホストOSを管理する必要なし! ・タスクをScalingさせるだけでよし! ・EC2管理が不要 = EC2のスケーリングが不要 ・手がるにECSを始めるならコレ ・コンテナホストにログインできない制約あり
  49. 49. 49Amazon Elastic Container Registry(ECR) ・RegistryのSaaS版、IAMでアクセス制御可能 ・ビルド済みのコンテナをPush ・ECSのタスク定義ではECRのリポジトリを入れる ・インターネットかPrivate Linkが必要なので注意! ・つい最近コンテナの脆弱性スキャン機能が提供! ・無料 ・手動もしくはPushでスキャン ・CloudWatch Eventsと連携してるのでやれることは無限! ・ https://docs.aws.amazon.com/en_pv/AmazonECR/latest/userguide/image-scanning.html
  50. 50. 50Amazon Elastic Container Registry(ECR) https://dev.classmethod.jp/cloud/aws/ecr-repository-scan/
  51. 51. 51モダンなコンテナ構成図 NAT Gateway NAT Gateway ALB Internet GatewayCloudFront
  52. 52. ここまで駆け足でサービスを紹介し てきましたが、 AWSのサービスはもっとあります… 52
  53. 53. 53Developers.IO https://dev.classmethod.jp/event/devio2019-tokyo-0823cmblog/
  54. 54. 54AWS パートナー 事例大全集 国内 101 社の AWS パートナーによる 175 の AWS 導入事例を掲載 https://aws.amazon.com/jp/solutions/partner-central/
  55. 55. 55Cloud Design Pattern デザインパターン多数 解決したい課題 / クラウドでの解決 /パターン / 実装 / 構造 / 利点 / 注意点でまとめられている http://aws.clouddesignpattern.org/index.php
  56. 56. 56まとめ ・EC2(IaaS)ばかりに頼らず、SaaSを活用しよう! ・DBはSaaSサービスを使おう! ・紹介し切れていない主要サービス(Kinesis, SQS)もた くさんあるので是非実際に触ってみよう!
  57. 57. 57

×