理想のステージ設計のメモ

GitHub を使ってシステムの開発を行う際の理想のステージ設計のメモです。

用意するステージ

  • production 環境
  • development 環境
  • feature 環境

各ステージの役割

共通事項

  • データベースなどのシステムが利用する外部リソースは全ての環境で独立しています。
  • 利用する外部リソースもコードで管理されており、GitHub にプッシュすると自動的に対応する環境にデプロイが行われます。

production 環境

  • ユーザーに提供される環境です。
  • master ブランチにマージされたらこの環境に自動的にデプロイされます。

development 環境

  • ユーザーに提供されない環境です。
  • リリース前に最終確認を行うための環境です。master ブランチとのマージを強制する目的があります。
  • データを含めて production 環境と限りなく近づけますが、個人情報はマスクされています。
  • develop ブランチにマージされたらこの環境に自動的にデプロイされます。

feature 環境

  • ユーザーに提供されない環境です。
  • データを含めて production 環境と限りなく近づけますが、個人情報はマスクされています。
  • master ブランチと develop ブランチ以外のブランチにプッシュされたら、それぞれのブランチに対応する feature 環境に自動的にデプロイされます。つまり、feature 環境の数は master ブランチと develop ブランチ以外のブランチの数と一致します。
  • バックエンドに AWSGCP のようなクラウドのリソースが利用されていても、全ての feature 環境ごとに作成されます。インフラストラクチャーの構成の変更も各 feature 環境で検証することができます。

開発フロー

  • develop ブランチからチェックアウトして新しい開発用のブランチ(feature 環境)を作成します。
  • 各 feature 環境で動作確認が完了したら、develop ブランチにマージします。
  • develop ブランチで問題が見つからなければ、master ブランチにマージします。

Twitter の OAuth で Access Token を得るまでの流れ

  • コンシューマーは consumer_key と consumer_secret を取得しておく

  • コンシューマーは consumer_key と consumer_secret を使って request_token(oauth_token) を取得する

  • コンシューマーは request_token(oauth_token) を使って認可画面の URL を生成する

  • ユーザーに Twitter の認可画面の URL にアクセスしてもらう

  • ユーザーに Twitter の認可画面でコンシューマーに対して認可してもらう

  • Twitter は oauth_verifier を付けてコンシューマーが指定した URL にリダイレクトする

  • コンシューマーは下記を使って access_token(oauth_token) と access_token_secret(oauth_token_secret) を取得する

    • oauth_verifier
    • request_token
    • request_token_secret
  • コンシューマーは access_token(oauth_token) と access_token_secret(oauth_token_secret) を使って Twitter API を呼ぶ

docker build コマンドの t オプションでイメージに任意の名前を付けることができる

sudo docker build . -t saitama
  • .: カレントディレクトリに存在する Dockerfile を参照する。
  • -t saitama: 生成するイメージに saitama という名前を付ける。

docker run コマンドの例

sudo docker run -d -p 8877:80 -v /home/hoge/moge:/var/www/html php5.6 
  • Docker コンテナを実行する。
  • -d: バックグラウンドで実行する。
  • -p 8877:80: ホスト側の8877番ボートをDockerコンテナの80番ポートに転送する。言い換えると、ホスト側の8877番ボートにアクセスすれば、Dockerコンテナの80番ポートにアクセスすることができる。
  • -v /home/hoge/moge:/var/www/html: ホスト側の /home/hoge/moge ディレクトリをDockerコンテナ内の /var/www/html にマウントする。言い換えると、ホスト側の /home/hoge/moge ディレクトリにDockerコンテナ内の /var/www/html ディレクトリからアクセスできるようになる。
  • php5.6: コンテナを生成するときに使用するDockerイメージ名を指定する。

プライベートIPアドレス早見表

クラス 範囲 サブネットマスク CIDR表記 IPアドレスの数
クラスA 10.0.0.0~10.255.255.255 255.0.0.0 8 16,777,216
クラスB 172.16.0.0~172.31.255.255 255.240.0.0 12 1,048,576
クラスC 192.168.0.0~192.168.255.255 255.255.0.0 16 65,536