にみる AWS 運用の勘所
      2013.03.09(sat) Takashi SOMEDA
Five Worlds by Joel Spolsky


                           受託




        パッケージ                                       組み込み




                使い捨て                       ゲーム




                  Posted at May 6, 2002 on http://www.joelonsoftware.com/articles/FiveWorlds.html
About me

                           染田貴志 (SOMEDA Takashi)

                     http://d.hatena.ne.jp/tksmd


                      株式会社ヌーラボ所属

                      Backlog の開発・インフラ・サポート
                      Cacoo のインフラ


                     JAWS UG 京都支部長
                     関西 Java エンジニアの会 常連


           jaws-ug santo 2013
Job history
 2010年


            Nulab Inc.
             エンジニア                               2008年


                                                         チョイスタジオ
                                                            CTO
 2006年

           四次元データ
     (現シナジーマーケティング)
         技術研究部員                                  2005年


                                                         未踏ソフトウェア
                                                          フリーランス
 2002年

         Sun Microsystems
            (現Oracle)
         ベンチマークエンジニア

                            jaws-ug santo 2013
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
国内を中心に 約13万ユーザ が利用するプロジェクト管理ツール


タスク管理機能に加え、
• WebDAVによるファイル共有
• GitやSubversionのリポジトリホスティング
などを提供。一昨年前にお値段据え置きで容量30倍のプラン変更も。

2011年秋から海外版の提供を開始、今春中国向けの機能強化を予定
                   jaws-ug santo 2013
全世界 約77万ユーザ (日本2割)が利用するオンラインのドローツール


基本的なドローツールの機能に加え
• 複数のユーザで同時に編集出来るリアルタイムコラボレーション
• Google+ Hangouts と連携して、ビデオチャットとあわせて利用可能
といった、コラボレーション機能が充実。


正式版ローンチから2年でユーザ数は約12倍、容量は20倍以上に
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
Team




       jaws-ug santo 2013
Background



        小さく、役割にとらわれないチーム




             俊敏さ > 慎重さ




              jaws-ug santo 2013
Agenda



   インスタンス構成の設計
   内部ホスト名の解決
   データストア
   静的リソースの配信
   まとめ



            jaws-ug santo 2013
インスタンス構成の設計




    http://www.flickr.com/photos/83633410@N07/7658268052/in/photostream/
Multiple AZ




              jaws-ug santo 2013
Multiple AZ


       ネットワーク遅延が問題になったことはない




        AZ間での通信障害に対する監視はしておく




              まだゾーン障害を経験してない..




                   jaws-ug santo 2013
Multi tenant




               jaws-ug santo 2013
Multi tenant


               ビジネス向き or 一個人向き




       影響範囲が限定される安心感は(かなり)大きい




        外部サービスとの連携に工夫が要る場合も




                   jaws-ug santo 2013
Instance Role




                jaws-ug santo 2013
AMI & cloudinit




                                         Cloudinit で
                                       個々のインスタンス
                                         設定を行う




                  jaws-ug santo 2013
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
fabric


             シンプル!シンプル!シンプル!




         boto と組み合わせて使うことで多様な操作が可能




             Perl の cinnamon も近いイメージ
              https://github.com/kentaro/cinnamon




                        jaws-ug santo 2013
Monitoring




             jaws-ug santo 2013
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
内部ホスト名の解決




     http://www.flickr.com/photos/nicmcphee/2558167768/
What‟s the problem?


             内部IPはDHCPで配布
               (VPCは固定も可能)




        起動時だけでなく、stop/start でも変わる




      役割分割するとインスタンスは必然的に増えがち




                 jaws-ug santo 2013
Approach


             EIP + Public DNS 名




           /etc/hosts ファイル自動更新




                 内部 DNS




                 jaws-ug santo 2013
Public DNS name + EIP




               jaws-ug santo 2013
/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
/etc/hosts


              台数少ないうちはアリ




             dnsmasq と併用する運用も




             自動更新するかどうか検討要




                 jaws-ug santo 2013
Internal DNS (bind)


   外部への問い合わせ
   はAWS提供の内部
    DNSサーバへ




                                      起動時にnsupdateで
                                       自身のホスト名と
                                       IPアドレスを登録




                 jaws-ug santo 2013
Internal DNS (bind)


           bind でやる場合は Dynamic DNS




         PowerDNS 使うとアプリ的には楽かも




          再帰を許可するかしないかは悩みどころ




                  jaws-ug santo 2013
Internal DNS (bind)


     amazonaws.com は外部に再帰問い合わせしてはダメ




    zone "amazonaws.com" {
        type forward;
        forward only;
        forwarders {172.16.0.23;};
    };




                             jaws-ug santo 2013
Internal DNS (bind)



              アプリ側で名前解決のキャッシュは短めに




  java -Dsun.net.inetaddr.ttl=10 -Dsun.net.inetaddr.negative.ttl=10




                                 jaws-ug santo 2013
データストア




 http://www.flickr.com/photos/83633410@N07/7658034524/in/photostream/
実容量で
 1〜2TB
のデータストアの
運用経験のある方




 jaws-ug santo 2013
We love RDBMS




                jaws-ug santo 2013
Running on LVM




                                        RAID0で
                                      ストライピング




                 jaws-ug santo 2013
Working with partition




                 jaws-ug santo 2013
Migration with PITR




                jaws-ug santo 2013
We love RDBMS, again


            RDS使えれば使おう




         自前管理でも打てる手は結構ある




         クラウドだから NoSQL 、その前に




              jaws-ug santo 2013
静的リソースの配信




  http://www.flickr.com/photos/83633410@N07/7658236076/sizes/l/in/photostream/
この本読んだ方




  http://www.amazon.co.jp/ハイパフォーマンスWebサイト-―高速サイトを実現する14のルール-Steve-Souders/dp/487311361X/

                             jaws-ug santo 2013
Cloudfront




             jaws-ug santo 2013
Web server now very busy




               jaws-ug santo 2013
Cost


       2010年9月実績 $16.88
          (55.628GB転送)




       2013年1月実績 $79.6
         (327.88GB転送)




           jaws-ug santo 2013
Multiple origin




                  jaws-ug santo 2013
Dynamic content delivery




                                     1リクエストで
                                      処理したい




                jaws-ug santo 2013
Dynamic content delivery




  <script
  src="${contextPath}/.shared.js/v1:js/jquery.js,js/underscore.js,js/bootstrap.js">
  </script>


                                    jaws-ug santo 2013
Dynamic content delivery




                           https://github.com/tksmd/static-shared
For cloudfront outage




                 jaws-ug santo 2013
For cloudfront outage




                 jaws-ug santo 2013
まとめ




jaws-ug santo 2013   http://www.flickr.com/photos/nauright/2662160957/
Design Basics


   障害の発生をなくすことより、
   障害発生時に

   迅速に元に戻せる仕組み
   を意識して設計、運用する



                jaws-ug santo 2013
What AWS brings us ?!




   サービスを運用しはじめてから、
   次にとる舵を選ぶことが出来る柔軟さ




               jaws-ug santo 2013
What AWS brings us ?!



   小さなチームでも
   世界で戦えるサービスを提供できる
   力を与えたということ




               jaws-ug santo 2013
Now, we consider..


              AMI構成の自動化




              セキュリティ強化




            デプロイプロセスの高速化




                jaws-ug santo 2013
Thanks!!




    ありがとうございました
           ご質問あればどうぞ!




              jaws-ug santo 2013
JAWS-UG 京都支部のこれまで


                  発足 : 2011年4月

             2011/04/15 第一回勉強会
             2011/11/10 第二回勉強会
             2012/06/20 第三回勉強会


           次回は 2012/11 2013/05月頃 ?!

            http://jawsug-kyoto.g.hatena.ne.jp/
コアメンバ


      @tksmd

                         @yehara


      @hrsm1979


                         @tan_go238
      @shimokawa



  京都リージョン1         東   京都リージョン2

More Related Content

PDF
Cloudera impala
PPTX
スタートアップカフェコザ - 最新 AI / Machine Learning 事情
PDF
CROSS 2016 LT - 我々のIoTデバイスがこんなに多いはずが無い
PDF
Gmo media.inc 第9回西日本ossの普及を考える会
PDF
データベースを使おう
PDF
【Jpug勉強会】10大ニュースで振り返るpg con2013
PDF
ioMemoryとAtomic Writeによるデータベース高速化
 
PPTX
【基礎編】社内向けMySQL勉強会
Cloudera impala
スタートアップカフェコザ - 最新 AI / Machine Learning 事情
CROSS 2016 LT - 我々のIoTデバイスがこんなに多いはずが無い
Gmo media.inc 第9回西日本ossの普及を考える会
データベースを使おう
【Jpug勉強会】10大ニュースで振り返るpg con2013
ioMemoryとAtomic Writeによるデータベース高速化
 
【基礎編】社内向けMySQL勉強会

What's hot (20)

PDF
[db tech showcase Tokyo 2016] C32: 世界一速いPostgreSQLを目指せ!インメモリカラムナの実現 by 富士通株式会...
PDF
GresCubeで快適PostgreSQLライフ
PDF
perfを使ったPostgreSQLの解析(前編)
PDF
zozotown real time linkage infrastructure
PDF
10大ニュースで振り返るPGCon2015
PDF
本当にあったHadoopの恐い話 Blockはどこへきえた? (Hadoop / Spark Conference Japan 2016 ライトニングトー...
PDF
使ってみた!ioMemoryで実現する噂のAtomic write!
 
PPTX
Aerospike xdr (Cross Datacenter Replication)
PDF
Yahoo! JAPANにおけるApache Cassandraへの取り組み
PPTX
ownCloud2015年まとめ
PDF
AutoScale×ゲーム ~運用効率化への取り組み~
PDF
【Hinemos World 2013】B-4:Hinemosに新機能ストレージバックアップオプションが登場!(株式会社アトミテック/デル・ソフトウェア株...
PPTX
Aerospike v3 install
PPTX
Amazon RDS for PostgreSQL ( JPUG 2014夏セミナー) #jpug
PDF
GMOメディア RHEV-S-事例紹介
PDF
[C13] フラッシュドライブで挑むOracle超高速化と信頼性の両立 by Masashi Fukui
PDF
PostgreSQL 9.5 新機能紹介
PPTX
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
PPTX
My sqlで2億件のシリアルデータと格闘した話
PDF
AWSスポットインスタンスの真髄
[db tech showcase Tokyo 2016] C32: 世界一速いPostgreSQLを目指せ!インメモリカラムナの実現 by 富士通株式会...
GresCubeで快適PostgreSQLライフ
perfを使ったPostgreSQLの解析(前編)
zozotown real time linkage infrastructure
10大ニュースで振り返るPGCon2015
本当にあったHadoopの恐い話 Blockはどこへきえた? (Hadoop / Spark Conference Japan 2016 ライトニングトー...
使ってみた!ioMemoryで実現する噂のAtomic write!
 
Aerospike xdr (Cross Datacenter Replication)
Yahoo! JAPANにおけるApache Cassandraへの取り組み
ownCloud2015年まとめ
AutoScale×ゲーム ~運用効率化への取り組み~
【Hinemos World 2013】B-4:Hinemosに新機能ストレージバックアップオプションが登場!(株式会社アトミテック/デル・ソフトウェア株...
Aerospike v3 install
Amazon RDS for PostgreSQL ( JPUG 2014夏セミナー) #jpug
GMOメディア RHEV-S-事例紹介
[C13] フラッシュドライブで挑むOracle超高速化と信頼性の両立 by Masashi Fukui
PostgreSQL 9.5 新機能紹介
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
My sqlで2億件のシリアルデータと格闘した話
AWSスポットインスタンスの真髄
Ad

Similar to Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語 (20)

PPTX
AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013
PDF
AZAREA-Clusterセミナー(クラウドEXPO2013春)
PPTX
エンジニアのための Azure 基礎知識
PDF
PostgreSQLによるデータ分析ことはじめ
PDF
S3 を単純ストレージとして 利用する手段の比較
PDF
第14回cloudstackユーザー会
PDF
IoTのビジネスをデバイス・ゲートウェイから見てみる / Develpers.IO 2016
PDF
(Fix)Azure Network Security Group(NSG)のおさらい
PDF
Prepare for Java 9 #jjug
PDF
PDF
インフォグラフィックス時代のD3.js入門
PDF
【15-B-1】AmazonのDevOpsを支えるAWSクラウド
PDF
CloudStack Collaboration Conference 2013 レポート
PDF
NTT DATA と PostgreSQL が挑んだ総力戦
PDF
PostgreSQL9.3新機能紹介
PDF
de:code 2019 Cloud トラック 総まとめ!
PDF
スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)
PDF
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)
PDF
[AWS re:invent 2013 Report] AWS New EC2 Instance Types
PDF
Anchors Aweigh!! - re:Invent報告@re:Port 2016
AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013
AZAREA-Clusterセミナー(クラウドEXPO2013春)
エンジニアのための Azure 基礎知識
PostgreSQLによるデータ分析ことはじめ
S3 を単純ストレージとして 利用する手段の比較
第14回cloudstackユーザー会
IoTのビジネスをデバイス・ゲートウェイから見てみる / Develpers.IO 2016
(Fix)Azure Network Security Group(NSG)のおさらい
Prepare for Java 9 #jjug
インフォグラフィックス時代のD3.js入門
【15-B-1】AmazonのDevOpsを支えるAWSクラウド
CloudStack Collaboration Conference 2013 レポート
NTT DATA と PostgreSQL が挑んだ総力戦
PostgreSQL9.3新機能紹介
de:code 2019 Cloud トラック 総まとめ!
スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)
[AWS re:invent 2013 Report] AWS New EC2 Instance Types
Anchors Aweigh!! - re:Invent報告@re:Port 2016
Ad

More from Takashi Someda (13)

PPTX
エバンジェリストの憂鬱
PPTX
JAWS-UG 三都物語 2014 今しか役に立たない EC2入門 2014夏
PPTX
Nulab's DevOps tool stack based on AWS
PPTX
「どうすれば価値を生み出すか」を知るために ヌーラボで行っていること 〜 落ち穂拾い 〜
PPTX
大企業、未踏ソフトウェア、起業 様々な働き方から学んだ「モノ作り」のエッセンス
PPTX
Service Configuration Management for Rapid Growth - demo 10 steps to build pi...
PPTX
Service Configuration Management for Rapid Growth
PPTX
How we spread out our service globally by utilizing AWS and open source soft...
PPTX
Basic architecuture and operation concept of Backlog and Cacoo
PPTX
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
PPTX
JAWS-UG Kyoto #02 LT
PPTX
AWS ではじめる Programmable Cloud
PDF
Algo 23 MSTP
エバンジェリストの憂鬱
JAWS-UG 三都物語 2014 今しか役に立たない EC2入門 2014夏
Nulab's DevOps tool stack based on AWS
「どうすれば価値を生み出すか」を知るために ヌーラボで行っていること 〜 落ち穂拾い 〜
大企業、未踏ソフトウェア、起業 様々な働き方から学んだ「モノ作り」のエッセンス
Service Configuration Management for Rapid Growth - demo 10 steps to build pi...
Service Configuration Management for Rapid Growth
How we spread out our service globally by utilizing AWS and open source soft...
Basic architecuture and operation concept of Backlog and Cacoo
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
JAWS-UG Kyoto #02 LT
AWS ではじめる Programmable Cloud
Algo 23 MSTP

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