...または、コードをデプロイするために他の人 (サーバーを管理する人) を経由する必要がありますか?
誰もが稼働中の運用サーバーにログオンできないというポリシーは理解していますが、稼働中のコード、データベース、およびファイルにアクセスできるようにしたいと考えています。
他のみんなはどうですか?
...または、コードをデプロイするために他の人 (サーバーを管理する人) を経由する必要がありますか?
誰もが稼働中の運用サーバーにログオンできないというポリシーは理解していますが、稼働中のコード、データベース、およびファイルにアクセスできるようにしたいと考えています。
他のみんなはどうですか?
すべての環境はわずかに異なります。それに比べて、あなたは何があなたのために働くかを決定しなければなりません。たとえば、Amazonは開発者に独自のコードを作成させますが、一部の開発者はこれを嫌いますが、バグ数を低く抑えるのはその環境の機能です(amazon.comで最後にバグを見つけたのはいつですか?)。
他の人はより厳密なQAプロセスを望んでいるので、展開の世話をする運用部門を作成しますが、会社に否定的な雰囲気を作り出す傾向があることがわかりました。彼らは自分の役割を正当化することで報われます。世界中。開発者が仕事に長けている場合、報酬が何らかの形でパフォーマンスに関連していると、恨みが忍び寄る可能性があります。
個人的には、スタック全体の面倒を見る傾向がありますが、ハードウェア(EC2、Herokuなど)についての心配が少なくなり、アプリの機能に重点を置くことができるプロバイダーに移行することが増えています。私は個人的にコードとバグを所有するのが好きです。それは、バグチケットを抑えることに明らかに動機付けられていることを意味します。開いているチケットはすべて、作業したい新機能の遅延です。
それぞれ独自に。
構成管理グループ、または開発グループ以外の誰かがコードを実稼働環境にデプロイすることには、利点があります。そのほとんどは、リリースの厳密さと監査の履歴を強制するのに役立ちます。理想的には、構成管理チームはスクリプトによってコードをリリースする必要があります。スクリプトは、特定のタグのコードリポジトリからプルし、特定のサーバーにリリースします。そうすることで、途中のミスを最小限に抑えることができます。
開発チームには、本番データに対する読み取り専用の権限と、ログファイルを表示する機能が必要だったと思います。これにより、問題のデバッグが容易になります。新しいバージョンのコードでもデータベースの更新が必要な場合は、もちろん、構成管理チームもそれらの変更をスクリプトで展開する必要があります。
I just deployed something to a live environment today. I also have access to the live database.
This has been known to cause some epic failures in the past. Sometimes somebody dropped a table on the production environment instead of a development environment. However, I see little advantage in another person doing the releasing, especially when he is not that acquainted with the software.
理想的なリリース手順のフローは次のとおりです(私の小さな世界では):
会社の厳格さに応じて、開発者はライブリリースにアクセスできる場合とできない場合があります。特に、大企業の場合はそうです。
それはすべて、会社が実施している手順によって異なります。他のものより柔軟なものもあります。私たちの組織は、本番環境にアクセスできる開発者から離れつつあります。これで、すべてがQAのプロセス、次に操作(コードの展開と保守を担当する)に従う必要があります。インシデントは少なくなりますが、バグ修正時間は長くなると思います。
私が契約した最後の場所には、運用サーバーでの展開と構成を担当する特定のグループの人々がいます。
すべてのコードをvcsにチェックインする必要があり、ここでコードをデプロイしました。そのため、コードが公開された後、コードに変更を加えるための「アクセス」はありません。緊急の展開でない限り、彼らは新しい/変更されたコードを週に2回展開しました。
上記の開発およびテスト環境への回答。開発に使用されない専用の別のビルド サーバーを用意することも非常に重要です。リポジトリからソースコードを取得し、コンパイルしてディストリビューション (Java ワールドの EAR または WAR ファイル) を作成し、それをテスト環境などにデプロイします。
このビルド サーバーは、CI 環境をホストし、定期的に自動化された毎日のビルドを実行することもできます。