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.

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

6,057 views

Published on

Published in: Technology

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

×