📌 ทำไม Rust ถึงเหมาะกับ Microservices?
ในยุคที่ระบบโปรดักชันต้องรองรับโหลดมหาศาลและปล่อยฟีเจอร์ได้อย่างรวดเร็ว Microservices คือสถาปัตยกรรมที่ตอบโจทย์ และ Rust คือภาษาที่ทำให้ microservice มีความเบา เร็ว ปลอดภัย และพร้อมสำหรับ scale จริงใน production
- ⏱️ ความเร็วระดับ Native (เร็วกว่า Node.js / Python)
- 🛡️ Memory safety — ป้องกัน crash และ undefined behavior
- 📦 Binary ขนาดเล็ก — deploy ง่ายใน container
- 🚀 รองรับ async/await เต็มรูปแบบ
🚀 เริ่มต้น Microservice ด้วย Axum
Axum เป็นหนึ่งในเฟรมเวิร์กยอดนิยมสำหรับเขียน Web API แบบ async ใน Rust
🔧 สร้างโปรเจคใหม่
cargo new rust-microservice cd rust-microservice
📦 แก้ไข Cargo.toml
[dependencies]
axum = “0.7” tokio = { version = “1”, features = [“full”] } serde = { version = “1”, features = [“derive”] } serde_json = “1” tower = “0.4”
📄 สร้าง route แรก
use axum::{
routing::get,
Json, Router,
};
use serde::Serialize;
#[derive(Serialize)]
struct Status {
service: String,
healthy: bool,
}
async fn healthcheck() -> Json<Status> {
Json(Status {
service: "user-api".to_string(),
healthy: true,
})
}
#[tokio::main]
async fn main() {
let app = Router::new().route("/health", get(healthcheck));
axum::Server::bind(&"0.0.0.0:3000".parse().unwrap())
.serve(app.into_make_service())
.await
.unwrap();
}

🔌 การเชื่อมต่อกับ Microservices อื่น
- ใช้ HTTP client เช่น
reqwestสำหรับ call ภายนอก - หรือใช้
tonicสำหรับ gRPC - สามารถใช้ Kafka, Redis, Postgres ได้ด้วย crates ecosystem
ตัวอย่างการเรียก service ภายนอก
use reqwest;
async fn call_order_service() {
let res = reqwest::get("http://orderservice.local/orders")
.await
.unwrap()
.text()
.await
.unwrap();
println!("Response: {}", res);
}
📦 แนะนำไลบรารีเสริม
tracing— log และ trace แบบ async-awaredotenvy— จัดการ ENV configtokio— ตัวจัดการ async runtimeanyhow / thiserror— จัดการ errorsqlx / sea-orm— async database ORM
🔐 ความปลอดภัยในระดับ production
- ใช้
tower_http::corsหรือheadersสำหรับจัดการ CORS และ Auth header - สามารถเพิ่ม JWT Auth และ Role-based policy ได้ไม่ยาก
- มี library เช่น
jsonwebtoken,argon2สำหรับ auth
⚙️ Dockerize Rust Microservice
ตัวอย่าง Dockerfile แบบ minimal:
FROM rust:1.77 as builder WORKDIR /app COPY . . RUN cargo build --release FROM debian:buster-slim COPY --from=builder /app/target/release/rust-microservice /usr/local/bin/app CMD ["app"]

⚖️ เปรียบเทียบกับภาษาอื่น
| ภาษา | Startup Time | Binary Size | Memory Usage |
|---|---|---|---|
| Node.js | 400ms | ~80MB | ~50MB |
| Python (FastAPI) | 500ms | ~70MB | ~40MB |
| Rust (Axum) | 5ms | ~4MB | ~8MB |
✅ สรุป
Rust ไม่ได้เป็นเพียงภาษา systems programming เท่านั้น แต่เป็นทางเลือกที่น่ากลัวสำหรับ Microservices — โดยเฉพาะในระบบที่ต้องการ performance สูง, memory efficiency และความปลอดภัย การใช้ Rust จะช่วยลดต้นทุนโครงสร้างพื้นฐาน และเพิ่มความมั่นใจให้ระบบ production ได้อย่างแท้จริง
บทความนี้ใช้เวลาอ่านประมาณ 20 นาที โดยทีมงาน poolsawat.com