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 Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk

2015年11月25日に放送したAWS Elastic Beanstalkの回の資料です。今後の予定は以下をご覧ください。
http://aws.amazon.com/jp/about-aws/events/#webinar

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to comment

AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk

  1. 1. 1 AWS Elastic Beanstalk AWS Black Belt Tech Webinar 2015 アマゾン ウェブ サービス ジャパン株式会社 ソリューションアーキテクト 篠原 英治 2015/11/25
  2. 2. 2 { "Name" : "篠原英治", "Twitter" : "@shinodogg", "Blog" : "http://shinodogg.com", "Profile" : { "Role" : "Solutions Architect", "Market": "Startup", "Subject Matter Expert" : [ "Amazon CloudSearch", "Amazon Elasticsearch Service", "Amazon Simple Workflow Service", "AWS Elastic Beanstalk" ] } }
  3. 3. 3 Agenda • Introduction • Deployment • Monitoring • Docker Support • Worker Tier • Customer Use-cases • Tips
  4. 4. 4 Agenda • Introduction • Deployment • Monitoring • Docker Support • Worker Tier • Customer Use-cases • Tips
  5. 5. 5 AWS Elastic Beanstalk http://en.hatsuon.info/word/beanstalk http://ejje.weblio.jp/content/beanstalk • 読み方 • ビーンストーク • ビーンスターク http://www.otsuka.co.jp/bst/
  6. 6. 6 AWS Elastic Beanstalk • 特徴 (http://aws.amazon.com/jp/elasticbeanstalk/) – 速く簡単にアプリケーションをデプロイ可能 – インフラストラクチャの準備&運営からアプリ ケーションスタックの管理まで自動化 – Auto Scaling によりコストを抑えながらスケー ラビリティを確保 – Java, PHP, Ruby, Python, Node.js, .NET, Docker, Goに対応 • 価格体系 (http://aws.amazon.com/jp/elasticbeanstalk/pricing/) – 追加料金なし – アプリケーションの保存、実行に必要なAWSリ ソース (EC2, S3, RDS, DynamoDB など) に対 してのみ課金 インフラ構成の構築・アプリデプロイの自動化サービス
  7. 7. 7 Elastic Beanstalk vs. Do It Yourself On-instance configuration Your code HTTP Server Application Server Language Interpreter Operating System Host
  8. 8. 8 On-instance configuration Your code HTTP Server Application Server Language Interpreter Operating System Host アプリケーションの開発 ”だけ”にフォーカス Elastic Beanstalkにお任せ! Elastic Beanstalk vs. Do It Yourself
  9. 9. 9 • あらかじめ定義されたインフラストラクチャ • Single instance (開発環境, ローコスト) • Load balancing, Auto Scaling (本番環境) • Web Tier と Worker Tier • リソースのプロビジョニング • Load Balancer • Auto Scaling group • Security groups • Database (optional) • ユニークなドメイン名の提供 • 例) yourapp.elasticbeanstalk.com Infrastructure stack Elastic Beanstalk vs. Do It Yourself
  10. 10. 10 • アプリケーションを簡単にデプロイ • 複数バージョンの切り替え • 複数環境の切り替え Easy Deployment Elastic Beanstalk vs. Do It Yourself
  11. 11. 11 Agenda • Introduction • Deployment • Monitoring • Docker Support • Worker Tier • Customer Use-cases • Tips
  12. 12. 12 Elastic Beanstalkでアプリケーションを デプロイするのに必要なこと 1 2 3 4 Region Stack (container) type Single-Instance Load Balanced w/ Autoscaling or Database (RDS) optional Your code Supported Platforms
  13. 13. 13 1 2 3 4 Region Stack (container) type Single-Instance Load Balanced w/ Autoscaling or Database (RDS) optional Your code ■ デプロイを行う方法 1.AWS Management Console を使う 2.AWS Toolkit for Eclipse/Visual Studio IDEを使う 3.EB Command Line Interface(EB CLI) を使う $ eb deploy Elastic Beanstalkでのデプロイ
  14. 14. 14 Elastic Beanstalkでのデプロイ 1 2 3 4 Region Stack (container) type Single-Instance Load Balanced w/ Autoscaling or Database (RDS) optional Your code ■ デプロイを行う方法 1.AWS Management Console を使う 2.AWS Toolkit for Eclipse/Visual Studio IDEを使う 3.EB Command Line Interface(EB CLI) を使う $ eb deploy 今回は上記3.のEB CLIを使ったデプロイ方法をご紹介します
  15. 15. 15 サンプルアプリケーション • Node.js + Expressな会員登録アプリケーション – ソースコードは↓から入手可能 – https://github.com/awslabs/eb-node-express-sample
  16. 16. 16 サンプルアプリケーションのデプロイ 1. EB CLIのインストール: $ pip install --upgrade awsebcli 2. サンプルアプリケーションのダウンロード: $ git clone https://github.com/awslabs/eb-node-express- sample.git 3. Elastic Beanstalk applicationの作成: $ eb init 4. プロンプトに従って環境の設定 5. リソースの作成およびアプリケーションのローンチ: $ eb create
  17. 17. 17 サンプルアプリケーションのデプロイ • eb initのプロンプト: リージョンの選択 Select a default region 1) us-east-1 : US East (N. Virginia) 2) us-west-1 : US West (N. California) 3) us-west-2 : US West (Oregon) 4) eu-west-1 : EU (Ireland) 5) eu-central-1 : EU (Frankfurt) 6) ap-southeast-1 : Asia Pacific (Singapore) 7) ap-southeast-2 : Asia Pacific (Sydney) 8) ap-northeast-1 : Asia Pacific (Tokyo) 9) sa-east-1 : South America (Sao Paulo) 10) cn-north-1 : China (Beijing) (default is 3):
  18. 18. 18 サンプルアプリケーションのデプロイ • eb initのプロンプト: アプリ名/スタック/SSH/Keypair Enter Application Name (default is "eb-node-express-sample"): It appears you are using Node.js. Is this correct? (y/n): y Do you want to set up SSH for your instances? (y/n): y Select a keypair. 1) oregon 2) [ Create new KeyPair ] (default is 2): 1
  19. 19. 19 サンプルアプリケーションのデプロイ • eb initのプロンプト: スタック Select a platform. 1) Node.js 2) PHP 3) Python 4) Ruby 5) Tomcat 6) IIS 7) Docker 8) Multi-container Docker 9) GlassFish 10) Go 11) Java
  20. 20. 20 サンプルアプリケーションのデプロイ • eb createのプロンプト: Environment/CNAME/Deploy Enter Environment Name (default is eb-node-express-sample): Enter DNS CNAME prefix (default is eb-node-express-sample): Creating application version archive "5529". Uploading eb-node-express-sample/5529.zip to S3. This may take a while. Upload Complete. Environment details for: eb-node-express-sample Application name: eb-node-express-sample Region: us-west-2 Deployed Version: 5529 Environment ID: e-ufxx79fmkc
  21. 21. 21 サンプルアプリケーションのデプロイ • EB CLIを使ってブラウザで表示 $ eb open
  22. 22. 22 サンプルアプリケーションのデプロイ • UIを変更 $ vim views/index.ejs $ git commit –am “modify UI” $ eb deploy $ eb open
  23. 23. 23 サンプルアプリケーションのデプロイ • サンプルアプリケーションを動かす
  24. 24. 24 デプロイしたサンプルアプリケーションの詳細 • Application dependency management – package.json: パッケージの名前とバージョンを記載 { "name": "Elastic-Beanstalk-Sample-App", "version": "0.0.1", "private": true, "dependencies": { "ejs": "latest", "aws-sdk": "latest", "express": "latest", "body-parser": "latest" }, "scripts": { "start": "node app.js" } } • Node.js→package.json • Ruby→Gemfile • PHP→composer.json
  25. 25. 25 デプロイしたサンプルアプリケーションの詳細 • Application dependency management – package.json: パッケージの名前とバージョンを記載 { "name": "Elastic-Beanstalk-Sample-App", "version": "0.0.1", "private": true, "dependencies": { "ejs": "2.3.4", "aws-sdk": "2.2.17", "express": "4.13.3", "body-parser": "1.14.1" }, "scripts": { "start": "node app.js" } } 本番運用の際はバージョンを明記しま しょう
  26. 26. 26 デプロイしたサンプルアプリケーションの詳細 • .ebextensions を活用した環境のカスタマイズ – Elastic Beanstalkの定義されたテンプレートのカスタマイズ – 例えば、”サーバー監視のサービスをインストールしたい” 本番運用の際はバージョンを明記しま しょう http://www.slideshare.net/shotaumeda1/aws-startuptechsummer2015/15 Retty 梅田さんのスライド .ebextensionsでMackerelの 自動インストールを実現
  27. 27. 27 デプロイしたサンプルアプリケーションの詳細 • options.config – 環境変数の設定 本番運用の際はバージョンを明記しま しょう option_settings: aws:elasticbeanstalk:application:environment: THEME: "flatly" AWS_REGION: '`{ "Ref" : "AWS::Region"}`' STARTUP_SIGNUP_TABLE: '`{ "Ref" : "StartupSignupsTable"}`' NEW_SIGNUP_TOPIC: '`{ "Ref" : "NewSignupTopic"}`' aws:elasticbeanstalk:container:nodejs: ProxyServer: nginx aws:elasticbeanstalk:container:nodejs:staticfiles: /static: /static aws:autoscaling:asg: Cooldown: "120" aws:autoscaling:trigger: Unit: "Percent" Period: "1" BreachDuration: "2" UpperThreshold: "75" LowerThreshold: "30" MeasureName: "CPUUtilization"
  28. 28. 28 デプロイしたサンプルアプリケーションの詳細 • resources.config – 追加のリソース定義 本番運用の際はバージョンを明記しま しょう Resources: StartupSignupsTable: Type: AWS::DynamoDB::Table Properties: KeySchema: HashKeyElement: {AttributeName: email, AttributeType: S} ProvisionedThroughput: {ReadCapacityUnits: 1, WriteCapacityUnits: 1} NewSignupQueue: Type: AWS::SQS::Queue NewSignupTopic: Type: AWS::SNS::Topic Properties: Subscription: - Endpoint: Fn::GetOptionSetting: {DefaultValue: xxx@xxx.com, OptionName: NewSignupEmail} Protocol: email - Endpoint: Fn::GetAtt: [NewSignupQueue, Arn] Protocol: sqs
  29. 29. 29 .ebextensions • .ebextensions を活用してElastic Beanstalkに集約 – option_settings セクション • 環境内のAWSリソース、アプリケーションを実行するソフトウエアの 設定 – resources セクション • CloudFormationがサポートするあらゆるリソースの追加および設定 – 環境を起動する際に使うCloudFormationテンプレートに追加 – その他のセクション • packages、sources、files、users、groups、commands、 container_commands、services • 起動されるEC2インスタンスの設定 • セクション毎にファイルを分割するのを推奨 ※ 設定ファイルはアルファベット順に処理される
  30. 30. 30 • packages – yum/rpm/rubygems等を利用したパッケージのインストール – 例) yumから最新、rpmでURL指定、rubygemsでchef 0.10.2 .ebextensions packages: yum: libmemcached: [] ruby-devel: [] gcc: [] rpm: epel: http://download.fedoraproject.org/pub/epel/5/i386/epel- release-5-4.noarch.rpm rubygems: chef: '0.10.2'
  31. 31. 31 • sources – 外部からのアーカイブをダウンロードして指定した場所に展開 • tar、tar+gzip、tar+bz2、zip をサポート – 例) S3にあるアーカイブファイルを指定したディレクトリに展開 .ebextensions sources: /etc/myapp: http://s3.amazonaws.com/mybucket/my.tgz
  32. 32. 32 • files – EC2上にファイルを作成。外部からファイルを取得することも可能 – 例) ファイルをコピーしてrootだけ書き込める権限で配置 – 例) シンボリックリンク myfile1.txt を参照する myfile2.txt .ebextensions files: "/home/ec2-user/myfile" : mode: "000755" owner: root group: root source: http://foo.bar/myfile files: "/tmp/myfile2.txt" : mode: "120400" content: "/tmp/myfile1.txt"
  33. 33. 33 • groups – グループを作成 – 例) groupOneはグループIDなし、groupTwoのグループIDは45 .ebextensions groups: groupOne: groupTwo: gid: "45"
  34. 34. 34 • users – ユーザーを作成 – 例) ユーザーID、グループ名、ホームディレクトリの設定 .ebextensions users: myuser: groups: - group1 - group2 uid: "50" homeDir: "/home/myuser"
  35. 35. 35 • commands – サーバー設定後、バージョンファイルが抽出される前に実行されるコマンド – 例) pythonスクリプトを実行 .ebextensions commands: python_install: command: myscript.py cwd: /home/ec2-user env: myvarname: myvarvalue test: '[ ! /usr/bin/python ] && echo "python not installed"'
  36. 36. 36 • container_commands – サーバー設定後、バージョンファイルが抽出された後に実行されるコマンド • AWSセキュリティ認証情報などの環境変数にもアクセス可能 • leader_only(option): AutoScalingグループのリーダーにするインスタンスのみ – 例) Djangoの管理タスクを実行 .ebextensions container_commands: 01collectstatic: command: "django-admin.py collectstatic --noinput” 02syncdb: command: "django-admin.py syncdb --noinput" leader_only: true 03migrate: command: "django-admin.py migrate" leader_only: true
  37. 37. 37 • services – インスタンス起動時に開始/停止する必要のあるサービスを定義 – 例) 起動時にサービスサービスが自動的に開始される .ebextensions services: sysvinit: myservice: enabled: true
  38. 38. 38 Elastic Beanstalkにおけるデプロイの選択肢 • Rolling Deploy 現 現 現 現
  39. 39. 39 • Rolling Deploy 現 現 現 現 Elastic Beanstalkにおけるデプロイの選択肢
  40. 40. 40 • Rolling Deploy 新 現 現 現 Elastic Beanstalkにおけるデプロイの選択肢
  41. 41. 41 Elastic Beanstalkにおけるデプロイの選択肢 • Rolling Deploy 新 現 現 現
  42. 42. 42 Elastic Beanstalkにおけるデプロイの選択肢 • Rolling Deploy 新 現 現 現
  43. 43. 43 Elastic Beanstalkにおけるデプロイの選択肢 • Rolling Deploy 新 新 現 現
  44. 44. 44 Elastic Beanstalkにおけるデプロイの選択肢 • Rolling Deploy 新 新 現 現
  45. 45. 45 Elastic Beanstalkにおけるデプロイの選択肢 • Rolling Deploy 新 新 現 現
  46. 46. 46 Elastic Beanstalkにおけるデプロイの選択肢 • Rolling Deploy 新 新 新 現
  47. 47. 47 Elastic Beanstalkにおけるデプロイの選択肢 • Rolling Deploy – Batch type: Auto Scaling グループ内のインスタンスの割合もしくは一定数 – Batch size: 割合(%)もしくはインスタンス数(AutoScaling設定の最大数まで) – 2台ずつデプロイする場合の設定は Batch type: Fixed, Batch size: 2 – 例) 30%ずつRolling Deploy
  48. 48. 48 Elastic Beanstalkにおけるインスタンス置換え • Rolling Updates – アプリケーションデプロイではなくインスタンスの置換え • 内部的にはCloudFromationのUpdate Policyを利用 – VPC設定やAuto ScalingのLaunch Configurationの設定変更 一度に入れ替えるインスタンスの最大数 最低限維持すべきインスタンス数 各Update操作間のPause時間
  49. 49. 49 Elastic Beanstalkにおけるデプロイの選択肢 • Blue/Green Deploy 現 現 現 現
  50. 50. 50 Elastic Beanstalkにおけるデプロイの選択肢 • Blue/Green Deploy 現 現 現 現 新 新 新 新
  51. 51. 51 Elastic Beanstalkにおけるデプロイの選択肢 • Blue/Green Deploy 現 現 現 現 新 新 新 新
  52. 52. 52 Elastic Beanstalkにおけるデプロイの選択肢 • Blue/Green Deploy 新 新 新 新
  53. 53. 53 v1.1 v1.1 v1.1 v1.1 v1.1 v1.1 v1.1 v1.1 v1.2 v1.2 v1.2.1 v1.2.1 v1.2.2 v1.2.2 DNS (Amazon route 53) Webサーバー群 (Amazon EC2) データベースサーバ群 (Amazon RDS) ロードバランサー 90% 5% 3% 2% Elastic Beanstalkにおけるデプロイの選択肢
  54. 54. 54 Elastic Beanstalkにおけるデプロイの選択肢 • Rolling Deploy? Blue/Green Deploy? – Rolling Deploy • 新しくサーバーを立てるわけではないのでデプロイにかかる時 間が短い • 新しいバージョンにバグ等があった場合にRollbackに手間がか かる – Blue/Green • 新しくサーバーを立てるので環境作成に時間がかかる • Rollbackが容易 • Elastic BeanstalkのDNSのTTLはデフォルト60秒であるが、 接続元のデバイスによってDNSがキャッシュされてしまうよう な場合デプロイが反映されない場合がある
  55. 55. 55 Agenda • Introduction • Deployment • Monitoring • Docker Support • Worker Tier • Customer Use-cases
  56. 56. 56 Elastic Beanstalkにおけるモニタリング • EB CLIでモニタリング $ eb health --refresh
  57. 57. 57 Elastic Beanstalkにおけるモニタリング • マネージメントコンソール上でモニタリング
  58. 58. 58 Elastic Beanstalkにおけるモニタリング • マネージメントコンソール上でモニタリング カスタマイズ可能!
  59. 59. 59 Elastic Beanstalkにおけるモニタリング • マネージメントコンソールでの拡張ヘルスレポート
  60. 60. 60 Elastic Beanstalkにおけるモニタリング • マネージメントコンソールでの拡張ヘルスレポート – メトリクス • EnvironmentHealth – OK – Warning – Degraded – Severe – Info – Pending – Unknown http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/health-enhanced-cloudwatch.html#health- enhanced-cloudwatch-metrics
  61. 61. 61 Elastic Beanstalkにおけるモニタリング • マネージメントコンソールでの拡張ヘルスレポート – メトリクス: 該当のインスタンスの数を表示 • InstancesSevere • InstancesDegraded • InstancesWarning • InstancesInfo • InstancesOk • InstancesPending • InstancesUnknown • InstancesNoData http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/health-enhanced-cloudwatch.html#health- enhanced-cloudwatch-metrics
  62. 62. 62 Elastic Beanstalkにおけるモニタリング • マネージメントコンソールでの拡張ヘルスレポート – メトリクス: リクエスト総数および各レスポンスコード毎の数 • ApplicationRequestsTotal • ApplicationRequests5xx • ApplicationRequests4xx • ApplicationRequests3xx • ApplicationRequests2xx http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/health-enhanced-cloudwatch.html#health- enhanced-cloudwatch-metrics
  63. 63. 63 Elastic Beanstalkにおけるモニタリング • マネージメントコンソールでの拡張ヘルスレポート – メトリクス: xパーセントの完了にかかった平均時間 • ApplicationLatencyP10 • ApplicationLatencyP50 • ApplicationLatencyP75 • ApplicationLatencyP85 • ApplicationLatencyP90 • ApplicationLatencyP95 • ApplicationLatencyP99 • ApplicationLatencyP99.9 http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/health-enhanced-cloudwatch.html#health- enhanced-cloudwatch-metrics
  64. 64. 64 Elastic Beanstalkにおけるモニタリング • マネージメントコンソールでの拡張ヘルスレポート – メトリクス • LoadAverage1min: 1分間のLoad値の平均値 • InstanceHealth: 現在のインスタンスのヘルスステータス • RootFilesystemUtil: 使用ディスク容量の割合 http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/health-enhanced-cloudwatch.html#health- enhanced-cloudwatch-metrics
  65. 65. 65 Elastic Beanstalkにおけるモニタリング • マネージメントコンソールでの拡張ヘルスレポート – メトリクス: 過去1分間のCPU使用状況 • CPUIrq • CPUUser • CPUIdle • CPUSystem • CPUSoftirq • CPUIowait • CPUNice http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/health-enhanced-cloudwatch.html#health- enhanced-cloudwatch-metrics
  66. 66. 66 CloudWatch Logsを使ってログ監視 CloudWatch Logs Agentを追加する設定ファイ ル - Tomcat (Java)向け - Apache (PHP and Python)向け - Nginx (Ruby, Node.js, and Docker)向け CloudWatch Logsへの書き込み権限はIAM Roleで http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/AWSHowTo.cloudwatchlogs.html
  67. 67. 67 提供されるCloudWatch Logs Agent設定ファイル • cwl-setup.config – CloudWatch Logs agentを各EC2インスタンスにインストール – 設定ファイルgeneral.confを作成 – 修正なしで利用可能 • cwl-webrequest-metrics.config – どのファイルを監視するかを設定 – CloudWatch Logs Agentが適用するMetrics Filterを指定 – Alarmの条件や通知先Amazon SNSのTopicなどを指定 – カスタムログや追加のAlarm設定などがあれば必要に応じて修正して利用 • eb-logs.config – CloudWatch Logs Agentが出力するログファイルのローテーションなどの設定 – 修正なしで利用可能
  68. 68. 68 Elastic Beanstalkの便利機能 • SSH接続が必要な場合もEB CLIで $ eb ssh –i xxxx
  69. 69. 69 Agenda • Introduction • Deployment • Monitoring • Docker Support • Worker Tier • Customer Use-cases • Tips
  70. 70. 70 Elastic BeanstalkのDockerサポート • Single Container – EC2インスタンスの中で単一のDockerコンテナを実行 – Elastic Beanstalkの標準的であらかじめ定義された設定の活用 Environment Host Manager AutoScaling Nginx (tcp:80) Docker (tcp: xxxx) コンテナの起動・終了 Nginxとコンテナとの 接続ポートの更新 コマンド
  71. 71. 71 Elastic BeanstalkのDockerサポート • Multi Container – EC2 Container Service(ECS)を使用 – Dockerrun.aws.jsonを使ったより柔軟な構成が可能に
  72. 72. 72 Elastic BeanstalkのDockerサポート • Dockerrun.aws.json
  73. 73. 73 Elastic BeanstalkのDockerサポート • Dockerrun.aws.json { "AWSEBDockerrunVersion": 2, "volumes": [ { "name": "php-app", "host": { "sourcePath": "/var/app/current/php-app" } }, { "name": "nginx-proxy-conf", "host": { "sourcePath": "/var/app/current/proxy/conf.d" } } ], "containerDefinitions": [ { "name": "php-app", "image": "php:fpm", "essential": true, "memory": 128, "mountPoints": [ { "sourceVolume": "php-app", "containerPath": "/var/www/html", "readOnly": true } ] }, Single は 1 Multi は 2 PHPアプリ用コンテナと ProxyのNginx用コンテナ のボリューム(マウントポイント) PHPアプリ用コンテナのインフラ設定 Dockerイメージ指定、メモリ設定、 Sourceボリュームからコンテナへのファイルコピー
  74. 74. 74 Elastic BeanstalkのDockerサポート • Dockerrun.aws.json "mountPoints": [ { "sourceVolume": "php-app", "containerPath": "/var/www/html", "readOnly": true }, { "sourceVolume": "nginx-proxy-conf", "containerPath": "/etc/nginx/conf.d", "readOnly": true }, { "sourceVolume": "awseb-logs-nginx-proxy", "containerPath": "/var/log/nginx" } ] } ] } { "name": "nginx-proxy", "image": "nginx", "essential": true, "memory": 128, "portMappings": [ { "hostPort": 80, "containerPort": 80 } ], "links": [ "php-app" ], Proxy用コンテナのインフラ設定 ホスト側の80版ポートとコンテナ側の80版ポート をマッピングして裏のPHPアプリへルーティング
  75. 75. 75 Elastic BeanstalkのDockerサポート • ローカルでのDockerコンテナの実行 – EB CLI $ eb local run • 開発時に便利なコマンド群 $ eb local status $ eb local open $ eb local logs $ eb local run Creating elasticbeanstalk_phpapp_1... Creating elasticbeanstalk_nginxproxy_1... Attaching to elasticbeanstalk_phpapp_1, elasticbeanstalk_nginxproxy_1 phpapp_1 | [23-Apr-2015 23:24:25] NOTICE: fpm is running, pid 1 phpapp_1 | [23-Apr-2015 23:24:25] NOTICE: ready to handle connections
  76. 76. 76 Agenda • Introduction • Deployment • Monitoring • Docker Support • Worker Tier • Customer Use-cases • Tips
  77. 77. 77 Elastic Beanstalk Worker Tier • バッチアプリケーションもElastic Beanstalkで – SQS + Auto Scalingでスケーラブルなバッチ処理基盤 • Scale-InしてもメッセージはSQSに残るため後から処理
  78. 78. 78 Elastic Beanstalk Worker Tier • Workerホスト内でWebアプリケーションが動作 – Sqsd • Workerホスト内で動作するデーモン • Webアプリからの応答 – 200 OKの場合→SQSからメッセージを削除(DeleteMessage) – 200 OK以外の場合→VisibilityTimeout(SQSの設定)後にSQS からメッセージが取得可能(リトライ) – 応答無し→Inactivity Timeout(Elastic Beanstalkの設定)後 にSQSからメッセージが取得可能(リトライ) • Dead Letter Queue – 何度実行しても200 OK以外でSQSのキューに残り続けてしま うメッセージを別のキュー(Dead Letter Queue)に移動
  79. 79. 79 Elastic Beanstalk Worker Tier • 定期的なタスク実行 – cron.yaml • 例) 12時間ごとにbackupジョブを実行 毎日午後11時にauditジョブを実行 version: 1 cron: - name: "backup" url: "/backup" schedule: "0 */12 * * *" - name: "audit" url: "/audit" schedule: "0 23 * * *"
  80. 80. 80 Agenda • Introduction • Deployment • Monitoring • Docker Support • Worker Tier • Customer Use-cases • Tips
  81. 81. 81 ユーザー事例: Royal Caribbean Cruises Ltd. • 43隻の大型船を運営中。今後更に拡大予定 • 7大陸490地点でサービスを展開中 • 9,000 ページのHTMLがサイトにホストされている • 2015年3月に royalcaribbean.com をElastic Beanstalkを使ってローンチ • ピークシーズンは月間1億ページView • 600万ユニークユーザー
  82. 82. 82 ユーザー事例: Royal Caribbean Cruises Ltd. • Scaling Your Web Applications with AWS Elastic Beanstalk http://www.slideshare.net/AmazonWebServices/dvo201-scaling-your-web-applications-with-aws-elastic-beanstalk https://www.youtube.com/watch?v=nkj0GXgaRv8
  83. 83. 83 ユーザー事例: Royal Caribbean Cruises Ltd.
  84. 84. 84 ユーザー事例: Retty • RettyがElastic Beanstalkを使い始めて1年経過 http://www.slideshare.net/shotaumeda1/aws-startuptechsummer2015
  85. 85. 85 ユーザー事例: Retty • eb cloneで環境を丸ごと新たしい環境にコピー
  86. 86. 86 ユーザー事例: SONY • Building At-Scale Services with AWS Elastic Beanstalk https://www.youtube.com/watch?v=gA_m_4ikTgg http://www.slideshare.net/AmazonWebServices/dvo312-sony-building-atscale-services-with-aws-elastic-beanstalk
  87. 87. 87 • Infrastructure as Code を実践 – Shinya Kawaguchiさん • “Especially Elastic Beanstalk configuration files are very useful and powerful to customize environment, so we are utilizing them in our system” ユーザー事例: SONY
  88. 88. 88 • Auto Scaling: Custom Scaling Policy ユーザー事例: SONY
  89. 89. 89 • Zero Downtime Deployment ユーザー事例: SONY
  90. 90. 90 • クラスメソッドが構築した クラウドネイティブなプラットフォーム ユーザー事例: バーミヤン公式アプリ http://dev.classmethod.jp/cloud/skylark-bamiyan-mobile-app/
  91. 91. 91 Agenda • Introduction • Deployment • Monitoring • Docker Support • Worker Tier • Customer Use-cases • Tips
  92. 92. 92 Environment間リンク機能 • SQSのキューを介して疎結合なアーキテクチャを実現 – Environment Manifest (env.yaml) 本番運用の際はバージョンを明記しま しょう AWSConfigurationTemplateVersion: 1.1.0.0 EnvironmentLinks: "WORKERQUEUE": "worker"
  93. 93. 93 時間指定のスケーリング • Time-based Scaling – 時間設定でスケールアウト/インを制御 本番運用の際はバージョンを明記しま しょう
  94. 94. 94 各種ログの有効活用 • インスタンスログ http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using- features.logging.html
  95. 95. 95 Tomcatに複数のwarをデプロイ • warファイルと.ebextensionsを一つのzipに – MyApplication.zip • .ebextensions • foo.war -> http://MyApplication.elasticbeanstalk.com/foo • bar.war -> http://MyApplication.elasticbeanstalk.com/bar • ROOT.war -> http://MyApplication.elasticbeanstalk.com/ – 注意点 • ELBのヘルスチェックは一つのwarにしか行われない • 解決策: ヘルスチェック用のwarをデプロイ – 各warにアクセスし想定通りのレスポンスが返ってくるかチェック
  96. 96. 96 Release Notes • 更新情報はリリースノートでチェック – https://aws.amazon.com/releasenotes/AWS-Elastic-Beanstalk
  97. 97. 97 Q&A 次回Webinarのお申し込み http://aws.amazon.com/jp/event_schedule/
  98. 98. 98 Webinar資料の配置場所 • AWS クラウドサービス活用資料集 – http://aws.amazon.com/jp/aws-jp-introduction/
  99. 99. 99 公式Twitter/Facebook AWSの最新情報をお届けします @awscloud_jp 検索 最新技術情報、イベント情報、お役立ち情報、お得なキャンペーン情報などを 日々更新しています! もしくは http://on.fb.me/1vR8yWm
  100. 100. 100 ご参加ありがとうございました。

    Be the first to comment

    Login to see the comments

  • HitoshiKamezaki

    Dec. 2, 2015
  • HiroshiShiobara

    Dec. 3, 2015
  • akitanak

    Dec. 4, 2015
  • ktsugita

    Dec. 13, 2015
  • KazuyaHara

    Jan. 4, 2016
  • yutanatsume5

    May. 5, 2016
  • TakutoOno

    May. 23, 2016
  • TakashiKozu1

    May. 24, 2016
  • kiichiroutoya

    Jun. 10, 2016
  • ohtsuchi

    Jul. 18, 2016
  • MorimotoYasuhiko

    Sep. 5, 2016
  • RyujiTakamiyagi

    Sep. 14, 2016
  • HayashiNatsuki

    Nov. 9, 2016
  • ryoheisonoda

    Feb. 20, 2017
  • ryowithbeer

    May. 23, 2017
  • ShuheiEgami

    Dec. 8, 2017
  • ssuser3c492b

    Oct. 10, 2018
  • ssuser302c11

    Nov. 11, 2018
  • koichirokawaguchi

    Aug. 9, 2020
  • kumamidori

    Mar. 15, 2021

2015年11月25日に放送したAWS Elastic Beanstalkの回の資料です。今後の予定は以下をご覧ください。 http://aws.amazon.com/jp/about-aws/events/#webinar

Views

Total views

19,893

On Slideshare

0

From embeds

0

Number of embeds

9,303

Actions

Downloads

125

Shares

0

Comments

0

Likes

32

×