■目次
サーバ環境プログラム環境(PHPを使う場合の例)対応する環境メール送信数転送量帯域(回線)回線速度の妥当性計算メモその他
■サーバ環境
・さくら、AWS ・CentOS 6、Amazom Linux ・Apache 2、Nginx など。ミドルウェアやバージョンに指定があるか確認する
■プログラム環境(PHPを使う場合の例)
以下は2018年2月時点での例 ・PHP5.6以降 「マルチバイト関数」「PDO(MySQL)」「GD関数」が使える PHP5.6を使うならApacheは2.4をインストールする必要がある。それ以前なら2.2で大丈夫 ・MySQL5.6以降 文字コードutf8を扱える。可能ならutf8mb4 ・.htaccessからPHPとmod_rewriteの設定ができる アクセス制限設定やBasic認証もできると後々スムーズ ・Cronの設定ができる WordPressなどオープンソースのプログラムを使用する場合、 そのソフトに致命的なセキュリティ問題が発生したときの対応はよく確認しておく 「致命的な問題があった場合、有償でバージョンアップします」など契約上明確にしておかないと揉める可能性がある サーバを複数台構成にする場合、 「セッションをどのように保持するか」「アップロードファイルはどこに保存するか」「アップロード(デプロイ)はどのように行うか」 などを考える必要がある 複数台構成を考慮していないアプリケーションの場合、プログラムに手を加える必要がある可能性がある
■対応する環境
サーバサイドではないが、クライアントサイドの対応ブラウザも確認すること 以下は2018年2月時点での例 ・Windows 7, 8, 8.1, 10 IE11、Edge、Chrome、Firefoxの最新版 ・macOS 10.12, 10.13 Safari、Chrome、Firefoxの最新版 ・Android 5以降 Chromeの最新版 ・iOS 10以降 Safariの最新版 など。 ※2018年1月時点で、IEでサポートされるのはIE11のみ ※2016年1月時点で、IEでサポートされるのはIE11。ただしVistaのみIE9対応(2017年4月11日まで) 参考:Microsoft ライフサイクル ポリシー https://www.microsoft.com/ja-jp/windows/lifecycle/iesupport/ 参考:一目で分かる、各Windows OSでのInternet Explorerのサポート終了時期 http://www.atmarkit.co.jp/ait/articles/1503/11/news134.html 参考:古いInternet Explorerは2016年1月にサポート終了! その対策は? http://www.atmarkit.co.jp/ait/articles/1507/13/news025.html 参考:各Windows OSで利用できるIEのバージョン http://www.atmarkit.co.jp/ait/articles/1405/30/news092.html 参考:WindowsXP/VistaにChromeは新規インストールできないらしい http://forest.watch.impress.co.jp/docs/serial/yajiuma/753562.html
■メール送信数
メールの送信数や一括送信には制限があるので注意 プログラム側でも、順次配信など工夫が必要 エックスサーバー https://www.xserver.ne.jp/news_detail.php?view_id=1783 さくらVPS・専用サーバ(非公式の記事) http://www.fse.jp.net/detail/1/17 ヘテムル http://heteml.jp/ordermenu/prohibition/ ロリポップ http://lolipop.jp/order/kinshi/ ・エコノミープラン … 1時間 100件、かつ1日 1,000件まで ・ライトプラン … 1時間 300件、かつ1日 3,000件まで ・スタンダードプラン … 1時間 1,000件、かつ1日 10,000件まで ・エンタープライズプラン … 1時間 1,000件、かつ1日 10,000件まで (お試し期間中は、全プランともに1日50件まで)
■転送量
サーバからのデータ送受信の合計サイズ そのページの転送量は、Chromeのデベロッパーツールの「Network」で確認できる (2回目以降のアクセスでは、キャッシュが使われるので転送量が半分くらいになる) 参考:8秒ルール https://ja.wikipedia.org/wiki/8%E7%A7%92%E3%83%AB%E3%83%BC%E3%83%AB ページは8秒以内に表示されるようにする ただし今は「6秒以内に表示されるべき」「3秒以内に表示されるべき」という意見も多い トップページの転送量はキャッシュなしだと1MB〜3MBくらいが多い freo.jpだと画像量が少なくて100Kくらい Amazonは情報量が多くて3MBくらい 動画や巨大なPDFを扱う場合、サーバの性能よりも転送量の制限にひっかかることが多い トップページの転送量が1MBだとして、 月間10万アクセスなら、月の転送量は100GBくらい 一日3300アクセスくらいなので、日の転送量は3.3GBくらい 参考:【さくらのレンタルサーバ】基本仕様 https://help.sakura.ad.jp/app/answers/detail/a_id/2105 参考:回線・ルータ・スイッチの制限について | さくらのクラウド ドキュメント https://manual.sakura.ad.jp/cloud/support/technical/network.html#support-network-07 参考:快適にご利用いただける転送量の目安 http://support.kagoya.jp/manual/limit/limit_transfer.html#trans 参考:通信量の制限 http://lolipop.jp/order/kinshi/ ・エコノミープラン … 40GB/日 ・ライトプラン … 60GB/日 ・スタンダードプラン … 100GB/日 ・エンタープライズ … 無制限 (著しい負荷が発生した場合、一時的に同時接続数の制限を行う場合がある) 参考:見落しがちな『転送量制限』とは? http://server.rich-navi.com/transmission.html 参考:転送量について(レンタルサーバでの転送量確認方法など) http://hikaku-server.com/rentalserver/entry478.html 参考:さくらのVPS、本稼動開始(さくらVPSでの転送量確認方法など) http://web.tvbok.com/web/vps/start.html 参考:VPS・クラウドのネットワーク帯域・転送量制限・仕様一覧 - Qiita https://qiita.com/CloudRemix/items/20caea11fae08d3c0c81 ※Zabbixでの確認方法はnetworkの値を見る。inとoutの合計値をもとに、1日の転送サイズを計算できる
■帯域(回線)
瞬間の転送サイズ 100Mbpsなら1秒間に100Mbit(12.5Mbyte)のデータを送信できる ただしベストエフォート100Mbpsなら普段は30Mbpsくらいと考える つまり、1秒間に30MBit(3.8MByte)のデータを送信できる 優先制御回線なら、他の通信よりも優先して通信させてくれる 今はサーバが高性能なので、サーバよりも回線が持たないことの方が多い 特に動画などを配信する場合、サーバスペックよりも帯域がネックになることがあるので注意 サーバ選定時、「トップページにはこれくらい、それ以外にはこれくらいのサイズのコンテンツが置かれることを想定しています」と伝えておく 参考:お試し期間中の制限と本登録について(さくらVPS) http://vps.sakura.ad.jp/flow/ 「サーバからの発信(Outgoing/Incoming)についてデータ転送帯域を「2Mbps」に制限します。」 参考:1,000円を切る低価格で登場、「さくらのVPS」をチェック――徹底ベンチマーク編 2ページ http://osdn.jp/magazine/10/09/02/1757222/2 「さくらのVPSでは各VPSに100Mbpsの回線が提供されており」 参考:専用サーバに転送量制限はありますか https://help.sakura.ad.jp/hc/ja/articles/206072522-%E5%B0%82%E7%94%A8%E3%82%B5%E3%83%BC%E3%83%90%E3%... 「転送量制限を設けていません。」 「他のお客様にご迷惑がかかる場合には、上位プランへの変更の要請や、場合によっては帯域制限をかけさせていただくことがございます。」 参考:回線アップグレード http://server.sakura.ad.jp/function/connect-up/ 「標準提供の「スタンダード」(100Mbpsアップリンク ベストエフォート回線。 専用サーバPlatform系では、10Mプレミアム)回線をアップグレードするサービスです。」 参考:共有サーバーの運用方針を大手各社に聞いてみた http://www.hikakubu.com/spec-hikaku/question/ ヘテムルやロリポップでは、帯域の目安は非公開の模様。もちろん無制限ではない 参考:VPS・クラウドのネットワーク帯域・転送量制限・仕様一覧 - Qiita https://qiita.com/CloudRemix/items/20caea11fae08d3c0c81 ※Zabbixでは瞬間の転送サイズを調べることは難しいので、Sysstatやiperfを使うなどする ■さくらのクラウド 参考:回線・ルータ・スイッチの制限について | さくらのクラウド ドキュメント https://manual.sakura.ad.jp/cloud/support/technical/network.html https://manual.sakura.ad.jp/cloud/support/technical/network.html#support-network-07 ・サーバの搭載メモリ量により、サーバ&スイッチ間の回線帯域が制限される 例えばメモリが16GB未満のサーバなら、500Mbpsの帯域制限がある 制限のルールは色々あるので、上記ページをひととおり確認する ・接続する回線ごとに、以下の転送量目安を大幅に超過した場合、 弊社バックボーン帯域の状況により、個々のお客様サーバの帯域制限を実施することがあります。 ・250Mbpsにした時点で結構高額(月額2,160円 → 月額25,920円) ・250Mbpsの場合、「月間 8.1TB (平均25Mbps)」を大幅に超過した場合に帯域制限を受ける ・3000Mbpsはかなり高額(月額321,840円) ・回線帯域保証プランの提供予定は現在は無い ・ルータ・スイッチを使った場合でも、専有回線では無いみたい?要調査 参考:さくらのクラウドでルータ機能を利用してみる(1) - Qiita https://qiita.com/sato-w-m/items/2f4f2bb1c80b6e5822e7 参考:さくらのクラウドでルータ機能を利用してみる(2) - Qiita https://qiita.com/sato-w-m/items/8acdcdd3b4b6e01b81ae 参考:さくらのクラウドでルータ機能を利用してみる(3) - Qiita https://qiita.com/sato-w-m/items/da42e358a71d22e7006c
■回線速度の妥当性計算メモ
■想定 ・ピーク時のPVを1時間あたり9,000と仮定する ・1PVあたり合計2MBのページを表示すると仮定する ・使用する回線速度は10Mbps、ベストエフォート(論理的な最大値。回線の限界)100Mbpsと仮定する ■要件 ・ピーク時のPV「1時間当たり9,000」をさばけるかを調べたい ・ページの表示が4秒以内に完了できる前提で、許容できるPV数を求めたい ■算出 合計2MBのページを表示するので 2 * 1024 * 1024 = 2,097,152 bytes 2,097,152 * 8 = 16,777,216 bits つまり、ページサイズは 16,777,216 bits である 回線速度は10Mbpsなので 10 * 1024 * 1024 = 10,485,760 bps つまり、1秒間に 10,485,760 bits のデータを流すことができる よって 10,485,760 / 16,777,216 = 0.625 となり、1秒間に0.625PVをさばけると言えるので、 0.625 * 60 * 60 = 2,250 となり、1時間に2,250PVまでなら回線的にはさばけると言える ■ベストエフォート 上の計算は回線速度が10Mbpsでの計算だが、ベストエフォートは100Mbps 実際に速度を計測してみると、40〜50Mbps程度出ている よって、普段の回線速度は30Mbpsと仮定する 回線速度を3倍にして計算してみると 2,250 * 3 = 6,750 となり、1時間にさばける現実的なリクエスト数は6,750になる(9,000には届かない) 結論として、現在の想定では回線速度に不安があると言える コンテンツを軽くする、回線のグレードを上げる、などの対策を考慮する必要がある ■4秒で表示できる目安 「8秒ルール」という言葉があり、Webページは8秒以内に表示されるべきとされている ただしブラウザによるページ構築時間なども含まれているため、ここでは4秒という想定で計算してみる 1秒間に0.625PVをさばけるなら、 0.625 * 4 = 2.5 となり、同時に2.5PVまでなら4秒で表示できると言える つまり4秒での表示完了を前提とするなら、回線的に2.5人の同時アクセスをさばけると言える よって、サーバは同時に2.5人以上を捌けるスペックである必要がある(負荷テストの目安にする) ただし最近は「6秒ルール」「3秒ルール」という言葉も使われるくらいなので注意
■その他
・固定IPの有無 ・開発用サーバや検収用サーバの要不要 ・個人情報を扱う場合、保有する数とその内容 ・必要な機能 ・開発期間&検収期間&公開日時 ・瑕疵担保範囲 ・オープンソースのプログラムを使っている場合はそのライセンス ・保守の内容と期間 ・プログラム以外に納品すべき内容(設計書やテスト仕様書など)