Heroku Advent Calendar 2016 22日目です。ふと見たら空いていたので、埋めるべく二度目の挑戦です。
はじめに
Xmas目前、ACも随分と佳境になってきましたね。
私といえば、最近 MacBook を買ってしまって、Retina ディスプレイを PCで使う意義って、こんなにもあるもんだなと感じてます。こんなにソースコードが読みやすくなるなんて考えても見ませんでした。すごい。Retinaの恩恵って、画像よりも、絶対文字ですよね。ほんとプログラマな人たちには、Retinaモデルの Macbookをおすすめします。というか、Airが新しいのでないので、もうRetinaシリーズのみになるのかな。
Heroku のメリット
今更ではありますが、半年使ってきてみて、ホント便利だな Heroku って感じます。その他の PaaSも使っていたので、Herokuの優秀なポイントは、みなさんによく理解いただいて、使っていただければそのグレート加減を体感していただけます。無償でもアプリ作って実際に deployして動かして稼働確認取れますし、クレジットカード登録すれば、無料のアドオン追加枠も広がります。できる事自体の制限は多いように見えますが、ちょっとした開発→テストであれば、無料分で十分だったりします。Pricingページに詳細書いてありますので、どうぞご覧ください。
1) git コマンドで deployできる
余計なコマンド入りません。git
のリモートリポジトリを追加して、git push
するだけです。これ以上のメリットは、今の世の中では必要ないでしょう。
2) アドオンがホント簡単に使える
某社のは、標準とは別のサービスを使わないと、アドオンが利用できない形態だったり、サービス同士を明示的に組み合わせないと利用できなかったり、一筋縄ではいかない事がママあります。しかし、Heroku、そんな厄介なことを開発者には求めたりしません。必要なアドオンのインストールボタン押すだけで完了です。必要な設定情報は環境変数に格納されますし、言語ごとに必要な情報も自動的に設定されます。だから、何も考えずに Rails
をDeployすると、必要な環境変数をすべて定義して、標準状態で PostgreSQLも利用可能な状態になってます。まっさらな状態で deployしても、ちゃんと Production環境として定義されてますし、助かります。ってそういうgem入れてるだけってのもありますが、自動的にやってくれるのほんと助かる。
PostgreSQLにかぎらず、他のアドオンもすぐに利用できるようになりますし、利用方法も一般的だったり、さらに簡単に利用できるようになっていて、オトクすぎます。
おすすめしたい Herokuの機能・サービス
本編です。全てではありませんが「ああ、こりゃすごい」と機能やサービスをご紹介します。こいつぁすげぇぜ三本立てです。
- Heroku Buttons
- Pipelines
- Portability
Heroku Buttons
Heroku Buttonsという機能があります。開発者が楽をするというよりも、導入者や展開を楽にしてくれる魔法のツールです。
これは、gitのパッケージルートに app.json
という制御情報の Jsonを書いていただいて、書式に従ってGithubの README.MD
に記載していただければ、該当のgitパッケージを自動的に Herokuへ deploy してくれるすぐれものです。
Markdownの書式に習って記述すると、このようにボタンを貼り付けることができちゃいます。このボタンを押すと、指定されたように deployされますので、横展開がひじょーに簡単になります。
Pipelines
Continuous Delivery を実現するための機能です。開発用のDyno、テスト用のStaging Dyno、本番のProduction Dynoと、実際に開発して本番へ適用しようと考えると、いろいろな実装環境が必要になってきますが、これをすべて Heroku Dashboard上で管理できてしまうのが、このHeroku Pipelinesです。
また、Githubとの連携にも対応していて、Githubで Pull request
を上げると、それが Heroku Pipelines からもReviewすることができてしまう驚き。
これに限った話ではありませんが、Heroku はすべてがAPIとして公開されていますし、CLIも提供されているので、組み合わせによって CI/CDを自動化させることも可能です。Heroku CIなんてのも、出てくるみたいなので、CI/CD を Herokuで完結できるようになるのかな?
Portability
可搬性です。開発したアプリケーションが、気がついたら Herokuでしか動かなくなってしまったときに、他のサービス並行できなくなることはリスクにつながります。
しかし、そもそも Herokuは、The Twelve-Factor Appの方法論に従って開発されたアプリケーションを稼働させる環境として生まれたようなものです。このThe Twelve-Factor Appの考え方に従っていれば、大抵の環境で稼働するようなアプリケーションになるしかないと考えられますし、ある特定環境でしか稼働しない、ではなく、どこでも実行可能なアプリケーション = 可搬性の高いアプリケーションを開発することができるようになるはずです。
まぁ、実際はアドオンの仕組みやPipelinesなど、特定の機能が提供されているので、その点をどうにかする必要はありますが、それでもメインのロジック部分はどこでも動くようなアプリケーションになることでしょう。
この考え方自体は、Heroku を使うために必須というよりも、モダンなアプリケーション開発に重要な方法論の一つです。以前、Microservicesの実現に必要な項目の一つとしても、12Factor Appの考え方はアプリケーション開発に重要と説いていることと同じ理由ですね。
さいごに
Slideshare が埋め込めるのか異常に謎ですが、やけに時間がかかって書き上げました。
まだ他に良いことも、具体的に細かいことも書きたいので、なんか1つずつ、日々書き記していくことが重要なんだなって、やっぱり思います。かしこ。