ICTトラブルシューティングコンテスト (以下、トラコン;※1 )とは、全国の専門学校生、高専生、大学生、大学院生を対象に行われる、サーバー・ネットワークを中心としたインフラのトラブルシューティングや運用技術をチーム単位で競うコンテストです。一般的なコンテストと異なる部分は、競技参加選手だけではなく、コンテストの企画や運営も学生が行う、学生の、学生による、学生のためのコンテストであることです。単にアプリケーションやサーバー、ネットワークに関する個人の技術力だけではなく、チームで協力し役割分担などによって効率的に問題を解決していく能力が必要になります。
企画運営および競技参加を通じて同世代の学生達が競い合い、互いに情報通信技術を切磋琢磨しつつ学生間の情報交換と交流を深めることを目的としています。情報技術やネットワーク技術の面白さに触れ、理系文系を問わず、さらに興味を持って情報通信技術を学ぼうとする学生が増えることで、次世代のICT業界を牽引していく人材の発掘と育成を目的として2014年3月に大阪情報コンピュータ専門学校にて第1回が開催されました。
通常、コンテスト当日までの準備は開催日の約半年前から行われ、キックオフミーティング後、Slack等のチャトツールや、オフラインミーティングなどを通して準備が進められていきます。
本稿では、今年8月に開催された第6回トラコン (略称ICTSC6)のキックオフからの運営を中心に、コンテスト当日の模様を含めてレポートします。
トラコン始動。運営募集、キックオフミーティング、合宿、オフラインミーティングの様子
運営募集
2016年8月に開催された第6回トラコンの学生運営委員は、4月1日から募集が始まりました。そこから、約1ヶ月の募集期間を経て、東北から九州まで、総勢16人のメンバーが揃いました。このうち、7人は前回である第5回トラコン(ICTSC5)にも運営を行った学生です。中には、ICTSC5で競技選手として参加し、次回は自分も運営側に加わりたいと参加したメンバーもいました。
メンバーはネットワークやサーバーの技術に詳しい学生だけではありません。Webアプリケーションの開発を勉強している学生や、新たに勉強してみたいと思っている学生など、インフラ技術に興味のある学生も集まります。
オフラインミーティング
通常運営学生間のコミュニケーションにはSkypeやSlackなどを利用したオンラインミーティングで行いますが、月に一度の頻度でリアルな会議室に集合したオフラインミーティングが行われます。このオフラインミーティングは、社会人によって構成された運営学生をサポートする実行委員会に場所を提供していただきました。今回はシスコシステムズのリモート会議システムであるWebExを利用して、シスコシステムズの東京オフィス、および大阪オフィスと遠隔地のメンバーをつないで行われました。オフラインといってもインターネットを介したミーティングですので、セミオフラインと言うべきかもしれません。
オフラインミーティング
キックオフミーティング
全員が初めて顔を合わせる最初のキックオフミーティングでは、今回から新たに参加したメンバーも従来のトラコン運営を経験してきたメンバーもそわそわした様子で行われ、簡単な自己紹介や、リーダーの決定などが行われました。トラコンリーダーには、各回ごとに多少の変化はありますが、慣習として3役のリーダーがいます。全体を指揮するリーダー(と副リーダー) 、当日に出題する問題の作成状況を管理する問題リーダー、それを支えるサーバ・ネットワーク設計を担当するインフラリーダーです。またトラコン運営独特の用語なども定義されました。いくつかご紹介すると、会場のインターネット接続を意味する、「 対外接続」や、会場ネットワークに欠かせないDHCP/DNSサーバーなどを指す「ライフサーバ」などがこれにあたります。
合宿
ゴールデンウィークには、トラコン史上初の合宿が行われました。これは、前回コンテストの反省会の中でWebExを利用したTV会議システムだけでは何となく互いに遠慮しがちになり、コンテスト当日に顔を合わせるまで中々思ったように作業を依頼したり進捗を確認したりしずらいという問題が挙げられていました。そこで学生運営委員会を結成した直後、なるべく早い段階で運営委員が全員で顔を合わせ、互いの趣味嗜好や技術に対する思いを共有することにしました。これはスタートアップからアクセル全開で進められるようにと、今回新たに取り入れられた試みです。
合宿でのミーティング
合宿では、親睦を深めるためのゲーム的な自己紹介や、コンテストネットワークの設計ミーティングを始めとし、さくらインターネットの川畑さんによるZabbixのWeatherMap講座といったようなニッチなものから、夜遅くまでの問題のネタ出しなど、和気藹々とした雰囲気で進行しました。
余談になりますが、この合宿で学生がコンテストに向けてミーティングをしているさなか、実行委員である大人組は海岸へドローンを飛ばしに行っていたようです(どうやら砂が内部に侵入し飛ばなくなってしまったようですが……) 。
合宿が終わるとオンラインによる学生間のミーティング、社会人を交えたオフラインミーティング、コンテスト前のホットステージを経て、コンテスト当日を迎えるという流れになります。
合宿後の打合せには主にSlackを中心としてコミュニケーションが取られ、ホットステージに入るまで、月に1度程度の頻度でオフラインのミーティングが行われつつ、コンテストの準備が進んでいきました。
問題作成について
トラコンで出題される問題は、基本的に実行委員の社会人に頼ることなく、学生運営委員各自が持ち寄ったネタをベースにして出題され、出題までに踏むステップは、大きく分けて、ネタ出し、検証、問題資料作成、レビューの4段階に分けられます。
ネタ出しのステップですが、今まではSlackやRedmineなどで1カ月以上かけて提案されていましたが、今回は合宿の夜に生まれたアイデアが多かったように思います。そして合宿後にSlackやwiki等を使ってそのネタが実際に問題として出せるものになるかを検討するための草案出しが行われました。
このステップにおいて、1つの問題として出すには小さすぎるといった問題については、他の問題に組み込むといったマージ作業が行われ、問題構成が整理されていきます。結果として、30個近いネタを元にマージ作業などが行われ、最終的には15問が出題用として作成されました。
そして、問題作成のステップにおいて、最も高い障壁となるのが検証です。
検証とはその名の通り、実際にその問題を出題できるのかを実際の機材やVMなどの上で検証することを指します。ケアレスミスに関する問題ならいざしらず、実際に検証してみると簡単すぎて問題として成立しないようなものもあります。特に、特定のバージョンやディストリビューションに依存した問題の場合、ネタ出しの時点では存在していた問題が、新しいバージョンで修正されてしまい、泣く泣く廃案にせざるを得ないものもありました。
その後、実際に問題として出題するための必要な問題文、トポロジ図といった資料を作成し、最後に実行委員の方々や学生同士のレビューを経て問題が完成します。
検証機材調達と検証作業
このコンテストではトラブルシューティングを実際のサーバーやルーターなどの実機を用いて行うことを特徴としていますが、機材調達する場合、機材のスペックや数が最初から決まっているわけではありません。どんな問題を出したいか、その問題に必要なサーバーのスペックはどれくらいかなどを話し合い、機材の台数やスペックなどを仮決めします。その後、実際に借りられそうかどうかについて、各企業の担当者と話し合い、再度調整を行います。また、逆に機材を多く借りても、その分のLANケーブルを作成する必要があったり、電源が不足したりということもあります。本コンテストでは、当初Cisco Catalyst 2960を各チームに3台ずつ用意する予定でしたが、その後の仮想ネットワーク設計によって各チーム1台で十分になったことがありました。結果として、参加者が触る競技用ネットワークの複雑性が上がり、問題の難易度向上に貢献するといった事態も生じました。
今回の選手側ネットワークの物理トポロジ図。複雑さが見て取れる
ネットワーク機材はシスコシステムズ様からCisco 1841、Cisco 892といったルーター、同じくCisco Catalyst 2960を始めとしたスイッチ, IP Phone、Wi-Fi AP Aironetなどをお借りし、NHNテコラス様からラックマウントサーバー、CyberAgent様からラックマウントサーバとゲートウェイ(JuniperのSRX240)をお借りしました。
問題作成の段階で実際にどんな問題が出せそうか、出す場合どのような設計をすればいいかなどの検証を行う必要があるため、あらかじめいくつかの機材を問題作成用として運営委員が通っている学校に送っていただいたり、NHNテコラス様のデータセンターをお借りして実際のサーバー・スイッチ等の設置・構築などを行いつつ問題作成作業を進めていきました。
HotStage
トラコンでは、ホットステージという名のコンテスト直前の準備期間が開催日の2週間前から設けられています。この期間は、各地のバラバラだった運営委員がコンテスト会場に集合して一気に準備しよう!という期間で、Phase1とPhase2に分けられています。
機材の検品。100台以上ある機材が正しく動作するか、1台1台確認していく
Phase1ではシスコシステムズ様の大阪オフィスの会議室をお借りし、実際に各社からお借りしたすべての機材が各地から搬入されます。ここでは、お借りした機材の型式や台数などを確認します。それらが正常に動作するか、設計したネットワークなどが正常に動作するかといったことや、リモートオペレーションの環境では行えなかった、実際ネットワークとサーバーを使う問題などの検証も行われます。
会場へ機材を運び込んでいく
緊張のラッキング
LANケーブルも大量に作成する
問題が想定通り解けるかどうか、実際の環境で検証する
Phase2では実際のコンテスト会場であるNTT西日本研修センタへ機材と共に移動し、参加者が利用する机や椅子、ラックサーバやネットワーク機器の配置を行い、本番へ向けたラストスパートとして対外ネットワークの接続や、コンテストで使うVMの準備などを進めていきます。また、今回会場の中央に配置されたラックのケーブリング、ケーブルコスメなども行い、「 あぁ本番が近づいてるなぁ」と感じながら準備を進めていきます。また参加者や来場者のための会場案内の段取りやケータリング、コンテストの進行などのリハーサルもここで行います。
Phase1では順調と思われたホットステージも、Phase2では様々な問題に直面し、運営委員自身のトラブルシューティングが発生します。コンテストネットワークのコアスイッチのCPU使用率が100%に張り付いて通信が不安定になったり、サーバー基盤として使用していたCloudStackが正常に動作しなかったりといったトラブルが生じました。これらはコンテスト当日までには絶対に解決する必要があったため、運営委員は朝から晩まで、LinuxカーネルやCloudStackのソースコードリーディング、パケットキャプチャなど、様々な方法を駆使してトラブルシューティングを行いました。
ホワイトボードにトポロジ図を書き込みつつ、問題を特定していった
綺麗にケーブリングが行われたラックを囲み、構築を進めていく
また、今回の取り組みとして、問題の出題や参加者からの質問、解答の採点を統合管理するコンテストサイトの開発も行われていましたが、これについてもHotStageに入ってからはさくらインターネットの実行委員の方々も会場へ合流し、本番で提供できるよう、急ピッチで開発が進められました。
実際、コンテストサイトは本番前日の時点で問題出題はおろか、参加者登録すらできない状態だったのですが、当日の朝4時前ごろには競技開始前最後のコミットが行われ、すべての機能が正常に動作するようになりました(その後、競技中にも改善、修正が続けられました) 。
最終的な会場の全体図。コア機材の入ったラックを中心に配し、全体が見渡せる
コンテスト本番
そして当日、無事にネットワークは動くのか、サーバーが落ちないか、他にもトラブルが起こらないか、そんな不安を抱いたまま、コンテスト本番を迎えました。コンテストは2日間開催され、競技は両日、それぞれ午前と午後のパートに分けられて行われました。初日はVPNやVLAN ID、MySQL sql_modeやCisco機器のAuxポートに関する問題など、計6問が出題されました。
緊張した様子の選手が次々に入場
話し合いつつ、問題を解いていく
手元の環境から分かったことを次々に書き出す。情報共有は非常に重要
どの問題も高難易度なものばかりですが、振り返ってみると、同時に出題された問題が少なかったためか、それとも各チームがうまく分担したためか、1日目の方が得点を稼いだチームが多かったようです。
競技中、協賛企業の方々を対象に行われたNOCツアー
また、今回はトラコン初の取り組みとして、前回コンテストの運営委員が表彰対象外のOBチームとして招聘されていました。そのOBチームは会場に入って指定のテーブル前に立つなり、驚いた顔を隠せないでいる様子。それもそのはず、このチームの機器にはLANケーブルが配線されていませんでした。その代わり、コネクタやかしめ工具、未結線のLANケーブルが用意され、席に着くやいなや、落ち着く間もなくケーブルの作成を強いられていました。しかし、さすがは前回の運営経験者、今回の運営委員が想定していたよりも圧倒的に速くケーブルを作成し、結果として1時間のロスがあったにも関わらず、初日時点での暫定順位を3位につけます。
そんな1日目の競技中、張り詰めた空気とは裏腹に、運営委員としてはネットワークにもサーバーにも大きな問題がなく稼働していることに驚きを隠せないでいました。ホットステージ期間に様々なトラブルに直面したCloudStackと、当日の未明まで掛けてデプロイを行っていたVMも問題なく動作し、問題を出題できていました。
運営委員の集まるNOC。この時はまだ平和だったことが表情からも見て取れる
競技中もコンテストサイトには改善が加えられていった
そして奇跡的に特に大きなトラブルもないまま1日目の競技時間が終了し、参加者や運営委員、スポンサーの方々を交えた懇談会が行われました。ただ一方では、そんな和気藹々とした懇談会のさなかも、出題を諦めかけていた翌日の問題をどうにかして出題すべく、コンテスト会場に残って問題の検証を行っていた運営委員もいました。
懇親会。運営も参加者も隔たり無く交流が行われた
そして迎えた2日目、本コンテストで最高難易度のIP Phoneに関する問題をはじめとして、IPv6/v4の混合問題、HSTS、PathMTUなどに関する問題を含む、計9問が出題されました。
IP Phoneのパケットキャプチャをしつつ、運営委員と通話を試みる様子
特に、2日目の午後は午前から通しで出題されている問題に加え、新たに5問が追加され、どこから手を付けるべきか、苦悶されたチームも多いかもしれません。しかし、混乱していたのは参加者だけではありません。トラブルがなかった前日と対照的に、サーバーやコンテストサイトなど、各所でトラブルが発生し、運営委員もトラブルシューティングを行いつつ、参加者から飛んでくる質問への応対に追われることとなります。
様々な問題に対処を行いながらもなんとか2日目の競技も終了し、協賛企業の方々によるセミナータイムの裏で、運営委員による採点作業や表彰式の準備などが行われました。
競技を終え、表彰を前に緊張した様子の選手たち
最終的な上位3チームの結果は、優勝「IP Factory(情報科学専門学校) 」219点、2位「WCDI(日本工学院八王子専門学校) 」175点、3位「kstm(信州大学) 」131点となりました。改めまして、おめでとうございます。また、1日目はLANケーブルの作成から行っていたOBチーム「traITors」は、結果としては1位とわずか8点差に迫る211点となりました。特に2日目単体の得点では首位となり、技術力の高さを見せつける結果となりました。ちなみに、今回のコンテストの満点は430点でした。つまり優勝チームですら半分を取るのがやっとといった難易度に、流石の運営もにこれは難しすぎるのでは……と反省した次第です。たぶん次回は改善されるのではないかと思われます……。
今回コンテストに参加した、全選手と運営委員
最後に
トラコンに限らず、ナンバリング系のイベントは開催数と難易度が比例すると言われます。第6回である今回のコンテストは、問題の難易度が過去最高(という噂)であったため、各チームとも苦戦を強いられる結果となったのではないかと思われます。
1位のチームである「IP Factory」の皆さんも表彰式で、「 Slackを活用して密にコミュニケーションを取っていた」と言っていたように、改めてチームで戦うコンテストであると感じることができました。
今回の運営でも、合宿の開催や、Slack、Wikiの積極的な活用など、コミュニケーション・情報の共有を密に取るための基盤を重視していました。Wikiには150近いページが作成され、Slackでは、最終的に63個のPublic Channelが立ち、約48,400個のメッセージが交わされ、積極的な議論が行われました。
そして、コンテストの運営には、それを支えていただける実行委員・企業の方々のサポートも必要不可欠です。今回は史上最多となる、12社の会社の方々にスポンサーとなっていただき、その他にも様々な会社から機材の提供やネットワーク接続のご提供をいただきました。改めて、この場をお借りして御礼申し上げます。
次回2017年3月4日、5日に開催される第7回トラコン(ICTSC7)では、また新たな運営委員が挑戦と成長の日々を送るかと思われます。この記事を読まれたトラブルシューティングコンテストに選手として参加してみたいと思った方、運営委員として一緒に作ってみたいと思った学生の方は是非一緒にコンテストを作り上げてみませんか?