C21 Magazine

Sell-Side Solution 開発者インタビュー Vol.4 ~安心して運営できる仕掛け~

【掲載日】2019.09.17

Sell-Side SolutionはECサイト構築パッケージながら、標準機能を増やすより、お客様のビジネスや要望
に合わせてセミスクラッチで開発を行うことを優先しています。そのために、製品開発で力を入れている
ことがあります。それは事業者様に日々安心して運営していただくための細かな仕掛けです。
ECサイト構築を専業としてきたベンダーとして数々のお客様のご支援をしてきたからこそ考える取り組み
や仕掛けについてお伝えします。


写真左から:テクニカル・コンサルティング部 佐野修平、品質管理グループ エキスパート 三橋敬

- 事業者様が安心してサイト運営をしていく上で、製品に取り入れていることを教えてください。
例えば、どのようなことを取り入れていますか?


佐野 : サニタイズフィルタですね。サニタイズフィルタとは、悪意のあるスクリプトやSQLを「人
間には読める状態を維持したまま」変質させる機能です。変質したスクリプトやSQLは、ブラウザやSell
-Side Solutionのシステム上で単なる文字列として扱われるか、不正なSQLであれば例外処理されるように
なるので、XSS(クロスサイトスクリプティング)やSQLインジェクションに代表されるような悪意のある
攻撃をはじくことができます。同時に、悪意のない文字列を解読不能なものにしてしまわないような配慮
もなされています。

- Sell-Side Solutionに標準で実装されているんですか?

佐野 : はい、標準で入っています。(*Ver.4.1より実装)
三橋 : コネクション周りの仕組みについてもコネクションプールという機能を実現しています。

- コネクションプールとは何ですか?

佐野 :  SQLを発行する場合は毎回データベースに接続して結果を取ったり更新したりしますが、毎
回行う場合は接続がネックになるので、あらかじめ接続するコネクションをいくつか作って溜めておい
て、使う時になったら接続されているコネクションを使ってSQLを発行します。コネクションプールを
利用することでデータベースとの接続が省略されるので、処理が早く行えるようになります。

三橋 : Sell-Side Solutionの特性としてはマルチインスタンス構成になっています。マルチインス
タンス構成にすることで、コネクションプールで貸し出しと返却が滞ることなく処理できます。

佐野 : また、異常があった場合にはlogですぐにわかるような仕組みを作っています。例えばSQL
が非常に長く発行されていてコネクションが閉じられていない時などもlogで出てきてくれるので、検知
しやすくなっています。開発側でもリリース前に異常なlogを全てつぶすことができるので、リリース時
には全て正常なlogの状態にすることができます。


- 異常があった時にはすぐに検知できる仕組みが出来ているんですね。

佐野 : そうですね、普段全然見ないようなlogがいきなり出てくれば、どこかに異常があるとすぐ
にわかります。

三橋 : SQLに関して言えば、遅いSQLやデータが大きすぎる場合にもlogから読み取れるようになっ
ています。データが大きすぎる場合は、必要のないデータまで取ってきていることもあるので、後々コ
ストとして積み上がってきて、何らかの悪影響を及ぼしかねませんが事前に検知できる仕組みが備わっ
ています。

佐野 : その閾値も設定ファイルで調整できるので、このサイトは重めだから長くしよう、このサイ
トは小規模だから早めにしておこうというような調整も案件毎に変えることができます。

三橋 : SQLを独自に拡張しているパッケージもあると聞きますが、我々のパッケージではそのよう
なことはしていないので、接続先のデータベースに対して素直なSQLで実装されています。かつてはSQL
の結果を全てキャッシュしていたんですが、それだとJavaのヒープを使いすぎるので、最新のSell-Side 
Solutionのバージョンでは廃止してプロキシのキャッシュにしました。それ以来SQLの結果の大きさや
量に応じてメモリ不足になるということは起きていません。



- 他にもキャッシュに関して取り組んでいることはありますか?

三橋 : 大容量のデータを扱えてもスピードが遅くなってしまう場合、メモリアクセスすることによ
って高速化が適うのですが、キャッシュなので鮮度は気になると思うんです。本来だとキャッシュによ
ってタイムラグが発生します。このデメリットを黙認してでも高速のアクセスを実現するというのがキ
ャッシュのメリットかもしれませんが、Sell-Side Solutionではキャッシュについて、高速のアクセスを
実現するメリットを残したままデメリットも解消するような作りになっています。

佐野 :  例えば、お客様としては管理画面で商品を反映したら、すぐにECサイト上でも最新の情報
を出したいと思いますが、通常であればキャッシュが残っているのでタイムラグが出ます。Sell-Side 
Solutionでは連動しているので、お客様がバックオフィスで反映した時点でECサイトのフロントでも変
わるようになっています。これは商品だけでなく、展示でもニュースでも他の機能でも同じです。

他には、レビューを書いた時、書いた人は自分の投稿がちゃんと反映されているか確認したいですよね。
これがキャッシュされていたら、いつまで経っても変わらないことに不満を持つかもしれません。その
ためユーザーがレビューを投稿した時には、ユーザー本人の投稿を瞬時に確認できるよう、投稿したユ
ーザーのキャッシュだけをクリアするという部分的なキャッシュの仕組みを実現しています。この場合、
投稿したユーザー以外の人に対してはキャッシュの情報を返しますが、ユーザーが見たいところだけは
最新の情報にすることができます。他にもお気に入り登録者数についてもこのキャッシュの仕組みを活
用してユーザーがお気に入り登録、解除した時にはすぐに数が変わるようになっています。

三橋 : メモリをやめてディスクにキャッシュするようにしたので、実質、無尽蔵に対応できるよう
になりました。メモリだと1~2ギガくらいが限界なので、それ以上だと止まってしまいますが、ハード
ディスクだと低コストで大容量のものが手軽に用意できます。

佐野 : キャッシュの仕組みも1次キャッシュ、2次キャッシュというように分かれていて、Front UI
側に持たせるキャッシュとFront API側に持たせるキャッシュの2段階構えになっています。Sell-Side 
Solution Ver4.3では、パフォーマンス向上施策の一つとして、ライセンスを追加購入せずに「Front UI
のみスケールアウト」することができますが、内部的には「Front APIへの負荷を抑えるために、一定
程度のリクエストはFront UI単独で捌き切ること」が前提となっています。そしてその前提をクリアす
るための機構が、この「2段構えキャッシュ」なのです。



- ECサイトで必要なことは機能以外に実は多くて、経験で得てきたことを製品に盛り込んでいくとい
うのは大切なことですよね。パフォーマンス面で実装されている仕組みはありますか?


三橋 : リフレッシャーという機能があります。各種システムにおいて設定値は様々あると思います
が、その中にはデータベースに設定値が保存されているものもあり、リクエストがある度毎にデータベ
ースへアクセスしているとパフォーマンスもリソースの消費も看過できない状況になることがあります。
そのため、起動時に一括でメモリ上に展開して都度アクセスする状況を減らすという策もよくあります
が、デメリットとして変更があった場合にはシステムを再起動しなければなりません。リフレッシャー
はこの状況を改善するために、再起動せずとも変更したマスターデータが反映されるように定期的に読
み直す機能になります。

- 他にもSell-Side Solutionに取り入れている表立った機能ではない仕組みや取組みはありますか?

佐野 : セッション共有ですね。セッションを複数のサーバーで共有できる仕組みです。他でもセッ
ション共有機能がありますが、オンプレミスでなければ実現困難でした。Sell-Side Solutionではクラ
ウドでもセッション共有できる仕組みを実現しています。クラウド主体で考えないといけない時代にな
っていると思うので、こうした流れを汲んだ上で取り組みを行っています。

三橋 : セッション共有がサイト運営者にとって何が良いかと言うと、ひとつは再起動してもサイト
が全く停止しないことです。リリース作業ではサーバーを再起動することがありますが、通常であれば
サーバー再起動時にはそれまで繋げていたセッションは全部切れてしまい、ログインしていた場合はロ
グアウト状態になってしまいます。 Sell-Side Solutionではセッションをまとめて管理しセッション共有
のサーバーに入れることで、セッションの継続を実現し、再起動してもサイトを止めることなく、フロ
ントも継続した状態を保つことができます。

場合によってはデータの構造を変えるなど、大掛かりなリプレースの場合にはどうしてもサイトを全停
止することにはなりますが、追加開発や日々の改修においてはサイトを止めずに実現できます。

佐野 : この機能を活用して、データ構造に変更がなければ、アプリケーションリリースをノンスト
ップで実現し、万が一不具合があった時でもノンストップで元に戻すことも可能なので、サイトリリー
スにおける事業者様の不安や心配をなくすことができるのではないかと考えています。


 

一覧

お問い合わせ・資料請求・お見積り依頼

お気軽にお問い合わせください。

03-3470-4702

受付時間 平日10:00~19:00

メールフォームからのお問い合わせ

お問い合わせ・資料請求