開発サーバーとローカル開発


9

私がこれまでに取り組んだ2つのプロジェクトでは、チームは開発サーバーよりもローカル開発環境を好みます。

あるプロジェクトリーダーは、インターネット接続を必要としないため、ローカルの方が優れていると述べました。しかし、これは開発時に想定されているようです。

通常どちらが良いですか?


4
どちらが優れているかはわかりませんが、どちらにも長所と短所があります。それは本当に状況次第です。
DFord 2013年

ここでの答えはそれが依存する古典です-最終的にそれは便利さの問題です。複雑なアーキテクチャの場合、ローカルサービスと共有リソースが混在することは珍しいことではありません(たとえば、ローカルだけでなく、読み取り専用のほとんど静的なデータストアも、そのための開発サーバーを指すだけです)。重要なことは、代表的な環境で開発していること、および完全に統合された環境で実行できる優れたテストがあることに満足していることです。
Ant P

回答:


13

ローカルで実行することの利点は、他の人に影響を与えたり妨げたりせずに作業できることです。中央開発サーバーの利点は、変更が他のユーザーが行っている変更にどのように影響し、相互作用するかをテストできることです。
理想的には両方が欲しいです。ユニットテストをローカルで開発および実行して、変更に慣れるまで変更を分離し、それらをチームサーバーに統合して、テストシステムに移行する前に変更の統合を確認できます。

ラップトップのローカルサーバーのもう1つの利点は、会社のネットワークにアクセスできないため、開発サーバーにアクセスできないリモートで作業できることです。


9

実際には3つのオプションがあります。

地域開発

  • 利点:
    • ほとんどの開発ツールで簡単に操作できます
    • インターネット接続の必要はありません
    • 他の開発者には影響しません
  • 欠点:
    • 基盤となるOSに依存
    • ローカルマシンであらゆる種類のサーバーサービスを実行する必要があるかもしれません
    • 環境は生産とはかなり異なる場合があります

ローカル仮想マシン

  • 利点:
    • フォルダ共有を適切に設定すれば、ほとんどの開発ツールでかなり簡単に操作できます
    • インターネット接続の必要はありません
    • 他の開発者には影響しません
    • 環境は生産と実質的に同じかもしれません
    • 仮想マシン内で開始/停止されたサーバーサービス
  • 欠点:
    • 少し多くのリソースが必要です(主にRAMの量、CPUは最新のハードウェア仮想化サポートの問題ではありません)。
    • サーバーに直接接続する一部のローカルデバッグツールが機能しない

共有開発サーバー

  • 利点:
    • 環境は生産と実質的に同じかもしれません
    • サーバー上のサーバーサービス
  • 欠点:
    • リモートアクセス
    • 他の開発者に影響する変更
    • はるかに難しいデバッグ(リモートツールまたはログを使用)

最適なソリューション

機能の自己完結型の部分を完了し、コードが完全に破損していないことを確認したら、ローカル開発オプションのいずれかを使用し、共有開発サーバーにプッシュします。


3

実際の開発環境は、IT部門/会社がどのように組織され、運営されているかに大きく依存します。一般に、閉じた開発環境は運用環境の環境と一致しています。

たとえば、インターネットアクセスを必要としないスタンドアロンのデスクトップアプリケーションを開発している場合は、もちろんローカルの開発環境でも問題ありません。

一方、リモートサーバー/データベースなどとの通信を必要とするデスクトップアプリケーションを開発していて、これをシミュレーションするためのネットワーク接続がない場合は、ネットワークの遅延、セキュリティの問題が原因で、本番環境に追加のバグが見つかる場合があります。

インターネット/クラウドアプリケーションを開発している場合は、アプリケーションを開発するためにインターネットが必要になる可能性がありますが、テストと検証にはアクセスが必要です。

ところで、開発サーバーをローカルネットワークに接続するのにインターネット接続は必要ありません。


2

両方して

作業が終了し、すべてテストされるまで、ローカル開発。

1日の終わりに共有サーバーにプッシュし、統合テストを実行して、何も壊していないことを確認します。

どうして?

  • ローカルでコーディングする方が高速です。テスト間のステップが減り、統合の心配が減ります。

  • 共有サーバーにプッシュした後でのみ障害が発生すると、障害の分離がより簡単になります。ローカルで正常に動作することを知っているので、共有サーバーとの統合方法と関係があるはずです。共有サーバーで直接作業した場合、バグを絞り込むのは特に困難です。

私はそれを次のようにします:

1人の担当者が1日の終わりに変更をプッシュすると、すべての統合テストが実行され、失敗した場合は、誰がコードを破ってプロジェクトに失敗したかが正確にわかります。変更をロールバックし、ローカルで問題を修正してから、もう一度プッシュして、すべてのテストがパスするまで繰り返し、次に次の担当者に伝えます。


1

プロジェクトをどのように提供するかに大きく依存します。中心的な開発環境を持ついくつかの引数は次のとおりです。

品質管理:テストをどこまで進めたいですか?ローカル開発環境では、テスト機能に制約があります。仮想テスト環境は、負荷テストと自動システムテストに適しています。

中央インフラストラクチャは、開発/テスト/配信サイクルの短縮に役立ちます。したがって、継続的な配信を実装します。

中央開発サーバーの追加の利点は、ソース管理、タスク管理、中央ビルドなどです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.