01Go vs Node.js

โจทย์GoNode.js
Concurrency

Goroutine + channel/mutex เหมาะกับ parallel work และ service โหลดสูง

Event Loop เด่นด้าน I/O orchestration; CPU-heavy ต้องแยก worker

Type & runtime

Compile-time type, binary เดียว, startup เร็ว และ resource คาดเดาง่าย

TypeScript ตรวจตอน build แต่ runtime ยังเป็น JavaScript และมี GC/runtime behavior ของ V8

ทีมและ delivery

โครงสร้างเรียบและ explicit แต่อาจเขียน boilerplate มากกว่า

แชร์ภาษา frontend/backend และ ecosystem กว้าง ทำ feature ได้เร็ว

เหมาะกับ

Core service, high concurrency, CPU work และ latency-sensitive path

BFF, API orchestration, realtime I/O และทีม fullstack TypeScript

02Vue vs React / Next.js

โจทย์VueReact / Next.js
แนวคิด

Single File Component, template และ reactivity ที่ framework จัดให้

UI เป็น function ของ state; Next เพิ่ม server rendering และ routing convention

State change

Proxy/ref tracking รู้ dependency และ update เฉพาะจุด

State update ทำให้ component render ใหม่ แล้ว reconciliation หา DOM diff

Learning curve

Convention ชัด แยก template/style/script และเริ่มต้นได้เร็ว

แกน React เล็ก แต่ ecosystem และ server/client model ต้องตัดสินใจมากกว่า

เกณฑ์เลือก

ทีมชอบ convention ชัด ต้องการ productivity และ gradual adoption

ทีม React แข็ง ต้องการ ecosystem หรือ full-stack rendering model ของ Next

03PostgreSQL vs MongoDB

โจทย์PostgreSQLMongoDB
Data model

Relation, constraints และ normalized schema

Document aggregate ที่ embed ข้อมูลตาม access pattern

Query

Join และ ad-hoc query ข้าม entity แข็งแรง

อ่าน document ทั้งก้อนเร็ว แต่ relation ซับซ้อนต้องออกแบบเพิ่ม

เหมาะกับ

ธุรกรรม, integrity สูง และข้อมูลสัมพันธ์กันมาก

Schema เปลี่ยนเร็วและ aggregate มีขอบเขตชัด

04Kafka vs RabbitMQ

โจทย์KafkaRabbitMQ
Model

Distributed log เก็บ event ตาม retention และ replay ได้

Message broker ส่งงานผ่าน exchange และ queue

Consumption

Consumer group อ่าน partition และดูแล offset

Ack message แล้ว broker ลบออกจาก queue

เหมาะกับ

Event streaming, analytics pipeline และหลาย consumer ที่ replay อิสระ

Work queue, complex routing, retry และ per-message lifecycle

05กรอบตัดสินใจที่ใช้ได้กับทุก Stack

  1. 1
    Workload

    I/O หรือ CPU-heavy? Latency และ throughput เป้าหมายเท่าไร?

  2. 2
    Team

    ทีมเชี่ยวชาญอะไร? Hiring, onboarding และ bus factor เป็นอย่างไร?

  3. 3
    Ecosystem

    Library สำคัญ, observability, deployment และ security tooling พร้อมหรือไม่?

  4. 4
    Lifecycle cost

    ใครดูแลเมื่อเกิด incident? Upgrade และ migration แพงแค่ไหน?