dely engineering blog

料理レシピ動画アプリ『KURASHIRU』を運営する dely 株式会社のエンジニアブログです。

インフラ技術はエンジニアが普通の壁を超えるための必要条件

dely株式会社 CTOの大竹です。今回は「エンジニアが普通の壁を超えるためにインフラを習得すべき理由」について自身の経験を織り交ぜて話したいと思います。 

Railsを使えるだけのエンジニアはコモディティ化している

ここ数年でWeb系のエンジニアの敷居は驚くほど低くなりました。すこし前はRailsを使ってウェブサービスを作れるエンジニアは重宝されていました。しかし今では、Railsが使えるとポートフォリオに書いているエンジニアはいくらでもいますし、簡単なサービスならわざわざRailsを使わずともPaaSのようなサービスでバックエンドを構築してしまうことだってできます。

Railsでウェブサービスを作れるスキルはすっかりコモディティ化しました。Railsのような極めて簡単にウェブサービスを作れるフレームワークが登場し、それならばとエンジニアリングを始める人が増えたのです。*1

インフラまで見れるエンジニアは希少価値が高い

一方で、インフラまで見られるエンジニアの価値が高まっています。インフラレベルでサービスのパフォーマンスを最適化するということに意識を向けられるようになるからです。重い処理が走っているところは負荷分散をしたり、冗長化してそこだけ性能をアップさせたり、メモリを食っているボトルネックの処理を潰す、などなどインフラを知っているからこそ改善できることがたくさんあります。

ユーザーがクオリティの高いサービスを当たり前のように使うようになったので、いいサービスの基準が高くなっています。少しでももっさりとした挙動をしたり、使い方がわからなかったりしたらすぐにユーザーは離脱します。ほんとに一瞬です。こちらの記事によると「アプリをダウンロードしたユーザーの4人に1人は、アプリの利用1回で離脱している」みたいです。

リテラシーの高くなったユーザーを満足させるためには、極限までサービスのパフォーマンスを上げなくてはいけません。以前書いたフルスタックエンジニアの記事でも書きましたが、競争の激しいサービスの中で勝つためには上から下までトータルで見て改善できることが非常に重要です。今後はフルスタックであることがエンジニアとして生き残るための大きな武器になります。

インフラの技術を習得できる機会はめったにない

よし分かったインフラを習得しよう!と思っても、一体どこで身につければいいのでしょうか。

上場しているような規模の企業で、素人がいきなりインフラを担当させてもらえるはずがありません。一瞬でもダウンしたら生じる損失が大きすぎるからです。あるとしてもインフラのリードエンジニアが既にいて、そこにサポートで入らせてもらえる程度でしょう。

そもそもインフラエンジニアはそこまで人数が必要ではありません。1人か2人くらいの優秀な人が全部構築してしまう方が、中途半端な人が集まるよりもいいものができます。そのため業界全体を見ても、ある程度の規模のサービスのインフラを構築した経験がある人は非常に少ないです。チャンスが限られているため、経験のある人の希少価値は高くなります。

失敗してもどうにかなる規模でインフラを任せてもらうのが吉

インフラを習得するためには数多くの失敗を繰り返す必要があります。サーバーを落とした数だけインフラに強くなると言っても過言ではありません。

というのも、インフラは動くようになったからOKというものではないからです。社内の人間しか触らないようなテスト環境で正常に動いていいても、数万人が同時にアクセスするような状況になると重くなって使い物にならないことはよくあります。実際の環境で運用して初めてダメなところが顕在化し、それを急いで直してはまたダメになりを繰り返すことでノウハウが蓄積していくのです。

失敗を繰り返しても許される環境として最適なのは、まだ規模がそこまで大きくないスタートアップ企業です。早期にジョインすればインフラを担当させてくれる可能性も高いですし、急速なグロースに耐えられるインフラを構築する経験も得られます。

自分しか直せない逃げられない状況が一番成長する

インフラを習得するために最も効果的なのは「自分以外に頼りになる人がいない」状況に身を置くことです。がけっぷちに追い込まれた時が一番力を発揮できます。

私も以前、WordPressで構築したメディアサイトがゴールデンウィークの5日間ずっと落ちっぱなしになるという地獄を経験しました。何度サーバーを再起動しても一瞬でメモリを使い切って落ちてしまい、何台ものサーバーに負荷分散しても全く改善しないという状況でした。この5日間はずーーっとサーバーとにらめっこして何がダメなんだと頭を抱えていました。

最終的に、WordPressにインストールしていたあるプラグインが暴走してメモリリークを起こしていることが分かり、そのプラグインを削除するとあっけなく直りました。今考えればなぜそんな簡単なことに気がつかなかったのかと思いますが、自分しか直せる人がいない逃げられない状況を乗り越えたことで、インフラエンジニアとしての能力は大きく伸びたことは間違いありません。

まとめ

インフラの技術は表から見えにくいこともあって注目されることはあまり多くありません。しかし、コモディティ化が進む上位レイヤーの技術だけにとどまらず、下のレイヤーまで見られるエンジニアは非常に重宝されます

興味を持ったら、これから伸びるまだ小さいスタートアップ企業を狙いましょう。大きな企業でインフラチームに入るよりも何倍も速く成長できるはずです。

 

ちなみにdelyで運営している料理レシピ動画アプリ『KURASHIRU』でもインフラをやりたいエンジニアを募集しています。サービスの規模とタイミングも最適ですし、やっている領域が動画なのでインフラエンジニアも活躍し甲斐があります。

少しでも興味を持った方はファボしてください。メッセ送るのでご飯でも行きましょう。

f:id:SonyGulss:20160712150629j:plain

*1:この場合の「ウェブアプリケーションを作れる」とは、インフラは誰かに任せるかHerokuのようなホスティングサービスを使ってその上で動かせることを意味しています。