「Heroku社エバンジェリスト相澤氏が語るDay1「What is Heroku?」APC勉強会#5」に参加してきました

全3回を予定しているHeroku勉強会の第1回目となります。アプリケーション開発者の生産性を最大化するプラットフォームクラウドの概要と機能について、米国Heroku, Inc.の相澤歩さんにお話頂きました。

Herokuとは

プロフェッショナルなアプリケーション開発者のための世界で最も先進的なプラットフォーム・クラウド

Herokuの特徴

  • サーバーを意識しなくて良い
  • あらゆる言語・フレームワークを利用可能
  • アプリケーションの状況を全て可視化
  • 信頼と実績

サーバーを意識しなくて良い

  • 普通はサーバーの構成や調達方法を考えなくてはいけない
  • Herokuはそれらを考える必要がない

Gitを使ったデプロイ

  • Herokuがこの方式を導入した2008年くらいはバージョン管理環境とデプロイ環境を同じにするのは珍しかった
  • バージョン管理はみんな使っているのでHerokuはみんな使える
  • Herokuは全てのデプロイを保持している
    • 全てのバージョンの復元が可能

継続的デプロイ

  • Jenkins、Travis CIなどとの連携も可能
  • Gitを使っているからインテグレーションが簡単にできる

アプリケーションのスケールが容易

  • サーバーが1台だと同時アクセス数が限られる
    • キャパシティを考えて、サーバーの構成を設計しなければいけない
  • Herokuであればその必要がない
    • 管理画面のスライドバーを動かすだけでスペックを変えることができる
    • スケールはAWSでもできるが、他のアプリケーションサーバと矛盾なく設定するのはそれなりのスキルが必要
  • アイディアが受けるかどうか分からなくてもとりあえずリリースして、その後で自由にスケールすることができる

アドオン

  • 100種類以上のアプリケーションがある
    • 例えばBIツールで分析したい場合、Treasure Data Hadoopのアドオンを設定するだけで可能

あらゆる言語・フレームワークを利用可能

  • Ruby、Java、Python、PHP、Clojure、node.jsに対応している
    • 言語のセキュリティ脆弱性の対応も全てHerokuで行っている
  • Ubuntu上で稼働するプログラミング環境を立ち上げることもできる
    • しかし公式サポートはしていない

アプリケーションの状況を全て可視化

  • 一連の動きがログストリームというところに入っている
    • アプリケーション、データベース、ルータのログを全て一連のログで出力している
    • フィルタリングすれば見たいところで見られる

可視化のためのアドオン

  • New Relic

    • アプリケーションのパフォーマンスを測定
    • 何がパフォーマンスのボトルネックかを見ることができる
  • Librato

    • プラットフォーム(メモリの状況、コネクションがどれくらい張られているかなど)の情報が見られる
    • 購入履歴など独自の情報を可視化することも可能
  • Papertrail

    • ログを貯めることができる
    • 適当なタイミングでアーカイブも行ってくれる
    • こういうツールは地味だが作るのが大変
    • アドオンを使えば簡単に実現できる
  • デベロッパーはプロダクトの価値創造に集中することができる

信頼と実績

Herokuをはじめよう

  • 書籍『プロフェッショナルのための実践Heroku入門』

    • 本番として使うTipsはあまりWeb上にはないが本書には書いてある
    • トラブルシューティングも書いてある
  • 開発ツール

    • インストールする必要がある
    • Mac OS X、Windows、Linux対応
    • 入っているもの
      • Herokuコマンド
      • Foreman:herokuと同じ動作環境を立ちあげられる
      • Git
  • 稼働状況レポート

    • 何かあればすぐにレポートが上がってくる
    • 対応状況も分かる
      • ここに何も書いていなければアプリケーションの問題と分かる
  • プラットフォーム・サポート

    • 問い合わせチケットを投げることができる
    • サポーターは世界で10人弱いる
      • 色んな時差に対応したサポーターがいる