レガシー、あるいは技術的負債(呼び方は自由)は、前進を目指す技術者にとって常に大きな課題であり、データセンター ソフトウェアをクラウドに移行するよう求められている現在ほどその課題が増したことはありません。
おそらく、レガシーアプリケーションを扱う上で最も大きな課題は、アプリケーションの作成時に誰が「所有者」であったかを特定することです。その所有者は、ほぼ確実に存在しなくなります。
実装チームによって残されたドキュメント(多くの場合、何年も前に作成されたもの)には、ほぼ確実に、少し(かなり)不十分な点が残ります。
これは問題です。時間の経過とともに蓄積され、移行時に影響を及ぼす依存関係を把握する必要があるからです。
マッピングと検出のプロセスを開始する必要があります。
レガシーデータセンターの有益なマップを作成するという仕事が、あまりにも頻繁に私に降りかかってきました。ありがたいことに、ネットワーク監視データには、時の流れにも消えることのない、手軽な手がかりがあります。それは、トラフィックの開始と終了に使われる通信ポートです。
通信トラフィックの取得は比較的安価です。最新のルーターはトラフィックをレポートするため、この測定方法ではすべてのVMやIPSを網羅する必要はなく、ルーターのみを対象とすれば十分です。同様に、DC内のアプリケーションのどの要素も隠蔽することは非常に困難です。何かを実行している場合、それは通信を行っており、特定のポートを使用しているからです。
最後に、開発者がデフォルトポートを変更することは非常に稀です。IP(運が良ければDNS名)とポートの組み合わせは通常一意なので、ポートを変更する必要性はほとんどありません。少しGoogle検索すれば、お好きなデータ形式でデフォルトのポート割り当てを取得できます。これは、何が起こっているのかを解明する上で重要な手がかりとなります。
下の図は、簡素化の4段階(合成データセンターのマップ)の例として示されています。複雑さ(曖昧さ)の順に並べると、以下のようになります。
- 異なる IP アドレス間の完全な元のトラフィック パターン。
- ポート番号の後のパターンは、DHCP トラフィックを除去するために使用されます。
- これらのポート番号をフィルタリングして DNS トラフィックを削除した後;
- 最後に、関連するポート番号によって識別されるバックアップ トラフィックです。
このプロセスが終わると、コミュニケーション構造はかなり明確になります。ただし、広く予想されるパターンとは異なる可能性があります。
簡素化の4つの段階 – 合成データセンターのマップ
このフィルタリング プロセスは、ポート番号に基づいて他のフィルタを使用してさらに続行できます。
データセンターの考古学におけるポートの重要性、そしてデフォルト設定を変更しない開発者の怠惰さは、いくら強調してもし過ぎることはありません。この情報がなければ、作業は不可能になる可能性が高いでしょう。
リバースエンジニアリング
残念ながら、大規模ITシステムの設計における新たなアプローチは、将来的にそれらを分解する能力にとって大きな脅威となっています。マイクロサービスアプローチは通常、HTTP(S)スタックを利用し、デフォルトでデフォルトポート80と443で通信します。
将来、データセンター考古学者が、ドキュメントが不十分な(おそらくクラウドベースの)システムに直面した場合、すべてのサーバーのコードを手動で検査しなければ、理解するのは不可能になる可能性が高いでしょう。IPアドレス80で通信するIPアドレスのグループが提示されるだけでも十分に困難ですが、少なくともパケット検査によって、使用されているAPIに関する手がかりが得られる可能性があります。しかし、IPアドレス443では、それさえも不可能でしょう。
現在、導入されているマイクロサービスシステムの数は比較的少ないため、この問題は遠い将来(IT分野では約5年)の問題となります。実際、マイクロサービスはDevOpsチームによって継続的に管理されていることが多いため、直接的なサポートや開発チーム(の愛)は決してなくなることはないと言えるでしょう。
しかし、時間の経過とともに現実は厳しくなり、システムは安定保守へと移行するでしょう。開発部門は不要で、運用部門が多少は必要になるかもしれません。中期的には、これらのシステムにおいてポートレベルでトラフィックを区別する試みがなされなければ、システムを分解し、必然的にレガシーフェーズに入った後に再び理解しようとする試みは、不可能になる可能性が高いでしょう。
この時点では、dev/null がこれらのシステムの唯一の有効な宛先である可能性があり、マイクロサービスのイベント ホライズンによって隠されています...そこからはどのシステムも戻ることができません。®