本記事の目次 (→シリーズの特集ページ)
たった3人でサービス運用を可能にする、すごいDB同期の仕組み
――Heroku上でのアプリケーションはどのような環境で動いているのですか?
中尾:PHPで「Laravel」っていうフレームワークを使っています。正確にいうと、使っているのはLaravel本体というより、Laravelで実装された「Lumen」という軽量フレームワークです。これを社内共通の開発環境として決めてあります。データベースはHeroku Postgresです。
LaravelやLumenを使う理由は「何でもついてますよ」っていうのではなく、「顧客の要望に柔軟に対応できる」シンプルなフレームワークが必要だったからです。APIを作る部分やビューをコントロールする部分を開発することにおいて、モダンで非常に合理的な設計思想で作られています。後からどうにでもなるっていうのは、Force.comとも共通しますね。
ただ、Javaが得意なパートナーさんもいるので、Javaも使っています。9割ぐらいがPHPでプラスJava。あと、フロントエンド系のエンジニアもサーバーサイドのプログラムをやるようになってきていて、Node.jsもちょっとやったりとかもしますが、案件はだいたいPHPですね。HerokuですがRubyは全然やっていません(笑)
あと、Force.comと同様に、チーム全員がフルスタック的なスキルセットを持てたらいいよねといって、フロントエンドエンジニアがサーバーサイドもできるようになろうと取り組んでいます。最近では、フロントエンドとサーバーサイドの両方でJavaSctiptを使い、1人でサービスを作れるようになってきています。
――積極的な取り組みに感服します。ところで、Heroku上のPHPプログラムからForce.com上のデータをどのようにして読み書きするのですか?
白石:2つ方法があります。1つは、Force.comが外部に提供しているSOAP APIを叩いて、Salesforceの中のデータにアクセスするという方法。もう1つは、HerokuとSalesforceがシームレスでつながる「Heroku Connect」という新しいサービスを使う方法です。
Heroku Connectは、Force.com上のオブジェクトとHeroku Postgres上のテーブルとを同期させるサービスです。Heroku上のアプリケーションは、Heroku Postgres上のデータにアクセスすることで、透過的にForce.com上のデータにアクセスすることができます。開発者は同期のことを意識する必要はありません。
中尾:もちろん使い分けはあって、マスターデータ系を大量に同期させたいときにはHeroku Connectが使いやすい。設定だけでできてしまいます。一方で、Force.com側にデータをリアルタイムで反映させたいときには、Force.comのAPIを叩いたほうがよかったりします。
Heroku Connectの一番の使いどころは、Salesforce側の業務アプリケーションで行ったレコードの変更を、Heroku側に反映させるという処理。ここはもう、Heroku Connectでやったほうが断然楽ですね。例えば、クーポンを発行するサービスで、Salesforce側で管理するクーポンマスターオブジェクトに発行する設定を行ったら、Heroku Postgresに自動的に反映されてユーザーはアプリで発行されたことを見られる、といったユースケースでは特に有効だと思います。
白石:以前は、Heroku上のアプリケーションからSalesforceのAPIを叩いてデータを取りにいく実装をしていたんですけど、性能が出ず、UX(ユーザーエクスペリエンス)的にあんまりよろしくなかったんです。仕方なく、SalesforceとHerokuのデータベースで双方向にデータをやり取りするバッチを開発していたんですが、そこにHeroku Connectが出てきた。ありがたいです。
中尾:パフォーマンスを求められるアプリケーションに関しては、もうHeroku Connectでやらないと厳しいかなという印象です。SOAP APIをいちいち叩くのとは格段にスピードが違うので。コンシューマ向けは特にスピードって大事なので、使いどころですね。
白石:あと、Salesforce側からうまくデータが取れないといったケースもなくなり、生産性にもいい影響が出ています。Salesforce側の設定を僕がやれば、Heroku側のアプリケーションを開発・メンテするエンジニアと、デザイナーが1人いればWebサービスを回せてしまう。実際に3人でやってるサービスがあります。
――3人はすごいですね。ただ、Heroku Connectは利用にコストがかかると聞きました。利用することによる生産性向上とのトレードオフを見極める必要がありますね。
中尾:そうですね。ただ、バッチを開発する手間とその後のメンテナンスを長い目で見て考えると、Heroku Connectを使うほうがトータルコストを抑えられるような気がします。連携するデータの量を調整することでもコストを抑えられるんで、使い方次第だと思います。
Force.comは「無料」で試せます!
簡単なご登録ですぐにさわってみることができます。ご興味のある方はForce.comの下記ページから。