More Related Content
Similar to Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
Similar to Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語 (20)
More from Takashi Someda (13)
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
- 2. Five Worlds by Joel Spolsky
受託
パッケージ 組み込み
使い捨て ゲーム
Posted at May 6, 2002 on http://www.joelonsoftware.com/articles/FiveWorlds.html
- 3. About me
染田貴志 (SOMEDA Takashi)
http://d.hatena.ne.jp/tksmd
株式会社ヌーラボ所属
Backlog の開発・インフラ・サポート
Cacoo のインフラ
JAWS UG 京都支部長
関西 Java エンジニアの会 常連
jaws-ug santo 2013
- 4. Job history
2010年
Nulab Inc.
エンジニア 2008年
チョイスタジオ
CTO
2006年
四次元データ
(現シナジーマーケティング)
技術研究部員 2005年
未踏ソフトウェア
フリーランス
2002年
Sun Microsystems
(現Oracle)
ベンチマークエンジニア
jaws-ug santo 2013
- 9. Team
jaws-ug santo 2013
- 10. Background
小さく、役割にとらわれないチーム
俊敏さ > 慎重さ
jaws-ug santo 2013
- 11. Agenda
インスタンス構成の設計
内部ホスト名の解決
データストア
静的リソースの配信
まとめ
jaws-ug santo 2013
- 12. インスタンス構成の設計
http://www.flickr.com/photos/83633410@N07/7658268052/in/photostream/
- 14. Multiple AZ
ネットワーク遅延が問題になったことはない
AZ間での通信障害に対する監視はしておく
まだゾーン障害を経験してない..
jaws-ug santo 2013
- 16. Multi tenant
ビジネス向き or 一個人向き
影響範囲が限定される安心感は(かなり)大きい
外部サービスとの連携に工夫が要る場合も
jaws-ug santo 2013
- 19. 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
- 20. fabric
シンプル!シンプル!シンプル!
boto と組み合わせて使うことで多様な操作が可能
Perl の cinnamon も近いイメージ
https://github.com/kentaro/cinnamon
jaws-ug santo 2013
- 22. 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
- 23. 内部ホスト名の解決
http://www.flickr.com/photos/nicmcphee/2558167768/
- 24. What‟s the problem?
内部IPはDHCPで配布
(VPCは固定も可能)
起動時だけでなく、stop/start でも変わる
役割分割するとインスタンスは必然的に増えがち
jaws-ug santo 2013
- 25. Approach
EIP + Public DNS 名
/etc/hosts ファイル自動更新
内部 DNS
jaws-ug santo 2013
- 27. /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
- 28. /etc/hosts
台数少ないうちはアリ
dnsmasq と併用する運用も
自動更新するかどうか検討要
jaws-ug santo 2013
- 29. Internal DNS (bind)
外部への問い合わせ
はAWS提供の内部
DNSサーバへ
起動時にnsupdateで
自身のホスト名と
IPアドレスを登録
jaws-ug santo 2013
- 30. Internal DNS (bind)
bind でやる場合は Dynamic DNS
PowerDNS 使うとアプリ的には楽かも
再帰を許可するかしないかは悩みどころ
jaws-ug santo 2013
- 31. Internal DNS (bind)
amazonaws.com は外部に再帰問い合わせしてはダメ
zone "amazonaws.com" {
type forward;
forward only;
forwarders {172.16.0.23;};
};
jaws-ug santo 2013
- 32. Internal DNS (bind)
アプリ側で名前解決のキャッシュは短めに
java -Dsun.net.inetaddr.ttl=10 -Dsun.net.inetaddr.negative.ttl=10
jaws-ug santo 2013
- 39. We love RDBMS, again
RDS使えれば使おう
自前管理でも打てる手は結構ある
クラウドだから NoSQL 、その前に
jaws-ug santo 2013
- 44. Cost
2010年9月実績 $16.88
(55.628GB転送)
2013年1月実績 $79.6
(327.88GB転送)
jaws-ug santo 2013
- 47. Dynamic content delivery
<script
src="${contextPath}/.shared.js/v1:js/jquery.js,js/underscore.js,js/bootstrap.js">
</script>
jaws-ug santo 2013
- 52. Design Basics
障害の発生をなくすことより、
障害発生時に
迅速に元に戻せる仕組み
を意識して設計、運用する
jaws-ug santo 2013
- 53. What AWS brings us ?!
サービスを運用しはじめてから、
次にとる舵を選ぶことが出来る柔軟さ
jaws-ug santo 2013
- 54. What AWS brings us ?!
小さなチームでも
世界で戦えるサービスを提供できる
力を与えたということ
jaws-ug santo 2013
- 56. Thanks!!
ありがとうございました
ご質問あればどうぞ!
jaws-ug santo 2013
- 57. JAWS-UG 京都支部のこれまで
発足 : 2011年4月
2011/04/15 第一回勉強会
2011/11/10 第二回勉強会
2012/06/20 第三回勉強会
次回は 2012/11 2013/05月頃 ?!
http://jawsug-kyoto.g.hatena.ne.jp/
- 58. コアメンバ
@tksmd
@yehara
@hrsm1979
@tan_go238
@shimokawa
京都リージョン1 東 京都リージョン2