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の判断にまかせるしかなさそうです。
もちろん、僕も作業を手伝ってほしいと頼まれたらお手伝いしますよ。
お声がけください!!!
0 件のコメント:
コメントを投稿