最近、Discord内部の開発者エクスペリエンス・チームは、バックエンドとインフラ開発をLinuxベースのクラウド開発環境に移行した方法について語った。Coderとのコラボレーションにより、開発者は、MacBookの使用から、リモート開発環境のマシン上での作業に移行した。
Discordのシニア・ソフトウェア・エンジニアであるDenbeigh Stevens氏は、ブログの投稿でその道のりを詳しく説明している。Discordのエンジニアリング・チームは主にリモートで活動している。リモート開発マシンに移行する前、エンジニアリング・チームはMacとUbuntuシステムの両方でDiscordをセットアップできた。MacBookを装備した開発者たちは当初、ラップトップのプロビジョニングにHomebrewを使用していたが、そこでBrewのアップグレードが作業を中断させるという問題に直面した。
やがて開発者エクスペリエンス・チームは、開発プロセスにコンテナ化が欠けていることを認識した。組織が拡大するにつれ、チームは単一のLinuxベースの開発環境の必要性に気づいた。このため、彼らはクラウド開発者環境(CDE)を検討し、Coderの検討を開始した。
Discordのエンジニアの大半はVSCodeを利用しているため、 VS Codeのリモート開発エクステンションはこのシナリオにおいて有益だった。Discordのアプローチには、/home
ディレクトリを再起動後もそのまま維持することが含まれていた。この機能により、開発者はリポジトリ、設定、個人ツール、ワークスペースのカスタマイズを保存し、シームレスに作業を続けることができた。また、ワークスペース全体を再構築することなく、テンプレートやイメージを更新もできた。
Stevens氏は課題について、SSHによる遅延や、ネットワーク経由で大きなHTMLファイルやJavaScriptファイルを転送することが、保存と再構築のプロセスを遅くしていると述べた。そのため、エンジニアの中には、フロントエンドのタスクはローカルのラップトップで処理し、バックエンドのタスクはリモートマシンで処理することを好む者もいた。
出典:Discordはどのようにエンジニアリングをクラウド開発環境に移行したか
移行の初期には、開発コンテナの開発が行われた。これには、必要なシステム依存関係のインストール、ユーザーアカウントの設定、権限の設定、以前に必要だったソフトウェアのインストールなどが含まれる。このプロセスをサポートするために、Discordチームはインタビューを実施し、初期のフィードバックを収集し、また自分たちで実際に環境を使用してテストした。
Discord全体での採用を促進するため、 開発者エクスペリエンス・チームは、さまざまな部署から「チャンピオン」を探した。彼らはこれらのチャンピオンと協力し、問題の特定と解決、ビルドツールのベンチマーク、開発ワークフローを維持するためのネットワーク負荷テストを実施した。
これは、開発者エクスペリエンスに関連するHacker Newsでの興味深い議論と一致しているようだ。メンバーの1人、codingdave氏はこう述べた。「開発者エクスペリエンスは技術ではなく人に関するものだ。あなたはそれを改善するために技術を使うだろうが、開発者はあなたの顧客だ。彼らと話すのだ。」
また、移行にはしっかりとしたカットオーバー日が設定され、同時にスタッフにCoderへの移行を促した。
移行後、エンジニアたちはネットワークの遅延や頻繁な切断といった問題に直面した。もっとも深刻な結果を予測することは難しかったが、開発者エクスペリエンス・チームはCoderの早期サテライト機能を活用し、さまざまな地域にKubernetesクラスタを設置することで、レイテンシの問題を軽減することを目指した。
Stevens氏はまた、コミュニケーションとドキュメンテーションの改善の重要性についても熟考した。全従業員会議で今度の変更を発表し、早期にシグナルを出し、徹底的なベータテスト段階を実施したにもかかわらず、彼はこれらの分野で強化の余地があると指摘した。