パフォーマンスの改善を通じてユーザー体験をより良くする-SREの仕事とは?

f:id:mercarihr:20160512144102j:plain

楽しいと思うことをたどった先で出会った、プログラミング

 大学では電子情報工学科に在籍していました。もともと情報系の勉強がしたいと思って入学したのですが…大学の授業は電子7割、情報3割という構成で、ちょっと思っていたのと違うというか、事前の調べ方が甘かったですね。なので独学でいろいろと勉強していました。
 プログラミングと出会ったのは「コンピューターを使って色々なことをしたい」という漠然とした思いで入ったコンピューター系のサークルでした。こういうことをしていると楽しいなと思うことを次々とたどっていった先に、プログラミングがあったという感覚ですね。
 最初は全然ダメで、随分酷いコードを書いていました。はじめて本格的に作ったプログラムがFreeBSD上で動くシューティングゲームなんですけど、いまだにサークル内でネタにされるほど、それは酷いコードでした…(笑)それでも、コンピューター上で自分がタイプしたものが、そのまま形になって出てくるという体験は刺激的で、大学のころからコードを書くということが趣味であり日常になっていました。

ウノウで学んだ、エンジニアとしての感覚

 大学は関西だったのですが、当時東京で働きたいと思って就職活動をしていたことろ、ウノウという会社を知りました。メルカリ代表の山田が創業したウノウは、エンジニアが前面に出て情報発信をしている当時(2007年頃)としては珍しい会社で、ウノウラボという技術発信をするブログがありました。それをきっかけに興味をもって、入社しました。
 ウノウでは、アプリケーションエンジニアとして、「映画生活」や「フォト蔵」などを担当をしていました。1年くらいしてから、社内システムも含めたインフラの運用もやるようになりましたね。社員数が少なかったこともあって、広い裁量を持って仕事をすることができる環境でした。その分責任も大きかったですが。
 当時を振り返ると、まだ経験が少なくエンジニアとしても未熟な時期で失敗もたくさんしましたが、エンジニアとしての感覚みたいなものを身につけることができたように思います。
 その後、組み込み系ソフトウェアの開発会社を経て、大規模なトラフィックのWebサービスの開発に携わりたいと思って、当時伸び始めていたピクシブにジョインしました。

インフラ寄りのソフトウェアエンジニアというポジション

 ピクシブにはウノウと同様アプリケーションエンジニアで応募して入社したのですが、入社日に「久保さんはインフラエンジニアね」と言われてインフラチーム配属になりました。最初は「あれ?」と思ったのですが、自分のやりたそうな仕事がたくさんあったので、そのことについては何も言わずそのままインフラチームで仕事をしていました。在籍中は画像のアップロードを高速化する取り組みをはじめ、イラストやユーザーのレコメンドエンジン、memcachedのプロキシサーバ等々バックエンドのミドルウェアの開発・運用をメインでやっていましたね。
 その頃から自分の中で、インフラエンジニアと呼ばれる職種のイメージが大分変化したように思います。それは、もしかしたら私だけかもしれないのですが、当時はインフラエンジニアと言うと「あまりプログラムを書かない」というイメージを持たれているという印象があって、実際仕事内容の何割かはサーバやネットワークの管理と運用なのですが、ピクシブのインフラチームでのタスクは、高度なプログラミングスキルや知識が求められるものも多かったんです。そのあたりはメルカリでもあまり変わっていなくて、例えばメルカリではスマホに対して大量のプッシュ通知処理を素早く行う必要がある場面があるのですが、その際はプログラムに高いパフォーマンスやスケーラビリティが求められます。
 当初は既に出来上がっていたPHPのシステムを少し改良してやってみたんですが、思ったほど速くならなかったのでnginxとGoでプッシュ通知基盤を一から開発しました。出来上がっているものを保守運用するだけではなく、システムのパフォーマンスやスケーラビリティを向上させるためのミドルウェアを開発するのはとても楽しいですね。

メルカリのSite Reliability Engineering

 現在はメルカリのSite Reliability Engineering (SRE)チームに所属しています。SREチームのミッションにはメルカリのシステムの信頼性やパフォーマンスの向上、セキュリティの担保等が挙げられます。

tech.mercari.com

 チームは現在私を含めて5名体制です。ひとりひとりが異なる得意分野を持っていて、みんなが自発的にシステム上の課題を発見してはそのためのプログラムを開発して解決していく、というのが日常的な風景です。私の場合、nginxやOpenRestyを利用したロードバランサー、GoやLuaを利用したプッシュ通知やログ分析のため基盤システム等、主にシステムのパフォーマンスやスケーラビリティに関わるバックエンドのミドルウェアの開発や運用をしています。

パフォーマンスの向上でユーザー体験を改善する-SREの価値

 システムのパフォーマンスが向上すれば、結果としてユーザー体験が改善されますし、サービスの信頼性向上にもつながるので、重要な取り組みだと思います。特にメルカリは日米で3000万以上ダウンロードされていますし、多くの人に使われているからこそ、SREの取り組みの価値がとても大きいと思っています。
 メルカリのSREはとてもチャレンジングな職種です。経験豊かなエンジニアが多く、よい緊張感の中で仕事ができていると思いますね。

メルカリは実力主義を貫くフラットで、のびのびと働ける環境

 メルカリは、実力主義を貫いているところがいいところだと思います。提案もしやすく、自分の担当領域に関わらず意見を言えるフラットな雰囲気です。働きやすい仕組みを整えるために、会社が社員に気を配っていることが、小さなことからも見て取れます。
 会社全体としては、落ち着いた、経験のある人が多いのですが、活気があります。個人的には、もう少し若い人がたくさん入ってほしいと思っていますけど。気兼ねなく思い切り、のびのびと仕事ができるのが、メルカリの一番いいところかなと思います。
 伸びているサービスは、その分やることもたくさんあります。メルカリ アッテのような新しいサービスも次々と出ていくでしょうし、そのための資金も体制も整ってきています。それは提案次第で、どんなことだってできるということにも言い換えられると思います。そういう意味では、バイタリティのある人に入ってもらって、いろんなことを経験してほしいです。サービスの成長にともなって発生する、技術的に解決しなくてはならない問題を解決していくことが好きなエンジニアにとっては、とても魅力的な環境だと思います。

SREという面白い仕事があることを、もっと多くの人に知ってほしい

 インフラエンジニアと聞くと、あまりプログラムを書かないというイメージを持たれることがたまにあるのですが、そうではなくて、実際にはアプリケーションエンジニアと一緒で、高度なプログラミングスキルが求められます。この考えがより広まるといいなと思っていますし、メルカリでSREという名称にしているのにも、その想いが込められています。近年はインフラエンジニアの高齢化という話もたまに聞くので、若い方にもこういう面白い仕事があるということを知ってほしいですね。
 メルカリはトラフィックが多いのでソフトウェアエンジニアにとってチャレンジングな環境です。まだまだできることやりたいことはたくさんあるのでSREとして引き続きユーザ体験の改善に取り組んでいきたいです。
 アッテという新しいアプリもリリースしましたし、新しいアプリが増えるほどに、システムの基盤周りも変えていかなければなりません。新しいものがどんどん立ち上がっても、システムが安定してスケールしていけるような仕組みを作るということも、やっていきたいことのひとつです。
 また個人的には、Githubで公開している自分で作ったソフトウェアが、他社のサービスでも使われていることが増えてきているので、広く使われるようなソフトウェアをもっと作っていきたいですね。今年のはじめにnginx実践入門という本も出版しましたし、ブログなどを通じて技術発信も引き続きしていければと思っています。

メルカリではSREを大募集しています!

www.mercari.com

※本エントリーは「Wantedly」からの転載です