高速化で、Webアプリがついにデスクトップアプリに近づいた!
ホームページ制作サービス「BiNDup」の大きな特徴は、クラウドサービス(Webアプリ)とインストール型のソフト(デスクトップアプリ)、両方の環境を提供していること。
Webアプリはどこでも使えて便利な反面、常にサーバーと情報をやりとりしているという性質上、ネットワーク環境に左右されてしまいます。そのためPCにインストールして利用するソフトと比べると一般的にパフォーマンスが落ちてしまいがちなんです。
しかし!BiNDの開発クルーではWebアプリの高速化を最優先課題としてさまざまな施策を重ね努力をしてきた結果、いよいよ2019年12月のアップデートにてデスクトップアプリと同じ速度を体感できるまでになりました。
特に操作頻度の高いブロック適用やプロパティ適用にかかる速度が大幅に改善したのがユーザーの皆さんにも朗報になると思います!
それでは解説していきましょう。
【検証結果】デスクトップアプリに近づいた!
今回の検証では編集後のブロック適用やプロパティ適用など、BiNDupのサイト編集で操作頻度の高い項目に速度改善が認められました。
ブロック適用処理
TOPページのビルボードのタイトル部分にテキスト1文字追加し、適用ボタンを押した場合の完了までの時間を計測
- Webアプリ:09.95秒 → 01.95秒
- デスクトップアプリ:02.32秒
プロパティ設定適用処理
ページ設定のページ名を変更。 1文字追加し、適用ボタンを押した場合の完了までの時間を計測
- Webアプリ:26.63秒 → 01.87秒
- デスクトップアプリ:01.05秒
ページ追加
空白のページを追加にかかる時間を計測
- Webアプリ:13.50秒 → 02.35秒
- デスクトップアプリ:02.15秒
どれもデスクトップと同等の時間にまで速くなりました。特にプロパティ設定の適用処理にかかる時間は、なんと1/7に短縮されました。これで、ちょっとの変更なのに完了しない・・という不満を解消できたと思います。
AiDジェネレーター自動生成
サイトの自動生成機能「AiDジェネレーター」でのサイトの生成が完了するまでの時間も2分20秒と大幅に短縮。これまでの1/3の時間で済むので、条件を変えた作り直しも気軽に実行できます。
※計測値はすべて弊社テスト環境での実測値です
【速度改善の施策】何を行って効果が出たのか?
アプリのパフォーマンスが悪いと感じる場合の要因は複数あり、対策方法もさまざまなので一筋縄ではいかないもの。BiNDupでもリリース当初から常に対策を行いつつも、2019年は最優先課題として技術者の面々が異なる視点で速度改善をしてきました。
パフォーマンスが落ちる要因は大きく捉えて、以下の3つが挙げられます。
パフォーマンスが低下する要因
- 長期運用によるユーザ数やデータ量の増加
- 機能追加による処理の増加
- 非効率なプログラム
2019年前期の施策
- 高速処理が可能なサーバーへ一新
- データベースの参照や更新にかかる処理を軽減
ユーザー数やデータ量の増加に対応するため、これまでにない資金と手間を投入して、リリース当初から使われているサーバーを高速処理が可能な高機能サーバーへ一新するという物理的な対策を実施。
また、BiNDupはデーターベースを使うシステムなので、データベースの参照や更新にかかる処理を軽減するため、肥大化したテーブルを分割して並列化する処理などを行いましたが、なかなか効果が出ませんでした。
詳しくは以下にて説明しています。
ボトルネックの洗い出しと地道なチューニング
そこで速度改善の基本に立ち戻り、データ量の増加時にボトルネックになりがちなデーターベースの索引をひとつひとつ見直していく作業に着手。この対応が功を奏して、今回の速度改善に繋げることができました。
アプリのパフォーマンスチューニングは飽くなき闘いの連続です。今回の改善結果は正に“クリティカルヒット”でした。
データベースの索引の見直し
パフォーマンス向上には、データベースとの効率的なやりとりが必要で、その方法のひとつに索引の見直しがあります。データ量が増加すると、今までは問題がなかった処理が急に遅くなることがあります。処理が参照しているデータをもう一度見直し、目印となる索引の定義を追加しました。
ファイルアクセスの見直し
Webサービスのファイルシステムは、複数台のサーバーで構成されています。画像など複数のファイルを扱うBiNDupは、ファイルのアクセス方法を見直す事によって改善が見込めます。今後、こちらも強化していく予定です。
成果が出た現在も、引き続きBiNDの基本操作で遅く感じる箇所の洗い出しと最適化の作業を実行しています!
開発環境で試して結果が出たものを検証してもらうという作業を繰り返し行い、速度改善に努めているので今回のチューニングで変わらなかった部分も速くなる可能性がありますよ!
速度改善施策のサイクル
- ボトルネックの洗い出し
- 原因の究明
- 問題の最適化
- 開発環境でのテスト
- 検証環境でのテスト
- 本番環境への搭載
【今後の予定】また遅くなったりしないのか?
アプリは運用し続けるほど、上記の要因によってパフォーマンスが低下してしまうもの。
ということは、今回の高速化もどのくらい維持できるのかが気になる人も多いのではないでしょうか?
これまであまりお伝えしたことがありませんでしたが、パフォーマンスチューニングは終わりのない戦いだと思って定期的な速度検証を行ってきました。その計測で今回変わった部分がまた遅くなっていないかを今後も社内でチェックしていきますのでご安心ください。
速度検証について
- 頻度:毎週・リリース後
- 検証マシン:Windows8.1 64bit | CPU:1.70GHz | MEM:4.00GB
- 確認ブラウザ:Chrome最新
- 使用テンプレート:「MORIO」
- ネットワーク:社内ネットワーク
そしてもちろん、パフォーマンスチュー二ングは今後も継続的に実施していきます。目標は、デスクトップアプリ並みのスピードをWebアプリで出すこと!
次の“クリティカルヒット”が出たときにはまたご報告させていただきます。デスクトップアプリしか使ったことがないという方は、ぜひこの機会にWebアプリの使用を始めてみてくださいね。
BiNDupを使ってみる
Webアプリの使用方法は、BiNDupのサイトの右上にある「ログイン」ボタンからログインするだけです!
POINT
- Webアプリの適用にかかる速度が大幅に改善。デスクトップアプリに近づきました
- データベースの索引の見直すことにより、ブロックの適用など基本の操作が高速化
- 今後も定期的な計測とファイルアクセスの見直しなど更なる改善を実施