BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Visual StudioによってNPMレジストリに障害が発生

Visual StudioによってNPMレジストリに障害が発生

原文(投稿日:2016/11/08)へのリンク

MicrosoftがVS Code 1.7.1をローンチした。npmレジストリに障害を発生させた1.7に続くリリースだ。

VS Code 1.7は自動タイプ取得(ATA / Automatic Type Acquisition)を備えていた。これは開発者のpackage.jsonファイルを監視して,すべての依存関係に対する型定義をファイルシステム上のキャッシュに自動インストールすることにより,package.jsonの依存関係をIntelliSenseに反映する上で,開発者の手作業による型タイプ定義のインストールに頼らないようにすることを目的としたものだ。

プロジェクトマネージャのWade Anderson氏がMicrosoftの1.7 Rollback Incident Reportに記したところによると,チームがATAを1.7で出荷した後,

11月2日のPST午後4:12分,私たちはnpmからの連絡を受けました。彼らはレジストリアクティビティ上に,@typeスコープ下の存在しないパッケージにアクセスしようとするクライアントからの,非常に大きなスパイクを確認していました。ピーク時にはこれらの要求が全トラフィックの10%(豆知識: VS Codeユーザはインド国内からとほぼ同じ量のリクエストを送信していました)に達し,間もなく彼らのサービスを混乱させていたのです。

npmのDevOpsチームはこの意図しないDDoSに迅速に対応し,問題がVS Code 1.7リリースからのものであることを突き止めました。問題になったのは,存在しないパッケージに対する大量の要求だったのです。

Anderson氏は,アプリケーションキャッシュにないモジュールを追加するために@types/{module}でnpmに要求する前に,TypeScript言語サーバがpackage.jsonにリストされているモジュールとそのアプリケーションキャッシュを照合するべきだった,と説明している。

“新たなタイプ定義ファイルが@typesスコープに追加されることを見越して,存在しないモジュールに対する要求がプロジェクトあるいはフォルダをオープンする度に実行されて,npmが404応答を発生させる原因になっていました。@typesのスコープ下に存在しないモジュール数のため,短時間に発生した大量の404がnpmの可用性に影響を与えていたのです”,とAnderson氏は述べている。

ATAからの意図しないDDoSとは別に1.7リリースには,重要なアップデートが数多く提供されている。例えばHTML内のCSS補完では,開発者は以下の例で示すように,HTML内に埋め込まれたCSSのコード補完や検証,スタイルに関するカラーの注釈などを利用することができる。

Microsoftのブログ記事によると,今回のリリースには'マルチターゲットデバッグ’の初期実装も含まれており,VS Codeの単一インスタンス内で複数のデバッグセッションを同時に起動することができる。このアップデートによって,エクステンションおよびそのデバッグアダプタと,言語サーバとの同時デバッグ,クライアントとサーバを単一プロジェクトフォルダからデバッグ,クラスタ化されたプログラムのデバッグ,といった操作が可能になる。

1.7ではさらに,Node.jsのデバッグ機能,ほとんど変更されない属性を灰色で表示,使用頻度の少ない属性の削除,ドキュメントの書き直しと改善,コメントとオンラインドキュメントへのリンクの追加などが行われている。

VC CodeチームはTypeScriptチームの協力を得ながらATAの“納得できる修正”を検討中だ,とAnderson氏は述べている。

 
 

この記事を評価

関連性
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

BT