質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

1回答

263閲覧

スキーマ変更を伴うサーバサイドプログラムのデプロイについて

rivero

総合スコア7

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

1クリップ

投稿2017/11/09 15:36

新しいバージョンのサーバ(APIサーバ)をデプロイする際に、DBスキーマの変更を伴うとします。
そうした場合にみなさんはどのようにして無停止でデプロイしているのかお聞きしたいです。

少し例をあげます。
・LB1台、APIサーバ1台、DBサーバ1台で現状サービスを展開しています(こんな構成無いかと思いますが。。)DBには以下のテーブルが登録されています

users - name (varchar(10)) - family_name (varchar(10))

APIサーバでリクエストを受けとり、nameやfamily_nameを登録したり参照したりしています。

新しいAPIサーバをデプロイすることになりました。
サービスを停止することなくデプロイしたいです。
新しいバージョンではスキーマに変更があり、family_nameではなくsurnameというカラムにリネームすることになりました。
よって新しいAPIサーバではsurnameというカラムを読み書きするように変更が加えられていますが、古いAPIサーバではfamily_nameというカラムを読み書きするままです。

こうした状況の場合、どのような手順でデプロイするのが妥当でしょうか。
例が稚拙でわかりにくく申し訳ないです。
まとめると、スキーマに変更があり尚且つ新旧のAPIサーバが一時的に混在するような状況のデプロイ方法を教えていただきたいです。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

状況がよくわかっていませんが、自分がやるとしたら、こんな感じでしょうか。

  1. データベース側に 新カラムを追加して、旧カラムの値を新カラムにコピー(もしくは変換)。
  2. データ更新トリガの設定。
  3. 新 API のリリース
  4. 旧 API の停止
  5. トリガの削除
  6. 新旧カラムの確認
  7. 旧カラムの削除

いずれにしてもテスト環境を用意して、十分にテストする必要があると思います。

投稿2017/11/10 09:08

CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rivero

2017/12/15 06:24

返答遅くなり申し訳ありません。 その後テスト環境を用意して、ご教授に従った手順でリリースリハーサルをしました。 同様の手順で本番環境へのリリースも完了し、無事サービス無停止でリリースすることができました。 リリースのための手順を明確にすると共に、リリースの自動化を将来見据えての質問だったのですが、 DBスキーマの変更を伴うとなるとなかなか自動化するの難しいなという印象でした。 ご教授ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問