SonarQube คืออะไร และวิธีติดตั้งบน Cloud Server
SonarQube คือระบบตรวจคุณภาพโค้ดอัตโนมัติที่ชี้จุดบกพร่อง ช่องโหว่ความปลอดภัย และโค้ดที่ซ้ำซ้อน ก่อนที่โค้ดจะถูกรวมเข้าสายหลัก ทำให้ทีมแก้ปัญหาตั้งแต่ยังราคาถูก
- หมวดหมู่
- DevOps และ CI/CD
- ติดตั้งบนเซิร์ฟเวอร์เองได้
- ได้
- สเปกเริ่มต้นที่แนะนำ
- 2 vCPU · RAM 4 GB
- ไลเซนส์
- LGPLv3 (Community Edition)
- เว็บทางการ
- เปิดเว็บไซต์
- ISO/IEC 27001
- ISO 22301
- ISO 20000-1
- CSA-STAR
Data Center ในไทย มาตรฐาน TIA-942 Tier 3+ ข้อมูลอยู่ในประเทศไทย
SonarQube คืออะไร
การรีวิวโค้ดด้วยคนจับปัญหาเชิงตรรกะได้ดี แต่จับรูปแบบที่ผิดพลาดซ้ำ ๆ ได้ไม่ครบ เช่น ตัวแปรที่ไม่ถูกใช้ การจัดการข้อผิดพลาดที่หายไป หรือรูปแบบโค้ดที่เปิดช่องให้ถูกโจมตี SonarQube ตรวจสิ่งเหล่านี้ให้อัตโนมัติทุกครั้งที่มีโค้ดใหม่
ความสามารถที่เปลี่ยนพฤติกรรมทีมได้จริงคือ Quality Gate ซึ่งกำหนดเกณฑ์ว่าโค้ดใหม่ต้องผ่านอะไรบ้างจึงจะรวมเข้าสายหลักได้ เมื่อผูกกับไปป์ไลน์ CI ระบบจะบล็อกอัตโนมัติเมื่อไม่ผ่าน
แนวทางที่ได้ผลที่สุดคือตั้งเกณฑ์กับโค้ดใหม่เท่านั้นในช่วงแรก เพราะโครงการเดิมมักมีปัญหาสะสมจำนวนมาก การบังคับให้แก้ทั้งหมดก่อนจะทำให้ทีมต่อต้านและเลิกใช้ในที่สุด
ความสามารถเด่นของ SonarQube
ตรวจโค้ดหลายภาษา
รองรับภาษาที่ใช้งานทั่วไปทั้ง Java, PHP, JavaScript, Python, Go และอื่น ๆ
ชี้ช่องโหว่ความปลอดภัย
ตรวจรูปแบบโค้ดที่เปิดช่องให้ถูกโจมตี เช่น การต่อคำสั่งฐานข้อมูลจากข้อมูลผู้ใช้
Quality Gate
กำหนดเกณฑ์ที่โค้ดใหม่ต้องผ่านก่อนรวมเข้าสายหลัก และบล็อกอัตโนมัติเมื่อไม่ผ่าน
วัดความครอบคลุมของเทสต์
รวมผลจากเครื่องมือทดสอบเพื่อให้เห็นว่าโค้ดใหม่มีเทสต์ครอบคลุมพอหรือไม่
ติดตามหนี้ทางเทคนิค
ประเมินเวลาที่ต้องใช้แก้ปัญหาสะสม ทำให้คุยกับฝ่ายบริหารด้วยตัวเลขได้
ใช้ SonarQube ทำอะไรได้บ้าง
- ทีมพัฒนาที่ต้องการมาตรฐานโค้ดที่ตรวจได้จริงไม่ใช่แค่เอกสาร
- องค์กรที่ต้องแสดงหลักฐานการตรวจความปลอดภัยของโค้ดต่อผู้ตรวจสอบ
- โครงการที่มีนักพัฒนาหลายคนและต้องการลดข้อผิดพลาดซ้ำ
- ทีมที่รับงานพัฒนาจากภายนอกและต้องตรวจคุณภาพงานส่งมอบ
สเปก Cloud Server ที่แนะนำ
| ระดับการใช้งาน | vCPU | RAM | Disk |
|---|---|---|---|
| ขั้นต่ำโครงการไม่กี่ตัวและทีมขนาดเล็ก | 2 vCPU | 4 GB | NVMe 50 GB |
| แนะนำหลายโครงการที่สแกนทุกครั้งที่มีโค้ดใหม่ | 4 vCPU | 8 GB | NVMe 100 GB |
| องค์กรหลายสิบโครงการและแยกฐานข้อมูลออกไปอีกเครื่อง | 8 vCPU ขึ้นไป | 16 GB ขึ้นไป | NVMe 200 GB ขึ้นไป |
ดูราคาตามสเปกได้ที่ ราคา Cloud Compute หรือให้ทีมงานช่วยประเมินสเปกจากปริมาณผู้ใช้จริงของคุณ
วิธีติดตั้ง SonarQube บน Cloud Server ของ THAI DATA CLOUD
ขั้นตอนด้านล่างใช้กับ Cloud Server ที่เพิ่งสร้างใหม่จากหน้าจัดการของ THAI DATA CLOUD ได้ทันที ถ้าไม่สะดวกทำเอง ทีมวิศวกรของเราติดตั้งและตั้งค่าให้ฟรีสำหรับลูกค้า Cloud Server
สิ่งที่ต้องเตรียม
- Java Runtime ตามที่รุ่นนั้นกำหนด
- PostgreSQL สำหรับเก็บผลการวิเคราะห์
- ตั้งค่า vm.max_map_count เป็น 262144 เพราะใช้เอนจินค้นหาภายใน
ทดสอบบน Ubuntu Server 24.04 LTS ที่ติดตั้ง Docker แล้ว
- 1
ตั้งค่าระบบที่จำเป็น
sudo sysctl -w vm.max_map_count=262144 echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf - 2
สร้างไฟล์ docker-compose.yml
services: db: image: postgres:16 environment: POSTGRES_USER: sonar POSTGRES_PASSWORD: ChangeThisStrongPassword POSTGRES_DB: sonarqube volumes: - ./pgdata:/var/lib/postgresql/data restart: unless-stopped sonarqube: image: sonarqube:community depends_on: [db] environment: SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonarqube SONAR_JDBC_USERNAME: sonar SONAR_JDBC_PASSWORD: ChangeThisStrongPassword volumes: - ./sonar-data:/opt/sonarqube/data - ./sonar-ext:/opt/sonarqube/extensions ports: - "127.0.0.1:9000:9000" restart: unless-stopped - 3
สั่งรัน
docker compose up -d docker compose logs -f sonarqube - 4
ตั้ง Nginx และ HTTPS
ให้ Nginx รับ HTTPS แล้วส่งต่อมาที่พอร์ต 9000 พร้อมออกใบรับรอง
sudo certbot --nginx -d sonar.example.com - 5
เข้าสู่ระบบและเปลี่ยนรหัสผ่าน
บัญชีเริ่มต้นคือ admin ต้องเปลี่ยนรหัสผ่านทันทีในการเข้าครั้งแรก แล้วสร้างโทเคนสำหรับให้ CI เรียกใช้
- 6
เชื่อมกับไปป์ไลน์ CI
เพิ่มขั้นตอนสแกนในไปป์ไลน์ของ GitLab CI หรือ Jenkins แล้วตั้งให้ Quality Gate บล็อกเมื่อโค้ดใหม่ไม่ผ่านเกณฑ์
sonar-scanner \ -Dsonar.projectKey=my-app \ -Dsonar.host.url=https://sonar.example.com \ -Dsonar.token=$SONAR_TOKEN
ตั้งเกณฑ์ให้บังคับกับโค้ดใหม่ก่อนเสมอ การบังคับให้แก้ปัญหาสะสมทั้งหมดตั้งแต่วันแรกมักทำให้ทีมเลิกใช้ระบบไปเลย
พอร์ตที่ต้องเปิดบน Firewall
| พอร์ต | โปรโตคอล | ใช้ทำอะไร |
|---|---|---|
| 443 | TCP | HTTPS ผ่าน Reverse Proxy |
| 9000 | TCP | พอร์ตภายในของ SonarQube |
สิ่งที่ควรทำต่อหลังติดตั้งเสร็จ
- เปลี่ยนรหัสผ่านผู้ดูแลระบบทันทีหลังติดตั้ง
- ปิดการสมัครสมาชิกเองและผูกกับระบบยืนยันตัวตนขององค์กร
- ออกโทเคนแยกต่อโครงการสำหรับให้ CI เรียกใช้
- สำรองฐานข้อมูลเพราะเก็บประวัติคุณภาพโค้ดย้อนหลังทั้งหมด
ทำไมควรรัน SonarQube บน Cloud Server ของ THAI DATA CLOUD
Data Center ในประเทศไทย มาตรฐาน ISO/IEC 27001 และ ISO 22301 พร้อมทีมวิศวกรคนไทยดูแลตลอด 24 ชั่วโมง
โค้ดขององค์กรไม่ต้องส่งออกไปวิเคราะห์บนบริการต่างประเทศ
อยู่ในวง Private Network เดียวกับ GitLab และ Jenkins ทำให้สแกนเร็วและไม่ผ่านอินเทอร์เน็ต
ขยาย RAM ได้เมื่อจำนวนโครงการที่สแกนเพิ่มขึ้น
คำถามที่พบบ่อยเกี่ยวกับ SonarQube
รุ่นชุมชนใช้งานจริงได้ไหม
ได้ และเพียงพอสำหรับทีมส่วนใหญ่ ความสามารถที่อยู่ในรุ่นเสียเงินคือการวิเคราะห์บางภาษาระดับองค์กร การตรวจแบบข้ามไฟล์ที่ลึกขึ้น และการรองรับหลายสาขาพร้อมกัน
ต้องสแกนทุกครั้งที่ commit ไหม
แนวทางที่ได้ผลคือสแกนทุกครั้งที่เปิด Merge Request เพื่อให้เห็นผลก่อนรวมโค้ด และสแกนสายหลักตามรอบเพื่อดูแนวโน้มระยะยาว
แทนการรีวิวโค้ดด้วยคนได้ไหม
แทนไม่ได้ เครื่องมือจับรูปแบบที่ผิดซ้ำ ๆ ได้ดีแต่ไม่เข้าใจเจตนาของธุรกิจ จึงควรใช้คู่กันโดยให้เครื่องมือจับงานซ้ำและให้คนโฟกัสที่ตรรกะและการออกแบบ
ทางเลือกอื่นที่คล้ายกับ SonarQube
แอปอื่นในหมวด DevOps และ CI/CD
บริการของ THAI DATA CLOUD ที่เกี่ยวข้อง
ให้เราติดตั้ง SonarQube ให้ฟรี บน Cloud Server ในไทย
แจ้งความต้องการสั้น ๆ ทีมวิศวกรจะช่วยประเมินสเปก ติดตั้ง และตั้งค่าความปลอดภัยให้พร้อมใช้งาน ปรึกษาฟรี ไม่มีข้อผูกมัด