ビジネスを中断することなくPHPアプリケーションを最新化する方法
近代化とは、デフォルトでシステムを書き換えることではありません。それは、変更対応能力を回復し、リスクを軽減し、チームが運用できる基盤へとシステムを移行することを意味します。
- 技術を選択する前に、診断を行いましょう。
- 重要なデータフローとデータを保護する。
- 安定化、互換性、再設計をそれぞれ別々に行う。
- 小さな変更はロールバック機能を使って配信する。
ガイドを活用して、実際の意思決定の準備をしましょう。
目的は読書を終えることではなく、技術的およびビジネス的な会話の質を高めることである。
まず、どの状況を変える必要があるのか、誰がその結果に左右されるのか、そしてどの制約を無視できないのかを明確に定義することから始めましょう。事実と認識を区別するために、十分な事例、指標、インシデント、アーキテクチャ、過去の決定事項を収集してください。このガイドは、そうした証拠を整理するのに役立ちますが、システム固有の知識に取って代わるものではありません。
次に、影響、リスク、可逆性、チームの能力に基づいて選択肢を比較します。有益な結論では、次に取るべき適切なステップ、それによって得られるべき証拠、そして計画の見直しが必要となる条件を明確にします。これにより、一般的な推奨事項が、修正が困難な投資となることを防ぎます。
- 準備する背景、証拠、制約、そして所有者。
- チャレンジ選択肢、前提条件、リスク、および変更コスト。
- 決める次のステップは、境界と成功基準です。
- レビュー結果や状況によって意思決定が変わる。
1. 「近代化」の意味を定義する
目的は、サポートの回復、インシデントの削減、納品の迅速化、または依存関係の解消などです。新しいバージョンは結果ではなく、技術的な条件です。解決策を策定する前に、ユーザー、チーム、運用担当者にとって目に見える変化を定義してください。
- ビジネス面および技術面での成果。
- 中断できない流れ。
- リスクを軽減する。
- 変化を持続させるための能力が備わっている。
2. ベースラインを構築する
コード、バージョン、依存関係、データ、統合、環境、および操作手順を一覧化する。ドキュメントをランタイムと照合する。マップは完璧である必要はないが、変更の開始点とそれが及ぼす可能性のある影響を明確に説明する必要がある。
- 再現可能なリポジトリとリリース。
- 直接的依存関係と推移的依存関係。
- データおよび統合に関する所有権。
- 現在発生しているインシデント、パフォーマンス、およびサポート状況。
3. 戦略を選択する
保守、リファクタリング、段階的置換、書き換えは、永続的な解決策ではありません。プログラムは、即時安定化、実行時アップグレード、内部境界設定、選択的置換などを組み合わせて実行できます。
- リスクが管理されており、変化が少ない場合は維持する。
- ルールは重要だが、境界が進化を阻害する場合にリファクタリングを行う。
- 機能に独自の境界とライフサイクルがある場合に抽出する。
- 計画的な移行、同等性、および廃止の場合のみ書き換えてください。
4. 行動を保護する
構造変更を行う前に、最も影響の大きい業務プロセスを中心に調査を実施しましょう。自動化、契約、テストデータ、回帰分析スクリプトを組み合わせます。目標は、抽象的なパーセンテージを追い求めることではなく、逸脱を検出することです。
- フローと受け入れ基準。
- 代表的なデータとプライバシー。
- 外部インターフェースと副作用。
- 運用基準値。
5.段階的に実施する
すべてのフェーズにおいて、リスクを軽減するか、機能を強化する必要があります。エントリー、エグジット、エビデンス、オーナー、ロールバックを明確に定義してください。互換性移行と無関係な再設計を混在させると、障害の特定が困難になるため、混在させないようにしてください。
- 小さくても、目に見える変化。
- 安全性を高めるための一時的な互換性。
- データ移行のリハーサル。
- リリースごとに観察を行う。
6. 緊密な知識と業務
近代化は、チームがシステムのインストール、変更、リリース、監視、復旧を行えるようになった時点で完了します。決定事項を記録し、一時的な手順を削除することで、プログラムが新たな負債層を生み出さないようにします。
- アーキテクチャと決定事項を更新しました。
- ランブック、アラート、および検証済みのバックアップ。
- 古い依存関係は廃止されました。
- オーナーとの間で未処理の案件が残っている。
この決定に関連するコンテンツ
診断、処置、または関連する経験を継続してください。
ガイドをアプリケーションに適用してください
私たちは、評価を実施に結びつけることなく、状況、証拠、選択肢を検討します。