Skip to main content
0
Software Development

เปลี่ยนงานเดิม ๆ ให้อัตโนมัติด้วย Automating the DevOps Workflow

ขอบคุณภาพจาก https://unsplash.com/photos/people-sitting-on-chair-in-front-of-computer-monitor-Fa9b57hffnM

เหนื่อยมั้ยกับการนั่งเทส นั่ง deploy โค้ดเองทุกวัน? ซึ่งปัญหาเหล่านี้เป็นปัญหามาตั้งแต่ยุคคลาสิคสมัยที่การทำงานในบริษัทใหญ่ที่มีทั้งทีม Dev ฝั่งเขียนแอปขึ้นมา ฝั่ง Ops ที่ทำหน้าที่เอาแอปไปรันบน Infra แต่มักเจอปัญหาฝั่ง Dev รันได้ แต่ฝั่ง Infra กลับพัง แถมแต่ละกระบวนการยังต้องใช้คนทำ ทำงานซ้ำ ๆ ซาก ๆ แต่สมัยนี้มันมีวิธีที่ง่าย เครื่องมือที่ใช้ทำให้กระบวนการต่าง ๆ เป็นอัตโนมัติได้ ด้วย DevOps Workflow โดยเป็นการเชื่อมต่อตั้งแต่กระบวนการ Dev Test ไปจนกถึง Deploy ให้สามารถจบได้ด้วยคน ๆ เดียว ที่งัดความสามารถมาจากเครื่องมือสุดเจ๋ง แต่ก่อนอื่นเราไปรู้จักกับ DevOps กันก่อนดีกว่า

DevOps คืออิหยัง?

ขออธิบายง่าย ๆ เลย DevOps คือการทำให้ทีมพัฒนา (Development) กับทีมปฏิบัติการ (Operations) ที่ปกติแล้วมักไม่ค่อยจะคุยกันหรือไม่ค่อยทำงานร่วมกันอย่างราบรื่น แต่การใช้ DevOps จะทำให้มีการประสานงานกันได้ดีขึ้น เพื่อให้กระบวนการพัฒนาและส่งมอบซอฟต์แวร์เร็วและราบรื่นขึ้น

ใน DevOps การที่งานทั้งหมดมันลื่นไหลได้คือการใช้ CI/CD Pipeline ซึ่งย่อมาจาก Continuous Integration (CI) และ Continuous Delivery/Deployment (CD) แต่ชื่อคอนเซปก็เห็นถึงความต่อเนื่องแล้ว นี่แหละที่เป็นกุญแจหลักของการทำให้ทุกอย่างมันอัตโนมัติ มันทำให้กระบวนการทดสอบโค้ด การดีพลอย (deploy) โค้ด รวมถึงการนำโค้ดไปขึ้นระบบจริงแบบอัตโนมัติ โดยเราไม่ต้องมานั่งเทสหรือ deploy ด้วยตัวเองให้เสียเวลาอีกต่อไป

โดยขา CI จะเป็นขาเดฟและเทส อย่างเช่นเราสามารถทำให้การแก้โค้ดทุกครั้ง ถูกทดสอบอัตโนมัติทันที แล้วจากนั้นถ้าเสร็จแล้ว ก็ปล่อยสู่ขา CD ที่จะทำให้โค้ดที่ทดสอบผ่านแล้วพร้อม deploy ไปยังระบบจริงได้ทันทีแบบอัตโนมัติ ด้วยกระบวนการของ CI/CD นี้แหละที่ทำให้ DevOps สามารถพัฒนาซอฟต์แวร์จะเร็วขึ้น ปล่อยฟีเจอร์ใหม่ ๆ ได้ไว ลูกค้าได้ใช้ของใหม่ก่อนใคร แถมยังลดข้อผิดพลาดที่เกิดจากการทำงานแบบแมนนวลไปได้เยอะ

ตัวอย่างการทำ CI/CD: วิเคราะห์โค้ดแบบอัตโนมัติด้วย SonarQube และ Jenkins

ในการสร้าง CI/CD Pipeline ที่สามารถทำงานอัตโนมัติ โดยตัวอย่างนี้เราจะใช้งาน Jenkins สำหรับจัดการกระบวนการทำงาน CI/CD และ SonarQube เพื่อทำการวิเคราะห์คุณภาพของโค้ดหรือการหาช่องโหว่ในโค้ด (Code Quality & Vulnerabilities) มาดูกันว่าทั้งสองเครื่องมือนี้ทำงานร่วมกันอย่างไรในการสร้างกระบวนการทำ CI/CD

1. เริ่มด้วย Jenkins: พระเอกของการทำ CI/CD

ก่อนอื่นเลย Jenkins มันคือเครื่องมือที่ทำให้ทุกอย่างในกระบวนการ CI/CD (Continuous Integration/Continuous Delivery) เป็นไปแบบอัตโนมัติและไม่ต้องไปทำเองให้เมื่อย สามารถใช้ Jenkins เพื่อดึงโค้ดจาก GitHub (หรือระบบเก็บโค้ดอื่น ๆ) มา build, test แล้วส่งไป deploy ให้ได้

2. SonarQube: หาบั๊กและช่องโหว่

SonarQube คือเครื่องมือที่ใช้วิเคราะห์โค้ดได้ ดูว่าแต่ละบรรทัดมีอะไรพังบ้าง เช่น บั๊กที่ไม่ได้ตั้งใจเขียน หรือการเขียนโค้ดที่เหมือนเขียนมั่ว ๆ อ่านแล้วไม่เข้าใจ (Code Smells)

3. เราสามารถเชื่อมโค้ดของเรากับเครื่องมือ SonarQube ได้ด้วย Jenkins

สามารถผูกให้ Jenkins ส่งโค้ดไปที่ SonarQube เพื่อทำการสแกนโค้ดอัตโนมัติ โดยเริ่มจากการสร้าง Pipeline บน Jenkins

  1. สร้างโปรเจ็กต์ใน SonarQube ไว้รอ และสร้าง Pipeline บน Jenkins
  2. เชื่อม Jenkins กับ GitHub เอาโค้ดมารัน แล้วให้ SonarQube สแกนโค้ด
  3. โค้ดที่ผ่านการสแกนแล้วก็จะถูกดีพลอยไปยัง production พร้อมใช้งาน ทำให้แน่ใจได้ว่าก่อนเอาโค้ดขึ้น Production เรามีการผ่านเครื่องมือที่น่าเชื่อถือแล้ว แต่อย่าลืมเซ็ตค่าในการสแกนดี ๆ ด้วยนะ ด้านล่างจะเป็นโค้ดตัวอย่างของ Jenkins Pipeline
pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                git '<https://github.com/your-repo.git>'
                bat "npm install"
            }
        }

        stage('Scan') {
            steps {
                withSonarQubeEnv('SonarQube') {
                    bat "npm install sonar-scanner"
                    bat 'npx sonar-scanner -Dsonar.projectKey=your-project-key'
                }
            }
        }
    }
}

Plaintext

ซึ่งถ้าใครอยากลองทำแบบ step by step แอดได้เขียนบทความฉบับจับมือทำไว้ สามารถตามต่อได้ที่

https://www.borntodev.com/2024/03/31/sonarqube-jenkins-integretions/

ใช้ DevOps Workflow แล้ว Success ยังไง?

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

1. Capital One

Capital One หนึ่งในธนาคารยักษ์ใหญ่ ที่เจอปัญหาใช้เวลาเยอะมากในการกว่าจะปล่อยฟีเจอร์ออกมาในแต่ละรอบ เพราะระบบเดิมที่เป็นการทำงานแบบแมนนวลและมีการทำงานแยกกันระหว่างทีม Dev และ Ops จากปัญหานี้ Capital One จึงได้เดินหน้าสู่การใช้ DevOps โดยเน้นการทำงานอัตโนมัติผ่าน CI/CD และปรับกระบวนการทำงานให้เป็นแบบ Agile เพื่อเพิ่มความรวดเร็วและความคล่องตัว นอกจากนี้ยังมีการใช้ DevSecOps เพื่อรวมการตรวจสอบความปลอดภัยเข้าไปในทุกขั้นตอนของการพัฒนา ส่งผลให้กระบวนการส่งมอบซอฟต์แวร์รวดเร็วขึ้น 50% และมีการลดข้อผิดพลาดในโค้ด พร้อมทั้งรักษามาตรฐานความปลอดภัยสูงสุด

2. Etsy

Etsy ซึ่งเป็นแพลตฟอร์มอีคอมเมิร์ซสำหรับสินค้าทำเจอกับปัญหาในการทำซอฟต์แวร์เหมือนกัน โดยมีปัญหาหลักคือ การหยุดรอกันบ่อยครั้งเนื่องจากกระบวนการ deploy และการทดสอบที่ไม่ได้ทำอย่างอัตโนมัติ ส่งผลกระทบต่อความพึงพอใจของลูกค้าที่ออกซอร์ฟแวร์หรืออัปเดตแต่ละรอบช้ามาก ทั้งสองทีมทำงานแยกกันเป็น silo ทำให้ Etsy ต้องปรับปรุงระบบการพัฒนาโดยหันมาใช้แนวทาง DevOps ผ่านการใช้ CI/CD และ Infrastructure as Code (IaC) ด้วยเครื่องมือเช่น Jenkins, CircleCI และ Terraform กระบวนการเหล่านี้ช่วยลดเวลาในการออกฟีเจอร์ใหม่ เพิ่มคุณภาพของโค้ด และลดความถี่ของการหยุดทำงาน Etsy ยังเน้นวัฒนธรรมการทำงานร่วมกันระหว่างทีมต่าง ๆ ส่งผลให้การสื่อสารและการแก้ไขปัญหาเป็นไปได้อย่างรวดเร็วและมีประสิทธิภาพ

3. Netflix

เจ้าพ่อแห่งวงการสตรีมมิ่ง Netflix ก่อนหน้านี้เค้าก็ได้เจอปัญหาด้านการจัดการโครงสร้างพื้นฐานขนาดใหญ่และการรองรับการเติบโตที่รวดเร็วของผู้ใช้จำนวนมาก นอกจากนี้ Netflix ยังต้องการปล่อยฟีเจอร์ใหม่ ๆ อย่างต่อเนื่องเพื่อตอบสนองความคาดหวังของผู้ชม โดยเพื่อแก้ไขปัญหานี้ Netflix ได้เปลี่ยนมาใช้แนวทางแบบ DevOps โดยนำ Cloud-Native DevOps มาใช้กับ Microservices ทำให้สามารถจัดการโครงสร้างพื้นฐานได้ง่ายและรองรับการเติบโตได้อย่างมีประสิทธิภาพ นอกจากนี้ Netflix ยังใช้ CI/CD Pipelines ด้วยเครื่องมืออย่าง Spinnaker เพื่อทำให้การทดสอบและ deployment เป็นอัตโนมัติ รวมถึงการใช้เครื่องมือ Chaos Monkey ในการทดสอบความยืดหยุ่นของระบบ ผลลัพธ์คือ Netflix สามารถปล่อยฟีเจอร์ใหม่ได้เร็วขึ้น ลด downtime และพัฒนาประสบการณ์ของผู้ใช้อย่างต่อเนื่อง ซึ่งช่วยให้บริษัทคงความเป็นผู้นำในตลาดได้อย่างมั่นคง

จากบทความนี้ เราได้เห็นแล้วว่า DevOps ไม่ใช่เพียงแค่แนวทางใหม่ในการทำงานระหว่างทีม Dev และ Ops แต่ยังเป็นแนวทางที่ช่วยยกระดับการพัฒนาและการส่งมอบซอฟต์แวร์ให้มีประสิทธิภาพมากยิ่งขึ้น ไม่ว่าจะเป็นการทำให้การทดสอบและดีพลอย (deploy) โค้ดเป็นอัตโนมัติ การนำเครื่องมืออย่าง Jenkins และ SonarQube มาใช้ในการสร้าง CI/CD Pipeline หรือแม้แต่การดูตัวอย่างจากบริษัทชั้นนำที่ประสบความสำเร็จอย่าง Capital One, Etsy และ Netflix ที่หันมาใช้ DevOps จนทำให้สามารถเพิ่มความเร็ว ลดข้อผิดพลาด และรักษาคุณภาพในการปล่อยฟีเจอร์ใหม่ ๆ ได้อย่างต่อเนื่อง

โดย use case ทั้งหมดที่แอดนำมาเล่านี้ใครอยากไปตามอ่านต่อ สามารถอ่านเพิ่มเติมได้ที่ลิงก์นี้เลย 🔗 https://attractgroup.com/blog/devops-success-stories-real-life-case-studies/

Sirasit Boonklang

Author Sirasit Boonklang

More posts by Sirasit Boonklang

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่จำเป็น
    เปิดใช้งานตลอด

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

  • คุกกี้สำหรับการติดตามทางการตลาด

    ประเภทของคุกกี้ที่มีความจำเป็นในการใช้งานเพื่อการวิเคราะห์ และ นำเสนอโปรโมชัน สินค้า รวมถึงหลักสูตรฟรี และ สิทธิพิเศษต่าง ๆ คุณสามารถเลือกปิดคุกกี้ประเภทนี้ได้โดยไม่ส่งผลต่อการทำงานหลัก เว้นแต่การนำเสนอโปรโมชันที่อาจไม่ตรงกับความต้องการ
    รายละเอียดคุกกี้

บันทึกการตั้งค่า