初・中級者集まれ︕ herokuと上⼿に付き合う ...… · (e.g. java, node.js, ruby,...
TRANSCRIPT
初・中級者集まれ︕Herokuと上⼿に付き合うTips あれこれ 2019/9/26
Speaker ⾃⼰紹介
2019/10/2 Copyright TRECH Co.,LTD 1
@yonyonsaeki
佐伯 葉介佐伯 葉介(さえき ようすけ)株式会社トレック 取締役副社⻑
• 個⼈としては10年間⼀貫してクラウド/Salesforceにコミット、SIサービスを実りあるビジネスにしたい
All ProductSalesEngineer
BtoC Service/ IoTPM ,Sales
CRMSupport , Engineer
Cross-CloudPM,Consulting
ゲストSpeaker 会社/⾃⼰紹介
2019/10/2 Copyright TRECH Co.,LTD 2
齋藤 俊(さいとう しゅん)株式会社フレクト マネージャ
• コネクテッド・カー・アプリ「Cariot」やマルチクラウド・インテグレーションの会社で勤務• 「Salesforce DG ルーキー会」などSalesforce界隈のコミュニティ等で活動
Herokuの話をする前に
2019/10/2 Copyright TRECH Co.,LTD 3
Developerの皆さんにとって愛着のある技術(⾔語/FW)、ツール、サービスってありますよね︖
良いところを知り、不向きなことは良い様に解釈する(⽬をつぶる)
いかに愛着を持って取り組むか︖
2019/10/2 Copyright TRECH Co.,LTD 4
“恋は盲⽬”的アプローチ
愛着=
Herokuの話をする前に
セッションの前に
2019/10/2 Copyright TRECH Co.,LTD 5
Herokuと恋愛する準備はできていますか︖
本⽇のセッション
2019/10/2 Copyright TRECH Co.,LTD 6
Abstract
今後のHerokuに触れる機会にあたって、“つまずき”や”ためらい”を少しでも避けるべくポイントをいくつかご紹介していきます。
本⽇のセッション
2019/10/2 Copyright TRECH Co.,LTD 7
• Heroku案件Tips• 知らないと怖いけど、知ってれば怖くない。Tipsご紹介• ごめんなさい︕全ては網羅できないので、フォローすべき情報源などもご紹介
• Herokuに求められていること・ユースケース• そもそもHerokuって何が良くて、どんな理由で採⽤されるの︖今後増えるの︖• ⽂脈(コンテキスト)を把握しよう︕
Agenda(⼤きく⼆本⽴て)
Copyright TRECH Co.,LTD 8
第1章Herokuに求められていること・ユースケース
Herokuへの期待(①アプリケーションサービスの素早い⽴ち上げ)
仮想環境
ハードウェア
ネットワーク
スケールアップ, 負荷分散, 障害時切替
Heroku Connect(Salesforce同期)
150以上のAdd-on連携検索, ロギング, 分析, ⽀払など
Heroku データベース(Postgres,Kafka)
ランタイム⾔語環境(e.g. Java, Node.js, Ruby, PHP)
HerokuはAWS上で構築されたコンテナ型のアプリケーションプラットフォーム
”サービスが市場に受け⼊れられる前に、インフラ技術に時間をかけられない”
”アプリを作ること”に早く集中できる→スタートアップのプロダクト開発や、新規事業に⾮常に相性がいい
企画/PoC MVP/1stリリース
サービス拡張
例・・・ワン・ファイナンシャル社 レシート買取アプリ”ONE”⾼校⽣CEOでも話題になった、アクセス数超スパイクのBtoCサービスアプリ。
引⽤︓https://www.salesforce.com/jp/customer-success-stories/onefinancial/
Herokuへの期待(②CRMと繋がるサービス基盤)なぜCRMとつながる必要があるか︖
BI
データ連携
ECCommunity
• 新規拡⼤、離反防⽌、アップセルをシームレスに⽀える
MASales/Service
企画/PoC MVP/1stリリース
サービス拡張
⽀えるファンクション
例・・・CRMと繫がることで変わる顧客体験例えば ・・・ こんな“繋がる”サイクル
エンドユーザ
提供するデジタルサービス
利⽤実績・ログ
分析・ターゲティングマーケ施策
・フォローアップ
例・・・CRMと繫がることで変わる顧客体験実際に統合してみると、その威⼒がわかる。
動画
Heorku定番ユースケース
• BtoCエンゲージメントアプリ(顧客接点としてのアプリ)• メーカーのマイページなど
ブランドはあるが顧客接点が⼿薄の企業が消費者向けの会員サービスなどを展開
• ECサイト(コンバージョンポイント)• ECサイト、事前決済/オーダーなどライトで収益に直結するアプリリアル店舗の実績と統合してO2Oを実現する
Copyright TRECH Co.,LTD 15
第⼆章Heroku案件Tips
本⽇ご紹介するTips
⾒積・サイジング
環境構築・設計
開発・運⽤
・お得なPackライセンス・Dyno選びに困ったら
・定番アドオン構成はこれ︕
・ログ・メトリクス系Addonの集約
・同期件数が多い場合のHeroku Connect
初級〜中級向け。基本からニッチだけど知らなそうなものをピックアップ
・⾒積の基本
・Herokuでの開発プロセス・CI/CD
・使える情報ソース困ったら・・・
講演後追記:諸々
17
Heroku案件Tips ⾒積・サイジング編
Tip1 ⾒積系(基本)
2019/10/2 Copyright TRECH Co.,LTD 18
アプリ実⾏環境Dyno(ダイノ)あらゆる開発⾔語で
作られたアプリを実⾏可能なLINUXベースのコンテナ
拡張機能(アドオン)150以上の拡張機能モニタリング、ビッグデータ
ログ管理、など
RubyNode.jpJavaPHPPythonScalaClojure
DBビッグデータSSLEmailSMS検索分析モニタリングロギング
Heroku ConnectSalesforceとのシームレスな接続
Private Spacesよりセキュアな環境東
京リージョン利⽤
1.Dynoいくつ(1dyno単位)、2.Addonいくら分($1000単位)、3.HC何万⾏(25万⾏単位)、4.PSつけるかどうかを検討する。PricingはSalesforce社が⾒積る、必要な構成を協議する
Tips ⾒積系(Dyno選びで困ったら①)Dyno のProcess Typeは3つ︕常にこのいずれかから⽤途に応じて選ぶことを意識しておく
• Web プロセスを処理する Dyno
• 24時間+αで⾃動で再起動
• 30秒以上、接続を維持できない
• バックグラウンドで処理をする Dyno
• バッチ処理などに利⽤する
• 24時間+αで⾃動で再起動
• 管理プロセス⽤の Dyno
• 利⽤時に⼀時的に⽴ち上げる
• Dyno Formation に含まれない
Web Dyno Worker Dyno One-off Dyno
Process Typeの使い分けの例
Web Dyno
Worker Dyno
One-off Dyno
DB(Heroku
Postgres等)
顧客向けWebアプリはWebDyno数台構成
他システムのデータ受信&連携はWorker Dyno
CRMやBIへの定期同期はOne-off Dyno
Tips ⾒積系(Dyno選びで困ったら①)
Tips ⾒積系(Dyno選びで困ったら②)
Enterpriseでデフォルトで選べるType
更にPrivateSpaces契約が必要なType
更にShield契約が必要なType
⼀般⽤途
セキュリティ・パフォーマンス⽤途
厳しいセキュリティ⽤途
Tips ⾒積系(Dyno選びで困ったら②)
Enterpriseでデフォルトで選べるType
更にPrivateSpaces契約が必要なType
更にShield契約が必要なType
⼀般⽤途
セキュリティ・パフォーマンス⽤途
厳しいセキュリティ⽤途
まずはCommonRuntime とPrivate Spacesの違いがわかればOK
Tips ⾒積系(Dyno選びで困ったら②)
Tips Dyno選びで困ったら②
案件A
アプリ①開発 standard-2X * 1 = 2units受⼊ standard-2X * 1 = 2units本番 standard-2X * 2 = 4units
アプリ②開発 standard-1X * 1 = 1units受⼊ standard-1X * 1 = 1units本番 standard-2X * 2 = 4units
--------------------------------合計 14units ※契約は20units
あまったunitsはQA⽤アプリを⽴てたりHeroku CI⽤に確保
案件B
アプリ①開発 standard-1X * 1 = 1units受⼊ standard-1X * 2 = 2units本番 standard-2X * 2 = 4units
アプリ②開発 standard-1X * 1 = 1units受⼊ standard-1X * 2 = 2units本番 standard-2X * 2 = 4units
--------------------------------合計 14units ※契約は20units
あまったunitsは運⽤に応じて適宜利⽤
契約の70-90%で組んでバッファを残しておく
Tips お得なPackライセンス(DevStarter)
2019/10/2 Copyright TRECH Co.,LTD 25
最初だけ買えるこういうお得パックもあり、含まれる中⾝を知ることが重要。
DevStarter
• トライアル含むPoC⽤途に最適•パッケージに含まれる製品•20 Dynos•1 Add-on Credit•500K rows Connect
こちらがよく売られる。 ・Dyno数は20とそれなりに
・Add-onが1本($1000)だけ
・HerokuConnectは50万⾏と絶妙なライン-> トランザクション系は厳しいかもしれない。
・PrivateSpacesは⼊ってない-> セキュリティ要件確認
※過去Salesforce様ご提案時点のパック構成ですので変更されている可能性があります。パック構成のライセンスがある点のみ抑えましょう
Tips ⾒積・サイジング系(PrivateSpaces) 選べるDynoが異なったり、Addonのプランが異なったり、PS対応していないAddonもある。
• Prod,Stg,Devの環境にどうDynoを割り振る︖
• 使おうと思っているAddonはPS対応している︖
Dyno Type Dyno数 RAMStandard-1X 1 512 MBStandard-2X 2 1024 MBPerformance-M 8 2.5 GBPerformance-L 16 14 GBPrivate-S 5 1 GBPrivate-M 10 2.5 GBPrivate-L 20 14 GB
タイプによって消費するDyno数が違うことに注⽬︕
そのAddon、使える︖要確認
Tips ⾒積・サイジング系(Addonの使い道) データサービス系が⼤半を占める。
項⽬ 観点
Dyno PVピークタイムの処理能⼒(CPUx台数)
データベース ストレージ容量、同時接続・処理能⼒
メール 会員数増加に耐えられるメール送信数
ログ ログを保存できるストレージ容量
性能監視 監視するサーバの数キャッシュサーバ(セッション管理) ユーザのセッション管理が主。メモリ容量画像管理(アップロード画像管理) 画像を保管する容量
主なサイジングポイント(ざっくり)
DBキャッシュ
リソース監視
ログ
画像管理メール配信
ADDON内訳(ドルベース)DB キャッシュ リソース監視ログ 画像管理 メール配信
28
Heroku案件Tips 設計編
KVS
Tips 定番アーキ / アドオン構成はこれ︕前述の定番ユースケースに基づくアーキテクチャとアドオン
認証情報会員情報商品情報
EC注⽂情報ポイント明細/サマリ
など
ECーCUBE(EC基盤)
CDN
CRMデータ
アプリ稼働監視 ログ管理
メール配信 ストレージ(画像・動画など)
利⽤者
メール
マーケティングオートメーション
顧客管理
ECサイト(コンテンツ)
メール/プッシュ通知SNS/LINEなど マーケティング
担当者店舗
スタッフ本部
⾃動同期(双⽅向)
SSL
Heroku Redisセッション/
キャッシュ情報
決済サービス(Plugin)
会員向けエンゲージ
アプリ(Web)
会員/受注関連データ
在庫管理 購買/⽣産管理
販売管理 WMS
基幹系
決済系は別途Stripeなど活⽤
DB
Papertrail
KVS
Tips 定番アーキ / アドオン構成はこれ︕前述の定番ユースケースに基づくアーキテクチャとアドオン
認証情報会員情報商品情報
EC注⽂情報ポイント明細/サマリ
など
ECーCUBE(EC基盤)
CRMデータ
利⽤者
メール
マーケティングオートメーション 顧客管理
ECサイト(コンテンツ)
メール/プッシュ通知SNS/LINEなど マーケティング
担当者店舗
スタッフ本部
⾃動同期(双⽅向)HerokuConnect
NewRelic
CloudinaryBucketeer
SendGrid
SSL
Fastly
HerokuRedis
決済サービス(Plugin)
会員向けエンゲージ
アプリ(Web)
会員/受注関連データ
在庫管理 購買/⽣産管理
販売管理 WMS
基幹系
決済系は別途Stripeなど活⽤
HerokuPostgres
Tips 同期件数が多い場合のHeroku ConnectHerokuConnect件数の積み増しがどうしても出来ない場合とはいえ、極⼒開発コストを落としたい、マネージドなサービスを取り⼊れたい時。
お知らせ
お知らせ(差分)
お知らせ(差分)
お知らせ
会員 会員
HerokuConnect
ここをHerokuConnect
Trigger等で差分データを挿⼊
バッチ等で差分を吸い上げ
連携が終わったら差分データ削除
差分テーブルから連携済みデータを削除
差分のみを対象。同期⾏数抑制責任分解点を維持
32
Heroku案件Tips 開発・運⽤編
Tips Heroku CI & Pipelines でCI/CDHeroku Pipelines とは、アプリを簡単に次ステージにデプロイする仕組み
Heroku Pipelines とは、アプリを簡単に次ステージにデプロイする仕組み
Review AppsPullRequest作ったら確認⽤のアプリを起動できる※Heroku Connect⾮対応
Promote to stagingdevelopのアプリをすぐstagingに反映可(slugをコピーする)
Tips Heroku CI & Pipelines でCI/CD
Heroku CIと組み合わせる
GitへpushしたらHerokuがテスト実⾏ブランチを選んで⼿動も可。テストall passを
デプロイ条件にもできる
Tips Heroku CI & Pipelines でCI/CD
Tips Heroku CI & Pipelines でCI/CDデプロイプロセスを整備して運⽤する。チームやプロジェクトに応じて適宜 Github Flow 等からアレンジ
プログラミングした結果を GitHub へ push
GitHub にコードがマージされる前に CI サーバによるビルドとテストを実施
テスト&レビューされたプログラムを Master ブランチに Pull Request し Heroku で動作確認
Heroku の Pipelines で Staging 環境にデプロイし動作確認
確認済みのアプリケーションを Pipelines で本番環境にデプロイ
Tips ログ・メトリクス系の効率運⽤Addon管理⽤Appを⼀つ⽴てて、ログ系のアドオンを集約し、複数環境(Prod,Stg,Dev)アプリにアタッチ
リッチなプラン⼀本のみ契約して、各環境で共有できる。アプリを切り替えなくても、各環境のログが確認できる
Dev app
Stg app
Prod app Log Addon M
Log Addon S
Log Addon S Dev app
Stg app
Prod app
Addon app Log Addon L
Tips ログ・メトリクス系の効率運⽤複数のアプリにアタッチ
動画
Herokuの管理画⾯は意外と便利意外と知られていない機能を探して使いこなそう
Tips ログ・メトリクス系の効率運⽤全アプリのログが左下のアプリスイッチャ⼀箇所から確認
動画
困ったら・・・ 使える情報ソース特徴や仕様を⼿早く知るには、ある程度まとまった情報源がおすすめ
Heroku概論
技術仕様
最新情報
・Heroku⼊⾨ https://dotinstall.com/lessons/basic_heroku
・Trailhead https://trailhead.salesforce.com/ja/content/learn/modules/heroku_enterprise_baiscs
・The Twelve-Factor App (⽇本語訳) https://12factor.net/ja/
・Heroku DevCenter https://devcenter.heroku.com/
・Heroku Changelog https://twitter.com/herokuchangelog・HerokuJP Slack https://bit.ly/2kXRZQB・岡本さんのqiita https://qiita.com/mokamoto
プライシング(契約周り) ・PartnerCommunity https://partners.salesforce.com/06930000004juSh
終わりに
2019/10/2 Copyright TRECH Co.,LTD 41
改めて・・・あなたにも、今後Herokuを活⽤する機会は必ず訪れる、はず。
Herokuと恋をする準備はできましたか︖
2019/10/2 Copyright TRECH Co.,LTD 42
ご静聴ありがとうございました。