Heroku Javaで12-Factor App
-
Upload
mitsuhiro-okamoto -
Category
Technology
-
view
961 -
download
0
Transcript of Heroku Javaで12-Factor App
Heroku Javaで12-Factor App
Mitsuhiro OkamotoSenior Developer EvangelistSalesforce.com@mituhisro
岡本充洋
Salesforce.comSenior Developer Evangelist
Java歴約10年(内5年ぐらいSalesforce系へ留学中)
@mitushiro
意外と知らない方が多いですがHerokuはSalesforce.comファミリー
Salesforceのプラットフォームアプローチ
業務のエキスパート自身が、“プログラマーの手を借りずに”業務アプリを開発できる
“プログラマーの生産性を最大化”革新的なアプリを開発にリソースを集中できる
Herokuが考えるアプリケーション開発の姿
あらゆる領域において、アプリケーションの重要度が高まっている今、サーバーやデータベース環境構築を迅速に行い、運用コストを最小限に抑える必要があるとHerokuは考えています。
開発者はサーバーやオペレーティングシステムの事は考える必要はなく、インフラの管理業務ではなくアプリケーション開発に集中するべきです。
アプリケーション開発で頻繁に利用される機能は、一から作る必要はありません。オープンソースを梃子のように使うことで、アプリケーション開発にかかる期間とコストを最小化できます。
アプリ実行環境Dyno(ダイノ):あらゆる開発言語で
作られたアプリを実行可能なLinuxベースのコンテナ
データベース:信頼性の高い
クラウドデータベース
拡張機能(アドオン):140以上の拡張機能
モニタリング、ビッグデータログ管理、など
Herokuの構成要素顧客アプリを開発、運用、拡張するためのプラットフォーム・アズ・ア・サービス(PaaS)
RubyNode.jpJavaPHPPythonScalaClojure
ビッグデータSSLEmailSMS検索分析モニタリングロギング
24/7/365 運用セキュリティヘルスチェック高可用性暗号化ロールバック
Heroku Connect:Salesforceとのシームレスな接続
The Twelve Factor App
現代的なアプリケーションを設計、構築、運用するための12の方法論
Heroku創業者のアダム・ウィギンスがプラットフォームサービス上で稼働する数百のアプリの特性から得た知見をまとめたもの
(原文)http://12factor.net/
(日本語訳)http://12factor.net/ja/
The Twelve Factor App
I. コードベース
バージョン管理されている1つのコードベースと複数のデプロイ
II. 依存関係
依存関係を明示的に宣言し分離する
III. 設定
設定を環境変数に格納する
IV. バックエンドサービス
バックエンドサービスをアタッチされたリソースとして扱う
V. ビルド、リリース、実行
ビルド、リリース、実行の3つのステージを厳密に分離する
VI. プロセス
アプリを1つもしくは複数のステートレスなプロセスとして実行
VII. ポートバインディング
ポートバインディングを通してサービスを公開する
VIII. 並行性
プロセスモデルによってスケールアウトする
IX. 廃棄容易性
高速な起動とグレースフルシャットダウンで堅牢性を最大化
X. 開発/本番一致
開発、ステージング、本番環境をできるだけ一致させる
XI. ログ
ログをイベントストリームとして扱う
XII. 管理プロセス
管理タスクを1回限りのプロセスとして実行する
Gitを利用したアプリケーションデプロイ
Slugコンパイル
アプリ実行環境の判別
依存ライブラリなどのインストール/セットアップ
Herokuでのアプリケーションデプロイ
$ git push heroku masterCounting objects: 4, done.Delta compression using up to 8 threads.Compressing objects: 100% (4/4), done.Writing objects: 100% (4/4), 367 bytes | 0 bytes/s, done.Total 4 (delta 3), reused 0 (delta 0)remote: Compressing source files... done.remote: Building source:remote: remote: -----> Node.js app detectedremote: remote: -----> Creating runtime environmentremote: remote: NPM_CONFIG_LOGLEVEL=error…remote: -----> Building dependenciesremote: Pruning any extraneous modulesremote: Installing node modules (package.json)remote: …remote: -----> Launching... done, v4remote: https://agile-meadow-8177.herokuapp.com/ deployed to Herokuremote: remote: Verifying deploy.... done.To https://git.heroku.com/agile-meadow-8177.git
777c350..6219ad4 master -> master
アプリ実行環境の判別
依存ライブラリなどのインストール/セットアップ
アプリの起動
アプリケーションコードの同期
Javaを利用した場合も考え方は同じ
Slugコンパイル
アプリ実行環境の判別
依存ライブラリなどのインストール/セットアップ
pom.xml
build.gradle
Demo
The Twelve Factor App
I. コードベース
バージョン管理されている1つのコードベースと複数のデプロイ
II. 依存関係
依存関係を明示的に宣言し分離する
III. 設定
設定を環境変数に格納する
IV. バックエンドサービス
バックエンドサービスをアタッチされたリソースとして扱う
V. ビルド、リリース、実行
ビルド、リリース、実行の3つのステージを厳密に分離する
VI. プロセス
アプリを1つもしくは複数のステートレスなプロセスとして実行
VII. ポートバインディング
ポートバインディングを通してサービスを公開する
VIII. 並行性
プロセスモデルによってスケールアウトする
IX. 廃棄容易性
高速な起動とグレースフルシャットダウンで堅牢性を最大化
X. 開発/本番一致
開発、ステージング、本番環境をできるだけ一致させる
XI. ログ
ログをイベントストリームとして扱う
XII. 管理プロセス
管理タスクを1回限りのプロセスとして実行する
Pull Requestから自動的にブランチビルドを作成PipeLineによるアプリケーションのレビュー
GithubのPull Requestと連携
Demo
The Twelve Factor App
I. コードベース
バージョン管理されている1つのコードベースと複数のデプロイ
II. 依存関係
依存関係を明示的に宣言し分離する
III. 設定
設定を環境変数に格納する
IV. バックエンドサービス
バックエンドサービスをアタッチされたリソースとして扱う
V. ビルド、リリース、実行
ビルド、リリース、実行の3つのステージを厳密に分離する
VI. プロセス
アプリを1つもしくは複数のステートレスなプロセスとして実行
VII. ポートバインディング
ポートバインディングを通してサービスを公開する
VIII. 並行性
プロセスモデルによってスケールアウトする
IX. 廃棄容易性
高速な起動とグレースフルシャットダウンで堅牢性を最大化
X. 開発/本番一致
開発、ステージング、本番環境をできるだけ一致させる
XI. ログ
ログをイベントストリームとして扱う
XII. 管理プロセス
管理タスクを1回限りのプロセスとして実行する
多くのFortune 500企業やスタートアップがHerokuを利用
みずほ、三菱UFJ、SMBC、セールスフォースより投資され注目されるフィンテック
アプリダウンロード数80万以上の運用を、数名のスタッフで運用
Heroku Performance Dyno上で顧客管理を行い、Heroku PostgresやRedisにデータを集約
日本初の取引、残高を分析してくれるお金の一括管理アプリ
Herokuを活用し、拡張性の高いお金の一括管理アプリを運用
プログラム言語別のチュートリアル資料が掲載Heroku開発者向けドキュメント
devcenter.heroku.com
thank y u