エンタープライズ レベルの Web アプリケーションを計画するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/106299

  •  01-07-2019
  •  | 
  •  

質問

私はフリーランスとしてのキャリアの中で、プロジェクト管理、予約/予約、電子メール管理などをサポートする中小企業向けの Web アプリケーションをいくつか開発しました。

私はこの仕事は気に入っていますが、最終的にはアプリケーションがメンテナンスの負担が非常に大きくなる点に達することに気付きました。6 か月前に書いたコードを振り返ると、修正や機能追加を行う前に、最初にコードをどのようにコーディングしたかを再学習するだけでしばらく時間を費やす必要があることがわかります。私はフレームワークを使用する練習をしようとしています (以前に Zend Framework を使用したことがあり、次のプロジェクトには Django を検討しています)

多くのユーザーを壊れることなく処理でき、かつコードを簡単に保守できるほどクリーンに保つことができるアプリケーションを計画するために、どのようなテクニックや戦略を使用していますか?どなたかお勧めの本や記事がありましたら、教えていただけると大変助かります。

役に立ちましたか?

解決

このテーマに関する優れた記事は確かにありますが、どれも実世界の経験に代わるものではありません。

保守性は、非常に小規模なプロジェクトを除いて、すぐに計画できるものではありません。これはプロジェクト全体を通じて気を配る必要があるものです。実際、事前に大量のクラスとインフラストラクチャ コードを作成すると、単純なスパゲッティ コードよりもさらに理解しにくいコードが生成される可能性があります。

そこで私からのアドバイスは、 既存のプロジェクトをクリーンアップする, 継続的にリファクタリングすることによって。変更するのが面倒だった部分に目を向け、理解しやすく、調整しやすい、よりシンプルな解決策を模索してください。コードがそれでもダメな場合は、最初から書き直すことを検討してください。

もっと記事を読んだり、新しいフレームワークを使用したからといって、新しいプロジェクトを開始して、それらが成功することを期待しないでください。代わりに、自分の失敗を特定してください。 既存 プロジェクトを修正し、 特定の 問題。コードを変更する必要があるときは常に、将来同様の変更をサポートするためにコードを再構築する方法を自問してください。とにかくこれがあなたがしなければならないことです。 意思 今後も同様の変化が起こるでしょう。

これらのリファクタリングを行うと、さまざまな問題に遭遇することになります。 具体的な質問 について質問したり、記事を読んだりできます。そうすることで、単に一般的な質問をしたり、メンテナンスやフレームワークに関する一般的な記事を読んだりするよりも多くのことを学ぶことができます。

コードのクリーンアップを開始する 今日. 。それを将来のプロジェクトに先延ばしにしないでください。


(ドキュメントについても同様です。全員の最初のドキュメントは非常にひどいものでした。数か月後には、内容が冗長すぎて、重要ではない内容で埋め尽くされていることが判明します。したがって、問題の解決策をドキュメントに追加してください。 本当に なぜなら、来年も同じような問題に直面する可能性が高いからです。これらの経験は、どの「良い書き方」のスタイル ガイドよりもあなたの文章スタイルを向上させます。)

他のヒント

正直に言うと、マーティン・ファウラーを見ることをお勧めします エンタープライズ アプリケーション アーキテクチャのパターン. 。アプリケーションをより組織化し、保守しやすくするための多くの方法について説明します。さらに、コードをより深く理解するために単体テストを使用することをお勧めします。ケント・ベックの本 テスト駆動開発 は、単体テストを通じてコードの変更に対処する方法を学ぶための優れたリソースです。

保守性を向上させるには、次のことが考えられます。

  • あなたが唯一の開発者である場合は、コーディング スタイルを採用し、それに固執してください。これにより、後で独自のコードをナビゲートするときに、実行できた可能性のあることと絶対に実行しないことについて自信が持てるようになります。どこを探すべきか、何を探すべきか、何を探すべきではないかを確信できれば、時間を大幅に節約できます。

  • 常に時間をかけてドキュメントを最新の状態に保ってください。タスクを開発計画に含めます。その時間を変更または新機能の一部として計画に含めます。

  • ドキュメントのバランスを保つ:いくつかの高レベルの図、意味のあるコメント。最良のコメントは、コード自体からは読み取れないことを示しています。ビジネス上の理由や、コードの特定の部分の背後にある「理由」など。

  • コード構造、フォルダー名、名前空間、オブジェクト、変数、およびルーチンの名前を最新の状態に保ち、実際の動作を反映したものにする取り組みを計画に組み込みます。これは保守性の向上に大いに役立ちます。スペードのことを常に「スペード」と呼びます。コードの大きなチャンクを避け、選択した言語内で利用可能な手段でコードを構造化し、チャンクに意味のある名前を付けます。

  • 結合度が低く、コヒーレンシーが高い。これらを実現するためのテクニックを常に最新の状態に保ってください。契約による設計、依存関係の注入、アスペクト、設計パターンなど。

  • タスク管理の観点から、非連続的な作業にはより多くの時間を見積もり、より高い料金を請求する必要があります。管理と分析のオーバーヘッドが大きいため(影響を含む各変更を管理し分析する必要があるため)、大規模な継続的プロジェクトや継続的なメンテナンスとは対照的に、時間をかけて分散する小さな非連続的な変更を行うには追加の時間が必要であることを、ためらわずに顧客に伝えてください。既存のシステムでは別途)。顧客が得られるメリットの 1 つは、システムの寿命が延びることです。もう 1 つは、必要に応じて他の人の助けを求める選択肢を保持するための正確な文書です。どちらも顧客の投資を保護し、強力なセールスポイントです。

  • まだソース管理を行っていない場合は、ソース管理を使用します

  • 顧客に対して行ったすべてのことと重要なコミュニケーション (単純なコンピューターまたは紙ベースの CMS) の詳細なログを保管します。各課題の前に記憶をリフレッシュしてください。

  • 未解決の問題、アイデア、顧客ごとの提案のログを保管します。課題を始める前にもう一度記憶をリフレッシュしてください。

  • 導入後のサポートをどのように実施するかを事前に計画し、お客様と話し合います。システムの保守を容易にします。パラメータ化、監視ツール、組み込み健全性チェックを計画します。導入後のサポートを初期契約の一部として顧客に販売します。

  • 導入後のサポートを提供するだけの人が必要な場合でも、管理者を雇って拡張します。

推奨読書:

古い W​​eb アプリケーションを可用性が非常に高く、需要の高い Web アプリケーションに成長させることに貢献した私ができる最も重要なアドバイスは、 すべて。 - 特に

  1. 適切な MVC 原則とフレームワークを使用して、ビュー層をビジネス ロジックやデータ モデルから分離します。
  2. 堅牢な永続層を使用して、ビジネス ロジックをデータ モデルに結合しないようにする
  3. ステートレス性と非同期動作を計画します。

eBay がこれらの問題にどのように取り組んでいるかについての優れた記事は次のとおりです。http://www.infoq.com/articles/ebay-scalability-best-practices

  1. フレームワーク/MVCシステムを使用します。コードがより組織化され、集中化されるほど、より良いものになります。

  2. Memcache を使用してみてください。PHP には拡張機能が組み込まれており、セットアップには約 10 分、アプリケーションを組み込むにはさらに 20 分かかります。アプリケーションごとに、必要なものを何でもキャッシュできます。私はすべてのデータベース レコードをその中にキャッシュします。それはさまようのです。

  3. まだ使用していない場合は、Subversion などのソース管理システムを使用することをお勧めします。

SharePoint の使用を検討する必要があります。これは、あなたが言及したすべてを実行するようにすでに設計されている環境であり、おそらくあなたが考えたこともなかった他の多くの機能を備えています(しかし、おそらく将来必要になるでしょう :-) )

ここ公式サイトからの情報です。
使用できる 2 つの異なる SharePoint 環境があります。Windows Sharepoint Services (WSS) または Microsoft Office Sharepoint Server (MOSS)。WSS は無料で、Windows Server 2003 に同梱されています。一方、MOSS は無料ではありませんが、より多くの機能を備えており、企業のニーズをほぼすべてカバーします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top