0Pricing
DevOps Bootcamp · レッスン

Web・App・DB 層を連携させる

多層構成の展開順序を調整します。

「Web・App・DB 層を連携させる」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。

実際のアプリには層があります

一般的なスタックは、Webサーバー、アプリサーバー、データベースなどの層に分かれています。各層には独自の役割とデプロイ順序があります。🏗️

順序が重要です

通常は、まずデータベースを起動し、次にアプリ、最後にWeb層を起動します。層を順番どおりに設定しないと、ロールアウトに失敗します。

層ごとに1つのプレイ

1つのプレイブック内で、各層に専用のプレイを割り当てます。プレイは上から下へ実行されるため、その順序がデプロイ手順を表します。

- hosts: db
  roles: [postgres]

- hosts: app
  roles: [backend]

- hosts: web
  roles: [nginx]

グループを層に対応させる

db、app、web などのインベントリのグループは、各プレイが対象とするホストに対応します。インベントリはオーケストレーションの基盤です。

[db]
db01

[app]
app01
app02

[web]
web01
web02

層の間でデータを渡す

Web層では、アプリサーバーのIPアドレスが必要になることがよくあります。hostvars とグループを使ってそれらを読み取り、層同士を接続します。

backends: "{{ groups['app'] | map('extract', hostvars, 'ansible_host') | list }}"

層の準備が整うまで待つ

アプリを起動する前に、wait_for を使ってデータベースのポートが開いていることを確認します。これにより、サービスの起動が遅い場合でも先に進んでしまうのを防げます。

- ansible.builtin.wait_for:
    host: db01
    port: 5432
    timeout: 60

マイグレーションを1回だけ実行する

データベーススキーマの変更は1回だけ実行する必要があります。run_once と委任を組み合わせ、1台のアプリノードから共有DBをマイグレーションします。

- ansible.builtin.command: ./migrate.sh
  run_once: true
  delegate_to: app01

delegate_to で層をまたぐ

アプリのプレイから、タスクをWebホストに委任してWeb層を操作できます。1つのプレイブックで、すべての層を調整できます。

層にタグを付けて対象を絞って実行する

プレイに db、app、web などのタグを追加すると、1つの層だけが変更された場合に --tags を使ってその層だけを再デプロイできます。

- hosts: web
  tags: web
  roles: [nginx]

スタック全体を速やかに停止する

any_errors_fatal を設定すると、db層で発生した失敗によって実行全体が停止します。壊れた層を前提にアプリ層がデプロイされるのを防げます。

- hosts: db
  any_errors_fatal: true
  roles: [postgres]

スタック全体を1つのファイルにまとめる

複数のプレイを持つプレイブックは、デプロイのレシピになります。すべての層を順序どおりに定義し、層をまたぐ接続も1か所にまとめられます。

確認問題

層をどのような順序で実行するか確認しましょう。

まとめ

層ごとに1つのプレイをデプロイ順に定義し、グループ、hostvars、wait_for、委任を使って連携させます。✅

よくある質問

「Web・App・DB 層を連携させる」レッスンは無料ですか?

はい。「Web・App・DB 層を連携させる」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。

「Web・App・DB 層を連携させる」で何を学びますか?

多層構成の展開順序を調整します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

DevOps Bootcampを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「Web・App・DB 層を連携させる」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDevOps Bootcampレッスンでコードを書いて実行できますか?

はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. cli_command によるネットワークデバイスの自動化
  2. オーケストレーションのための delegate_to と run_once
  3. Web・App・DB 層を連携させる
  4. Load Balancer からの切り離しと再有効化
← DevOps Bootcampに戻る