freeeの開発情報ポータルサイト

Kubernetesでアプリエンジニアが勝手にやれるインフラを作りたい — 九岡 佑介 (mumoshu) インタビュー(前編)

こんにちは!freeeでエンジニアをやっている id:ymrl です。

ふだんマイペースに更新しているこのfreee Developers Blogですが、たまにはfreeeで働く個性豊かなエンジニアを紹介したいなと思い、第一弾として最近AWS Container Heroに就任したSREエンジニアで、kube-awsをはじめとするOSSのメンテナーとしても知られる九岡佑介(@mumoshu)さんにインタビューしてみました。Kubernetesの話やリモートワークの話を聞いていたら内容が盛り盛りになってしまったので前後編でお送りしようと思います。

mumoshuさんの写真

転職するごとにレイヤーが下がっていった

— mumoshuさんはこれまでKube-AWSの開発をされてきて、それもあって先日AWS Container Heroにも就任されたわけですけど、もともとKubernetesまわりのことをしはじめたのはいつ頃、どういうキッカケだったんでしょうか?

やりはじめたきっかけは、Chatworkのメッセージ基盤をScalaに移植するプロジェクトでした。このプロジェクトはアプリケーション側がずいぶんチャレンジングだったんですが、実はインフラもチャレンジングで、そこで採用したのがKubernetesでした。

そのころのインフラは社内で内製していたソフトウェアがあって、当時のChatworkをメンテナンスしていくのには最適化されていたんですが、Akka HTTPとScalaで作った新しいアプリケーションを動かすには不向きでした。また、当時のチームの構成としてアプリケーションエンジニアが多くそのモチベーションも高かったので、もっとプログラマブルで、アプリケーションエンジニアが使いたくなるようなインフラにして、その力を最大化できるものを求めていました。ちょうどそのときに使いやすそうだったのがKubernetesでした。

自分がかつてアプリケーションエンジニアあがりのインフラエンジニアなこともあって、そのころの自分が「これならインフラも見ようかな」と思えるインフラを構築したいと考えていました。自動化のしやすさや、必要だと思っている機能がひととおり揃っていて、自分たちで作りこまなくても使える状態というものが理想でした。

—アプリケーションエンジニアとしての経験が、いまのmumoshuさんのインフラエンジニアとしてのありかたに繋がっているんですね。なぜアプリケーションエンジニアからインフラエンジニアになったんでしょうか?

新卒のときは大手メーカー系の会社で、エクセルと電話を使って開発のディレクションをするような仕事をしていました。自分では全くコードを書かない仕事だったんですが「これなら自分が書いたほうが早いな」と思うこともしばしばありました。

そんなある日、社内で他の人から「あなたは優秀なのに、こんなことをしていていいのか?」と叱責されたのが最初のきっかけでした。自分でも「この仕事は全然面白くないな」と感じていたときだったので、考えた結果「自分で書こう」と思いました。

それから1年くらいその会社でプロダクションコードを書きました。当時HTML5とかCSS3とか、prototype.jsとかjQueryみたいな技術が出始めた頃で、いろんな会社のAPIをマッシュアップしてWebサービスを作っていました。

その頃はフロントエンドのことばかりをやっていた感じで、インフラのことなんて何も知りませんでした。エクセルを埋めて社内システムに登録して、あとは不明点などを電話で相談しているといつの間にかインフラが構築されている、という感じでした。そのときの「インフラわかんない感」を繰り返したくないなとか、その頃インフラもやっていたらこんな感じであってほしかったな、というのを未だに追いかけているのかもしれないです。

そのあと転職をするに従って、だんだん扱うもののレイヤーが下がっていきました。

2社目にいたときにScalaのPlay Framework 2に傾倒していて、自分の気にいった技術を社内で使ってもらうための外堀を埋める活動として、ドキュメントの翻訳をやったり、登壇をしたり、いろいろなことをしてきました。その一環でちょっとだけインフラを触ったのが自分にとって初めてのインフラでした。といっても他の人がAWSを設定したのをチョロっと触っただけだったので、今思えば「そんなところからよく初めたな……」という感じですけど。

インフラエンジニアとして仕事をするようになったのは3社目で、当時その会社ではじめてScalaを採用するというタイミングでした。そこで2社目でScalaを使っていたということでインフラに起用され、デプロイの自動化やモニタリングの仕組みなどをわからないなりに構築する機会を得ました。ここでそれまで触ってこなかったインフラの世界に一気に触れることができました。

その次の会社は、会社のエンジニアとしては5人目、自分がはじめての専任のインフラエンジニアという感じで、このときにはほぼアプリケーションコードを書かなくなっていました。このときの仕事はいろいろと大変でしたが、この経験がいまに一番生きていると思います。

インタビュー風景の写真

freeeに来たのは大きなチャレンジがあるから

— そのあと、現在も技術顧問をしているChatworkに行かれて、そしてfreeeに来たわけですけど、なぜfreeeを選んだんでしょうか?

Chatworkでは1年以上かけてKubernetesを導入するという大きなチャレンジがあって、あれは自分と、当時のチームでしかできないとても大きなチャレンジだったと思います。このチャレンジをやりきった上で、もっと大きなチャレンジをしたいと思うようになりました。

そこでChatworkには技術顧問として関わりつつ、本業としてそういう大きなチャレンジを探しているときに出会ったのがfreeeでした。

freeeには「規模」と「セキュリティ」という大きなチャレンジがあると思っています。freeeで扱う会計などのデータは、法律でどう守られるべきなのかが定められていたり、それ専用の監査のやり方が用意されているような情報です。そういうものが流れるシステムの監査に耐えられるインフラをKubernetesで作るのはとても大変なことだと思っています。

KubernetesをはじめとしたContainer Orchestrationの世界では、こういった厳しい監査のあるセキュリティ施策は未知の領域で、後付け後付けで改善されていっているんですが、それでもまだまだ進化の余地が残されているなと感じています。

規模の話でいうと、10人くらいで開発・運用を回しているような小規模なシステムでは、求められる要件が何であれKubernetesはオーバーキルなんですよね。しかし100人とかになってくるとカオスになってきて、「間違えることができない」が重要になってくるはずです。そういうときにKubernetesの、必要な機能が一通り揃っていて、それを組み合わせて使えばOKという特徴が生きてくると思っています。

自分は「ただ引き継ぐ」ことができない性格で、ついつい作りこみをして技術的負債を残してしまうので、そういう意味でも一通り揃っている機能から必要なものを選んで使えるKubernetesは合っているなと思っています。Kubernetesはやりすぎる余地があまりないし、もしやりすぎてしまってもその成果をOSSにしちゃえれば技術的負債にならないので(笑)。

そういったものを使いこなして、別次元の監査が要求されるような世界でも、開発者の生産性を落とさず監査に耐えられるような状態を作れたらいいなと思っていて、そんなチャレンジはfreeeでしかできないと思いました。

インフラは職人芸の世界

—— 自分にできないような大きなチャレンジの舞台として、今のmumoshuさんはインフラエンジニアをされているわけですが、自分はインフラのほうが向いていると思うようなところはあったりするんでしょうか?

インフラのほうが、職人芸が残っている分野な感じがしているんですよね。新しい技術が出てきたときに、最初は職人が絶対に必要になると思うんです。

Kubernetesもそうなんですけど、新しい技術を使うためにはどうしても必要とされるスキルセットが違うし、たくさんのことを憶えなければいけないですよね。そこまでして使いたい人というのはなかなか現われないと思うんです。でも、そんな中で物好きな人が勉強して使えるようになると、その人がその会社で最初の職人になるんですよね。

インフラの世界は、そういう職人芸が必要なものがまだまだたくさんあるのが面白いところかなと思っています。

インフラエンジニアとしては、アプリケーションエンジニアだった頃の自分が欲しいインフラを作っていきたいということを常に考えています。Kubernetes自体の運用はまだ職人芸というか特殊技能なんですが、その上でアプリケーションエンジニアが勝手にサービスを動かすということができるといいですよね。サーバーの台数を調節するなんていうのもアプリケーションエンジニアが勝手にやれるようにできるし、勝手にやったほうが絶対良いものになると思っています。それができるのがKubernetesだと思っています。

自分がアプリケーションエンジニアだったら、やっぱり人に押しつけられたものを使わされるのは嫌ですしね。これまで使ってきた仮想マシンベースのインフラと、Kubernetesベースのインフラを用意して、各自が使いたい方を自由に選べて、それをSREがサポートできる。そんな座組にできたらいいなと思っています。

mumoshuさんの写真


前編、いかがでしたでしょうか。リモートワークや未来の話で盛りあがったインタビューは後編に続きます。後編は明後日に公開予定です。お楽しみに!

2018/09/14追記: 後編を公開しました!

developers.freee.co.jp


jobs.freee.co.jp

www.wantedly.com