HerokuでPHPのココが便利 #phpcondo2016 #heroku #php

自己紹介

合同会社テンマド

10mado

📝 mimemo

書く・読む・見せるをお手軽に。
mimemoはゆるく使えるテキスト置き場です。

  • https://mimemo.io
  • Markdown記法
  • 個人メモに使ったりテキスト共有に使ったり
    • 「あいことば」設定して秘密のメモを見せたり共同編集したり
    • もちろんブログのようにも使えます
  • powered by Heroku with Node.js (Express)

🐬 iruca

オフィスに誰がいるか一目瞭然。
irucaはログイン不要の在席管理ツールです。

  • https://iruca.co
  • 無料・ログイン不要、Slack連携あり
    • リモート勤務の多い会社などにオススメ
    • 行動予定表としてご利用されているケースも
  • powered by Heroku with Node.js (Express)

🍆 conasu

複数案件かけ持ちしていても安心。
conasuはチームで使うタスク管理ツールです。

  • https://conasu.co
  • チームでタスクのやり取りをするツール
    • Slackやidobata、HipChatへの通知機能あり
    • 複数プロジェクトのタスクを一覧で見られるので今日やることが一目瞭然
  • powered by Heroku with PHP (Silex)
    • Web Dyno x1 + Worker Dyno x1

Heroku

  • https://www.heroku.com
  • PaaS (Platform as a Service)
  • Node.js / Ruby / Java / PHP / Python / Go / Scala / Closure
  • PHPの正式サポートは2014年7月から

Herokuの特徴

  • アプリケーションを作成してgit pushすればdeployできる
  • Docker 🐳 のコンテナごとdeployすることもできるようになった
    • そもそもHerokuがDynoというコンテナ単位で動いている
  • GitHubやDropboxなどと連携しての自動deployもできる

Herokuの弱点

レイテンシ…でしたがHeroku EnterpriseでPrivate Spacesに東京リージョンが!(ただしお高い)

$ heroku regions
ID         Location                 Runtime
─────────  ───────────────────────  ──────────────
eu         Europe                   Common Runtime
us         United States            Common Runtime
frankfurt  Frankfurt, Germany       Private Spaces
oregon     Oregon, United States    Private Spaces
tokyo      Tokyo, Japan             Private Spaces
virginia   Virginia, United States  Private Spaces

きめ細かなサーバー設定とかは苦手。あと価格はやはりAWS単体より高い。

HerokuでのPHPの使い方

  • composer.jsonがあればPHPアプリケーションとみなされる
    • package.jsonとかもある場合は明示的にbuildpackを指定
  • composer.jsonに記述されたPHPの環境が用意される
    • 拡張(extension)が必要な場合もcomposer.jsonに書けば入る
    • バージョンはcomposer.lockに従う

使えるPHP拡張(7の場合)

  • 最初から入っている
    • bzip2 / curl / fpm / pdo_mysql / mysqli / opcache / openssl / pgsql / pdo_pgsql / readline / sockets / zip / zlib
  • composer.jsonで指定すれば入る
    • bcmath / calendar / exif / ftp / gd / gmp / gettext / imap / intl / ldap / mbstring / pcntl / shmop / soap / sqlite3 / pdo_sqlite / xmlrpc / xsl
    • apcu / blackfire / imagick / mongodb / newrelic / oauth

PHPサポートの歴史(1)

PHPサポートの歴史(2)

PHPのバージョン管理

  • バージョンアップ、面倒くさくないですか
    • 7.0.4: 2016年3月3日
    • 7.0.3: 2016年2月4日
    • 7.0.2: 2016年1月7日
    • 7.0.1: 2015年12月17日
    • 7.0.0: 2015年12月3日
  • Herokuならdeployするタイミングで勝手に上がります

PHPのバージョン指定例

"require": {
  "php": "^5.6.0"
}
composer.json

PHP 5系の最新版、ただし5.6.0以上のバージョン

"require": {
  "php": "~5.6.0"
}
composer.json

PHP 5.6系の最新版。~5.5.0と書くと5.5系の最新版が入る。

スケールの調整が簡単なこと

スクリーンショット 2016-04-11 0.28.12

Dashboardで簡単にスケールアップやスケールアウトの設定ができます。もちろんAPIからの操作も可能。

メンテナンスモードの切り替え

$ heroku maintenance:on

でメンテナンスモードがONになり、環境ごとに指定されたURLの内容を表示できます。Amazon S3から静的ファイルとして配信するのがオススメ。off指定で元の状態に。

Twelve-Factor Appの思想に則ること

Terraform便利

  • Terraform by HashiCorp
  • AWSやGoogle Cloud、Microsoft Azureなど、様々なクラウドプラットフォームのリソースを一元的に定義・管理できるツール
  • Herokuもプロバイダーとして使用できる
    • 設定のコード化
    • configとか、add-onとか、ドメイン名とか

何より簡単に始められること

  1. Herokuのアカウントを作る
  2. applicationの名前を決めて作る
  3. git pushする

公開にいたるまでのステップが少ないこと、PostgreSQLやRedisなどのadd-onが充実していること。すぐに使い始められるメリットの大きさ。

ご静聴ありがとうございました

寿司ゆき:thanks

END

Close