Amebaの中堅・ベテランエンジニアが語る、サーバーサイドエンジニアのリアルな現場

Amebaは生誕17周年。クラウドのアカウント数200+、VM数6000+、リポジトリ数800+で成り立つ老舗サービスです。現在、システムをオンプレミスからAWSへ刷新・移行するプロジェクトを実施しています。そこで、2021年に新卒入社した新米エンジニアが、Amebaの中堅・ベテランエンジニアにサーバーサイドエンジニアの現状を深掘ってみました。

事業の成長スピードにシステムの整理が追いついていない

配属されて思ったのですが、Amebaのシステムって歴史が深いですよね

17年も経ってますからね〜(笑)。AmebaってPCブログから立ち上がったんですよ。その後、スマートフォンプラットフォームがサービスのハブになって、その下に色々なサービスが出来ました。事業の変遷を経て、今はブログメインになってますね。

これだけの歴史があると、システムの保守も大変ですよね

事業の成長スピードにシステムの整理が追いついていないのが現状ですね。事業的にはブログ中心に力を入れて売り上げを上げていこうとなっているのに、システム的に保守しなきゃいけない範囲はブログ以外にもたくさんあるんです。事業的にリソースを割くべきところと、システム的にリソースを割かなきゃいけないところがずれてるんです。

具体的にはどんな苦労があるんですか?

技術の多様さですね。事業の成長に合わせてチームの統廃合を繰り返して、今はAmebaのサーバーサイドチームは一つになりました。でも、チームの統廃合の過程で各チームの技術選定がバラバラだったんです。各チームリーダーが、「最近この技術きてるから使おう!」って言えば、その技術が採用されてたんですよ。

裁量の大きさゆえの問題ですね

統一的な技術選定が出来ていなかったので、過去のシステムを保守するためのキャッチアップの工数が大きいんですよ。一つ隣のチームのシステムを見ると、言語も違うしクラウドかオンプレミスかも違うみたいなことがありますね。

大きな組織レベルでの技術課題への挑戦と苦悩

澤田さんは新卒からAmebaに配属されたんですか?

そうですね。

配属当初からシステム規模の大きさは理解されてたんですか?

分かってませんでした(笑)。というのも、私が配属された時はチーム体制が今とは異なっていて、Amebaではなくブログのサーバーサイドチームという括りだったんです。

そうなんですね!現在はブログ以外のサービスも見られてますよね?

はい。たしかにキャッチアップしていくと、ドキュメントが最新じゃなかったり、フレームワークが遅れているなと思うことはありますね。

Amebaの一つのサーバーサイドチームとして、技術選定やドキュメントの整備などで属人化を防ぐ取り組みはしているんですか?


難しい問題ですね。システムの刷新などで一時的に、「統一的にやっていくぞ!」という動きは作れてると思います。だけど、長期的に見て継続メンテナンスできるようなドキュメントの整備とかは、各々の目線を合わせられてるかというと、そうではないですね。

課題を感じるのが、ドキュメントを読むときであって、書くときでは無いというずれも結構ありますよね。ちゃんとした知見を得たらそれに満足しちゃって、ドキュメントには還元しないまま放置されちゃうっていうのは、どの組織でもよくあることですからね。オンボーディングとかで新しく入ってくる人たちが、「このドキュメント古くない?」となるのは申し訳ないですね。

耳が痛い話です(笑)

動機付けをしてあげられていないんですよね。最近このツイートを見たんですけど。

最近ジョインした人事責任者に言われた一言にすごくハッとしました(part 2):「社員のオンボーディングって入社してから数ヶ月だと思ってないですか?会社のフェーズが変われば、求められるものが変わる。そのときは古参も含めて全員もう一度オンボーディングが必要。実は継続的なプロセスなんです。」

ハッとしましたね(笑)。たしかに新機能のリリースのタイミング、技術構成の変更のタイミングで、その都度ドキュメントの更新してるかなーと自問自答しました。

Amebaのサーバーサイドエンジニアに求めたいこと

Amebaのサーバーサイドチームでは、オーナーシップが求められる気がするのですが、どう思いますか?

たしかにそうですね。インシデント対応とかが当てはまるかもしれないですね。Amebaでは保守しなきゃいけないシステムの数が多いのに加えて、そのシステムを見れる人が少ないんですよね。だからインシデント対応も特定の人に偏っちゃうんですよね。


最近インシデント体制の変更がありましたね。

そうなんです。一旦は週替わりの担当が対応にあたって、インシデントの対応から終了までに責任を持つようにしました。障害復旧時間を可視化しつつ、みんなで協力して対応しましょうという取り組みですね。

現状を改善しようという取り組みは継続的に行っているんですね!他にはどんなプロジェクトが動いてるんですか?

大きいものとしては、老朽化した大規模システムのAWS移行・刷新プロジェクトを行っています。また、開発プロセスの指標を可視化して、長期的・根本的な生産性改善を目指した10xプロジェクトも進行中ですね。

最後に、Amebaのサーバーサイドチームでは、どんな人が働きやすいと思いますか?

まだまだ課題はたくさんあるけど、それらを綺麗にしていくことに快感を覚える人がいいですね。あまりメンテナンスされてなくて、仕様を理解するのが難しいシステムとかいっぱいあるけど、それをポジティブに捉えられる人は、ずっと楽しく仕事できると思います。

目の前にある壁に向かって一緒に頑張ってくれる人ですかね。特に新卒の方とかAmebaの広大なシステムを見ると、腰が引けちゃう人っていっぱいいると思うんです。それでも壁を乗り越えることにやりがいを見出せる人は働きやすいと思います。