システム開発経験談 

3月 31日 @ 20:00 ~ 20:50 主催者: もっぱー

  • 概要

    • システム開発ってこういう仕事だよというのを体験談を通して紹介します。
    • ⇒ 現場を知ってもらうことが目的!
  • 主な話

    • システム開発をすることになった経緯
    • システムの仕様について
    • 業務の紹介
    • トラブル紹介

資料

講演

目的

システム開発にもいろいろあるけど、サーバ側の開発の話。

  • 仕様をどうやって満たすか
  • どんなトラブルがあるのか
  • 体験談を通して。

対象者

  • システム開発に興味がある学生、新入社員、他の業種に興味がある人
  • 個人の経験談なので一般的な企業と外れているところがあるかもしれません。
  • コンプライアンスの都合で、抽象的なところ・フェイクのところがあるところがあります。わかっても言わないこと。

自己紹介

  • 名前の由来: 元パーマ
  • 職歴
    • SE 7年間: 動画像デコーダ・エンコーダの開発、DBを使ったソフトウェアの開発
    • いまは組み込み系ソフトウェア開発を3年
    • 本業はアイマスPなのでツイッターでは技術以外の話も入ります

システム開発の経緯

  • 200X年、ビデオテープからDVDなどテープレスへ。
    • 地デジ化が始まったあたり。

システムの概要

  • 動画ファイルをサーバで一括管理
  • 主役はファイルサーバ
    • そこに動画を大量に保存。クライアントから再生。
  • 厄介な仕様: 動画再生中はカクツキ・音ズレ禁止。
    • どの程度の負荷に耐えられるか? 線引き…ワーストケースを定義する必要がある。
  • パッケージ製品: お客様要求に応じてカスタマイズ。

再生カクツキがやばい業界向けシステム

  • インターネット経由ではなくLAN経由。

要求仕様

Worst case

  • 同一ファイルに対して最大4台の端末がアクセスする可能性がある。
  • 同一端末から最大2スレッドで同時アクセスする可能性がある。
    • Play list 再生中に先読みする(シームレス再生のため)
  • サーバ動画ファイル再生中に別端末から動画書き込みがある

やること

  • 負荷に耐えられるサーバを探す
  • 負荷に耐えられるかどうかを調査する

テープからデジタルへの切り替わり

  • 各種メーカーも手探りだった

選ばれたファイルサーバ

  • SSDのRAIDサーバ
  • 3-NIC
    • Read/Writeをわける
  • カタログ的にパフォーマンスが行ける
  • Windows Serverだった
    • 自社製ライブラリがWindowsベースで、この中にアプリを入れる可能性があった。
    • どのOSを使うか? → .NET, MFCとかを使う可能性があった

不安点

  • 海外メーカーで保守がイマイチ
    • サーバは保守も合わせて買う
    • 日本向け保守…納品後故障、修理やパッチ提供など。
    • 海外メーカーなのでオンサイトなしだった。運用実績も未知数。

作業工程

サーバが要求仕様に耐えられるか?

  • 調査のためにメーカーからレンタル
  • ツールを作ってパフォーマンス調査
    • この部分が担当。
  • 動画再生アプリの開発と単体テスト
    • アプリ経由で再生しても問題ないかどうかのチェック
  • システムテスト
    • システムで動くアプリは再生アプリだけじゃなくてほかのものも動く。全部動かして負荷テストをしてWorst caseでも問題がないかどうかのチェックをする
  • 納品機材でのテスト
    • パッケージ製品ではあるが、顧客ごとに機材や構成が若干違う。サーバが複数台になったりとか。納品機材でもテストしてから納品。

ツールでサーバのパフォーマンス調査

ツールとしては指定倍と読み込んで、読み込みがどれくらいの時間かかったかを調べる。

  • よくやったのは 1MB ずつ読み込んで、平均・最長を調べるようなケース
  • 4人同時にツールを動かしたり。

パフォーマンスが悪くなるケース

  • 1スレッドだと問題ないが、2スレッドにする遅くなるケースが。
  • 対処
    • サーバはCIFS: ひとつのNICに複数の名前がある状態だった。
    • IPではなくて異なるCIFS名でアクセスすることでおそくならない

ツールでパフォーマンス調査

  • 4台のパソコンから異なるCIFS名でアクセスすればOK, 平均5ms, Worst 15ms
    • 要求を満たす
  • 地味に思えるが大切な作業

調査なしでのアプリ開発

  • 特定のシチュエーションなどに気付くのが遅れるかも
    • 納品直前とかだと最悪
  • アプリ完成後の調査は切り分けが大変。
  • 事前にパフォーマンス調査しておくことで、開発者は安心してアプリを開発できる。
  • 製品紹介とかでもとかでも生きる
    • 製品の強みのアピール
    • 提案

トラブル紹介(1)

破損問題

  • Windowsからファイルを転送するとファイルが破損する
    • メーカー問い合わせ: サーバがWindows非対応!?
  • メーカーから教えてもらったサーバの内部構成
    • Windows が入っているがSSDには直接アクセスせず、NICを制御しているだけ。
    • NICはLinuxが動いていてそこを経由してファイルを見ている
  • 未だに原因が不明: 予想できる?
  • メーカーから修正パッチも着ていたが何回やっても治らなかった。
    • いろいろ検証ためしたが、1024の倍数ずつ転送すれば破損なく書き込むことが出耒田が理由まではわからなかった。
    • 3-4ヶ月検証。ファイル読み込みの性能チェックとかと並行して。

解決編(破損問題)

  • サーバメーカーは対応期待できない
  • いろいろ書き込みテストを試した。
    • パケットサイズ変更
    • 解決パターン発見: 1024倍数で書き込めば良いらしい
  • 方法は見つけたが、メーカーに連絡してもメーカーは保証してくれない
    • たぶんメーカーは試してない
  • 解決パターンは見つけたが、理由がわからない。
    • 大量・多種のパターンを試して問題がないかどうかを検証
    • 1週間連続書き込みで1回も破損しないこと、等いろいろな書き込み不可テストをしてテスト
    • 1回の検証で終わらない。見つけたパターンを、新しい修正パッチなどが出た場合に再度テスト。修正パッチ当てても問題ないよね、というのを見ないといけない。作業コストがかかる。

コメント

  • 破損も数バイト~数十バイトとかちょっとだけ
  • 今回はサーバの使い方を変えただけなので保守対象外とかになるレベルではなかった。
  • 当時、SSDはやり始めた頃で不具合が多かった。そのあたりの可能性もあるかもしれない。

トラブル紹介(2)

4案件受注。サーバを8台購入。

  • なぜかかってないNICが2枚届いた。
    • メーカー「サービスだよ!」
  • 納品後(システム稼働後)にNICカード故障が複数発生
    • メーカーがオンサイトで保守やってくれるメニューがないので、自社営業が対応(交換)
    • 送られてきたNICはここで使用
    • 最初から壊れる想定だった?

その後

  • サーバが正常に稼働している限り、納品したシステムは問題なく動作
  • 3-4年販売した後Ver2開発
    • v2では別なメーカーの鯖を採用

まとめ

  • システム開発
    • 機能仕様とは別に性能の仕様がある。
      • 要求仕様をみたせるか・最大仕様をどこにするかを決める必要がある
    • パフォーマンス調査をしっかり行って、仕様を実現できるかどうかが必要
    • しっかり調査すれば開発や営業の力になる
      • 地味な調査だけどくさらずに。
  • 不具合解決
    • パターンを見つけるだけで、理由を見つける・メーカー側の保証を付ける
    • それがだめなら大量のテストで安全確認が必要
  • サーバ
    • WindowsサーバだからといってWindowsに対応しているわけではない
    • オマケに気をつけろ
    • 保守がしっかりしているメーカーがイイ

参加者の声

(Discord 上の発言で、なにか取り上げたいものがありましたら記載お願いします)

  • 実機検証が長期間できたのは良かった。社運をかけたシステムでもあったので。
  • サーバ納品時の状態?
    • planによる
    • 別なサーバを購入した際はWindows2k8,RAID5として納品してもらったり。
    • システムで使うためにWindowsの設定変えたりはする
  • CIFSはパフォーマンスでない
    • 知らなかったので藤治氏ったら絶望して鷹も
    • CIFSでかつアドレスを変えた状態で読まないとパフォーマンスが落ちた

Q & A

(Discord 上に質問が流れたらピックアップお願いします)

  • Q.サーバの故障原因?
    • A.今回は基本NICだけだった。それ以外の案件でもNICが多かった気がするが覚えていない。
  • Q.端末4台からのアクセス…別のCIFS名。負荷分散をクライアント側で行っている。本来はこのあたりの負荷分散もサーバ側でやるのが正しいのでは…
    • A.
  • Q.NIC故障レアじゃない?
    • A.ファイルサーバだったので負荷がかかっていたのだろう。ファンとカディスとかが故障しがちなイメージはあるけどあまり故障はない。が、ファンのケーブル外れというのは聞いたことがある。不具合修正パッチをあてたらファンが回り始めた。メーカーに聞いて蓋を開けたらファンの内部ケーブルが刺さっていなかった。(ファンケーブル確認がパッチ適用手順に追加)
  • Q.1024バイト奈良大丈夫はどう見つけたのか?
    • A.書き込みツールを作ってテスト。書き込みサイズを変えながら等のテストをする。その中のパターンの一つにあった。
  • Q.壊れる時間のパターン?
    • A.特になかったと思う
  • Q.IPフレームはジャンボで、ローカルで書き込む時に1024b?
    • A.間のきかいをふくめてジャンボフレーム。1024Byteの倍数で5MB/10MBとか書き込む
  • Q.ファンが壊れると温度が上昇するからアラートがあがる(はず)
    • A.でてたかもしれないけど見方を教えてもらってなかったので
  • Q.RAID構成のディスクが壊れたら、結局全部交換するようになるんですか、その場の対応はともかく。
    • A.RAIDのレベルにも寄るけどホットスペア対応なら壊れたヤツだけ入替
    • HDD系のサーバだと、RAID HDDを納品前に抜かないといけない(出荷のために箱詰め) → 同じ場所に刺さないと壊れるという問題が。
  • 結局筐体冗長とかした方が安心出来るのですよね。お金かかりますが
    • 大きなシステムだと冗長かけたり予備サーバも入れて故障時は切り替わるような仕掛けを作ることも