ITエンジニア特化型Q&Aフォーラムteratailが主催となり、2018年3月24、25日の2日間に渡り開催された「MANABIYA -teratail Developer Days-」では、ITエンジニアの問題解決カンファレンスをテーマに「疑問」を主題としたセッションが多く実施されました。その中からインフラの各セッションの登壇者達を交えたパネルディスカッション「CrossSession インフラ」のレポートをお送りします。
さくらインターネット田中氏と登壇者のコラボレーション
このパネルのモデレーターは、さくらインターネット株式会社代表取締役社長の田中邦裕氏が担当。パネラーとしてTreasure Dataの田籠聡氏、株式会社メルカリの長野雅広氏、さくらインターネット株式会社テクノロジー・エバンジェリスト前佛雅人氏が参加します。
セッションでは「そもそもインフラエンジニアとは何をする人なのか?」から「これからのインフラエンジニアがやるべきこととは?」まで、40分の短い時間で濃厚な議論が行われました。
田中:皆さんこんにちは。さて、インフラはどんどんレイヤーが上がってきました。線を挿すとかブレードを挿すなどだけではなく、分散処理なんかまでインフラと表現しますね。一言にインフラエンジニアと言ってしまっていますが、まずはパネラーの方々に軽く自己紹介や、どのようなことをやっているのか聞いてみたいと思います。
田籠:トレジャーデータでは分析基盤の分散処理をお客様に提供しています。前職であるLINEに入ったときはインフラで障害担当などしていました。今もインフラ分散処理とか、下のリソースをどう使うかの毎日です。
長野:インフラエンジニアではなくSRE(Site Reliability Engineering)として働いています。この呼称はこだわりなんですよね。メルカリのSREはサービスの信頼性を上げていく事を行っています。常に使える、常に繋がる、常に快適であるという事を実現させています。なので下から上のレイヤーまで、インフラからフロントエンドまで触ることが多いです。
前佛:さくらインターネット株式会社で、かつてはデータセンターのエンジニアでした。2020からプログラミング教育が始まるので、石狩の小学校で教育に関連した仕事もしています。
田中:集まっている皆さんはどのような方なんでしょうか。SI? Net? それ以外?
(それぞれ同じぐらいの割合で挙手)
田中:では、自分はインフラ/SREだよという方はどれぐらい居ますか?
(7割ぐらい挙手)
田中:結構多いですね。ではさっそく皆さんにお話を聞いてみたいと思います。ずばり「インフラってなんですか?」です。
田籠:10年前はサーバ、ロードバランサーなどそのあたりの領域を示していましたが、 最近は定義が変わって、直接サービスをサーブするコード以外はインフラでも良いかな、と思っています。 その会社の基礎となる部分はインフラであると。コンテナ、仮想、データベースもまるっと入っている印象です。
田中:メルカリも一緒ですか?
長野:そんなに違いはないですね。ただ個人的には電気/ガス/水道など、その人たちがいないと動かないもの、つまりは生活やサービスで必要なものを維持・継続する人たちのことをインフラエンジニアと表現するのだと思っています。メルカリのSREは、それをソフトウェアエンジニアリングでもっと快適にすることという位置づけですね。
田中:それはインフラという大枠の中の一部ですか? それとも別個のものだけど重なっている所があるイメージですか?
長野:日本で言われるインフラエンジニアは、海外だとシステムエンジニアと呼称されています、SREはシステムエンジニア+ソフトウェアエンジニアだと表現するとしっくり来ると思います。
田中:SREはそれを両方こなせないと出来ない?
長野:全てできる必要は無いですが、やはりなんらかのインプリメントがないとできません。
田中:前佛さんは昔Dockerをいろいろやってたのに、なんでインフラエンジニアになったんですか?
前佛:めんどくさいことをしたくない、障害対応で泊まり込んだりせずに早く帰りたかったんです。監視とかもその気持ちでいろいろやり始めました。 あ、そうだ(会場に向けて)物理サーバさわったことある人いますか?
(3割ぐらい挙手)
前佛:社内のSlackで「コンテナ概念とDocker操作の基本を(再)入門」というセッションをやると言ったら、「インフラ」のレイヤーが上すぎるって叩かれたんですよ(笑)。
田中:レイヤーの話が出ましたが、インフラにソフトウェア、コード、SREなどが含まれてきたというような変化点って、どういう流れでうまれたんでしょう。
前佛:世間的にはChefが出てきたからかな、と思っています。
田中:最近データセンターは行ってる?
前佛:石狩に見学に行ったぐらいですね……。
田中:社会科見学としては良いけど、なるべく行きたくはないよね。行く必要なくなってるのかな。
前佛:ネットワークのメンテナンス、機器入れ替えとか、電源系、物理で触らないといけないものは無くならないので、行かなくなるというのは難しいですね。
田中:では長野さんはどうですか?
長野:mixiにいた時代の更に前の会社では物理でしたが、mixi在籍時はデータセンターに行かなくなりました。そこではTCP/IPより上のことをやる、いわゆる「インフラ寄り」と呼ばれることをやってきました。ChefやPuppet、自動インストールの仕組みが出てきてからデータセンターに行かなくなった印象ですね。
田中:クラウドの前からもその波が来ていた?
長野:仮想化やAPIとかその仕組は、クラウドよりも前から来てましたね。
田籠:僕は10何年以上前にSIerだったのですが、そのころはハードウェア購入してラッキング、ネットワーキングして、とやっていました。ロードバランサーやスイッチ・ストレージなどを仮想リソースとして分割して使うというトレンドは、仮想サーバとかが出てくる前から始まっていましたね。
田中:物理的なエンジニアリングをしていた時から、キャリアが変わった特異点ってありました?
田籠:Egeneraという技術があったんです。ブレードにディスクが付いてなかった。 ブレードとディスクがロジカルに接続されていて、ブレードが壊れると別のブレードに切り替わるという機能がありました。今のクラウドインフラで実現されているものが10年前に存在していたのに、いかんせん高すぎて普及しなかったんです。ただ、そこで実現されていた、ハードウェアなどの設定をソフトウェアで行うというのが面白く、そこに感銘を受けました。
インフラエンジニアを一言で言うと?
田中:ではここで、事前に参加者の皆さんから集められた質問に答えていただきたいと思います。まずはこれ、「インフラエンジニアを一言で言うと?」です。田籠さんいかがでしょうか。
田籠:実はインフラエンジニアを名乗ることはあまりないんです。長野さんもおっしゃってましたが、電気ガス水道もインフラじゃんと考えていて、どちらかというとSREがインフラエンジニアではなくサービスレベルまで考えているように、ハードウェアをソフトウェアとして扱う人の名前があるんじゃないのかなって思っています。ただ、今はちょうどいい呼び方が存在しないのでソフトウェアエンジニアと名乗っています。
長野:維持・継続・改善に向いている人です。新しい技術をどんどんやっていきたいというより、下のレイヤーで他の人を支える人をインフラエンジニアと言いたいです。
田中:さくらインターネットにはソフトウェアエンジニアはいっぱいいるんです。オペレーションとかファシリティとかの人も居ます。 前佛さんはインフラエンジニアですか?
前佛:ネットワークを見てないしどうでしょう、個人的には職種を定義したら負けかなと思ってます。
田中:インフラ、ミドルウェアをやる人、監視などインテグレーションできる人をインフラエンジニアというのかな、と聞いてて思いました。
田籠:SIer時代にはサーバチーム、データベースチーム、ネットワークチームとあったのですが。サーバチームは他のチームがやらないことを全部やるチームでした。なのでなんでもやる人という印象ですね。
話題はインフラエンジニアからクラウドの使い方へ
田中:インフラエンジニアって、今ではクラウドのキャリアパスになっている印象ですね。ところで、最近マルチクラウドを使わないといけないという風潮になっていませんか?トレンドというか、Twitterのタイムライン上では、AWSからGCP(Google Cloud Platform)に手を伸ばしているところが多い印象です。
長野:メルカリでは本格的にGCPを使い始めてます。GCPを最初に使い始めたのはBigQueryを使いたかったというのが主です。現在ではAthenaがありますが、当時は無かったのでAWS+BigQueryでマルチクラウドを始めました。どのクラウドを使うかではなく、AWSだったらRDS、Aurora、GCPだとGKE(Google Kubernetes Engine)と、強いところや得意なところをとって使っています。
田中:マルチクラウドという言葉より、マルチサービスを使っているということですね。
さくらではクラウドを売ってるんですけど、インフラの事業者の方でクラウドっていう区切る言い方は雑じゃないかなと感じています。さくらはIaaSにこだわっているけど、GCPなんかもGmailとか上のレイヤーのサービスを一緒にして売ればいいのにと思います。インフラだけでこだわってるのは間違っているかな、と。
いま世の中で言われているようなマルチクラウドという考え方は事業者にこだわった言い方ですけど、「マルチクラウドにしないとリスクがある」って言うのは良くない。サービスで何をやりたいかを考えることからスタートするのがこれからの正しい方向かなと思います。
田籠:トレジャーデータではマルチクラウドを使っているのですが、1つのサービスでマルチクラウドを利用しているということではなくて、AWSで使えるトレジャーデータ、IDCFで使えるトレジャーデータというものがあります。1つのクラウドサービスにベッタリするよりマルチにやることはコストがかかりますが、それは戦略として行っています。移植性をある程度担保しておいた方が、たとえばもしウォルマートがトレジャーデータを使いたいと言ってきた場合などに対応できる、ということですね。
田中:移植性の話が出ましたが、もちろんAWSを利用しているなら新機能を使う時にAWSに即したサービスを使ったほうが安くなりますよね。コストと移植性はどちらをとりますか?
田籠:移植性の話が出る時にロックインが問題になりますが、本当の意味でAWSにしかないものは、本当に難しいいくつかを除けば特に無いんですよね。RDSはRDBMSだから最悪作ることはできる。ただ、DynamoDBはCassandraではなんとか出来るわけではないし、S3も機能はどこにでもありますが、パフォーマンスに目を向けると本当に凄い。S3のスループットに依存するサービスの場合は移植性はかなり下がります。同様にBigQueryも難しいですね。
田中:メンテナンスするのは大変だけど作れないことはないって話ですと、現在MySQLのチューンナップってロストテクノロジーになってる気がする。ロストテクノロジーを使える人と新しいものを使える人はどちらの価値が高いでしょうか?
長野:RDS使っててもいいけど、下で何が起こっているかを想像するともっとパフォーマンス出せると思います。
田中:確かに。OSSは無料ということではなく、「自分でコードが見れること」が最高に価値があると思うんですよ。そう考えるとクラウド、IaaS、PaaSは潜れないので、そこは難しいですね。
自宅サーバのOSは?
田中:次は「自宅サーバのOSは何が良い?」
(会場笑い)
田中:これは宗教上の問題あるよね。みなさんは自宅サーバありますか?
長野:ここ10年ぐらい家にはありませんね。
田中:最近はRasPiとかで構築することが多いですが、OSが何でもは入らないから選ぶ余地が少なくなっていますよね。
田籠:自宅ではIntel NUCにSSD挿してUbuntu動かしています。クラウドもありますが普通に直接触りたいんです。手元がOS Xなので、Linuxのmanを見たい時なんかに使ってます。あとはクラウドだと外部のインターネットに露出しちゃうので、自宅内に安全な所にDNSサーバ立てて、どういうソフトウェアでできてるかなんかを検証したりします。初心者がいきなりクラウドでやると、セキュリティ甘くて叩かれたりするので(笑)。
田中:うちでも「立てて5分でクラック」みたいなのをたまに見ます。警察が年間600件ぐらいくるんですよ。なのでそういうのに対応する部署があります。警察庁に「クラウドはクラウドだから攻撃されるものじゃない」って説明しに行ったりもしています。ちなみに嫁はサーバエンジニアなんですけど、家のサーバがうるさいと撤去されました。
(会場笑い)
最後に~インフラエンジニアの可能性
田中:残り時間も少ないので、最後にインフラエンジニアの方へ一言お願いします。
田籠:インフラは物理からソフトウェアにシフトしていますが、これは手を出せることが増えているということでもあるんです。昔のように会社に入って高価な機器を調達して、っていうのが不要で、みんなPC上でシミュレートできる。やることが変わっているけど、それは可能性が増えているということ。チャレンジして欲しいですね。
前佛:先に良いこと言われてしまった(笑)。これまでは物理的なインフラを見ていればよかった。でもこれからは性能評価やソフトウェアによる監視などが出来ないといけないので、広く勉強しましょう。
長野:インフラエンジニアはCPU、メモリ、ストレージなど下回りに強いですよね。それがわかると別のところにも可能性が出る。どうやってアプリケーション動かそうか、どうすれば最適に作ることが出来るか、とかいろいろアプローチが取れると思うので、どんどん別のレイヤーに行って欲しいということ、新しいことにチャレンジすると楽しくなりますよ。
田中:ありがとうございました。
インフラエンジニアが次に学ぶべき事や各種クラウドサービスの比較、マルチクラウド展開の必要性が説かれることはよく目にしますが、歴史を交えて現在のインフラを定義することで、次のステップを明確に示すことができたセッションではないでしょうか。
また、ひと口にインフラエンジニアと言ってもその対象は多岐にわたり細分化されてきています。その中で登壇者に共通していたのが、サービスをどうやってユーザーに届けるかということにフォーカスを置いていることでした。やらなくてはいけないことが増えたというより、サービスのためにやれることが増えたと感じ、チャレンジしていくことが、これからのインフラエンジニアに求められる資質なのかもしれません。