โลโก้ SonarQube
DevOps และ CI/CDLGPLv3 (Community Edition)

SonarQube คืออะไร และวิธีติดตั้งบน Cloud Server

SonarQube คือระบบตรวจคุณภาพโค้ดอัตโนมัติที่ชี้จุดบกพร่อง ช่องโหว่ความปลอดภัย และโค้ดที่ซ้ำซ้อน ก่อนที่โค้ดจะถูกรวมเข้าสายหลัก ทำให้ทีมแก้ปัญหาตั้งแต่ยังราคาถูก

หมวดหมู่
DevOps และ CI/CD
ติดตั้งบนเซิร์ฟเวอร์เองได้
ได้
สเปกเริ่มต้นที่แนะนำ
2 vCPU · RAM 4 GB
ไลเซนส์
LGPLv3 (Community Edition)
เว็บทางการ
เปิดเว็บไซต์
สร้าง Cloud Server เดี๋ยวนี้
  • ISO/IEC 27001
  • ISO 22301
  • ISO 20000-1
  • CSA-STAR

Data Center ในไทย มาตรฐาน TIA-942 Tier 3+ ข้อมูลอยู่ในประเทศไทย

SonarQube คืออะไร

การรีวิวโค้ดด้วยคนจับปัญหาเชิงตรรกะได้ดี แต่จับรูปแบบที่ผิดพลาดซ้ำ ๆ ได้ไม่ครบ เช่น ตัวแปรที่ไม่ถูกใช้ การจัดการข้อผิดพลาดที่หายไป หรือรูปแบบโค้ดที่เปิดช่องให้ถูกโจมตี SonarQube ตรวจสิ่งเหล่านี้ให้อัตโนมัติทุกครั้งที่มีโค้ดใหม่

ความสามารถที่เปลี่ยนพฤติกรรมทีมได้จริงคือ Quality Gate ซึ่งกำหนดเกณฑ์ว่าโค้ดใหม่ต้องผ่านอะไรบ้างจึงจะรวมเข้าสายหลักได้ เมื่อผูกกับไปป์ไลน์ CI ระบบจะบล็อกอัตโนมัติเมื่อไม่ผ่าน

แนวทางที่ได้ผลที่สุดคือตั้งเกณฑ์กับโค้ดใหม่เท่านั้นในช่วงแรก เพราะโครงการเดิมมักมีปัญหาสะสมจำนวนมาก การบังคับให้แก้ทั้งหมดก่อนจะทำให้ทีมต่อต้านและเลิกใช้ในที่สุด

แผนผังการวางระบบ SonarQube บน Cloud Server หนึ่งเครื่องที่ Data Center ในประเทศไทย ผู้ใช้เข้าถึงผ่านไฟร์วอลล์ที่เปิดเฉพาะพอร์ต 443, 9000 ตัว SonarQube และข้อมูลอยู่บนเครื่องเดียวกัน เริ่มต้นที่ 2 vCPU แรม 4 GB และมีสำเนาสำรองเขียนออกไปเก็บอีกไซต์หนึ่ง
SonarQube ทำงานบน Cloud Server เครื่องเดียวได้ครบ เปิดเฉพาะพอร์ตที่จำเป็น ข้อมูลและสำเนาสำรองอยู่ใน Data Center ในประเทศไทย

ความสามารถเด่นของ SonarQube

ตรวจโค้ดหลายภาษา

รองรับภาษาที่ใช้งานทั่วไปทั้ง Java, PHP, JavaScript, Python, Go และอื่น ๆ

ชี้ช่องโหว่ความปลอดภัย

ตรวจรูปแบบโค้ดที่เปิดช่องให้ถูกโจมตี เช่น การต่อคำสั่งฐานข้อมูลจากข้อมูลผู้ใช้

Quality Gate

กำหนดเกณฑ์ที่โค้ดใหม่ต้องผ่านก่อนรวมเข้าสายหลัก และบล็อกอัตโนมัติเมื่อไม่ผ่าน

วัดความครอบคลุมของเทสต์

รวมผลจากเครื่องมือทดสอบเพื่อให้เห็นว่าโค้ดใหม่มีเทสต์ครอบคลุมพอหรือไม่

ติดตามหนี้ทางเทคนิค

ประเมินเวลาที่ต้องใช้แก้ปัญหาสะสม ทำให้คุยกับฝ่ายบริหารด้วยตัวเลขได้

ใช้ SonarQube ทำอะไรได้บ้าง

  • ทีมพัฒนาที่ต้องการมาตรฐานโค้ดที่ตรวจได้จริงไม่ใช่แค่เอกสาร
  • องค์กรที่ต้องแสดงหลักฐานการตรวจความปลอดภัยของโค้ดต่อผู้ตรวจสอบ
  • โครงการที่มีนักพัฒนาหลายคนและต้องการลดข้อผิดพลาดซ้ำ
  • ทีมที่รับงานพัฒนาจากภายนอกและต้องตรวจคุณภาพงานส่งมอบ

สเปก Cloud Server ที่แนะนำ

แผนภาพเทียบสเปก Cloud Server สำหรับ SonarQube 3 ระดับ เริ่มจาก 2 vCPU แรม 4 GB ดิสก์ NVMe 50 GB ไปจนถึง 8 vCPU ขึ้นไป แรม 16 GB ขึ้นไป ดิสก์ NVMe 200 GB ขึ้นไป โดยเทียบขนาดแยกตามแต่ละคอลัมน์
เริ่มจากระดับที่ตรงกับการใช้งานตอนนี้ แล้วเพิ่ม CPU และ RAM ทีหลังได้บนเครื่องเดิม
ระดับการใช้งานvCPURAMDisk
ขั้นต่ำโครงการไม่กี่ตัวและทีมขนาดเล็ก2 vCPU4 GBNVMe 50 GB
แนะนำหลายโครงการที่สแกนทุกครั้งที่มีโค้ดใหม่4 vCPU8 GBNVMe 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. 1

    ตั้งค่าระบบที่จำเป็น

    sudo sysctl -w vm.max_map_count=262144
    echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
  2. 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. 3

    สั่งรัน

    docker compose up -d
    docker compose logs -f sonarqube
  4. 4

    ตั้ง Nginx และ HTTPS

    ให้ Nginx รับ HTTPS แล้วส่งต่อมาที่พอร์ต 9000 พร้อมออกใบรับรอง

    sudo certbot --nginx -d sonar.example.com
  5. 5

    เข้าสู่ระบบและเปลี่ยนรหัสผ่าน

    บัญชีเริ่มต้นคือ admin ต้องเปลี่ยนรหัสผ่านทันทีในการเข้าครั้งแรก แล้วสร้างโทเคนสำหรับให้ CI เรียกใช้

  6. 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

พอร์ตโปรโตคอลใช้ทำอะไร
443TCPHTTPS ผ่าน Reverse Proxy
9000TCPพอร์ตภายในของ 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 ให้ฟรี บน Cloud Server ในไทย

แจ้งความต้องการสั้น ๆ ทีมวิศวกรจะช่วยประเมินสเปก ติดตั้ง และตั้งค่าความปลอดภัยให้พร้อมใช้งาน ปรึกษาฟรี ไม่มีข้อผูกมัด