นำ backend ภาษา Go, .NET และ Java Spring Boot ขึ้นออนไลน์ด้วย AI

Go, Java Spring Boot และ C# ASP.NET Core บน BrewInTH: ไฟล์ที่ต้องมี ระบบ build ให้ยังไง แก้พอร์ตกับ health path ต่อฐานข้อมูล และ prompt สั่ง AI
ไม่ใช่ทุกเว็บที่เขียนด้วย PHP, Node.js หรือ Python บริษัทจำนวนมากมีระบบเดิมเป็น Java Spring Boot หรือ C# ASP.NET Core ส่วนคนที่อยากได้ API เร็ว ๆ กินเครื่องน้อยก็มักให้ AI เขียนด้วย Go แต่พอจะหาที่โฮสต์ หลายที่รองรับแค่ PHP หรือต้องตั้งเซิร์ฟเวอร์เองทั้งหมด
BrewInTH รัน Go, Java และ .NET ได้เหมือนภาษาอื่น บทความนี้บอกว่าแต่ละภาษาต้องมีไฟล์อะไร ระบบ build และเริ่มแอปให้ยังไง ต้องแก้โค้ดตรงไหนบ้าง (มีแค่ไม่กี่บรรทัด) และ prompt ที่ใช้สั่ง AI ให้นำขึ้นได้ในรอบเดียว
สรุปสั้นก่อนอ่าน
⚙️ เลือกเทคโนโลยี Go, Java หรือ .NET (C# / ASP.NET Core) ตอนสร้างโปรเจกต์ หรือให้ระบบเลือกจากโค้ด
⚙️ Go ต้องมีgo.mod, Java ต้องมีpom.xmlหรือbuild.gradle, .NET ต้องมีไฟล์.csprojหนึ่งไฟล์ ที่รากของโปรเจกต์
⚙️ แอปต้องฟังที่0.0.0.0พอร์ตจากตัวแปรPORT(ค่าเริ่มต้น 8080) .NET ระบบส่งพอร์ตให้เอง
⚙️ ค่าเชื่อมต่อฐานข้อมูลถูกใส่ไว้ในค่าตั้งแอปให้อัตโนมัติ
⚙️ Go กินหน่วยความจำน้อย ส่วน Spring Boot ควรใช้แพ็กเกจที่มีหน่วยความจำมากขึ้น
BrewInTH รองรับอะไรบ้าง
ตอนสร้างโปรเจกต์ ในหน้าเลือกเทคโนโลยีมีตัวเลือก Go, Java (เว็บหรือ API ที่รันด้วย Java เช่น Spring Boot) และ .NET (C# / ASP.NET Core) ถ้าไม่แน่ใจ เลือก ให้ระบบเลือกให้ (แนะนำ) ระบบดูจากไฟล์ในโค้ดตอนนำขึ้นครั้งแรก
เครื่องมือที่ใช้ build มีให้พร้อม
- Go รุ่น 1.26 มี gcc ให้ด้วย แพ็กเกจที่ใช้ cgo ก็ build ได้
- Java 21 พร้อม Maven และ Gradle ถ้าโปรเจกต์มี
mvnwหรือgradlewของตัวเอง ระบบใช้ตัวนั้น - .NET SDK 10 โปรเจกต์ที่ตั้งเป้าเป็น .NET 8 ก็รันได้
แต่ละภาษาต้องมีอะไร และระบบทำอะไรให้

Go
- ต้องมี
go.modและpackage mainที่รากของโปรเจกต์ - ระบบ build ด้วย
go buildแล้วรันไฟล์ที่ได้ - ไม่มี
go.sumก็ไม่เป็นไร ระบบรันgo mod tidyให้ก่อน build (AI ในแชตมักเขียนgo.sumไม่ได้ ข้อนี้จึงช่วยได้มาก)
Java (Spring Boot และอื่น ๆ)
- ต้องมี
pom.xml(Maven) หรือbuild.gradle/build.gradle.kts(Gradle) ที่รากของโปรเจกต์ Kotlin ที่ build ด้วย Gradle ก็ใช้ทางเดียวกัน - ระบบ build โดยข้ามเทสต์ (
-DskipTestsหรือ-x test) เพื่อไม่ให้เทสต์ที่ต้องต่อฐานข้อมูลทำให้ build ล้ม - แล้วเริ่มด้วย
java -jarกับไฟล์ jar ที่รันได้ในtarget/หรือbuild/libs/(ไฟล์-plain.jarที่ Gradle สร้างเพิ่มถูกข้ามให้)
.NET (C# / ASP.NET Core)
- ต้องมีไฟล์
.csprojหนึ่งไฟล์ ที่รากของโปรเจกต์ - ระบบรัน
dotnet publishแบบ Release แล้วเริ่มแอป โดยส่งที่อยู่และพอร์ตให้แอปเอง ไม่ต้องแก้โค้ดเรื่องพอร์ต
ถ้าโปรเจกต์ไม่ตรงแบบนี้ เช่น .NET ที่มีหลายโปรเจกต์ใน solution เดียว ตั้งคำสั่งเองได้ในแท็บ การเผยแพร่ › ตัวเลือกขั้นสูง (build / start / port) ช่อง คำสั่ง build (เว้นว่าง = อัตโนมัติ) และ คำสั่ง start (เว้นว่าง = อัตโนมัติ)
2 เรื่องที่ต้องแก้ในโค้ด: พอร์ต และ path ตรวจความพร้อม

1. ฟังพอร์ตจากตัวแปร PORT
ระบบตั้งตัวแปร PORT ให้แอป (ค่าเริ่มต้น 8080) แอปต้องฟังที่ 0.0.0.0 พอร์ตนั้น ไม่ใช่ localhost
Go
port := os.Getenv("PORT")
if port == "" {
port = "8080"
}
log.Fatal(http.ListenAndServe("0.0.0.0:"+port, mux))
Spring Boot ใน application.properties
server.port=${PORT:8080}
.NET ระบบส่ง --urls ให้ตอนเริ่มแอปแล้ว ไม่ต้องทำอะไร
2. มี path ตรวจความพร้อม
ระบบถือว่าเวอร์ชันใหม่พร้อมใช้เมื่อ path ตรวจความพร้อมตอบ 2xx หรือ 3xx ภายใน 5 นาที ค่าเริ่มต้นคือ / ถ้าแอปเป็น API ล้วนที่หน้าแรกตอบ 404 ให้ทำ path เฉพาะ เช่น /healthz (Go), /actuator/health (Spring Boot Actuator) หรือ /health (ASP.NET Core MapHealthChecks) แล้วใส่ในช่อง Path ตรวจความพร้อม (GET ต้องตอบ 2xx/3xx) หรือบอก AI ให้ตั้งให้
เชื่อมฐานข้อมูล
เมื่อสร้างฐานข้อมูลในโปรเจกต์ (PostgreSQL, MySQL, MariaDB หรือ MongoDB) ระบบเขียนค่าเชื่อมต่อลงค่าตั้งแอปให้เอง แต่ละภาษาอ่านต่างกันเล็กน้อย
- Go ไลบรารี PostgreSQL อย่าง pgx หรือ lib/pq ใช้
DATABASE_URLได้ตรง ๆ ส่วน MySQL ประกอบ DSN จากDB_HOSTDB_PORTDB_DATABASEDB_USERNAMEDB_PASSWORD - Spring Boot อ่าน
SPRING_DATASOURCE_URLSPRING_DATASOURCE_USERNAMESPRING_DATASOURCE_PASSWORDก่อนค่าในไฟล์ตั้งค่า ถ้าส่งผ่านหน้า อัปโหลดแล้วขึ้นเว็บ ระบบเขียนสามค่านี้ให้เอง ถ้าใช้ AI agent ให้ AI ตั้งจากข้อมูลเชื่อมต่อของฐานข้อมูล - .NET ประกอบ connection string จาก
DB_HOSTDB_PORTDB_DATABASEDB_USERNAMEDB_PASSWORD
อย่าเขียนรหัสผ่านฐานข้อมูลไว้ในโค้ดหรือใน appsettings.json ให้อ่านจากตัวแปรเหล่านี้เสมอ
เรื่องหน่วยความจำ: เลือกแพ็กเกจให้เหมาะกับภาษา
แต่ละแพ็กเกจกำหนดหน่วยความจำของแอป: Free 256 MB, Starter 512 MB, Maker 1 GB, Growth 2 GB, Pro 4 GB
- Go กินหน่วยความจำน้อยมาก API ทั่วไปอยู่บนแพ็กเกจ Free ได้สบาย
- .NET ใช้มากกว่า Go แต่ API ขนาดเล็กมักพอกับ Starter
- Spring Boot ใช้หน่วยความจำมากที่สุดในสามภาษา 256 MB มักไม่พอ แนะนำ Starter ขึ้นไป ถ้าแอปใหญ่ใช้ Maker
นี่เป็นแนวทางคร่าว ๆ ขึ้นกับขนาดของแอป ถ้าแอปเริ่มแล้วดับซ้ำ ๆ ให้ดูข้อความสุดท้ายของแอปในบันทึกการเผยแพร่ก่อนตัดสินใจเพิ่มแพ็กเกจ
นำขึ้นด้วย AI agent: prompt ตัวอย่าง
กด สร้างลิงก์และ token สำหรับ AI (อัตโนมัติ) ในหน้าโปรเจกต์ แล้วส่งข้อความที่ได้ให้ coding agent (Claude Code, Codex, Cursor, Windsurf) พร้อมคำสั่งแบบนี้
นี่คือ API ที่เขียนด้วย Spring Boot (Maven) ใช้ PostgreSQL
ช่วยนำขึ้น BrewInTH ตามคู่มือในลิงก์ โดย
1. ตั้ง server.port=${PORT:8080} และให้แอปฟังที่ 0.0.0.0
2. เปิด Spring Boot Actuator แล้วใช้ /actuator/health เป็น health path
3. สร้างฐานข้อมูล PostgreSQL ของโปรเจกต์ แล้วตั้ง SPRING_DATASOURCE_URL
SPRING_DATASOURCE_USERNAME SPRING_DATASOURCE_PASSWORD จากข้อมูลเชื่อมต่อ
4. ให้ Flyway หรือ Liquibase สร้างตารางตอนแอปเริ่ม ไม่ใช้ข้อมูลทดสอบ
5. หลังออนไลน์ ใช้ site_check เรียก /actuator/health และ endpoint หลักหนึ่งตัว แล้วรายงานผล
เปลี่ยนบรรทัดแรกตามภาษาของคุณ เช่น "นี่คือ API ที่เขียนด้วย Go ใช้ net/http และ PostgreSQL" หรือ "นี่คือเว็บ ASP.NET Core (.NET 8) ใช้ MySQL" แล้วตัดข้อที่ไม่เกี่ยวออก
ถ้าไม่มี coding agent บีบโฟลเดอร์โปรเจกต์เป็น ZIP แล้วส่งผ่านเมนู อัปโหลดแล้วขึ้นเว็บ (ยังเป็นรุ่น BETA) ได้ ระบบรู้จักทั้งสามภาษา ถ้าโค้ดฟังพอร์ตตายตัว เช่น ":9090" ใน Go หรือ server.port=9090 ระบบตั้งพอร์ตของแอปตามนั้นให้ และถ้า ZIP มีหลายแอปแยกโฟลเดอร์ ระบบจะบอกชื่อโฟลเดอร์ให้เลือกส่งทีละแอป
เจอ error แบบนี้ แก้ยังไง

- ไม่ผ่านการตรวจความพร้อมภายใน 5 นาที มักเป็นเพราะแอปฟังที่
localhostหรือพอร์ตอื่น หรือ path ตรวจความพร้อมตอบ 404 ดูบรรทัด[readiness]ในบันทึกการเผยแพร่ - "Set a start command for the required JAR" มีไฟล์ jar ที่รันได้มากกว่าหนึ่งไฟล์ ตั้ง คำสั่ง start เอง เช่น
java -jar target/app.jar - .NET ไม่มีคำสั่งเริ่มแอป มักเป็นเพราะมี
.csprojหลายไฟล์หรืออยู่ในโฟลเดอร์ย่อย ตั้งคำสั่ง build และ start เอง - แอปเริ่มแล้วดับซ้ำ ๆ ดูข้อความสุดท้ายของแอปในบันทึก ถ้าเป็นเรื่องหน่วยความจำ ให้ลดการใช้หรือเพิ่มแพ็กเกจ
คัดลอกบันทึกส่งให้ AI แก้ได้เลย AI ส่วนใหญ่แก้ปัญหาพวกนี้ได้ในรอบเดียว
คำถามที่พบบ่อย
ใช้ Kotlin หรือ framework อื่นของ Java ได้ไหม
ได้ ถ้า build ด้วย Maven หรือ Gradle แล้วได้ไฟล์ jar ที่รันได้ไฟล์เดียวใน target/ หรือ build/libs/ ถ้า framework วางไฟล์ไว้ที่อื่น ตั้งคำสั่ง start ให้ชี้ไปที่ไฟล์นั้น
ใช้ .NET รุ่นเก่ากว่า 8 ได้ไหม
ระบบใช้ .NET SDK 10 และรันโปรเจกต์ .NET 8 ได้ รุ่นที่เก่ากว่านั้นอาจทำงานไม่ได้ ส่วน .NET Framework แบบเดิมที่รันบน Windows เท่านั้นใช้ไม่ได้ ให้ AI ย้ายโปรเจกต์เป็น .NET 8 ขึ้นไปก่อน
ต้องเขียน Dockerfile ไหม
ไม่ต้อง ระบบ build ให้จากไฟล์โปรเจกต์ปกติ ถ้ามี Dockerfile ติดมา ระบบไม่ได้ใช้
ทำ WebSocket หรือ gRPC ได้ไหม
ได้ WebSocket และ gRPC ใช้ได้บนที่อยู่ของเว็บโดยตรง เหมาะกับ backend ของแอปมือถือ
ทำงานตามเวลาหรือ background job ได้ไหม
ใช้ งานตามเวลา (cron) ของโปรเจกต์ ให้รันคำสั่งของแอปตามรอบที่กำหนด แทนการรัน process เบื้องหลังค้างไว้ในแอป
สรุป
Go, Java และ .NET ขึ้น BrewInTH ได้โดยไม่ต้องตั้งเซิร์ฟเวอร์เอง แค่มีไฟล์โปรเจกต์มาตรฐานที่ราก (go.mod, pom.xml หรือ build.gradle, .csproj) ให้แอปฟังพอร์ตจาก PORT มี path ตรวจความพร้อม และอ่านค่าฐานข้อมูลจากค่าตั้งแอป ที่เหลือ ระบบ build และเริ่มแอปให้ เลือกแพ็กเกจให้พอกับภาษาที่ใช้ แล้วให้ AI จัดการที่เหลือ
