ブログ製本サービス MyBooks.jpのアーキテクチャ Part.3 AWS Elastic Beanstalkについて

9,030 views

Published on

第13回JAWS-UG札幌勉強会で発表した資料です。Immutable InfrastructureとElastic Beanstalkのお話です。

Published in: Technology
0 Comments
10 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
9,030
On SlideShare
0
From Embeds
0
Number of Embeds
6,043
Actions
Shares
0
Downloads
19
Comments
0
Likes
10
Embeds 0
No embeds

No notes for slide

ブログ製本サービス MyBooks.jpのアーキテクチャ Part.3 AWS Elastic Beanstalkについて

  1. 1. ブログ製本サービス MyBooks.jpのアーキテクチャ Part.3 AWS Elastic Beanstalkについて 欧文印刷株式会社・ソフトウェアエンジニア・田名辺健人 2014/04/11 第13回勉強会
  2. 2. Who am I ?!(この顔にピンときたら)
  3. 3. 田名辺 健人(たなべたけひと) ソフトウェアエンジニア ! ! 欧文印刷株式会社(東京都) 2011年11月クラウド移住 札幌でリモート勤務中 初代AWSサムライ 好きなサービス: SWF @dateofrock http://blog.dateofrock.com/
  4. 4. www.mybooks.jp EC2 Instance WordPress (AMI元) Elastic IP Address ELB EC2 Instance EBS EBS snapshot S3 Simple Workflow Service Tomcat Session Store Book Data Tomcat7 (Grails/back-end) EC2 Instances ELB Decider Worker EC2 Instances (Auto Scaling) Tomcat7 (Grails/front-end) CloudWatch Simple Email Service S3 (App Resources) editor.mybooks.jp A. 静的サイト B. 動的サイト Route53
  5. 5. www.mybooks.jp EC2 Instance WordPress (AMI元) Elastic IP Address ELB EC2 Instance EBS EBS snapshot S3 Simple Workflow Service Tomcat Session Store Book Data Tomcat7 (Grails/back-end) EC2 Instances ELB Decider Worker EC2 Instances (Auto Scaling) Tomcat7 (Grails/front-end) CloudWatch Simple Email Service S3 (App Resources) editor.mybooks.jp A. 静的サイト B. 動的サイト Route53 www.mybooks.jp EC2 Instance WordPress (AMI元) Elastic IP Address ELB EC2 Instance EBS EBS snapshot S3 Simple Workflow Service Tomcat Session Store Book Data Tomcat7 (Grails/back-end) EC2 Instances ELB Decider Worker EC2 Instances (Auto Scaling) Tomcat7 (Grails/front-end) CloudWatch Simple Email Service S3 (App Resources) editor.mybooks.jp A. 静的サイト B. 動的サイト Route53 www.mybooks.jp EC2 Instance WordPress (AMI元) Elastic IP Address ELB EC2 Instance EBS EBS snapshot S3 Simple Workflow Service Tomcat Session Store Book Data Tomcat7 (Grails/back-end) EC2 Instances ELB Decider Worker EC2 Instances (Auto Scaling) Tomcat7 (Grails/front-end) CloudWatch Simple Email Service S3 (App Resources) editor.mybooks.jp A. 静的サイト B. 動的サイト Route53
  6. 6. AWS Elastic Beanstalk
  7. 7. Immutable Infrastructure 今一番ナウい! そして日本人には発音がつらいww
  8. 8. Blue Green Deployment
  9. 9. http://martinfowler.com/bliki/BlueGreenDeployment.html
  10. 10. それ Elastic Beanstalk そのものですから
  11. 11. AWS Elastic Beanstalk
  12. 12. Elastic Beanstalk で Blue Green Deployment してみる
  13. 13. DNS Storage DB LB LB Servers Servers Server Image Server Image Blue Green Live Pending version1
  14. 14. DNS Storage DB LB LB Servers Servers Server Image Server Image Blue Green Live Pending version1 version2
  15. 15. DNS Storage DB LB LB Servers Servers Server Image Server Image Blue Green Live Pending version1 version2
  16. 16. DNS Storage DB LB LB Servers Servers Server Image Server Image Blue Green Pending Live version1 version2
  17. 17. 1.サーバーを直接触らない 上書きデプロイしてリスタートとか 事故の元w (基本的に)サーバーにログインし ての作業はやらない。 Immutable Infrastructureとしての Elastic Beanstalk
  18. 18. そもそもkey pair 指定が必須ではない (注)私は臆病者なので指定してますw
  19. 19. EC2のセットアップ 1.あらかじめセットアップ済み AMIを作る 2.cloud-initやChefなどで頑張るw 3.configを利用する • Elastic Beanstalk的には王道
  20. 20. EC2のセットアップ 1.あらかじめセットアップ済み AMIを作る 2.cloud-initやChefなどで頑張るw 3.configを利用する • Elastic Beanstalk的には王道
  21. 21. YAML
  22. 22. YAML $APP_ROOT/.ebextensions/*.config ✓パッケージインストール ✓アーカイブダウンロード + 展開 ✓ファイル生成 or コピー ✓OSユーザー・グループ作成 ✓コマンド実行(OS用) ✓コマンド実行(コンテナ用) ✓サービス設定(/etc/init.d) ✓Beanstalk固有の設定
  23. 23. packages: yum: libmemcached: [] ruby-devel: [] nfs-utils: [1.0.9] rpm, yum, apt, rubygems (chef)
  24. 24. sources: /usr/local/bin:↲ http://hoge.com/hoge.tar.gz tar, tar+gzip, tar+bz2, zip
  25. 25. files: "/home/ec2-user": mode: "000777" owner: ec2-user group: ec2-user source: http://hoge.com/a.txt
  26. 26. files: "/home/ec2-user": mode: "000777" owner: ec2-user group: ec2-user content: | # this is my file # with content content直書きOK
  27. 27. users: myuser: groups: group1 group2 uid: "50" homeDir: “/tmp” groups: - groupOne - groupTwo gid: "45"
  28. 28. commands: test: command: myscript.py cwd: /home/ec2-user env: myvarname: myvarvalue
  29. 29. container_commands: replace-server_xml: command: ↲ cp .ebextensions/server.xml ↲ /etc/tomcat7/server.xml server.xmlの置換
  30. 30. container_commands: 01syncdb: command: "django-admin.py syncdb --noinput" leader_only: true 02migrate: command: "django-admin.py migrate" leader_only: true マイグレーションの実行
  31. 31. services: sysvinit: myservice: enabled: true ensureRunning: true
  32. 32. option_settings: - namespace: ↲ aws:elasticbeanstalk:container:tomcat:jvmoptions option_name: Xmx value: 512m - option_name: AWS_SECRET_KEY value: SECRET_KEY - option_name: AWS_ACCESS_KEY_ID value: ACCESS_KEY
  33. 33. 2.App側も気を使う必要あり Immutableである→ステートレス ステートレスなアーキテクチャ メンテが楽!! スケーラブル!! Immutable Infrastructureとしての Elastic Beanstalk
  34. 34. DNS Storage DB LB Servers Server Image Blue Live
  35. 35. DNS Storage DB LB Servers Server Image Blue Live データ(状態)はサーバーの外へ!
  36. 36. DNS Storage DB LB Servers Server Image Blue Live サーバーはいつでも捨てられる!
  37. 37. Immutable Infrastructure 今一番ナウい! そして日本人には発音がつらいww
  38. 38. AWS Elastic Beanstalk
  39. 39. www.mybooks.jp EC2 Instance WordPress (AMI元) Elastic IP Address ELB EC2 Instance EBS EBS snapshot S3 Simple Workflow Service Tomcat Session Store Book Data Tomcat7 (Grails/back-end) EC2 Instances ELB Decider Worker EC2 Instances (Auto Scaling) Tomcat7 (Grails/front-end) CloudWatch Simple Email Service S3 (App Resources) editor.mybooks.jp A. 静的サイト B. 動的サイト Route53
  40. 40. www.mybooks.jp EC2 Instance WordPress (AMI元) Elastic IP Address ELB EC2 Instance EBS EBS snapshot S3 Simple Workflow Service Tomcat Session Store Book Data Tomcat7 (Grails/back-end) EC2 Instances ELB Decider Worker EC2 Instances (Auto Scaling) Tomcat7 (Grails/front-end) CloudWatch Simple Email Service S3 (App Resources) editor.mybooks.jp A. 静的サイト B. 動的サイト Route53 Private Distribution State Sharing Snapshot Scale Up Floating IP NFS Sharing DB Replication Queuing Chain Multi Datacenter Bootstrap Cloud DI Web Strage Archive Functional Firewall Operational Firewall Multi Datacenter Bootstrap Cloud DI Web Strage Archive Functional Firewall Operational Firewall Snapshot

×