この記事は、リレーブログ企画「チーム紹介」の記事です。
ニフティでシニアエンジニアをしている伊達です。今回は、私がEMをしている第一開発チームを紹介いたします(伊達については社員インタビューをご覧ください)。
第一開発チームとは
第一開発チームはいくつかの役割を持っています。
一つ目は、@niftyトップページ、@nifty天気予報、@niftyビジネスといった@niftyの接続会員のお客様向けのポータルサイトや有償コンテンツ、あるいはニフティキッズのような広く子どもたちのためのサイトの開発と運用をしています。
二つ目は、静的なサイトを運用するためのCMS基盤の提供です。@niftyトップページはNext.jsのアプリケーションとして開発しているのに対して、こちらはコンテンツの管理や静的ページの生成の機能をニフティ社内のサイト運用者向けに提供しています。
こちらは旧来のCMS基盤から新基盤への移行が進んでおり、以下の記事に詳しいです。
三つ目は、エンジニア向けのツールや基盤の提供です。GitHub、Notion、Zapier、Pingdomといったエンジニアの業務に必要なSaaSの管理や利用促進を行ってます。
最後に四つ目として、全社へのSRE推進も行っています。詳しくはインタビュー記事をご覧ください。最近はPagerDutyを重要なサービスに導入して障害からの復旧を早くする活動などを行っています。
レガシーとの戦い
やっていることは多岐に渡っていますが、ここ数年行っていることは「レガシーなシステムや仕組みを新しいシステムや仕組みに変えていくことで、素早く開発してお客様に価値を届けられるチームにしよう」ということです。
@niftyトップページ、@search、@nifty天気予報などは、2000年代に作られたシステムを適宜メンテナンスしながら使ってきました。サイトを運用するという面では問題なかったのですが、Core Web Vitalsのようなユーザ体験の指標を改善するには最近のフロントエンド技術の採用が近道ですし、機能開発を素早く行うにはGitHub/GitHub Actionsを活用した開発・CI/CDフローに適したシステムである必要がありました。こういった技術的負債の解消のため、チーム内で要件定義や技術選定から行って順次新しいシステムに置き換えています。
結果、クラウドにはAWS、フロントエンドにはReact/Next.js/TypeScript、バックエンドにはGo、IaCにはTerraformを採用することが多く、チーム内での共通の技術スタックが徐々に整いつつあります。
システムは作ったときからレガシー化が始まります。せっかく刷新したシステムが誰もわからない、手を入れられない代物にならないようにする取り組みもしています。
ドキュメントの面ではDesign Docs、ADRを作るようにしており、なるべくドキュメント作成を軽量にしながら意図を残そうとしています。
ADRについては以下の記事を参照ください。
さて、今回はチームの役割と最近の取り組みについて紹介しました。また機会があればプロダクトやメンバーについて紹介したいと思います。
次回のチーム紹介記事は同じ会員システムグループの第二開発チームの松尾さんです。