iOSからSREに転向した

昨年7月にiOS EngineerとしてSoundCloudに入社した](https://yuseinishiyama.com/posts/2019-12-17/)が、今年の4月からは同社でSREをしている。

モバイルエンジニアのキャリア

Software Engineerになって約8年、基本的にはずっとiOS Developerを名乗ってきた。そこそこ真面目にやった甲斐もあり、国内外のカンファレンスで登壇したり書籍を執筆したりそれなりの規模のプロジェクトでTech Leadをする機会に恵まれた。

その一方で、長らく水平方向にスキルを伸ばしたいという思惑があり、伸びそうなSRE・ML・セキュリティといった分野を検討していた。その中でも特にSREがしっくりきたので、少し前からインフラ関連技術のキャッチアップをはじめていた。

転職、フルスタック化

現職にはiOS Engineerとして入社したものの、入ってみるとMicroservice・権限移譲が割と進んでいて、フルスタック的な働き方もできそうだった。そこで、バックエンド(主にScala)の開発、オンコール、データパイプラインを触ったりと好き勝手やってみた。ちなみに、このあたりのことは社内のブログにも書いている

楽しくやっていたものの、なんでも屋でいるとManagerに対する期待値の調整が難しいし、何をやってもちょっとずつ居心地が悪い。そんな折、偶然SREのポジションが空いたので応募してみたところ運良く受け入れてもらえたわけである。

社内異動のプロセスがオープンなのは現職の良いところだ。社外に対して募集をかけているポジションの多くは社内からも応募可能である。具体的なプロセスはチームによって異なるが、今回のケースでは簡易的なホワイトボードの面接があった。

SREになって

モバイルとはかなり距離のある分野なので、毎日新卒のような気持ちで働いている。とはいえ、探せば出来ることはあって、Kubernetes(Self-managed)のアップグレード、新しいマシンイメージの適用、Cassandraのメトリクスを取得するためのJobとアラートの実装など、この一ヶ月で雑多なことをやった結果、いくらか土地勘がついた。

役に立ったもの

モバイルエンジニアがSREになるケースはやや珍しいと思うので、重宝したリソースをいくつか挙げてみる。

Site Reliability Engineering(通称SRE本)

とりあえず語彙を揃えるためにも。概念中心かと思ったが、後半のLoad Balancingの章などは結構具体的だった。

Designing Data-Intensive Applications

これはマジで良い。そこそこモダンな分散システムを触るならその日から使える知識の宝庫。

AWS Solutions Architect - Associate

前職で流行っていたので、「通信空手」などと揶揄されながらも取得してみたが、おかげで抵抗なくコンソールが触れるし、チームメンバーが話している内容の文脈も理解できて、結構役に立っている。

ネットワークの基礎

モバイルエンジニアだと、L7がギリギリ、そこから下とDNSはほぼ無という人もいるのではないだろうか(自分はそうだった)。『ネットワークはなぜつながるのか』ぐらいの簡単なものでも目を通しておくとだいぶマシになる気がする。

社内のRunbook、Postmortemの過去ログ

なんだかんだで社内固有のオペレーションをすることが多いと思うので、眺めておくと良いイメトレになる。

Kubernetes関連

最初はかなり混乱したが、有名なKubernetes The Hard Wayをやって、その後もう少し親切な説明を見たらなんとなく分かってきた。Carson Andersonという人の解説が良かった。

おわりに

シニアのモバイルエンジニアにとって、今はキャリア的に難しい局面にあると思う。技術の流行り廃りが激しい中、エンジニアが新しい分野に取り組む心理的安全性を担保するような仕組みが組織には必要かもしれない。それと、よりオープンで汎用的な技術で開発できるように、Appleには一層頑張って欲しい。