とあるwebサービスの仕様見直し相談を受けた話

2021年1月1日

テクノロジー

eyecatch ITご意見番で仕事をしていますが、この種の仕事ではほぼ無給の、弓削田です。 今回は、他社のwebエンジニア兼CTOで、非常に仲良くさせてもらっている友人から相談された内容が、 技術検討で非常に良い内容だったので、備忘録として残しておきたくて、ブログに書いておきます。 実際のビジネスでの話なので、サービス内容やそれに付随する事は言えないのですが、同じようなテクノロジ検討をしているエンジニアは 少なくないだろうと思ったワケです。

相談内容について

このwebサービスは、B2C方式で専門家がブログ形式で掲載する内容に対して、一般ユーザーがそれを閲覧しに来るという内容で、 月間ページビュー数がすでに3千万ほどあるのだそうです。 運営をはじめてすでに7年が経過しており、当初LAMP環境で構築したサーバー構成も機能追加の度に少しずつ環境も追加してきて CDN(ContentsDeliveryNetwork)を使ったキャッシュ方式でデータベースアクセスを極限まで抑えて、今の所なんとか騙し騙し運用してきたのだそうです。 一番の問題点としては、使用しているPHPがバージョン5という事で、2020年11月末をもって、サポートが終了したというタイミングで まずはPHPモジュールのバージョンアップをしなければいけないという事が相談の発端でした。 PHPのバージョンアップ作業は、すんなりできる事もありますが、ビジネスサイトの場合は、そんな思い切ったことはしてはいけなくて、 ちゃんと、問題が起きないかという検証を隅々まで行う必要があります。 個人的に何度か経験がありますが、結構作り直しした方が移行作業が早くなるケースもあり、簡易には考えられないということなんですね。 そして、そうした大規模な作業をするのであれば、いっそのこと、フレームワークごと、今どきのSPA構成にしてしまいたいという その会社内の要望もでてきたというので、SPA構成があまり得意でないその友人が、僕に相談をしてきたという経緯です。

SPAの検討内容

そのWEBサービスは、月間数千万PVもあるというぐらいの大規模サイトになっているのは、 SEOに非常に力を入れていて、環境変更によって、SEOボリュームが減るということは避けなければいけません。 これまで、SPAは、ページが読み込まれてからjavascriptを使ってページ内容を構築するため、サーチエンジンのクローラーが 正常に内容を認識できないという欠点がありましたが、AMPなどの技術を推進してきたGoogleが、ページスピードや無駄なパケット送受信を 行わないwebサイトを検索結果に反映する(2021年頃から・・・という話)という事が囁かれている事を考えると、 セオリーに沿ったSPAにするという選択肢は、WEBページの表示スピードが早くなることを考えると、SEOにとってさらなるプラスになる 可能性もあり、サービス側のメリットも出そうですね。 そして、SPAも現時点で「React」や「Vue」といったメジャーフレームワークも存在していて、どれもサーバーサイドレンダリングをしてくれる Nodejsベースでの仕様なので、もはやPHPを使わなくてもwebページ構築ができてしまいます。 問題点としては、この会社の開発チームがJavascriptがそれほど得意ではないという事で、その点の学習コストは見込まなくてはいけませんね。

アクセス頻度の検討

実はもう一つ問題があり、通常LAMP構成のwebサービスの場合、一番ボトルネックになる点としてSQLデータベースの処理速度が、 ある一定のアクセスユーザーを超えると耐えきれなくなり、最悪の場合ダウンしてしまって、サービス全体がコケてしまうという結果に繋がります。 このサービスはそれを回避するために、URIに対して表示されるデータ内容が一定になるように設計し、初めてそのURIにアクセスした人がデータベースアクセスした結果を CDNに保存して、CDNに存在するURIデータがあれば、データベースにアクセスしなくてもいいという構成にして、 データベース負荷を抑える工夫をしてきましたが、年間に1,2度程度は、データベースダウン障害が発生してしまうのだそうです。 ちなみに、バージョンアップなどでデータベース内容が変更された時は、対象URIのCDNを削除する処理を入れていて、この点は、悪くない構築なんですが、 運用コストはかなり高めになってしまっているようです。 僕が提案したのは、静的コンテンツが構築されているのであれば、ロードバランサーを使って、nginxなどで捌けば1サーバーあたり瞬間アクセスで200から400ぐらいはさばける上 awsのec2を使ったとしてもかなり安価に抑えることもでき、cdnの障害というブラックボックスも対応する必要がなくなり、自社管理で障害対応ができてまいます。 そして、リレーショナルデーターベース(MySQLやOracleなどのデータベース)から、No-SQLを検討するというのも、悪くないでしょう。 ただ、データ構成も変更するとなると、もはやサービスの0からの作り直しレベルになるので、開発コストは数ヶ月に及ぶことは覚悟しなければいけません。 何よりこれも、学習コストなどがかかるため、中小企業にとっての投資価値を判断する必要もあるので、あとはそのCTOの判断にまかせるしかなさそうです。 もちろん、僕も作業を手伝ってほしいと頼まれたらお手伝いしますよ。 お声がけください!!!

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ