Development

Trigger.dev คืออะไร? คู่มือ Background Jobs Open-Source สำหรับ SME ไทย 2026

คู่มือ Trigger.dev ฉบับสมบูรณ์สำหรับนักพัฒนา SME ไทย ตั้งแต่การติดตั้ง Self-Hosted, การเขียน Job แรก, เปรียบเทียบกับ BullMQ และ Inngest พร้อม Use Case จริงในโปรเจกต์ Next.js

AF
ADS FIT Team
·8 นาที
Share:
Trigger.dev คืออะไร? คู่มือ Background Jobs Open-Source สำหรับ SME ไทย 2026

# Trigger.dev คืออะไร? คู่มือ Background Jobs Open-Source สำหรับ SME ไทย 2026

ทุกแอปพลิเคชันที่โตขึ้นมักเจอโจทย์เดียวกัน คือ ต้องประมวลผลงานเบื้องหลัง (Background Jobs) เช่น ส่งอีเมลแจ้งเตือน, สร้าง PDF, เรียก AI API, ซิงก์ข้อมูล หรือทำ ETL หาก Process ทุกอย่างใน HTTP Request เดียว ผู้ใช้จะรอนาน เซิร์ฟเวอร์โหลดสูง และเสี่ยง Timeout

Trigger.dev เป็นแพลตฟอร์ม Background Jobs และ Workflow Orchestration แบบ Open-Source ที่ออกแบบสำหรับนักพัฒนา TypeScript/Next.js โดยเฉพาะ จุดเด่นคือ Long-running Tasks (สูงสุด 24 ชั่วโมง), Type-safe API, มี Dashboard ติดตามผลแบบเรียลไทม์ และเป็น Self-Hostable เต็มรูปแบบ

บทความนี้จะอธิบายตั้งแต่สถาปัตยกรรม, การติดตั้ง Self-Hosted บน Docker, การเขียน Job แรก, การเปรียบเทียบกับ BullMQ และ Inngest, ไปจนถึง Use Case จริงในโปรเจกต์ Next.js สำหรับ SME ไทยที่ต้องการคุมต้นทุนแต่ Scale ได้

Trigger.dev ต่างจาก Background Jobs Library อื่นอย่างไร

ในโลก Node.js เครื่องมือยอดนิยมสำหรับ Background Jobs ได้แก่ BullMQ (Redis), Bee-Queue, Agenda (MongoDB), Inngest (SaaS), Temporal (DSL workflow) Trigger.dev เลือกตำแหน่งกลาง คือ Developer Experience สูงเหมือน Inngest แต่ Self-Hostable ได้เหมือน BullMQ และเขียน Workflow ได้ละเอียดเหมือน Temporal โดยไม่ต้องเรียน DSL ใหม่

| คุณสมบัติ | Trigger.dev | BullMQ | Inngest | Temporal |

|-----------|-------------|--------|---------|----------|

| Self-Host | ใช่ | ใช่ | จำกัด | ใช่ (ซับซ้อน) |

| Type-safe API | ดีมาก | ปานกลาง | ดีมาก | ดี |

| Run > 5 นาที | ใช่ | ต้องตั้งเอง | จำกัด | ใช่ |

| Dashboard | มี (ครบ) | ต้องเสริม | มี | มี |

| ภาษา | TS/JS | Node | TS/JS/Python | หลายภาษา |

จุดอ่อนคือ Trigger.dev ยังโฟกัส TypeScript เป็นหลัก หากทีมใช้ Python หรือ Go ต้องเลือก Temporal หรือ Celery แทน

สถาปัตยกรรมและองค์ประกอบหลัก

Trigger.dev v3+ ใช้สถาปัตยกรรม "Run Engine" ที่แยก Component เป็น Webapp (Dashboard + API), Worker (รัน Task), PostgreSQL (เก็บ State), Redis (Queue), และ ClickHouse (Run History)

Concept สำคัญ

  • **Task**: ฟังก์ชันที่จะถูก Trigger เมื่อมี Event (เทียบเท่า Job)
  • **Run**: instance ของ Task ที่กำลังรัน หรือรันเสร็จแล้ว
  • **Trigger**: เหตุการณ์ที่กระตุ้น Task เช่น API call, Cron, Webhook, Event
  • **Wait/Retry**: หยุดงานชั่วคราวรอ Webhook หรือลองใหม่เมื่อล้มเหลว
  • **Concurrency Limit**: จำกัดงานพร้อมกันต่อ Project, Environment หรือ Tag
  • ติดตั้ง Self-Hosted ด้วย Docker

    ขั้นตอนเริ่มต้นที่กระชับสำหรับ Dev Server:

    Step 1: เตรียม Server

  • VPS อย่างต่ำ 4 vCPU, 8GB RAM (สำหรับ 100K runs/เดือน)
  • Docker + Docker Compose
  • Domain name + Reverse Proxy (Caddy/Nginx)
  • Step 2: Clone Repo และตั้งค่า

    ```bash

    git clone https://github.com/triggerdotdev/trigger.dev

    cd trigger.dev/docker

    cp .env.example .env

    # แก้ไข SESSION_SECRET, MAGIC_LINK_SECRET, ENCRYPTION_KEY

    docker compose up -d

    ```

    Step 3: เปิด Dashboard

    เข้า https://your-domain ผ่าน Magic Link หรือ GitHub OAuth สร้าง Organization และ Project แล้วคัดลอก Project Reference Token

    Step 4: เชื่อมต่อโปรเจกต์ Next.js

    ```bash

    npx trigger.dev@latest init -p <PROJECT_REF>

    ```

    CLI จะสร้างโฟลเดอร์ `trigger/` พร้อม `tasks/example.ts` และตั้งค่า Environment Variable ใน `.env.local`

    เขียน Task แรก: ส่งอีเมลพร้อม Retry

    ```typescript

    import { task, logger, wait } from "@trigger.dev/sdk/v3";

    import { sendEmail } from "@/lib/email";

    export const welcomeEmailTask = task({

    id: "welcome-email",

    retry: { maxAttempts: 5, factor: 2 },

    run: async (payload: { userId: string; email: string }) => {

    logger.info("Sending welcome email", payload);

    await sendEmail({ to: payload.email, template: "welcome" });

    await wait.for({ days: 1 });

    await sendEmail({ to: payload.email, template: "day-1-tip" });

    return { delivered: true };

    },

    });

    ```

    จาก API Route ของ Next.js เรียกได้ทันที:

    ```typescript

    import { tasks } from "@trigger.dev/sdk/v3";

    import { welcomeEmailTask } from "@/trigger/welcome";

    await tasks.trigger<typeof welcomeEmailTask>("welcome-email", {

    userId: user.id,

    email: user.email,

    });

    ```

    `wait.for()` คือจุดเด่นของ Trigger.dev — Worker จะปลด Task ออกจาก Memory ระหว่างรอ ไม่กิน Resource ฟรี

    Use Case จริงสำหรับ SME ไทย

  • **อีคอมเมิร์ซ**: ออกใบกำกับภาษีอัตโนมัติหลัง Order Paid + ส่งให้ลูกค้าผ่านอีเมล/LINE OA
  • **Healthcare**: ดึง Lab Result จาก HL7/FHIR แล้วสร้างสรุปด้วย LLM ส่งให้แพทย์
  • **Marketing**: รัน Drip Email Sequence 7-14 วันโดยไม่ต้องตั้ง Cron แยก
  • **AI App**: เรียก OpenAI/Anthropic API ที่ใช้เวลานาน + Resume เมื่อเจอ Rate Limit
  • **Reporting**: รวบรวมข้อมูลจากหลายแหล่งทุกเช้า 6:00 น. แล้วสร้าง PDF ส่งผู้บริหาร
  • Best Practices

  • ใช้ **idempotency key** ทุกครั้งเมื่อ trigger จาก Webhook เพื่อป้องกัน Duplicate Run
  • ตั้ง **Concurrency Limit** ต่อ Tag ลดผลกระทบเมื่อ External API ล่ม
  • เก็บ **Secret** ใน Trigger.dev Dashboard ไม่ใส่ใน Code
  • ตั้ง **Alerting** เชื่อมกับ Slack/Email เมื่อ Run Fail เกิน Threshold
  • Backup PostgreSQL + Redis อย่างน้อยวันละครั้งเพื่อกู้ State ของ Run ระยะยาว
  • Pitfalls ที่พบบ่อย

    1. รัน Trigger.dev บนเครื่องเดียวกับ App Server ทำให้ Worker แย่ง CPU กับ HTTP Request

    2. ใส่ Logic ที่ Stateful ภายใน Task โดยไม่บันทึกผลลัพธ์ลง DB ทำให้ Retry แล้วผิดพลาด

    3. เก็บ Payload ขนาดใหญ่ (>1MB) ตรง ๆ ใน Trigger ควรเก็บไฟล์ใน S3 แล้วส่ง URL แทน

    4. ลืมตั้ง `maxDuration` ทำให้ Task ค้างนานเกินไป กิน Resource ฟรี

    5. ไม่ทำ Health Check ระหว่าง Webapp กับ Worker ทำให้ Job หาย

    สรุปและขั้นตอนถัดไป

    Trigger.dev เป็นทางเลือกที่ลงตัวสำหรับ SME ไทยที่ใช้ Next.js/TypeScript และต้องการ Background Jobs ที่ Type-safe, Long-running และ Self-hostable โดยไม่ต้องเรียนรู้ Workflow DSL ใหม่

    ขั้นตอนถัดไปที่แนะนำคือ ลองรัน Self-Hosted บน VPS ขนาดเล็ก ทำ Demo Task ส่งอีเมลและ Cron รายวัน แล้วประเมินภาระงานก่อนนำเข้า Production จริง

    หากต้องการคำปรึกษาเรื่องสถาปัตยกรรม Background Jobs สำหรับธุรกิจของคุณ ทีม ADS FIT พร้อมช่วยออกแบบและติดตั้ง — [ติดต่อเรา](/#contact) หรืออ่านบทความหมวด Development อื่น ๆ เพิ่มเติม

    Tags

    #Trigger.dev#Background Jobs#Cron#Open-Source#BullMQ#Workflow Orchestration

    สนใจโซลูชันนี้?

    ปรึกษาทีม ADS FIT ฟรี เราพร้อมออกแบบระบบที่ฟิตกับธุรกิจของคุณ

    ติดต่อเรา →

    บทความที่เกี่ยวข้อง