新卒で入社したサイバーエージェントを退職しました

この節目に、人生初の就職から約1年の経験を振り返り、感謝の気持ちを込めて綴りたいと思います。

自己紹介

たかしゅん/moko-poiと申します。私は主にAWSを中心としたインフラ構築やDevOpsの促進に取り組んでいます。

サイバーエージェントには新卒で入社し、バックエンドエンジニアとして配属されました。その中で、特にDevOpsやAWSなどのインフラ関連の業務に注力し、さまざまなプロジェクトに携わってきました。

サイバーエージェントでやったこと

2023年4月に新卒としてサイバーエージェントにバックエンドエンジニアとして入社しました。その前に、内定者アルバイトとして約3ヶ月間勤務していたため、合計で約1年半在籍していました。全てを詳しく話すと長くなってしまいますので、ここでは主な取り組みを簡潔にご紹介します。

広告

内定者バイトの時から、少人数チームでバックエンドの機能開発だけでなくインフラにも携われる部署を希望していました。その結果、広告系の部署で働くことになり、その流れで正式配属も広告系の部署に決まりました。

最初のタスクは広告系の業務ではなく、内定者バイトの時に少し触れたCD環境の整備でした。当時、社内でリリースされたばかりのフェーズで、運用環境の整備が必要でした。そのため、CI/CDの見直しや安全なデプロイフローの確立を目的として作業を開始しました。

要件は、安全なリリースを行える環境を整え、デプロイフローを確立することでした。このため、Canary Releaseの導入やインフラ環境をGitで管理するためのGitOpsを整備し、OSSであるPipeCDを導入しました。

AWS環境かつECSにPipeCDを導入する過程で、様々な問題に直面しました。PipeCDを開発しているコミュニティの皆さんと連携し、OSSにコントリビュートしたり、Forkしてセルフホスティングするなど、貴重な経験を積むことができました。

最終的には、勉強会を開催し、ドキュメントを整備することで属人的な知識の問題を解消し、他の事業部に移動することができました。

詳しい内容は以下のリンクで解説していますので、興味があればご覧ください。

新卒1年目がECSにCanary Releaseを導入し信頼性を高めた話〜PipeCD〜 - Qiita

広告に関する機能開発はGoを使って行いました。研修ではインフラを担当することが多く、Terraformのコードを書くことが多かったため、Goの書き方には苦戦しました。そのため、学んだことをブログにまとめて共有しました。

現場で役立つGo言語のTipsをただまとめてみた

 

主な取り組みは以下の二つです。

Step Functionsを利用したセグメント抽出のバッチ処理のリプレース

セグメント抽出では各レコードに対してUpdateItemでJSONデータを追加していましたが、これによりNレコード以上の書き込みが発生していました。この問題を解決するために、アプリケーション側であらかじめレコードに一致するデータを生成し、一括で書き込む方法を導入しました。これにより、必要な書き込みはnレコードだけとなり、効率的に処理できるようになりました。

この変更に伴い、セグメント抽出ロジックを含むすべての処理を再実装しました。さらに、BatchWriteItemを使用することで一括書き込みが可能となり、処理時間を大幅に短縮することができました。

MMP連携

MMP(Mobile Measurement Partner)は、アプリインストールの広告効果を測定するためのサービスです。アプリインストールの広告配信において、MMPとの連携が必要です。

これらのタスクを終えて、新規事業である生成AIを活用した部署に移動しました。

生成AI

生成AIを活用した業務効率化やコスト削減、既存サービスの改善などを行うプロダクトの新規開発に取り組みました。

担当のプロジェクトでは、技術選定とプロトタイプのフロントエンド開発を担当しました。新しい技術を試したいという思いから、速度を重視してRemixを使用して開発を進めました。その後、案が決定しリリース日が確定してからは、本番運用向けのインフラ設計から実装、インフラのコード化(IaC)、CI/CDワークフローの構築を一手に担当しました。最終的に、無事にリリースを迎え、その後退職という流れになりました。

使用した技術スタックや詳細については、後日テックブログにて詳しく記述する予定ですので、もうしばらくお待ちください。一般的なECSを使った構成ですが、Bedrockとの組み合わせやマルチアカウント構成、社内ツールならではのセキュリティなど、さまざまな考慮が必要でした。

特に、チーム内にTerraformやインフラの専門知識を持つメンバーが多くなかったため、ディレクトリ構成やCI/CDについてはドキュメントやコメントを充実させることで、他のメンバーが理解しやすいように工夫しました。

登壇経験

サイバーエージェントでは、社内カンファレンスや社内LT(ライトニングトーク)、新卒研修など、さまざまな場で登壇経験を積むことができました。これはこの会社ならではの貴重な経験だったと思います。

具体的には以下の場で発表させていただきました。

  • SRE NEXT 2023 Recap
  • CA BASE CAMP 2023
  • 2024年度 エンジニア新卒研修

上記のうち、「SRE NEXT 2023 Recap」と「CA BASE CAMP 2023」は社内イベントであるため、公開されていませんが、新卒研修については資料を公開しています。興味のある方はぜひご覧ください。

【2024年度 サイバーエージェント 新卒研修】システム運用の基本と戦略

また、アドベントカレンダーなどにも積極的に参加し、技術的な知見や経験を共有しました。

良かったところ

サイバーエージェントでの良かった点は正直たくさんありますが、特に印象に残っている点をいくつか紹介したいと思います。

同期

2023年卒の同期はエンジニアだけでも100人以上おり、同じ事業部だけでも30人ほどいました。このつながりのおかげで、オフィスで顔を合わせた際にはカフェスペースでの会話や、ランチや仕事終わりの食事に気軽に誘い合うことができました。仕事の話はもちろん、現在取り組んでいるタスクについて意見交換をしたり、お互いにアドバイスをし合ったりする機会が多く、とても有意義でした。

同期の多くがアウトドア好きで、休みの日にはディズニーに行ったり、グランピングやキャンプに出かけたりするなど、プライベートも充実しました。本当にエンジニアなのかと驚くほどアクティブな人たちと過ごすことで、仕事以外の時間も楽しむことができました。

裁量

バックエンドエンジニアとして採用されましたが、チームの人数が少ないため、フロントエンド、バックエンド、インフラといった分野に垣根なく取り組むことができました。得意な分野を伸ばしつつ、苦手な分野に挑戦する機会が豊富にありました。

特にバックエンドエンジニアとしての知識を活かしながら、インフラにも多く挑戦することができました。自ら声を上げ、必要性を説明すれば、どんな挑戦にもチャンスが与えられる環境でした。その結果、「CA BASE CAMP 2023」や「新卒研修」といった社内カンファレンスの担当も任されました。本当に感謝しています。

人が良い

どう説明すれば良いのか難しいですが、サイバーエージェントでは「会話ができない人」に出会ったことがありません。年齢に関係なく、皆さんが対等に接してくださり、本当に楽しかったです。会社の一員としてではなく、一人の人間として尊重し合い、様々な意見やアドバイスをいただける環境は、本当に勉強になりました。

また仕事をしている中で多くの失敗や迷惑をかけてしまったことがありましたが、嫌な顔一つもする方はおりませんでした。(本当に恵まれております🙇)

辞める理由

結論として、辞める理由は「SRE(Site Reliability Engineer)」というポジションに挑戦したくなったためです。
※ ここで言うSREは、募集要項にあるポジションであるSRE(インフラエンジニア)を指すものとします。

SREに挑戦したい理由

  • バックエンドエンジニアの枠を超えた、インフラ技術の専門性を高めたい
  • ドメイン×技術的なベストプラクティスを追求し、どの分野でも通用する技術力を身につけたい
  • 大規模開発や特殊技術を必要とするプロジェクトに挑戦したい

スピード感を重視した少数精鋭のチームでは、バックエンドエンジニアとインフラエンジニアの境界が明確に分かれていないことが多いです。これは、IaC(Infrastructure as Code)によってインフラがコード化されていることや、クラウドの採用により、バックエンドエンジニアでもインフラに携わりやすい環境が整っているからです。

クラウドネイティブやサーバーレス、フルマネージドサービスの登場により、OSやミドルウェアを意識せずにインフラを構築・運用できるようになっています。多くのケースでは、これらの技術を駆使することでほとんどのユースケースに対応できます。

しかし、特化したサービスやドメインによっては、複雑なアーキテクチャミドルウェアOSSオープンソースソフトウェア)などの特化した知識が必要になる場合があります。具体的には、マイクロサービス、分散データベース、予期しないスパイク、書き込みに特化したシステムなどが該当します。

これらには、インフラ技術の専門性はもちろん、各ドメインを理解し「ドメイン×技術的なベストプラクティス」を考える力が求められます。この「ドメイン×技術的なベストプラクティス」を自ら考える力を強みとして、どの現場でも通用する技術力を身につけたいと考えました。

SREは「総合格闘技」という言葉で表現されることがあります。知識だけでなく、今まで得た経験、ドメイン理解、技術を総合的に駆使してシステムの課題を解決するために一貫して行動する力が求められます。このような力を身につけたく、SREに挑戦することにしました。

もちろん、SREでは知識以上に「経験」が重要です。企業のフェーズや目指す目標、SREのポジションによっては自分の力を発揮できないこともあると思います。そこで今回は、自分の強みや経験がある「AWS」を活用した「Platform Engineer」に挑戦することにしました。

最後に

忖度抜きでこの会社で新卒として働けたことが素直に嬉しいです。

また、サイバーエージェントでは多くの素敵な方々と出会うことができました。この縁を大切にし、今後も引き続き良い関係を築いていきたいと思います。今後も何かしらの形で関わる機会があるかと思いますので、どうぞよろしくお願いします。

最後まで読んでいただき、ありがとうございました。