Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語

5,648 views
5,483 views

Published on

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

No Downloads
Views
Total views
5,648
On SlideShare
0
From Embeds
0
Number of Embeds
1,544
Actions
Shares
0
Downloads
0
Comments
0
Likes
15
Embeds 0
No embeds

No notes for slide

Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語

  1. 1. にみる AWS 運用の勘所 2013.03.09(sat) Takashi SOMEDA
  2. 2. Five Worlds by Joel Spolsky 受託 パッケージ 組み込み 使い捨て ゲーム Posted at May 6, 2002 on http://www.joelonsoftware.com/articles/FiveWorlds.html
  3. 3. About me 染田貴志 (SOMEDA Takashi) http://d.hatena.ne.jp/tksmd 株式会社ヌーラボ所属 Backlog の開発・インフラ・サポート Cacoo のインフラ JAWS UG 京都支部長 関西 Java エンジニアの会 常連 jaws-ug santo 2013
  4. 4. Job history 2010年 Nulab Inc. エンジニア 2008年 チョイスタジオ CTO 2006年 四次元データ (現シナジーマーケティング) 技術研究部員 2005年 未踏ソフトウェア フリーランス 2002年 Sun Microsystems (現Oracle) ベンチマークエンジニア jaws-ug santo 2013
  5. 5. 国内を中心に 約13万ユーザ が利用するプロジェクト管理ツールタスク管理機能に加え、• WebDAVによるファイル共有• GitやSubversionのリポジトリホスティングなどを提供。一昨年前にお値段据え置きで容量30倍のプラン変更も。2011年秋から海外版の提供を開始、今春中国向けの機能強化を予定 jaws-ug santo 2013
  6. 6. 全世界 約77万ユーザ (日本2割)が利用するオンラインのドローツール基本的なドローツールの機能に加え• 複数のユーザで同時に編集出来るリアルタイムコラボレーション• Google+ Hangouts と連携して、ビデオチャットとあわせて利用可能といった、コラボレーション機能が充実。正式版ローンチから2年でユーザ数は約12倍、容量は20倍以上に
  7. 7. Team jaws-ug santo 2013
  8. 8. Background 小さく、役割にとらわれないチーム 俊敏さ > 慎重さ jaws-ug santo 2013
  9. 9. Agenda インスタンス構成の設計 内部ホスト名の解決 データストア 静的リソースの配信 まとめ jaws-ug santo 2013
  10. 10. インスタンス構成の設計 http://www.flickr.com/photos/83633410@N07/7658268052/in/photostream/
  11. 11. Multiple AZ jaws-ug santo 2013
  12. 12. Multiple AZ ネットワーク遅延が問題になったことはない AZ間での通信障害に対する監視はしておく まだゾーン障害を経験してない.. jaws-ug santo 2013
  13. 13. Multi tenant jaws-ug santo 2013
  14. 14. Multi tenant ビジネス向き or 一個人向き 影響範囲が限定される安心感は(かなり)大きい 外部サービスとの連携に工夫が要る場合も jaws-ug santo 2013
  15. 15. Instance Role jaws-ug santo 2013
  16. 16. AMI & cloudinit Cloudinit で 個々のインスタンス 設定を行う jaws-ug santo 2013
  17. 17. fabric@task http://fabfile.org/@roles(„app‟)def all_release(): sudo(“service tomcat stop”) put(“new.war”,”/tmp/new.war”) run(“cp –p /tmp/new.war /webapps/ROOT.war”) sudo(“service tomcat start”)@task@hosts(„web01‟,‟web02‟,‟mail01‟,‟mail02‟)def fluent_agent_reload(): sudo("/etc/init.d/fluent-agent-lite reload")# pip でインストール$ pip install Fabric# 実行$ fab app.all_release jaws-ug santo 2013
  18. 18. fabric シンプル!シンプル!シンプル! boto と組み合わせて使うことで多様な操作が可能 Perl の cinnamon も近いイメージ https://github.com/kentaro/cinnamon jaws-ug santo 2013
  19. 19. Monitoring jaws-ug santo 2013
  20. 20. Cloudwatch BK?! mon-put-metric-alarm --alarm-name ”${InstanceName}" --metric-name CPUUtilization --namespace AWS/EC2 --statistic Average --period 300 --evaluation-periods 2 --threshold 100 --unit Percent --comparison-operator GreaterThanThreshold --dimensions InstanceId=“${InstanceId}” --insufficient-data-actions arn:aws:sns:${SNS_TOPIC} --ok-actions arn:aws:sns:${SNS_TOPIC} InsufficientData で障害の予兆を検知 jaws-ug santo 2013
  21. 21. 内部ホスト名の解決 http://www.flickr.com/photos/nicmcphee/2558167768/
  22. 22. What‟s the problem? 内部IPはDHCPで配布 (VPCは固定も可能) 起動時だけでなく、stop/start でも変わる 役割分割するとインスタンスは必然的に増えがち jaws-ug santo 2013
  23. 23. Approach EIP + Public DNS 名 /etc/hosts ファイル自動更新 内部 DNS jaws-ug santo 2013
  24. 24. Public DNS name + EIP jaws-ug santo 2013
  25. 25. /etc/hosts$ ec2din --filter "tag:Name=*" --filter "instance-state-name=running" | awk BEGIN{ fmt = "%-14s %sn" ; printf fmt, "127.0.0.1","localhost localhost.localdomain"; } { if($1 == "INSTANCE"){ ip = (index($15,"10") == 1) ? $15 : $16 } else if($1 == "TAG" && $4 == "Name" ){ printf fmt, ip, $5 } } jaws-ug santo 2013
  26. 26. /etc/hosts 台数少ないうちはアリ dnsmasq と併用する運用も 自動更新するかどうか検討要 jaws-ug santo 2013
  27. 27. Internal DNS (bind) 外部への問い合わせ はAWS提供の内部 DNSサーバへ 起動時にnsupdateで 自身のホスト名と IPアドレスを登録 jaws-ug santo 2013
  28. 28. Internal DNS (bind) bind でやる場合は Dynamic DNS PowerDNS 使うとアプリ的には楽かも 再帰を許可するかしないかは悩みどころ jaws-ug santo 2013
  29. 29. Internal DNS (bind) amazonaws.com は外部に再帰問い合わせしてはダメ zone "amazonaws.com" { type forward; forward only; forwarders {172.16.0.23;}; }; jaws-ug santo 2013
  30. 30. Internal DNS (bind) アプリ側で名前解決のキャッシュは短めに java -Dsun.net.inetaddr.ttl=10 -Dsun.net.inetaddr.negative.ttl=10 jaws-ug santo 2013
  31. 31. データストア http://www.flickr.com/photos/83633410@N07/7658034524/in/photostream/
  32. 32. 実容量で 1〜2TBのデータストアの運用経験のある方 jaws-ug santo 2013
  33. 33. We love RDBMS jaws-ug santo 2013
  34. 34. Running on LVM RAID0で ストライピング jaws-ug santo 2013
  35. 35. Working with partition jaws-ug santo 2013
  36. 36. Migration with PITR jaws-ug santo 2013
  37. 37. We love RDBMS, again RDS使えれば使おう 自前管理でも打てる手は結構ある クラウドだから NoSQL 、その前に jaws-ug santo 2013
  38. 38. 静的リソースの配信 http://www.flickr.com/photos/83633410@N07/7658236076/sizes/l/in/photostream/
  39. 39. この本読んだ方 http://www.amazon.co.jp/ハイパフォーマンスWebサイト-―高速サイトを実現する14のルール-Steve-Souders/dp/487311361X/ jaws-ug santo 2013
  40. 40. Cloudfront jaws-ug santo 2013
  41. 41. Web server now very busy jaws-ug santo 2013
  42. 42. Cost 2010年9月実績 $16.88 (55.628GB転送) 2013年1月実績 $79.6 (327.88GB転送) jaws-ug santo 2013
  43. 43. Multiple origin jaws-ug santo 2013
  44. 44. Dynamic content delivery 1リクエストで 処理したい jaws-ug santo 2013
  45. 45. Dynamic content delivery <script src="${contextPath}/.shared.js/v1:js/jquery.js,js/underscore.js,js/bootstrap.js"> </script> jaws-ug santo 2013
  46. 46. Dynamic content delivery https://github.com/tksmd/static-shared
  47. 47. For cloudfront outage jaws-ug santo 2013
  48. 48. For cloudfront outage jaws-ug santo 2013
  49. 49. まとめjaws-ug santo 2013 http://www.flickr.com/photos/nauright/2662160957/
  50. 50. Design Basics 障害の発生をなくすことより、 障害発生時に 迅速に元に戻せる仕組み を意識して設計、運用する jaws-ug santo 2013
  51. 51. What AWS brings us ?! サービスを運用しはじめてから、 次にとる舵を選ぶことが出来る柔軟さ jaws-ug santo 2013
  52. 52. What AWS brings us ?! 小さなチームでも 世界で戦えるサービスを提供できる 力を与えたということ jaws-ug santo 2013
  53. 53. Now, we consider.. AMI構成の自動化 セキュリティ強化 デプロイプロセスの高速化 jaws-ug santo 2013
  54. 54. Thanks!! ありがとうございました ご質問あればどうぞ! jaws-ug santo 2013
  55. 55. JAWS-UG 京都支部のこれまで 発足 : 2011年4月 2011/04/15 第一回勉強会 2011/11/10 第二回勉強会 2012/06/20 第三回勉強会 次回は 2012/11 2013/05月頃 ?! http://jawsug-kyoto.g.hatena.ne.jp/
  56. 56. コアメンバ @tksmd @yehara @hrsm1979 @tan_go238 @shimokawa 京都リージョン1 東 京都リージョン2

×