1
/
5

エンジニアドリブンで開発し続ける新規開発局〜若手が感じる「技術のサイバーエージェントのリアル」〜

2018年7月に新規開発局という組織が新設されました。エンジニアを募集しています。

新規開発局はSUPERCHOICEをリリースし、現在新規サービスの開発中、今後も続々と開発案件が予定されています。

新規開発局に在籍する若手エンジニア2名に登場してもらいました。

バックエンドエンジニア。
2012年サイバーエージェント新卒入社。
入社後ネットビジネス事業部配属を経て、ソーシャルゲームの開発に従事。2014年より音楽配信サービスAWAの立ち上げ、開発に携わる。
2017年8月より新規開発局にてSUPERCHOICEの立ち上げを行い、現在は江頭と共に新規サービスの開発に従事している。


バックエンドエンジニア
2018年サイバーエージェント新卒入社。
学生時代はIOSエンジニアとしてサービス開発に携わり、2017年4月「AbemaTV」にジョインしたタイミングでバックエンドエンジニアにキャリアチェンジ。
現在は今冬リリース予定の新規サービスにリードエンジニアとして従事している。

新規開発局の採用技術

ー 新規開発局は、今どんな技術を使っているんですか?

小久保:マイクロサービスでゲートウェイパターンを採用しています。サーバーはkubernetesで管理されgRPCでサーバ間のやり取りを行っています。

また、ミッションクリティカルなサービスに対応するためGCPのCloud Spannerをデータベースとして採用しています。比較的新しいサービスですが運用と技術的要件を満たすかを判断した上で選択しました。

ー エッジのたった技術を導入していますが、プロダクトの事業要件とイコールにするためのバランスをどう考えていますか?

小久保:運用可能かどうかおよび技術的な要件が、事業的要件に合っているというのは大前提です。

例えばGCPのCloud Spannerの採用ですが、新しいデータベースなので、導入には検討が必要でした。事業としてのSUPERCHOICEや現在開発中の新規サービスは、ユーザーの保有ポイントが常に動き続けるので、トランザクション処理の信頼性が求められました。

特に、運用面を考えるとマネージドサービスであることで管理パフォーマンスが大幅に削減できるので、トランザクション要件とマネージドサービスの運用面で選定されました。

小久保:Spannerを例に上げましたが、新しい技術を選ぶことが目的ではないので、事業要件を満たす機能と運用面でのコストと可用性を鑑みた上で、検証に基づいた選定をしているのが実際のところです。


アーキテクチャのポイント

ー アーキテクチャを考える上で、重要にしているコンセプトはなんですか?

江頭:全体はマイクロサービスアーキテクチャで、コードベースはテスタブルで変更に柔軟に対応できるようにクリーンアーキテクチャを採用しました。

小久保:例えば、コードベースで言うと型のコンバートが頻発したり、依存関係がぐちゃぐちゃになって可読性が落ちるとか、テストが書きづらい設計だとか、わりと陥りがちなリスクがあるのですが、江頭くんが今回とてもクリーンな設計をしてくれました。

ー クリーンアーキテクチャの恩恵はどんなところにありますか?

小久保:運用中のサービスでもミドルウェアを変更したいといった要件が出る事がありますが、コードが固有のミドルウェアに依存した書き方になっていると現実的には難しいです。

これをクリーンアーキテクチャーにすることで、理論上はデータベースは何を選定してもコアロジック部分には一切影響がないように設計されています。

江頭:そうですね。全てのミドルウェアは抽象化してあるので、入れ替えが可能になっています。もちろんデータの移行などのオペレーションは発生するので、簡単に移行ができるわけではないですが、ソースコードレベルでいうと、大きく変える必要はないです。

小久保:マイクロサービスアーキテクチャの恩恵っていうと何だろうね。

江頭:1つのマイクロサービスがダウンすると、引きずられてほかのマイクロサービスもダウンする状態は回避するべきだと思います。今回アンバサダーパターンを取り入れEnvoyでサーキットブレーキングするなど可用性の高いアーキテクチャを採用しました。

小久保:アウトライアディテクションとかサーキットブレーキングみたいな、疎結合であるべきというのはありますよね。1つのマイクロサービスが止まったらサービス全体が停止してしまうケースはあってはいけないので、機能の分離がしっかりできているというのがマイクロサービスのつくり方の1つの指標かなと思っています。


「技術のサイバーエージェント」を感じられるか?

ー 新規開発案件に連続的に関わり続けると聞きました。例えば、大量にスマホサービスを作っていたネットビジネス事業部時代とかと比べ、開発環境はどう変わってきたのでしょうか。

小久保:新規開発をサポートする体制が会社としてしっかりしてきたと実感します。

例えば新規開発に伴う技術選定も、技術的なノウハウが蓄積された物もすでにありますし、その上で新たに技術検証を行い、その結果をもとに有識なエンジニアと議論する流れが感じられます。

現在開発中の新規サービスでは、江頭くんがエンジニアの責任者ですが、自分でゼロから考えたアーキテクチャを、AbemaTVのCTO西尾さんや他プロダクトのリードエンジニアにもレビューしてもらいながら決めています。

江頭:AbemaTVのCTO西尾さんは、僕がAbemaTVにいた時からそのやり方で育ててくれました。西尾さんは答えを持っているんですけれども「そこは自分で考えて〜」みたいな、解を知っているけど自分たちに考えさせる方針です。

ー 新規開発局責任者の長瀬は技術のサイバーエージェントになるために「個の集団から組織として強化していくこと」が必要とのことですが、みなさんはどう解釈していますか?

小久保:個が強いエンジニアが先行し、それに従う流れから、エンジニア一人ひとり、特に若手がゼロから考えて、周りがそれをサポートしながら、良いプロダクトを作っていく流れにかわってきた感じはします。

それは会社のフェーズとも連動している気がしていて、新卒エンジニアの採用レベルが上がり、若手のスキルの底上げが起きた結果、江頭くんみたいに新卒の時からレベルの高い人材が増えてきました。組織全体としてもレベルが上がってきているからこそ「若手がゼロから考えて周りがフォローする」という状態だと思います。

ー 「強い個のエンジニアがゼロから考えて、周りがその高いレベルに食らいついていく」のと何が違うのでしょうか。

小久保:それも組織としてのあり方ですし、何が正解というわけではないです。強い個のエンジニアが先行して決めていき、そこに食らいついていければよいのですが、ともすると「あの人が言っているから正しいんだろうな」とか「あの人たちが決めてくれたから大丈夫だろう」みたいな受け身の姿勢にもなってしまいます。自戒の念も込めてですが、自分で考えることを放棄してしまいがちなので、だからこそ「自分で考える」ことを大切にしたいと思っています。

ー レベルの高いエンジニアからの技術継承は、具体的にどんな形で現れていますか?

江頭:設計思想レベルで似てきているかもしれないですね。

小久保:それはあるかも。お互い別プロジェクトですが、同じエンジニアと仕事をしていて、そのエンジニアは社内でも最速で新しい技術を習得するエンジニアなので、一緒に仕事をしていると思想のベクトルが似てくる気がします。江頭くんにもそういった思想が継承されている感じはしますね。

江頭:小久保さんに合わせたわけでもないのですが、細かいところまで考え方が似ていてびっくりしました。

小久保:Goのサーバー側のディレクトリ構成とかも大枠同じ。Kubernetesの構成を真似したのですが、そこの着眼点も思想は同じでした。マイクロサービスでありながら、モノレポジトリ。1つのレポジトリで全部サービスを管理するという方法を選択していたという。


こんなエンジニアを求めています

ー 新規開発局に求められるエンジニア像は何ですか?

小久保:技術だけでなく物事の価値を、絶対値で判断して受け入れられる人です。

人間なのでバイアスはかかると思いますが「この人がいいって言っているからいい」とか「この人が賛同していないからダメ」と思考停止して自分の頭で考えなくなってしまうのは良くないと思いっています。

それは例えば「新しい技術だから良い」とか「レガシーな技術だから使いたくない」みたいなバイアスにもつながりがちで、レガシーなシステムであっても今でも開発が続いていて、素晴らしい機能を提供しているライブラリもたくさんあります。

課題を解決するために、フラットに自分の頭で考えて、絶対値として評価した上で意思決定できる人が求められているかと思います。

そういう点では「素直でいいやつ」というのは、率直に物事の価値を判断できる人のことかもしれませんね。

▼サイバーエージェントでは、新規事業に携わりたいサーバーサイドエンジニアを募集しています!

エンジニアドリブンで新規プロダクト開発!サーバサイドエンジニア募集

株式会社サイバーエージェントでは一緒に働く仲間を募集しています
5 いいね!
5 いいね!
同じタグの記事
今週のランキング
株式会社サイバーエージェントからお誘い
この話題に共感したら、メンバーと話してみませんか?