クラウドが普及すると、開発者もインフラの知識が必要になる
吉羽 他に、これからクラウド学ぶエンジニアは何を勉強するのがいいのでしょうか?
浅見 実は、ちゃんとインフラを理解していることが大事だと思います。クラウドが普及してくると、一時はインフラエンジニアが不要になるのではと思われていたのですが、全然そんなことはなく、むしろ扱わなくてはならない範囲が増えると思うんですね。
例えば、私はもともとDBの領域が専門だったのと、ネットワークの会社にいたので知識があったのですが、クラウドだと、その全部をやらなきゃいけないんですよね。例えばAzureは、Hyper-Vという仮想化システムをベースに構築されていて、さまざまなレイヤーのネットワークが出てくるんですよ。
吉羽 L3(ネットワーク層)からL7(アプリケーション層)まで出てきますね。
浅見 L3とL4(トランスポート層)の違いをちゃんと理解する必要はないかもしれないけど、「このロードバランサーってL4ですか?」という話題が出てくるんですよ。
吉羽 物理的なハコを触るほどじゃないけど、知識として知っておく必要があるということですね。
浅見 例えばAzureには、AWSのDirect Connectに相当するExpressRouteという閉域網があって、BGP(Border Gateway Protocol:インターネットの中核を構成するルーティングプロトコル)についての話も出てきます。
吉羽 ああ、ルーティングの話ですね。その辺りが分かってないと、オンプレとどうやってつなぐのかという話になりますし。
浅見 だから意外とネットワークの話題は出てきますし、他にもストレージの話題も多いですね。例えばディスクの性能について。
吉羽 IOPSとかですね(※IOPS:ディスクが1秒間に読み込み/書き込みできる回数)。
浅見 高いIOPSを出すためにストレージの使い方をどうするかというのも、オンプレでの知識の延長ではあって。インフラに関するさまざまなことを、薄くでも知っておく必要があると思いますね。
クラウドが使われるようになると、インフラのメンバーがチームに入らなくなる傾向が強くなると思うんです。だから開発者であっても、クラウドを使っていて何か問題が起きた時には、インフラの知識が必要になる。もちろん開発者は、コードに注力したいと思うのは当然だと思いますが、運用面もやらなければならない部分なんです。例えば、良いSQLを書かなくてはいけないのは今も昔も変わらないわけですし。
インフラやサーバー屋さんが面倒を見ていた部分を、開発者がどういう風に取り扱っていくのかが、今後重要なポイントかもしれませんね。私はどちらかというとインフラ視点なので、そういう発想だというのもありますが。
吉羽 アプリ屋さんでもクラウドで簡単にインフラを作れるようになりましたが、トラブルが起こった場合はどのように対処するのか、どうやってマシンリソースをしゃぶり尽くすことができるのか、といった課題がありますね。
浅見 それってクラウドだけではなく、他のテクノロジーと同じなんですよね。クラウドベンダ特有の情報の出し方があるかもしれませんが、基本は今までと全く同じやり方、考え方です。ボトルネックのポイントが少し違いますが、ボトルネックの見つけ方や、解決に至るまでの考え方は一緒だと思います。
吉羽 そういう意味では、第1回でお話を聞いた片山暁雄さんのキャリアは、アプリ開発者から出発して、AWSでインフラを触るようになって、またソラコムでアプリ屋さんに戻っていますが、全部の層を扱えるようになっていますね。
浅見 だから、クラウドをやっている人のなかでも全部の層を使えるような方が、すごいクラウドエンジニアになっていくんじゃないかなと思います。
吉羽 開発の人でもインフラの知識が必要というのはいい視点ですよね。クラウドが普及するとインフラエンジニア不要説を唱える人もいますが、監視やログはどうするの、だとか、障害が起こったときはどう対処するかという点は、オンプレだろうがクラウドだろうが、結局設計しなきゃいけない。
浅見 別に開発者がそのあたりをやらなくてもいいとは思っているんです。専任の人がつけられるなら。
吉羽 人というより役割でしょうね。それが一人のエンジニアが担ってもいいし、複数人で分担してもいいけど、一気に既存のインフラ部分を捨てられるわけではないですよね。インフラのノウハウは必要。
浅見 もう、開発者がクラウドのことは気にせず、開発に専念できる世界が来ればいいと思ってます。それで、クラウドは全自動でうまく回るような世界がベストだと思っていて、Azureはその世界を目指していると思うのですが。
吉羽 PaaSのような感じ?
浅見 はい、でもまだまだその域に到達していないな、とは思います。
