• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Heroku add-on BounscaleでPlay2/Scalaをオートスケールする
 

Heroku add-on BounscaleでPlay2/Scalaをオートスケールする

on

  • 596 views

2013/10/19に開催された「怖くないScala勉強会」で発表したLTの資料です。

2013/10/19に開催された「怖くないScala勉強会」で発表したLTの資料です。
http://connpass.com/event/3420/

Statistics

Views

Total Views
596
Views on SlideShare
592
Embed Views
4

Actions

Likes
1
Downloads
0
Comments
0

1 Embed 4

https://twitter.com 4

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Heroku add-on BounscaleでPlay2/Scalaをオートスケールする Heroku add-on BounscaleでPlay2/Scalaをオートスケールする Presentation Transcript

    • Heroku add-on Bounscaleで Play2/Scalaを オートスケールする Shota Onishi 13年10月21日月曜日
    • はじめに 13年10月21日月曜日
    • About this LT • DTSでBounscaleというオートスケール するHerokuのadd-onを作っています。 紹介させてください。 • Play2/Scalaに対応してます。(Experimental) 対応した時に得たトピックも少し紹介 します。 13年10月21日月曜日
    • About me • • • • • • 大西 正太 @shouta_dev (株)DTS 2005年位からRailsやってます ScalaもPlayも初心者です! マイブームは重力 お酒が大好き!クズ居酒屋が大好き!吉田類 の酒場放浪記が大好き! 13年10月21日月曜日
    • Bounscaleの機能 13年10月21日月曜日
    • Heroku? • いろいろ動くPaaS (Play/Scalaも) • スライダずらすとスケールアウト • Rubyの有名人が社員 13年10月21日月曜日
    • Bounscale? Heroku上の サービス運営者が 四六時中 手作業で スケールアウト をせずに 13年10月21日月曜日 突如の高負荷時に一定 のレスポンスタイムを 維持できる
    • Install $ heroku addons:add bounscale OR https://addons.heroku.com/bounscale/ 13年10月21日月曜日
    • Adding the agent to your app # Rails (Rack) gem ’bounscale’ #Gemfile :Gem # node.js/express:npm [EXPERIMENTAL] ”dependencies” : {”bounscale”, ”*”} // package.json app.use(require(’bounscale’)); // app.js # Play Framework2:sbt [EXPERIMENTAL] /* Build.scala */ "bounscale" % "bounscale_2.10" % "0.0.1"; resolvers += "r" at "http://bounscale.github.io/maven/"; /* Global.scala */ import play.api.GlobalSettings import play.api.mvc.WithFilters import com.bounscale.BounscaleFilter object Global extends WithFilters( new BounscaleFilter) with GlobalSettings more detail: https://devcenter.heroku.com/articles/bounscale 13年10月21日月曜日
    • Open dashboard 13年10月21日月曜日
    • Settings 13年10月21日月曜日
    • Auto-scaling config • レスポンスタイム+別指標値 で負荷を測定 • • ビジー率 / スループット / cpu / memory グラフ上でスケールアウトの 閾値を指定 13年10月21日月曜日
    • Dyno History 13年10月21日月曜日
    • Bounscale Inside (Play/Scala対応の話) 13年10月21日月曜日
    • トピック (1)agentの実装 (2)ライブラリの公開 13年10月21日月曜日
    • Architecture Bounscale Architecture Application Heroku Service Appliction User Rack Server Use this service agent bounscale gem (middleware) Log Heroku Logs Resource Data Collect and Write Resource Datas Resource Data Heroku API Rails/ Application www.heroku.com (heroku console) Addon Provisioning API Resource Data Request Addon / Request SSO Get Logs (heroku logs) Provisioning Response Zabbix Custom Items ct Apache Update Scale Config Create tenant Multitenant UserA UserA Access Model Tenant Tenant Create Web Console tenant Console Controller Zabbix Access UserA UserA Model Tenant Tenant Update Zabbix Twitter Bootstrap Save Cache Data Get Cache Data Update&Create Items, Triggers, Actions Resource Data MySQL Get cache UserA CacheUserA Model Tenant Tenant Bizca Multitenant Ruby on Rails Tenant Control Tenant database Tenant database Tenant zabbixdatabase cache data Extract resource datas Update/Get Resource Data Scalein Action shell scipt / Ruby Trigger Zabbix (scale condition) Zabbix Server MySQL Conditionally Kick Actions Zabbix database Tenant1 zabbix history data Tenant2 zabbix history data Tenant3 zabbix history data Tenant1 zabbix config data Tenant2 zabbix config data Tenant3 zabbix config data CentOS CentOS AWS 13年10月21日月曜日 Scaleout Action shell scipt / Ruby Return Resource Show Resource Graph Resource Data Throughput Item Periodically Kick Provision Controller CPU Item Cache Collector Zabbix API (Apache/PHP) Provisioning Web Item Collect History Data Heroku Access UserA UserA Model Tenant Tenant Zabbix Custom Action Busyness Item memory Item Save Resource Data re di Heroku SSO Scale in AWS Save Scalein/out hitories Rack Server re Developer Scale out Get Item, Trigger, Action Provisioning Request
    • agent? • agentとは • リクエストの事前・事後処理でメトリクス 情報を収集してログに書きだすライブラリ • CPU情報とか、スループットとか • Zabbixでそのログを見てオートスケール の判断をしている • フレームワーク毎に作る必要性 13年10月21日月曜日
    • Rails => Rack Middleware HTTP req HTTP res Rack Server (Unicorn/Passenger) Rack Middleware Framework(Rails) Application cpu memory throuput Log 13年10月21日月曜日
    • Play! =>Filter HTTP req HTTP res Web Server (Netty) Filter (after Play 2.1.1) Framework(Play!2) Application cpu memory throuput Log 13年10月21日月曜日
    • Agent’s source code class BounscaleFilter extends Filter { def apply(next: (RequestHeader) => Result)(rh: RequestHeader) = { val collectors = List( new CpuCollector(), new MemoryCollector(), new BusynessCollector(), new ThroughputCollector() ) def post(result: PlainResult): Result = { collectors.foreach(collector => collector.post()) val writer = new HerokuWriter() writer.write(collectors) result } <=post def collectors.foreach(collector => collector.pre()) } } <=pre exe next(rh) match { case plain: PlainResult => post(plain) case async: AsyncResult => async.transform(post) } <=post exe https://github.com/bounscale/bounscale_play2/blob/master/src/main/scala/BounscaleFilter.scala 13年10月21日月曜日
    • Publishing agents gem push npm publish Published Published Create JIRA Ticket Ack (operator 2-3days?) Upload library Update JIRA Ticket Ack (operator) 至れり尽くせりの重厚さ 13年10月21日月曜日 Published
    • Publish to Github pages • 今回はGithub Pages使って野良Mavenリ ポジトリを作って公開しました • やり方公開してます • • 13年10月21日月曜日 Play2/Scala向けライブラリを公開する(SBTでGithub上のMavenに) http://qiita.com/bounscale/items/44b1729db39edbb507fd
    • Try it out !! $ heroku addons:add bounscale 現在Public Betaで利用は無料です! 13年10月21日月曜日
    • Resources • https://devcenter.heroku.com/articles/ bounscale • https://github.com/bounscale • http://qiita.com/bounscale/ • https://twitter.com/bounscale/ 13年10月21日月曜日