この記事は新歓ブログリレー2020 23日目の記事です
こんにちは、16の@to-hutohuです。
普段はSysAd班として、部内サービスの開発や運用をしています。
SysAd班について詳しくは↓をご覧ください。
さて、僕は先日までSysAd班のリーダーだったのですが、この一年でSysAd班は大きく形を変えたので、この記事では2019年度のSysAd班についてまとめてみようと思います。
昨年までのSysAd班と課題
昨年(2018年)まではSysAd班は班としての形は取っていましたが、全ての部内サービスの運用はほとんど元代表でもある@kazが管理していました。
@kazの功績により、非常に多くのサービスが運用されるようになりtraPのメンバーは非常に便利に活動ができるようになっていました。
数年でここまで大きなシステムを構築できたのは、@kazの圧倒的な技術力と、サークルの代表とSysAdを兼任して担っていたことによると思っています。
僕もかなり長く@kazとともにサークルの運営やSysAd関連の事情について話していたこともあり、実際にサーバーに入って作業することは多くありませんでしたが、各種サービスが今の形になった歴史的経緯や設定内容については知識として持っていました。
そんな中、2018年度末をもって@kazは東工大を卒業、traPを引退しました。
さらに@kazからSysAd班のリーダーを引き継いだ僕も学部就職が決まり、2019年度末でtraPを引退することになったため、この一年でtraPの部内サービスを来年度以降も継続して運用できるようにしていかなければならなくなりました。
前期 〜持続可能な運用を目指す〜
(説明のために時系列が前後しているところが多々あります)
traPでは、基本的に前期と後期にそれぞれプロジェクト・班のメンバーを募集するためにメンバー集会でプレゼンを行います。
僕はそこで、「持続可能な運用を目指す」という目標を掲げました。
この目標を達成するために様々な取り組みをしました。
今振り返ってみると「メンバー」「仕組み」「ドキュメント化」の3つに分類できるかなと思いました。
メンバー
SysAd班を構成するメンバーのことです。
サービスを運用していくためにはメンバーそれぞれが技術力を持つ必要がありました。
そして、その技術力が今後も下の代に引き継がれていく必要があります。
これに対しては、非常に安直ですが講習会を多く開催するという取り組みを行いました。
中でも力を入れたのがQSoCとWebエンジニアになろう講習会です。
QSoC
QSoCはtraQ Spring of Codeです。
名前はGSoC(Google Summer of Code)をリスペクトしています。
内容は、入部した直後のメンバーにtraQへのコントリビュートを通してGitHubの使い方やtraQでのコミュニケーションの仕方を学んでもらおうというものです。
これに参加してくれたのは人数としてはあまり多くありませんが、比較的面白い企画だったと思います。
Webエンジニアになろう講習会
通称、なろう講習会です。
なろう講習会はISUCONやDockerなどの番外編も含めると全13回の講習会で、プログラミングについてほとんど知らない状態から始めて、最終的にはTwitterのクローンサービスを開発するところまでを目標としたものでした。
講習会の時間を合計すると大体45時間くらいです。
これを企画から資料作成・講習会での話・traQ上での対応までほとんど一人で行いました。
就職活動の佳境と被っていたり、研究をしないといけなかったりで正直めちゃくちゃ大変でしたが、はずみ車を回し始めるぞという強い意志で頑張りました。
これは「なろう講習会を受けた人が来年のなろう講習会を主催するようになる」ということを意味しています。
有り体に言ってしまえば、恩を着せてその見返りとして来年度のなろう講習会をやってもらうということですね。
一度このループが始まってしまえば、講習会受講生がある程度いる限り複数人で講習会運営ができるようになるので安定して技術力の継承ができるようになると考えました。
僕自身、traPへの恩が返しきれないくらいあるのでそれに報いるために頑張ったという次第です。
実際、2019年になろう講習会を受講した人たちで来年度のなろう講習会を企画しているようなので、本当にやってよかったなあとしみじみ思っています。
20の皆さんの中でWebサービス(今見てるブログとかTwitterとか全部Webサービスです!)の開発をやってみたいという人は是非traPに入って参加してみてくださいね!
仕組み
SysAd班を運営する制度のことです。
2リーダー制
僕がSysAd班のリーダーになるにあたって、同じ16でSysAd班の@takashi_trapにも協力を仰ぎ、2リーダー制を採用することにしました。
理由としては、
- SysAdのサービスについて詳しい
- どちらも4年生なので研究次第ではどちらかが活動できない期間がある
- 1人ですべてを把握するのは難しい
という感じです。
役割分担は大まかに僕が班集会の進行やタスク管理、@takashi_trapがサーバー管理やPRなどのレビューを行うことにしていました。
分担はしましたが、僕がサーバーに入って障害対応したり@takashi_trapが僕がいないときにタスク管理をしてくれたりなどそれぞれがうまく補完しあって1年間活動することができたのではないかなあと思います。
チャンネル整理
traPではコミュニケーション手段としてtraQという部内製のコミュニケーションサービスを利用しています。
SysAd班のチャンネルは#team/SysAd以下で連絡を取り合うことが多いです。
このチャンネルに関して以下のように整理を行いました。
- #team/SysAd
- SysAd外からSysAdへの依頼・報告
- #team/SysAd/announce
- サービスの更新や障害情報などtraP全体への連絡
- #team/SysAd/internal
- 集会開催など重要な連絡用
- #team/SysAd/random
- SysAdに関する雑談・相談
- #team/SysAd/random/sodan
- SysAdに関する質問・独立したトピックなど
これにより、どこでどのようなコミュニケーションを取ればいいのかがわかりやすくなり、コミュニケーションの量も増えたように思います。
特にSysAd/randomやその下のsodanチャンネルで、様々な改善や知見の共有・障害対応などができたのは非常に良かったです。
また、SysAd外ではありますが、timesチャンネルがめちゃくちゃ活発になり、そこでも多くのコミュニケーションが発生するようになりました。
(最近times以下のチャンネルの発言数の合計が20万を超えました)
タスク割り振り
traPの部内Gitホスティングサービス内にTasksというリポジトリを作成し、そこでSysAdに関するタスクを管理するようになりました。
さらに、それらに関する更新情報をtraQに流すようにして、誰がどのような作業をしているのかなどをわかりやすくしました。
また、後のドキュメント化の説で詳しく触れますが、運用に関するタスクに関しては作業内容をWikiにまとめるようにルール化しました。
ドキュメント化
年度初め時点では、SysAd班に関するドキュメントは殆どありませんでした。
そこで、まずはじめにサーバー構成やSysAd班で管理しているアカウントなどをWikiにまとめました。
これに加えて、運用と障害対応に関する作業内容についても毎回Wikiにまとめるようにしました。
作業内容をきちんとドキュメント化することによって、手動で行う必要がある定型作業などが誰でも行えるようになり、SysAd班に貢献しやすくなるというメリットを狙ってのことです。
今日時点で運用のレポートが88ページ、障害対応のレポートが21ページになっています。
後期 〜より多くの人が貢献できる/したくなる仕組みづくり〜
後期も募集のプレゼンの際に目標を掲げ、「より多くの人が貢献できる/したくなる仕組みづくり」としました。
後期に行った取り組みについては、それぞれトピック的に書いていこうと思います。
リーダーの引き継ぎ
前期に引き続き2リーダー制を採り、僕の卒業/@takashi_trapの院進学に備えてリーダーを募集しました。
ここでマネジメント側のリーダー補佐として@temmaが、技術側のリーダー補佐として@sappi_redが就任してくれました。
共に19で@temmaは2019年の春からプログラミングを始めたという逸材です。
先日行われた、年度末のSysAd班集会で@temmaが正式にリーダーになりました。
本当にありがとうございます。応援しています。
技術書典への参加
SysAd班での活動内容についてより多くの人に知ってもらうことで、「traP SysAd班で活動しています」というワードでどんなことをしているのかを理解できてもらえるように、外部への発信を増やすことにしました。
その中の1つが、技術書典への参加です。
技術書典7で頒布したSysAd TechBook1は、結果として200人以上の人に手にとっていただくことができました。
そこで出た収益は、SysAdの講習会や大会参加への補助に利用させていただいています。
現在は技術書典 応援祭にSysAd TechBook2が参加しているので、ぜひ手にとっていただけるとうれしいです!
ブログ記事を増やす
本としてだけではなく、ブログ記事も積極的に書いてもらいました。
この記事で紹介したもの以外にもたくさん面白い記事があるので、読んでみてください。
大会への参加
前期からの継続ですが、危機管理コンテストやICTSCなどの大会にも積極的に参加しました。
結果的に、
- 情報危機管理コンテスト: テクニカル賞・JPCIRT/CC賞
- ICTSC: 参加4チーム共に決勝進出 優勝
- ISUCON: 1チーム決勝進出
という結果を残すことができました。
DBバックアップ体制の強化
より多くのメンバーが運用に触りやすくなるように、DBのバックアップ体制を強化しました。
ConoHaのマネージドDBを使っているサービスはマネージドなバックアップサービスを利用し、非マネージドなDBを使っているサービスはGCPのCloud Storageに世代バックアップを取るようにしました。
積極的にミスできる環境を作れたのは良かったと思います。
今後はオブジェクトストレージのバックアップ体制も整える予定です。
各種サービスのアップデート・Docker化
数年来バージョンアップされていない部内サービスが複数あり、それらの更新・Docker化を行いました。
またそれらのデプロイの方法をAnsibleで管理し、すべてのサーバーの構成がIaCとして管理されるようになりました。
さらにさらにtraQのbot機能を利用して、ChatOps的にデプロイまでできるようになりました。
詳しくは下の記事で書いてありますが、これらの作業を行う直前の12月は@kazが遺した証明書自動更新システムが動かなくなったり、Showcaseのインスタンスが過負荷になったりとで古いシステムをそのまま残しておくのは難しくなってきていたので、いいタイミングでの更新ができました。
バグバウンティ制度の再開
@kaz時代から存在していたバグバウンティ制度を対象をtraQから部内で開発したサービス全体に拡大して正式な制度化しました。
これまでにはまだ1件しか報告がありませんが、この制度を通してCTF班などSysAd班外からの貢献も受けられるようになりました。
開発
ここまでは、主に運用周りの活動について書いてきましたが、開発の方もバリバリやってきました。
今年リリースした3つのサービスについて、記事を紹介します。
traQ-R
部内のコミュニケーションサービスであるtraQです。
2019年3月に現在運用されているv2がリリースされました。
2020年4月には、UIが一新されたv3が運用開始される予定です。
anke-to
部内アンケートサービスのanke-toです。
2019年4月にリリースされました。
2020年度には、UIや機能の改善を目的としてv2(anke-two)が開発開始する予定です。
booQ
備品・書籍管理サービスのbooQです。
2019年10月にリリースされました。
現在も継続して開発が続いています。
これらのサービスの他にも、複数のサービスが開発進行中です。
まとめ
いかがでしたか?
SysAd班は2020年度もバリバリ活動していくので期待していてください!!
20の皆さんがSysAd班に入って活躍してくれるのを楽しみにしています!
明日のブログリレーの担当者は@Facishです!お楽しみに!