เนื้อหาในบทความนี้
สถานะบทความ
อัปเดตล่าสุด: กุมภาพันธ์ 2026 | ระดับความยาก: ระดับเริ่มต้น (Beginner) | เวลาอ่าน: 25 นาที
แหล่งข้อมูลอ้างอิง: DigitalOcean Documentation, DigitalOcean Official
1. DigitalOcean App Platform คืออะไร?
DigitalOcean App Platform เป็นบริการ Platform-as-a-Service (PaaS) ที่ช่วยให้นักพัฒนาสามารถ Deploy แอปพลิเคชันจาก Source Code ไปยัง Cloud ได้โดยตรง โดยไม่ต้องกังวลเรื่องการจัดการ Infrastructure หรือ Server ใดๆ
ทำไมต้องใช้ App Platform?
- ไม่ต้องจัดการ Server - DigitalOcean จัดการ Infrastructure ให้หมด
- Deploy จาก Git - เชื่อมต่อ GitHub, GitLab หรือ Public Git Repository
- Auto SSL/TLS - ใบ Certificate ฟรีอัตโนมัติ
- Global CDN - เพิ่มความเร็วในการโหลดทั่วโลก
- Scaling อัตโนมัติ - Scale ขึ้น/ลงตามความต้องการ
- ราคาถูก - เริ่มต้น $0/เดือน สำหรับ Static Sites
Architecture Overview
2. คุณสมบัติหลัก (Key Features)
Git Integration
เชื่อมต่อกับ GitHub, GitLab หรือ Public Git Repository ได้ทันที รองรับ Push-to-Deploy อัตโนมัติ
Docker Support
Deploy จาก Docker Image ที่อยู่บน Docker Hub หรือ DigitalOcean Container Registry
Auto SSL/TLS
ใบ Certificate HTTPS ฟรีอัตโนมัติ ไม่ต้องตั้งค่าเพิ่มเติม รองรับ Custom Domain
Auto Scaling
Scale จำนวน Instance ขึ้น/ลงอัตโนมัติตาม CPU หรือ Memory Usage (Dedicated CPU Plans)
Global CDN
Static Assets ถูกกระจายไปยัง CDN ทั่วโลก ทำให้โหลดเร็วขึ้นสำหรับผู้ใช้ทุกภูมิภาค
Managed Database
เชื่อมต่อกับ Managed Database (PostgreSQL, MySQL, MongoDB, Redis) ได้ง่าย
Rollback
ย้อนกลับไปยัง Version ก่อนหน้าได้ 10 ครั้งล่าสุด ช่วยลดความเสี่ยงจากการ Deploy
Monitoring
Dashboard แสดง Metrics แบบ Real-time เช่น CPU, Memory, Bandwidth และ Request Count
คุณสมบัติเพิ่มเติม:
3. ราคาและแผนบริการ (Pricing)
Free Tier: Static Sites ฟรี! สามารถ Deploy ได้ถึง 3 แอป พร้อม 1 GiB outbound data ต่อแอปต่อเดือน
- Static Sites สูงสุด 3 แอป
- 1 GiB Outbound Data/แอป/เดือน
- Auto SSL/TLS
- Global CDN
- 512 MiB RAM / 1 Shared CPU
- 50 GiB Bandwidth/เดือน
- Web Services & Workers
- ไม่รองรับ Auto Scaling
- 512 MiB RAM / 1 Dedicated CPU
- 100 GiB Bandwidth/เดือน
- Auto Scaling
- High Availability
ตารางราคาแบบเต็ม (Shared CPU Plans)
| Plan | CPU | RAM | Bandwidth | ราคา/เดือน | Scaling |
|---|---|---|---|---|---|
| Basic XXS | 1 Shared | 512 MiB | 50 GiB | $5 | No |
| Basic XS | 1 Shared | 1 GiB | 100 GiB | $10 | No |
| Basic S | 1 Shared | 2 GiB | 200 GiB | $25 | Manual |
| Basic M | 2 Shared | 4 GiB | 250 GiB | $50 | Manual |
Dedicated CPU Plans (รองรับ Auto Scaling)
| Plan | CPU | RAM | Bandwidth | ราคา/เดือน | Auto Scale |
|---|---|---|---|---|---|
| Pro XS | 1 Dedicated | 512 MiB | 100 GiB | $29 | Yes |
| Pro S | 1 Dedicated | 2 GiB | 300 GiB | $39 | Yes |
| Pro M | 2 Dedicated | 4 GiB | 500 GiB | $78 | Yes |
| Pro L | 4 Dedicated | 8 GiB | 700 GiB | $156 | Yes |
4. เปรียบเทียบกับ PaaS อื่นๆ
| Feature |
DO App Platform
|
Vercel
|
Render
|
Heroku
|
|---|---|---|---|---|
| Free Tier | 3 Static Sites | Unlimited | Limited | No |
| Entry Price (Web Service) | $5/เดือน | $20/เดือน | $7/เดือน | $5-7/เดือน |
| Docker Support | Yes | Limited | Yes | Yes |
| Auto Scaling | Yes (Dedicated) | Yes | Yes | Add-on |
| Managed Database | $7/เดือน | Partner | $7/เดือน | Add-on |
| Bandwidth | Generous | Limited | Limited | Extra |
| Thailand Datacenter | Singapore | Singapore | Singapore | Singapore |
ข้อสังเกต: DigitalOcean App Platform เหมาะสำหรับทีมที่ต้องการราคาที่คาดเดือนได้ และมี Bandwidth ที่เพียงพอ ในขณะที่ Vercel เหมาะกับ Frontend-heavy applications
5. ภาษาและ Framework ที่รองรับ
App Platform ใช้ Cloud-Native Buildpacks ในการตรวจจับภาษาและ Build แอปพลิเคชันโดยอัตโนมัติ
Express, Next.js, Nuxt.js, Gatsby, React, Vue
Django, Flask, FastAPI, Streamlit
Gin, Echo, Fiber, Standard Library
Laravel, Symfony, WordPress
Ruby on Rails, Sinatra
Any Language with Dockerfile
HTML, CSS, JS, Hugo, Jekyll
Spring Boot (via Docker)
ASP.NET Core (via Docker)
6. เริ่มต้นใช้งาน DigitalOcean App Platform
สิ่งที่ต้องเตรียม (Prerequisites)
- DigitalOcean Account - สมัครที่ digitalocean.com
- GitHub/GitLab Account - สำหรับเชื่อมต่อ Repository
- Credit Card/PayPal - สำหรับชำระเงิน (จะหักตามการใช้งานจริง)
- Source Code - พร้อม Deploy ใน Git Repository
สร้าง DigitalOcean Account
ไปที่ digitalocean.com และสมัครสมาชิกใหม่ คุณจะได้ $200 Credit ฟรี สำหรับทดลองใช้งาน 60 วัน
https://www.digitalocean.com
เข้าสู่ App Platform
หลังจาก Login แล้ว ไปที่ Control Panel → Create → Apps หรือคลิกลิงก์ด้านล่าง
https://cloud.digitalocean.com/apps
เชื่อมต่อ Git Repository
เลือก Source ที่ต้องการ:
- GitHub - เชื่อมต่อและเลือก Repository
- GitLab - เชื่อมต่อและเลือก Repository
- Docker Hub - ใส่ Image Name
- Public Git - ใส่ URL โดยตรง
7. ตัวอย่างการ Deploy แอปพลิเคชัน
ตัวอย่าง: Deploy Node.js + Express
{
"name": "my-express-app",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"start": "node index.js",
"dev": "nodemon index.js"
},
"dependencies": {
"express": "^4.18.2"
},
"engines": {
"node": "18.x"
}
}
const express = require('express');
const app = express();
const port = process.env.PORT || 8080;
app.get('/', (req, res) => {
res.json({
message: 'Hello from DigitalOcean App Platform!',
timestamp: new Date().toISOString()
});
});
app.get('/health', (req, res) => {
res.status(200).json({ status: 'healthy' });
});
app.listen(port, '0.0.0.0', () => {
console.log(`Server running on port ${port}`);
});
ข้อสำคัญ:
- • ต้อง Listen ที่
0.0.0.0ไม่ใช่localhost - • ใช้ Port จาก Environment Variable:
process.env.PORT - • Default Port คือ
8080
ตัวอย่าง: Deploy Python + Flask
Flask==3.0.0
gunicorn==21.2.0
python-dotenv==1.0.0
import os
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/')
def home():
return jsonify({
'message': 'Hello from DigitalOcean App Platform!',
'framework': 'Flask'
})
@app.route('/health')
def health():
return jsonify({'status': 'healthy'}), 200
if __name__ == '__main__':
app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 8080)))
python-3.11.0
ตัวอย่าง: Deploy ด้วย Dockerfile
# Build stage
FROM node:18-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
# Production stage
FROM node:18-alpine
WORKDIR /app
COPY --from=builder /app/node_modules ./node_modules
COPY . .
# Create non-root user
RUN addgroup -g 1001 -S appuser && \
adduser -S -D -H -u 1001 -s /sbin/nologin -G appuser appuser && \
chown -R appuser:appuser /app
USER appuser
EXPOSE 8080
CMD ["node", "index.js"]
ข้อดีของ Docker:
- • ควบคุม Environment ได้เต็มที่
- • รองรับภาษาอะไรก็ได้
- • Consistent ระหว่าง Development และ Production
App Spec File (.do/app.yaml)
สามารถกำหนด Configuration ในไฟล์ YAML เพื่อให้ Deploy แบบ Reproducible ได้:
name: my-awesome-app
region: sgp # Singapore - ใกล้ไทย
services:
- name: web
github:
repo: username/my-app
branch: main
build_command: npm run build
run_command: npm start
environment_slug: node-js
instance_count: 1
instance_size_slug: apps-s-1vcpu-1gb
env:
- key: NODE_ENV
value: production
- key: DATABASE_URL
value: ${db.DATABASE_URL}
http_port: 8080
health_check:
http_path: /health
databases:
- name: db
engine: PG
production: false
cluster_name: my-postgres
8. Environment Variables
Environment Variables เป็นวิธีที่ปลอดภัยในการจัดการ Configuration และ Secrets โดยไม่ต้อง Hardcode ใน Source Code
App-level Variables
ใช้ได้กับทุก Component ในแอป
APP_URL- URL ของแอปPORT- Port ที่แอปทำงานREGION- Datacenter Region
Dynamic Variables
อ้างอิงค่าจาก Resource อื่นๆ อัตโนมัติ
${db.DATABASE_URL}- จาก Database${app.ASSETS_URL}- จาก Static Site${component.HOSTNAME}- จาก Component
วิธีตั้งค่า Environment Variables
# ตั้งค่า Environment Variable
doctl apps update <app-id> --spec .do/app.yaml
# หรือใช้ API
curl -X PUT "https://api.digitalocean.com/v2/apps/{app_id}" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"spec": {
"services": [{
"name": "web",
"env": [
{"key": "API_KEY", "value": "secret123"}
]
}]
}
}'
Secrets Management
สำหรับข้อมูลที่ sensitive เช่น API Keys, Database Passwords ให้เลือก "Encrypt" เพื่อซ่อนค่าจาก Logs
- • Encrypted variables จะไม่แสดงใน Build/Deploy Logs
- • เข้าถึงได้เฉพาะที่ Runtime เท่านั้น
- • แนะนำให้หมุนเวียน Secrets เป็นประจำ
9. Scaling แอปพลิเคชัน
Vertical Scaling
เพิ่ม CPU และ RAM ให้กับ Instance ที่มีอยู่
- เปลี่ยน Plan ได้ทุกเมื่อ
- มี Downtime สั้นๆ
- เหมาะกับแอปที่ใช้ RAM มาก
Horizontal Scaling
เพิ่มจำนวน Instance เพื่อกระจายโหลด
- ไม่มี Downtime
- รองรับ High Availability
- ต้องใช้ Plan ที่รองรับ
Auto Scaling (Dedicated CPU Plans เท่านั้น)
เพิ่ม/ลด Instance อัตโนมัติตาม CPU หรือ Memory Usage
services:
- name: web
instance_count: 2
instance_size_slug: apps-d-1vcpu-2gb # Dedicated CPU
autoscaling:
min_instance_count: 2
max_instance_count: 10
metrics:
cpu:
percent: 70 # Scale up เมื่อ CPU > 70%
memory:
percent: 80 # Scale up เมื่อ Memory > 80%
High Availability
การรัน 2 หรือมากกว่า Instance จะเปิดใช้งาน High Availability อัตโนมัติ โดย Instance จะถูกกระจายไปยัง Host ที่ต่างกัน
10. Database Integration
App Platform รองรับการเชื่อมต่อกับ Managed Database ได้หลายประเภท
PostgreSQL
เริ่มต้น $15/เดือน
MySQL
เริ่มต้น $15/เดือน
MongoDB
เริ่มต้น $15/เดือน
Redis
เริ่มต้น $15/เดือน
Development Database ($7/เดือน)
สำหรับการทดสอบและพัฒนา มีขนาดเล็ก (512 MB) และราคาถูกกว่า Production Database
- • เหมาะสำหรับ Staging/Development
- • No automated backups
- • Limited to 2 concurrent connections
// ใช้ Environment Variable จาก Database Component
const { Pool } = require('pg');
const pool = new Pool({
connectionString: process.env.DATABASE_URL,
// หรือใช้ค่าแยก
// host: process.env.DATABASE_HOST,
// port: process.env.DATABASE_PORT,
// user: process.env.DATABASE_USER,
// password: process.env.DATABASE_PASSWORD,
// database: process.env.DATABASE_NAME,
ssl: {
rejectUnauthorized: false // สำหรับ DigitalOcean Managed DB
}
});
module.exports = pool;
11. การแก้ไขปัญหา (Troubleshooting)
Build Failed: "Port 8080 is already in use"
สาเหตุ: แอปพยายาม Bind Port ที่ซ้ำกัน
แก้ไข: ใช้ process.env.PORT และ Listen ที่ 0.0.0.0
App Crashes: "Cannot find module"
สาเหตุ: Dependencies ไม่ครบหรือ package.json ไม่ถูกต้อง
แก้ไข: ตรวจสอบ package.json และ package-lock.json
Health Check Failed: Timeout
สาเหตุ: แอปใช้เวลาเริ่มต้นนานเกินไป
แก้ไข: เพิ่ม initial_delay_seconds ใน Health Check Config
Database Connection Failed
สาเหตุ: SSL Configuration หรือ Connection String ไม่ถูกต้อง
แก้ไข: ใช้ ${db.DATABASE_URL} และเปิด SSL
การดู Logs
สามารถดู Logs ได้หลายวิธี:
- Dashboard: ไปที่ App → Insights → Logs
- CLI:
doctl apps logs <app-id> --tail - API:
GET /v2/apps/{app_id}/logs
12. สรุป (Summary)
ข้อดี
- • Deploy ง่าย จาก Git Repository โดยตรง
- • ราคาถูก เริ่มต้น $0 สำหรับ Static Sites
- • Auto SSL/TLS และ Global CDN ในตัว
- • Scaling ทั้ง Manual และ Auto
- • เชื่อมต่อ Managed Database ได้ง่าย
- • รองรับหลายภาษา: Node.js, Python, Go, PHP, Docker
ข้อจำกัด
- • Auto Scaling ต้องใช้ Dedicated CPU Plans
- • ไม่มี Datacenter ในประเทศไทย (ใช้ Singapore)
- • ไม่เหมาะสำหรับแอปที่ต้องการควบคุม OS มาก
- • WebSocket มีข้อจำกัดบางอย่าง
- • Cold Start สำหรับแอปที่ไม่มี traffic
เหมาะสำหรับใคร?
Deploy MVP ได้เร็ว ไม่ต้องดูแล Infrastructure
ทำ Side Projects หรือ Portfolio ได้ฟรี
CI/CD ในตัว ไม่ต้องตั้งค่าเอง