heroku javaで12-factor app

20
Heroku Java12-Factor App Mitsuhiro Okamoto Senior Developer Evangelist Salesforce.com @mituhisro

Upload: mitsuhiro-okamoto

Post on 21-Feb-2017

957 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Heroku Javaで12-Factor App

Heroku Javaで12-Factor App

Mitsuhiro OkamotoSenior Developer EvangelistSalesforce.com@mituhisro

Page 2: Heroku Javaで12-Factor App

岡本充洋

Salesforce.comSenior Developer Evangelist

Java歴約10年(内5年ぐらいSalesforce系へ留学中)

@mitushiro

Page 3: Heroku Javaで12-Factor App

意外と知らない方が多いですがHerokuはSalesforce.comファミリー

Page 4: Heroku Javaで12-Factor App

Salesforceのプラットフォームアプローチ

業務のエキスパート自身が、“プログラマーの手を借りずに”業務アプリを開発できる

“プログラマーの生産性を最大化”革新的なアプリを開発にリソースを集中できる

Page 5: Heroku Javaで12-Factor App

Herokuが考えるアプリケーション開発の姿

あらゆる領域において、アプリケーションの重要度が高まっている今、サーバーやデータベース環境構築を迅速に行い、運用コストを最小限に抑える必要があるとHerokuは考えています。

開発者はサーバーやオペレーティングシステムの事は考える必要はなく、インフラの管理業務ではなくアプリケーション開発に集中するべきです。

アプリケーション開発で頻繁に利用される機能は、一から作る必要はありません。オープンソースを梃子のように使うことで、アプリケーション開発にかかる期間とコストを最小化できます。

Page 6: Heroku Javaで12-Factor App

アプリ実行環境Dyno(ダイノ):あらゆる開発言語で

作られたアプリを実行可能なLinuxベースのコンテナ

データベース:信頼性の高い

クラウドデータベース

拡張機能(アドオン):140以上の拡張機能

モニタリング、ビッグデータログ管理、など

Herokuの構成要素顧客アプリを開発、運用、拡張するためのプラットフォーム・アズ・ア・サービス(PaaS)

RubyNode.jpJavaPHPPythonScalaClojure

ビッグデータSSLEmailSMS検索分析モニタリングロギング

24/7/365 運用セキュリティヘルスチェック高可用性暗号化ロールバック

Heroku Connect:Salesforceとのシームレスな接続

Page 7: Heroku Javaで12-Factor App

The Twelve Factor App

現代的なアプリケーションを設計、構築、運用するための12の方法論

Heroku創業者のアダム・ウィギンスがプラットフォームサービス上で稼働する数百のアプリの特性から得た知見をまとめたもの

(原文)http://12factor.net/

(日本語訳)http://12factor.net/ja/

Page 8: Heroku Javaで12-Factor App

The Twelve Factor App

I. コードベース

バージョン管理されている1つのコードベースと複数のデプロイ

II. 依存関係

依存関係を明示的に宣言し分離する

III. 設定

設定を環境変数に格納する

IV. バックエンドサービス

バックエンドサービスをアタッチされたリソースとして扱う

V. ビルド、リリース、実行

ビルド、リリース、実行の3つのステージを厳密に分離する

VI. プロセス

アプリを1つもしくは複数のステートレスなプロセスとして実行

VII. ポートバインディング

ポートバインディングを通してサービスを公開する

VIII. 並行性

プロセスモデルによってスケールアウトする

IX. 廃棄容易性

高速な起動とグレースフルシャットダウンで堅牢性を最大化

X. 開発/本番一致

開発、ステージング、本番環境をできるだけ一致させる

XI. ログ

ログをイベントストリームとして扱う

XII. 管理プロセス

管理タスクを1回限りのプロセスとして実行する

Page 9: Heroku Javaで12-Factor App

Gitを利用したアプリケーションデプロイ

Slugコンパイル

アプリ実行環境の判別

依存ライブラリなどのインストール/セットアップ

Page 10: Heroku Javaで12-Factor App

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

アプリ実行環境の判別

依存ライブラリなどのインストール/セットアップ

アプリの起動

アプリケーションコードの同期

Page 11: Heroku Javaで12-Factor App

Javaを利用した場合も考え方は同じ

Slugコンパイル

アプリ実行環境の判別

依存ライブラリなどのインストール/セットアップ

pom.xml

build.gradle

Page 12: Heroku Javaで12-Factor App

Demo

Page 13: Heroku Javaで12-Factor App

The Twelve Factor App

I. コードベース

バージョン管理されている1つのコードベースと複数のデプロイ

II. 依存関係

依存関係を明示的に宣言し分離する

III. 設定

設定を環境変数に格納する

IV. バックエンドサービス

バックエンドサービスをアタッチされたリソースとして扱う

V. ビルド、リリース、実行

ビルド、リリース、実行の3つのステージを厳密に分離する

VI. プロセス

アプリを1つもしくは複数のステートレスなプロセスとして実行

VII. ポートバインディング

ポートバインディングを通してサービスを公開する

VIII. 並行性

プロセスモデルによってスケールアウトする

IX. 廃棄容易性

高速な起動とグレースフルシャットダウンで堅牢性を最大化

X. 開発/本番一致

開発、ステージング、本番環境をできるだけ一致させる

XI. ログ

ログをイベントストリームとして扱う

XII. 管理プロセス

管理タスクを1回限りのプロセスとして実行する

Page 14: Heroku Javaで12-Factor App

Pull Requestから自動的にブランチビルドを作成PipeLineによるアプリケーションのレビュー

GithubのPull Requestと連携

Page 15: Heroku Javaで12-Factor App

Demo

Page 16: Heroku Javaで12-Factor App

The Twelve Factor App

I. コードベース

バージョン管理されている1つのコードベースと複数のデプロイ

II. 依存関係

依存関係を明示的に宣言し分離する

III. 設定

設定を環境変数に格納する

IV. バックエンドサービス

バックエンドサービスをアタッチされたリソースとして扱う

V. ビルド、リリース、実行

ビルド、リリース、実行の3つのステージを厳密に分離する

VI. プロセス

アプリを1つもしくは複数のステートレスなプロセスとして実行

VII. ポートバインディング

ポートバインディングを通してサービスを公開する

VIII. 並行性

プロセスモデルによってスケールアウトする

IX. 廃棄容易性

高速な起動とグレースフルシャットダウンで堅牢性を最大化

X. 開発/本番一致

開発、ステージング、本番環境をできるだけ一致させる

XI. ログ

ログをイベントストリームとして扱う

XII. 管理プロセス

管理タスクを1回限りのプロセスとして実行する

Page 17: Heroku Javaで12-Factor App

多くのFortune 500企業やスタートアップがHerokuを利用

Page 18: Heroku Javaで12-Factor App

みずほ、三菱UFJ、SMBC、セールスフォースより投資され注目されるフィンテック

アプリダウンロード数80万以上の運用を、数名のスタッフで運用

Heroku Performance Dyno上で顧客管理を行い、Heroku PostgresやRedisにデータを集約

日本初の取引、残高を分析してくれるお金の一括管理アプリ

Herokuを活用し、拡張性の高いお金の一括管理アプリを運用

Page 19: Heroku Javaで12-Factor App

プログラム言語別のチュートリアル資料が掲載Heroku開発者向けドキュメント

devcenter.heroku.com

Page 20: Heroku Javaで12-Factor App

thank y u