見出し画像

Herokuの話 ~Webサービス立ち上げから4年間 Heroku Platformを使ってみた感想~

前書き

ご縁があり、7/20(木) ~ 7/21(金)に開催されたSalesforce World tour Tokyo 2023 SummerのDeveloper基調講演に顧客事例枠で登壇させていただきました。
ド緊張ゆえ話し切れなかったところもあり、登壇時に話した内容に少し補足を加え記事としてWebに流すことで成仏させます。

どんな記事?

リバネスでは、2019年よりHeroku Platformを中心とし、「リバネスID」というWebサービスの開発と運用を行なってきました。
Heroku導入に至るまでの話と導入してみていい感じだったところを共有できればと思います。
(とくに日本では)最近いろいろあったけど、Herokuイイカンジだよ!というお話です。
既にバリバリ活用してるよ!という方よりは、Herokuって何が便利なん?という方向けの記事かなと思います。

Heroku導入〜サービスインまで

リバネスでは、リバネス研究費TECH PLANTERサイエンスキャッスル研究費マリンチャレンジプログラム超異分野学会キャリアディスカバリーフォーラムなど、参加型の企画が多数展開しています。
元々受付にはそれぞれ別サービスを利用しており、ユーザにはサービス毎のIDを作ってもらい情報登録をしてもらっていたのですが、サービスがバラけているためUXがいまいちでした。
加えて、管理側からみると、IDが分散しているのでプロジェクトを跨いでアクティブな人を追う等、集まったデータの分析まで手が回らない状況でした。もったいない。

そこで、適切な人に適切な情報を届ける体制を作るため1人に1つのIDを提供し、その上で様々な活動に参加してもらおうということになりました。
これらの会員機能はまず、SalesforceのCommunity Cloudで作られました。目的は達成できたのですが、申請テーマが合致した場合にログインして情報を登録するという使い方になる都合上、ユーザがアクティブになる時期に山があり、非アクティブな時期は休眠アカウントが増えてしまうのですが、Community Cloudはライセンス数課金のため休眠アカウントが増えれば増えるほど費用がかさみます。

この問題を解消するため、Salesforceのカスタムオブジェクトをユーザとし、これと同期したWebサービスを構築しよう!というところが「リバネスID」の始まりです。
ここまでは入社前の話で、後から聞いただけなのでざっくりです。

サービスを内製するならエンジニアが必要だよねということで、ニッタはこのタイミングでリバネスにJoinしました。

Herokuの選定理由としては、アドオンとして提供されているHeroku Connectを利用すれば、WebアプリのDBとSalesforceのデータの同期が簡単に行えるから、というのが最も大きなものでした。
このような背景で、企画を跨いだ情報登録のためのWebアプリケーション「リバネスID」の構築をHeroku Platform上で行うことになりました。

無事構築は完了し、顧客データや行動データをSalesforceに集約することで、帳票出力はVisualforce、分析はEinstein(現在はTableauが主です)等を利用し、スタッフが慣れ親しんだSalesforce上でデータ管理、行動の追跡、分析を行うことが可能となりました。

Herokuを導入してみてよかった点

Heroku Connect目当てで導入したHerokuなのですが、利用を始めるとそのほかにも嬉しい点がいくつもありました。開発面と運用面、それぞれで便利だった機能をいくつか紹介します。

開発面

環境の構築がとにかく楽です。
Buildpacks、Pipeline、各種アドオン等、開発を補助する機能が豊富にありアプリを実行するまでの手間がほとんど掛かりません。

Buildpacks
アプリケーションの構築に使用する開発言語に応じたBuildpacksを指定するだけで、標準的な実行環境の構築が完了します。めちゃ便利です。
公式が出しているBuildpacksではRuby、Python、Node.js、PHP、Go、Java、Scala、Clojureがサポートされています。
公式サポート外の言語やフレームワークについても、オープンソースコミュニティが開発、運用するカスタム Heroku Buildpackでサポートされている可能性があります。

Heroku Pipelines
Githubとの連携が強力です。Github上でPullRequestが発行される毎に、プルリク内容が反映されたレビュー環境が自動で起動するよう設定しています。
コードレビューとレビュー環境での画面確認が完了し、変更がMainブランチにMergeされると、変更はStaging環境に移行し、Staging環境の内容は任意のタイミングで本番反映を行うことができるようになっています。
各環境の起動時に自動テストを走らせることができるので、デプロイ時の事故が起きにくいです。

アドオン
ダッシュボードから簡単に追加、プラン変更、削除が行えるため、試行の小回りが効き便利です。
うちでは前述のHeroku Postgres、Heroku Connectに加え、Papertrail(ロギング)、Mailgun(メール配信)、Mamchache(キャッシュ)あたりを使用しています。

運用面

オートスケーリング
前述の通り、リバネスのサービスは時期によりアクティブユーザ数に変動があるのですが、
オートスケール機能を設定しておけば、運用者が意識することなく自動で適切なスケールになるようdynoを調整してくれます。

メトリクス
応答速度やThroughput、メモリ使用量等が記録されます。便利!

これらはもちろんAWS等をガツガツ使えば全て実現できることではあるのですが、
これだけの機能をHerokuという一つのプラットフォーム上で、なおかつ簡単に完結できるのは開発体験としてとても良いです。
うちのような小人数のチームではとくに、開発と運用を同時にこなす必要があったりでリソースが不足しがちです。
開発者をアプリケーション開発に集中させてくれるHerokuは、そんな小規模チームの助けになるのではと思います。

これからのリバネスID

現状のリバネスIDは個人識別のための項目としてEmailを使用しているのですが、所属が変わったり、そもそも複数の組織に所属している場合に1個人で2つ以上のIDが作られてしまうケースが度々あります。
今後はData Cloudを活用しより詳細なユーザ識別を行うことで、適切な人に適切な情報を届けられるように進化する予定です。


以上、Herokuはいいぞ。というお話でした。
リバネスのIT基盤の構築を担うリバネスナレッジでは、Webエンジニア、Salesforceエンジニアを積極的に採用中です。もしご興味があればお気軽にご連絡ください。


この記事が気に入ったらサポートをしてみませんか?