MIXIのネットワークを支える「JUNOS」の魅力とは? ~エンジニアが語る技術愛 #18~
MIXIには、探究心溢れるエンジニアがたくさん在籍しています。その探究心は業務で扱う技術に留まらず、趣味で書いているプログラムだったり、個人的に研究している言語だったりと、自身の気になった技術への追求も留まることを知りません。今回は、MIXIのネットワークを支えるインフラググループの山田にネットワークOS「JUNOS」の魅力を語ってもらいました!
山田 千紗
2018年MIXI入社。開発本部CTO室インフラグループ所属のネットワークエンジニア。大学卒業後、IIJエンジニアリング株式会社に入社。その後MIXIへ転職して現職。趣味は猫とカラオケ。
運用のしやすさに重点が置かれたネットワークOS
━━ネットワークOSとはどういったものですか?
一般的に企業で使われている大型のルーターであったり、L3・L2スイッチなどの機器に組み込まれているOSをいいます。昔はメーカーごとに独自OSを組み込んでいることが多かったのですが、最近ではホワイトボックスといって筐体のみを販売してOSは自由に選べるものもあります。オープンソースのネットワークOSもあり、OSを自由に選択している企業も増えています。
━━JUNOSの特徴について教えてください
ネットワークOSではコンフィグ間での依存関係があって、設定変更が思ったように進まないことがあります。たとえばある設定を変更したくても、まず依存先の設定を変更しないといけないといった具合です。
JUNOSの場合は即時反映ではなく、コミットモデル形式をとっています。変更した後、コミットを実行するまでは実機の動作へ反映されません。コミット時に設定の確認や構文チェックを行ってくれます。他社ネットワークOSでは即時反映の形が多く、依存関係を解決しないと修正が実行できないものもあります。
あと設定投入の順序を気にしなくて良いのが特徴です。コンフィグを記述すれば、後はJUNOSが適切に解釈してくれます。設定に矛盾があれば、構文チェックの際にエラーを出してくれるのも便利です。
━━運用面に気を配っているOSなのですね
そうですね。ネットワーク機器は、コマンド一行でネットワーク停止といった最悪の事態もありえます。修正してコミット前に既存設定との差分を確認できるので、オペレーターにとって心理的安全性が高いです。
細かい点ですが、行頭にsetがあれば追加、deleteがあれば削除というのも分かりやすいです。setとdeleteは1対1で対応しているので、設定を自動化するのが非常に簡単です。運用時の設定変更内容もひとかたまりで出せるので、他のネットワークOSと比べてチェックしやすいです。
━━他にもお勧めの機能はありますか?
commit confirmedという機能があります。これは一定期間コミットがないと前の設定に戻してくれる、仮コミットといった機能です。commit confirmedはミッションクリティカルな変更を行う場合に使うもので、万一機材へアクセスできない状態になったとしても一定期間経てばロールバックしてくれます。他のネットワークOSにはない機能ですし、戻す際にもJUNOSは1対1のコマンド対応があるので復旧が容易です。
そういった様々な機能によって、運用のしやすさに注力して作られているネットワークOSです。
ネットワークエンジニアは横のつながりが強い
━━JUNOSの最初の印象はどうでしたか?
元々違うネットワークOSを利用していたので、最初は違和感がありました。コンフィグは慣れるまでは見づらいかも知れません。とはいえ慣れてみると、すごく扱いやすい印象です。
一例としてコンフィグでのgrepです。たとえばJUNOSではfilterに関する設定は、すべて各行にfilterという文字が入っています。なので、もし設定でfilterに関するものが知りたければ、単にfilterで絞り込むだけです。他のネットワークOSではインデントやブロックなどがあるので、うまく探せないことがあります。
ネットワーク機器によっては、ルーターやスイッチなどそれぞれによってOSが異なる場合があります。JUNOSはJuniper Networksの製品に統一して使われているOSなので、一旦JUNOSの使い方を覚えてしまえば、様々な機器を共通した使い勝手で操作できます。
━━社内メンバーのJUNOSに対する評価はどうですか?
最近、はじめてネットワークOSに触れるというインターンシップ生が入ってきました。最初は驚きもあったようですが、すぐに慣れたようです。扱いやすいとも言っていたので、オペレーターの感覚としてはやはり良いOSだと思います。
━━運用で注意していることはありますか?
なにか障害が起きてもすぐに復旧できる体制を取るようにしています。人が行う作業なので、やはりミスは避けられません。だからこそミスが起きた場合でも、影響範囲が最小限になるような設計を心がけています。
━━どう情報をキャッチアップ・共有していますか?
社内では常にSlackです。バグ情報を共有したり、機材検証中の状況をSlackに流し続けたりしてみんなでツッコミを入れています。
社外でいうと、ネットワークエンジニアは横のつながりが強いと感じています。有名なところではJANOG(JApan Network Operator’s Group)があります。そうしたコミュニティで知り合った方々とも頻繁に情報共有しています。
実機で学ぶネットワークOS
━━ネットワークOSに触れる機会は一般的には多くありませんが、どう学ぶのが良いですか?
機器自体は業務用ということもあって、ライセンスは高額です。そのため、あまり個人で実機に触れる機会は多くないでしょう。Juniper Networksではハンズオンを行っていますので、まずそこで触れてもらうのが良いかと思います。
企業内であればJuniper Networksのシェアは大きいので、JUNOS搭載機器を使っている企業は多いと思います。そのため、多くの方は企業に所属された後に学ぶかと思います。
━━MIXI社内ではどうでしょうか?
MIXIでは本番環境とほぼ同一の検証環境を用意しています。そこでとにかく実機を触ってもらって覚えてもらいます。とはいえ、インフラグループに入る方の多くは中途採用で、何かしらのネットワークOSの利用経験があります。基礎知識はありつつ、実機をどんどん触って挙動などを確認してもらっています。
━━チーム内はどういった方が多いですか?
私はISP関連企業からの中途入社です。他のメンバーは、私と同じくISP出身の人もいれば、回線事業者から転職した人もいます。MIXIでは配信系事業も行っているので、配信系企業からの転職者もいます。
━━前職と違いを感じる部分はありますか?
前職の場合、周りもネットワークエンジニアでした。それに対してMIXIは別な分野のエンジニアとふれあう機会が多いです。そのためネットワーク以外の知識や、相手のバックグラウンドを学びながら業務を進めるのは新鮮ですね。後は、業務と直結した形で仕事に関われるのが個人的に好きです。
━━仕事上、よく関わるチームはありますか?
私たちのチームが関連性が深いのはモンストチームです。運用している機材はモンスト用のものが大多数を占めているためモンストサーバグループと協調して業務を遂行しています。最近も大きめのサーバーリプレイス作業があるので、彼らと協力しながら進めています。
もっとネットワークについてアピールしたい
━━JUNOSについて課題はありますか?
私たちの使いたい機能が上位機種でしか提供されていないことですね(笑)。そのためにJUNOSを使いたくても使えないことがあるので、ぜひ下位機種でも幅広く提供して欲しいですね。JUNOSは扱いやすくて好きなので、入れられるところには積極的に導入したいと考えています。
とはいえ、運用性は導入した後に考えるべき観点なので、機能が使えないのはどうしようもないので残念です。
━━今後トライしたいことはありますか?
MIXIはネットワーク事業会社ではないので、ネットワークや低レイヤーに関わるチームは私たちくらいです。そのため、エンジニアの中でもっと存在をアピールしていきたいと思います。エンジニア同士の会話もアプリケーション層の話が多いので、もっと自分たちをアピールしてネットワーク層にも気を向けてもらえるようにしたいですね。
ネットワークはあって当たり前で、意識されることはほぼありません。それは当然なのですが、Web系のBtoC企業でここまで自社で行っている例は多くありません。だからこそ、もっとアピールしていきたいですね。