0Pricing
DevOps Bootcamp · บทเรียน

ประสานชั้น Web, App และ DB

จัดลำดับการนำระบบหลายชั้นออกใช้

ประสานชั้น Web, App และ DB เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

แอปจริงมีหลายชั้น

สแตกทั่วไปจะแบ่งออกเป็นชั้นต่าง ๆ ได้แก่ เซิร์ฟเวอร์เว็บ เซิร์ฟเวอร์แอป และฐานข้อมูล แต่ละชั้นมีบทบาทและลำดับการนำไปใช้งานเป็นของตนเอง 🏗️

ลำดับมีความสำคัญ

โดยทั่วไปคุณจะเริ่มเปิดใช้งานฐานข้อมูลก่อน จากนั้นจึงเป็นแอป แล้วจึงเป็นชั้นเว็บ การกำหนดค่าชั้นต่าง ๆ ผิดลำดับจะทำให้การเปิดตัวล้มเหลว

หนึ่งเพลย์ต่อหนึ่งชั้น

กำหนดเพลย์ของตนเองให้แต่ละชั้นภายในเพลย์บุ๊กเดียวกัน เพลย์จะทำงานจากบนลงล่าง ดังนั้นลำดับของเพลย์จึงกำหนดลำดับการนำไปใช้งาน

- hosts: db
  roles: [postgres]

- hosts: app
  roles: [backend]

- hosts: web
  roles: [nginx]

กลุ่มสอดคล้องกับชั้นต่าง ๆ

กลุ่มในคลังโฮสต์ของคุณ เช่น db, app และ web จะสอดคล้องกับโฮสต์ที่แต่ละเพลย์กำหนดเป้าหมาย คลังโฮสต์คือโครงสร้างหลักของการประสานงาน

[db]
db01

[app]
app01
app02

[web]
web01
web02

ส่งข้อมูลระหว่างชั้น

ชั้นเว็บมักต้องใช้ IP ของเซิร์ฟเวอร์แอป อ่านข้อมูลเหล่านี้ด้วย hostvars และกลุ่ม เพื่อเชื่อมชั้นหนึ่งเข้ากับอีกชั้นหนึ่ง

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

รอให้ชั้นหนึ่งพร้อมใช้งาน

ก่อนเริ่มแอป ให้ยืนยันว่าพอร์ตฐานข้อมูลเปิดอยู่ด้วย wait_for วิธีนี้ช่วยป้องกันไม่ให้การทำงานดำเนินเร็วกว่าบริการที่เริ่มช้า

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

เรียกใช้การย้ายข้อมูลเพียงครั้งเดียว

การเปลี่ยนแปลงโครงสร้างฐานข้อมูลควรเกิดขึ้นเพียงครั้งเดียว ใช้ run_once ร่วมกับการมอบหมาย เพื่อให้โหนดแอปหนึ่งโหนดทำการย้ายข้อมูลของฐานข้อมูลที่ใช้ร่วมกัน

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

ข้ามชั้นด้วย delegate_to

เพลย์ของแอปสามารถดำเนินการกับชั้นเว็บได้โดยมอบหมายงานไปยังโฮสต์เว็บ เพลย์บุ๊กหนึ่งชุดสามารถประสานงานทุกชั้นได้

กำหนดแท็กให้ชั้นต่าง ๆ เพื่อการทำงานแบบเจาะจง

เพิ่มแท็ก เช่น db, app และ web ให้กับเพลย์ เพื่อให้คุณนำชั้นเดียวกลับไปใช้งานใหม่ด้วย --tags เมื่อมีการเปลี่ยนแปลงเพียงชั้นเดียว

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

หยุดอย่างรวดเร็วเมื่อเกิดข้อผิดพลาดในทั้งสแตก

ตั้งค่า any_errors_fatal เพื่อให้ข้อผิดพลาดในชั้น db หยุดการทำงานทั้งหมด ก่อนที่ชั้นแอปจะถูกนำไปใช้งานกับชั้นที่เสียหาย

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

สแตกทั้งหมดในไฟล์เดียว

เพลย์บุ๊กที่มีหลายเพลย์จะกลายเป็นสูตรการนำไปใช้งานของคุณ ซึ่งรวมทุกชั้นตามลำดับ พร้อมการเชื่อมต่อข้ามชั้นไว้ในที่เดียว

ตรวจสอบความเข้าใจอย่างรวดเร็ว

มาดูกันว่าชั้นต่าง ๆ ถูกจัดลำดับอย่างไร

สรุปทบทวน

ประสานงานชั้นต่าง ๆ ด้วยเพลย์หนึ่งรายการต่อหนึ่งชั้นตามลำดับการนำไปใช้งาน และเชื่อมโยงกันผ่านกลุ่ม hostvars, wait_for และการมอบหมาย ✅

คำถามที่พบบ่อย

บทเรียน “ประสานชั้น Web, App และ DB” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ประสานชั้น Web, App และ DB” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ประสานชั้น Web, App และ DB”

จัดลำดับการนำระบบหลายชั้นออกใช้ คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 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