ソフトウェア開発ライフサイクルとコードデプロイ手法

開発プロジェクトのフェーズ

プロジェクトは以下の主要フェーズを経て進行する:

  • 要件定義:開発マネージャーがタスクを分割し、チームメンバーのスキルと人数を考慮してアサインする。
  • 開発:各メンバーが担当モジュールを開発。統合前に全開発メンバーが協力して結合テスト(インタグレーションテスト)を実施。
  • テスト:品質保証チームが機能検証を実施。
  • デプロイ:運用チームが本番環境にリリース。
  • 運用・保守:システムの監視と継続的な改善。

開発環境の種類と役割

個人開発環境
  • デバイス:個人所有のノートPCまたは会社支給PC。
  • 特徴:環境構成(ソフトウェアバージョン、ツールチェーンなど)は開発者ごとに異なる可能性がある。
  • 作業内容:個別モジュールや機能の実装。
  • 責任者:開発者本人。
  • ゴール:担当タスクの完了とモジュール開発の終了。
共通開発環境(内部サーバ)
  • インフラ:社内サーバ。
  • 特徴:本番環境と同一構成。
  • 作業内容:モジュール間の結合テスト。
  • 参加者:全開発チーム。
  • ゴール:全機能の統合と開発完了確認。
テスト環境
  • インフラ:社内サーバ(本番同等構成)。
  • 作業内容:バグ検出と機能検証(いわゆる「つっこみ」)。
  • 担当:QAチーム。
  • ゴール:仕様通りの動作保証。
プレ本番環境(ステージング)
  • インフラ:本番サーバ群の一部(本番同等構成)。
  • 作業内容
    • 決済機能の検証
    • 負荷試験
    • セキュリティ対策の最終確認
  • 担当:運用(SRE/DevOps)チーム。
  • ゴール:本番投入前の最終品質保証。
本番環境
  • インフラ:公開サーバ群(パブリックIPを持つクラウドまたはオンプレミス)。
  • 作業内容:コードのデプロイとサービス公開。
  • 担当:運用チーム。
  • ゴール:ユーザーへの安定したサービス提供。

コードデプロイの実践

デプロイとは何か?

テストを通過し、品質が保証されたコードを、パブリックにアクセス可能なサーバ(例:AWS、Azure、Alibaba Cloud、Tencent Cloud)に配置し、Webサービスとして公開すること。

デプロイ手法

  • 手動デプロイ:遅く、エラーが多く、セキュリティリスクが高い。
  • スクリプトによる自動デプロイ:高速、再現性があり、安全。

デプロイフロー

ソースコードの取得

コードはバージョン管理システムから取得する:

  • 集中型:Subversion (SVN)
  • 分散型:Git

企業では、プライベートGitリポジトリ(例:GitLab)を社内またはクラウド上に構築することが一般的。アクセス権限はプロジェクトメンバーに限定され、ロールに応じて「開発」「管理」「閲覧」などの権限が付与される。コード変更はコミットハッシュ(バージョンID)で追跡される。

コードのパッケージ化

目的:

  • 転送ファイル数の削減
  • 転送データ量の圧縮
  • ネットワーク転送効率の向上

代表的な形式:

  • Windows:ZIP、RAR
  • Linux:tar.gz、ZIP
コードの転送

ネットワーク接続ありの場合

  • Git(直接プル)
  • FTP
  • SCP
  • 共有ディレクトリ経由のcp
  • rsync

ネットワーク接続なしの場合

  • USBメモリや外付けHDDなどの物理メディア
SCPによる転送例

ローカルからリモートサーバへファイルを送信:

scp app_release.tar.gz user@192.168.56.12:/opt/deploy/

リモートサーバからローカルへファイルを取得:

scp user@192.168.56.12:/opt/deploy/app_release.tar.gz ./

タグ: Git SCP DevOps CI-CD Deployment

5月14日 19:08 投稿