Share

Xでこの記事をシェアFacebookでこの記事をシェアはてなブックマークに追加する
# 中途入社# エンジニア

freeeのインフラ基盤を整える仕事を担ってきた。一貫した技術力への向上心

2022年1月現在、freeeでSRE(Site Reliability Engineering)エンジニアとして、インフラの設計・構築・運用を担当している藤原 峻輝。大学時代や前職のNTTコミュニケーションズでの経験を生かして活躍している彼の、エンジニアとして幅のあるキャリアと向上心を紹介します。

インターン先での経験がインフラエンジニアを志すきっかけに

父親の影響で、幼稚園の頃からパソコンやインターネットに触っていたという藤原。高校生になると、将来パソコンやインターネットを使う仕事に就きたいと思うようになりました。

そんな思いから電気通信工学部のある大学に進学し、コンピューターサイエンスを学び始めます。

大学1年生時の授業ではプログラミングの基礎を学び、大学2年生になると株式会社ハートビーツという、MSP(Managed Service Provider)のITベンチャー企業でアルバイトを始めました。

MSPとは、外注を受けてサーバーの設計・構築・運用をする企業のこと。ここで藤原は、インフラ周りの基礎的なスキルを習得していきました。

藤原 「最初の3カ月ほどの研修が、本当に良い経験になりました。というのも業務に沿ったOJT研修ではなく、Linuxやネットワーク環境に関しての本格的な勉強だったんです。

行くたびに新しい課題をもらい、教えてもらいながら、かなり手厚く育ててもらいました」

研修が終わると、週3日、1日6時間の業務が始まりました。

藤原 「私は主にインフラの運用分野である、サービスの障害対応をしていました。それでも難しいことは多く、慣れるまでに1年以上かかりました。

卒業の少し前まで約3年間働き、インフラ周りの修行をたくさん積ませてもらいました。今でも本当に感謝しています」

アルバイト先での経験は、大学3年生時の就職活動にも影響していました。

藤原 「当時はクラウドの開発が隆盛を迎えた時期でした。現在では海外のクラウドベンダーが強い印象がありますが、この頃は他の企業も『AWSに追いつけ追い越せ』と、クラウド開発に注力していて、互いに切磋琢磨しているような状況でした。

私もインターンを通してインフラ分野の楽しさを覚えたので、クラウド系に絞って就職活動を行いました。

その結果、NTTコミュニケーションズへの入社を決めました。純日本企業の中では最大級規模のクラウドを持っていること、インターネット事業を行っていることが決め手でした」

2016年に新卒入社した藤原は、技術開発部に配属され、エンジニアとしての道を歩み始めます。

藤原 「私はコードも書けたので、稼働の7割くらいはバックエンドを担当し、PythonでDjangoというWebフレームワークを使ってwebアプリを書いていました。残りの3割はインフラを担当していました。

アルバイトやこれまでの経験のおかげで、技術面で困ることは少なかったです。基礎的な考え方は身についていたので、業務ごとに必要な知識をキャッチアップしながら仕事を進めていきました」

技術開発部での充実した日々。もっと自分の技術力を伸ばしたい

技術開発部の仕事は、PoC(Proof of Concept=新たなアイデアやコンセプトの実現可能性やそれによって得られる効果などについて検証)を元に、サービスを1から作りあげることでした。

藤原は3年間で、2つのサービスを作りました。

藤原 「1つは社内向けの、業務効率化のためのWebアプリケーションです。自社サービスを利用する際の契約・決裁に関わる事務作業の自動化および、自社サービスをより簡易に使うための自動化するサービスを作成しました。

もう1つは大企業向けのサービスのPoCです。NTTのデータセンターにデータを収納するためのストレージを作り、webアプリケーション上のボタンを押すとAWS上の自分のVPCと繋がるというサービスでした。

インフラ周りに関しては、上記2つのサービスを動かすためのインフラの設計・構築のほか、全社向けの検証環境の構築・運用も行っていました」

充実したエンジニアライフを送っていた藤原ですが、転職を考え始めます。きっかけとなったのは、エンジニアとしての向上心でした。

藤原 「就職して約3年が経ち、なんとなく大企業での働きかたもわかってきた頃、もう一度アルバイト時代のような勢いのあるベンチャー企業に行きたいと考えるようになりました。単純にエンジニアとしての力を試したい気持ちがありましたね。

また、キャリアを積むと責任者になり、手を動かすことが減っていくことも分かってきました。当時の私はまだまだ現場でプレイヤーとして活躍し、自分の技術力を伸ばしたい気持ちがありました。

それに、もし5年後、自分がまだ現場で手を動かしたいと考えていた場合、ベンチャー企業の環境に身を置いていた方が成長が早いとも考えていました」

転職活動で、藤原はSREを志します。

藤原 「SREを選んだのは、インフラが好きだったからです。インフラを扱うロールの一つとしてより体系的に整備されているSREになりたいと思いました。

インフラエンジニアはアプリケーションが動く基盤を整備することで社内のエンジニア全員に価値を届けることができます。その基盤がより良いものになれば会社で提供するすべてのサービスの価値も、開発者の開発速度さえも上がります。そんな影響力の広い仕事であることに面白さを感じていました。

とはいえ、転職も初めてで自分の市場価値もわからなかったので、はじめのうちは色々な企業に話を聞きに行きました。条件としては自社サービスがあり、フットワークが軽く、勢いがあるところでした」

freeeからの誘いがあったのはそんな時でした。

藤原 「転職エージェント経由でスカウトが届きました。調べてみたら事業内容もカルチャーも面白く、興味が湧き、面接を受けてみることにしました」

面接で、当時SREエンジニアチームの責任者であった浅羽 義之と出会ったことが、藤原にfreeeへの入社を決意させます。

藤原 「浅羽は、自身のバックグラウンドや私にスカウトを送った理由を熱く語ってくれました。素直に『できる人だ!』と思いましたし、その話し方や人となりを見て、『この人の元で働いたら、SREエンジニアとして大きく成長できる』と感じたんです。

前職時代は、クラウドに関してはチームでは自分が一番実力がある自負がありました。だからこそ自分よりすごい人がたくさんいる環境に身を置いて、揉まれたかった。freeeにその可能性を感じました」

こうして2019年4月、SREエンジニアとして藤原はfreeeに入社しました。

大きな責任のある業務だからこそ、達成感は半端なかった

(▲オンラインで登壇中の藤原)

入社後、藤原は必要な知識や技術のキャッチアップに追われることになります。

藤原 「基礎の基礎は共通していますが、freeeと前職では扱う領域に違いがありました。

例えば前職では『プライベートクラウド』を『作る』知識が必要でしたが、freeeでは大きなサービスを動かしていくために『パブリッククラウド』を『使う』知識が必要です。なのでAWSに関しては、細かなところまで知識をキャッチアップしていきました。

フレームワークに関しても前職はPythonでしたが、freeeはRailsとGoがメインなので、運用するための勉強は欠かせませんでした」

キャッチアップをしながら、所属したマイクロサービス基盤のチームにて、Kubernetesの構築・運用・設計業務を開始しました。

Kubernetsとは、コンテナを動かすためのOSSのオーケストレーションサービスのこと。インフラの標準化を行う上で、より宣言的なインフラの記述及びその抽象化が可能なものとして、freeeでは利用しています。

藤原 「私はチームのメンバーと共に、そのKubernetesの基盤の設計・構築をし、運用を整備する仕事に従事しました。

また、どの企業でも最初はサービスを作ることを優先しますが、サービスが増えてくると整えるための運用が必要になります。freeeのアプリケーションもサービスごとで基盤の構成が違っていたので、統一性をもたせるために、標準的な構成を決めて、インフラのコード(宣言的記述)を抽象化することで構築時に自動的に統一化をはかれるようにしました」

その後には、データベースを扱うチームに所属しました。そして、2019年11月〜2020年1月にかけて、データベースの巨大テーブルのマイグレーションの検証と作業を手掛けます。

藤原 「データベースには1番から順に、行が追加されたら、何番目に追加されたか番号が振られています。当時は、それがInt型で書かれていたのですが、21億行が最大で、それを超えたら大きな障害が起きてしまう状態でした。

当時、freeeは容量の半分を超えていて、さらに確定申告期を控えていたので、念のため、Int型からBigIntへの書き換えをすることになりました。今回のマイグレーションとはこの移行作業のことで、いわば大手術のようなものです。

どう行えば安全にマイグレーションができるかを検証し、メンテナンスの中でデータベースごと入れ替えてマイグレーションを完遂しました。失敗したら数日間『freee会計』が使えなくなる可能性や、お客様のデータを再入力しなければならない可能性もあったので、かなり責任のある業務で、やりきった時の達成感は半端なかったです」

目指すはチームの成果の最大化と、プレイヤーとしてのスキルアップ

2021年7月になると、今まで作業ごとにチームに分かれていて曖昧だったSREエンジニアの組織は、人数が増えてきたこともあり、チーム分けが明確にされました。
現在は組織図上も、マイクロサービス基盤・データベース・CI/CD(継続的インテグレーション/継続的デリバリー)に分かれ、藤原はCI/CDチームに所属しています。

CI/CDチームが担っているのは、デプロイや各種Buildをより良くする役割。一方、CI/CDの枠をこえてDeveloper Experienceについても、インフラの観点から改善していこうとロードマップも引いています。

藤原 「僕の所属するチームは、開発者の生産性をあげることが大きな目的の一つです。具体的な仕事としては、Kubernetesの宣言的な記述でインフラを表現できる利点を活かすようなデプロイ基盤の設計や、必要な工程の自動化や省略、処理速度の高速化などを行っています。

もしアプリケーションに問題があってもすぐにもとに戻すことができ(Rollback)、その速度を向上させることによって、開発者が失敗を恐れずに開発を進めていける環境の実現を目指しています。

またデプロイ後、一部のお客さんに新しい機能を使ってもらって、万一想定外なことが起きても影響範囲を極小化できるようにしています。一つひとつの作業がfreee全体の『マジ価値(=ユーザーにとって本質的な価値があると自信を持って言えること)』に繋がっているんです」

SREエンジニアの全ての組織で、重要な業務を行ってきた藤原。今後の目標を語ります。

藤原 「今の目標は、チームの成果を最大化することです。今はアジャイル開発のスクラムマスターを担当し、それとは別に業務委託のチームも管理しています。これからさらにテックリード的な役割も増えてくると思いますが、チームの成果を最大化させるという気概は持っています。

また個人的なことで言えば、自身のプロフェッショナルな部分を磨き続けること。freeeのSREは、日本の中でもかなり先進的なことをやっていると思うので、そんな環境で働けていることに感謝し、プレイヤーとしてもスキルアップを続けていきます」

任された責任ある仕事を一つひとつ仕上げつつ、エンジニアとして幅のあるキャリアを歩んでいる藤原。彼の持つ、貪欲な向上心とチーム全体を底上げする強い意志は、freeeの基盤を支えてくれるはずです。