1

最初は PHP アプリケーションとして、次に Rails とのハイブリッドとして、そして現在は完全に Rails で実行されている実稼働システムがあります。いつ頃からあるのかは不明です。最も古い git commit は 5 年前のものです。

目標は、どんな犠牲を払ってもシステムを稼働させ続けることです。何も壊れない限り、どのコードを使用しても問題ありません。現在はRailsのバージョン3.2.33です。

gem をアップグレードしないと、陳腐化してデプロイできなくなる可能性があります。アップグレードすると、潜在的なバグが入り込む原因となるコードに変更を加える必要があります。コードの腐敗だけでなく、AWS の停止によるダウンタイムにも直面します。

何も壊れないようにするための最初のステップは何ですか? キュウリ (統合) テストの作成に何ヶ月も費やしましたが、すべてのエッジ ケースをカバーするのは困難です。アプリは非常に長く実行されているため、ほとんどのバグは修正されており、新しい例外はほとんどありません. テストは最初から優先事項ではなかったため、ほとんどのコードは文書化されていません。

4

3 に答える 3

4

正直なところ、Ruby on Rails はこの種のアプリケーションには理想的ではありません。Ruby と Rails はどちらも非常に積極的なリリース スケジュールを持っており、Rails は後方互換性を捨てることを特に恐れていません。Rails は、物事が常に変化するアジャイル開発には最適ですが、長期的な安定性は犠牲になります。

あなたのアプリケーションは十分に大きいので、他のアプリケーションに切り替えたくないと思います。たとえば、 Sinatraはあまり変化せず、より安定したオプションになります。

Rails に固執している場合は、できるだけ多くの gem 依存関係を取り除くことをお勧めします。それらが開発されなくなったり、バグや脆弱性が導入される可能性があるという危険は常にあります。

また、可能な限り、Rails に依存するコードよりも PORO (プレーンな古い Ruby オブジェクト) を優先することをお勧めします。通常はより多くの作業が必要ですが、最終的にはより安定した再利用可能なコードが得られます。

このようなアプリケーションに入れたい以上の作業になる可能性があることは承知していますが、それが私の最善のアドバイスです。

于 2015-10-30T10:43:05.793 に答える