1. CI / CD คืออะไร ? |
2. CI/CD Services บน Google Cloud |
3. CI/CD Pipeline บน Google Cloud |
ในปัจจุบันการสร้าง Application และ Software ได้มีการพัฒนาไปอย่างมากในเชิงของ Technology ซึ่งมี Tools หลากหลาย มาช่วยในการพัฒนา Software ของเรา ในขั้นตอนต่าง ๆ เช่น Design, Implement, Testing และ Deployment
เพื่อให้ตอบโจทย์กับการแข่งขันในตลาดปัจจุบัน การพัฒนา Software ของเราควรมีประสิทธิภาพทั้งในแง่ของความเร็วและความคล่องตัว เพื่อตอบโจทย์ทางด้านธุรกิจและสามารถแก้ไขปัญหาของผู้ใช้งานได้
1. CI / CD คืออะไร ? |
2. CI/CD Services บน Google Cloud |
3. CI/CD Pipeline บน Google Cloud |
CI/CD คือ กระบวนการหนึ่งที่จะมาช่วยในพัฒนา Software ให้มีประสิทธิภาพมากขึ้น ทั้งในแง่ของระยะเวลาการพัฒนาและคุณภาพของ Software
CI ย่อมาจาก Continuous Integration คือ กระบวนการที่จัดการ Source Code ของเราให้ผ่านกระบวนการการ Testing, Building เพื่อให้แน่ใจว่า Source Code สามารถใช้งานได้จริง ไม่มีข้อผิดพลาด
โดยผลลัพธ์จากขั้นตอน CI คือ Source Code ของเรามีความพร้อมที่จะถูกใช้งานและส่งมอบให้กับลูกค้า
CD ย่อมาจาก Continuous Delivery หรือ Continuous Deployment กระบวนการที่ช่วยเหลือให้เราสามารถ Deploy Software ของเราได้อย่างมีประสิทธิภาพ โดยการนำ Source Code ที่ผ่านการ Build และ Testing มาแล้ว ซึ่งอาจอยู่ในรูปแบบที่แตกต่างกัน เช่น JAR file, Static file หรือแม้กระทั่ง Container Image ให้จัดการ Deploy ขึ้นไปอยู่บน Server ตามที่เราต้องการและสามารถใช้งานได้อย่างถูกต้อง
กระบวนการ CD มี 2 ประเภท
อ้างอิง :https://clm-consulting.com/ser...
ท้ายสุดแล้วกระบวนการ CD คือ เราสามารถส่งมอบ Software ให้กับลูกค้าได้ ในขณะเดียวกันมีระบบที่คอยช่วยเหลือจัดการทั้ง Revision ของ Source Code และระบบ Operation และ Monitoring
เพื่อให้การพัฒนา Software มีประสิทธิภาพยิ่งขึ้น ไม่เพียงแต่เราจะมีการทำ CI/CD pipeline เท่านั้น การนำ Software ไป Deploy ขึ้น Cloud ถือเป็นตัวช่วยหนึ่งที่ทำให้ Software ของเรามีความคล่องตัวและความปลอดภัยมากขึ้น สามารถใช้ tools หรือ services อื่น ๆ บน cloud มา integration กับ software เราได้ รวมถึงค่าใช้จ่ายค่าบริการที่สามารถตรวจสอบได้ และสามารถเลือกแผนการชำระค่าบริการในรูปแบบต่าง ๆ ให้ตรงกับแผนและขนาดของธุรกิจของเราได้
โดย Google Cloud มี services ที่ค่อนหลากหลายและครอบคลุมในหลาย ๆ ด้าน เช่น Compute Instance, Data Analytics, AI/Machine Learning, Storage และอื่น ๆ อีกมากมาย ที่สามารถใช้ร่วมกันได้อย่างไร้รอยต่อ
อ่านเพิ่มเติม Google Cloud คืออะไร
Cloud Build คือ service ที่เป็น Serverless CI/CD Platform สามารถจัดการ Testing, Building และ Deploying ได้ในตัวเอง ด้วยความที่เป็น Serverless ทำให้เราไม่ต้องกังวลหรือคำนึงถึงการจัดการตัว Server, Infrastucture, auto-scalling ของระบบ CI/CD เลยสักนิด เพราะทาง Google Cloud ดูแลจัดการให้แล้ว
โดยเราสามารถเขียน YAML script เพื่อจัดการขั้นตอนการทำ CI/CD ว่าในแต่ละขั้นตอนจะให้ execute กระบวนการใดบ้าง
Container Registry คือ services ที่ให้บริการที่จัดเก็บและจัดการ Container Image มีลักษณะคล้ายคลึงกับ Docker Hub โดยสามารถจัดเก็บได้ตาม Tag หรือ Versioning ของ Container Image และสามารถจัดเรื่อง privacy ของ Container Image ได้ ว่าต้องการให้เป็น Private หรือ Public เพื่อจัดการความปลอดภัย สามารถจัดการ Authorized ว่าอนุญาตให้ใครสามารถเข้าถึง Container Image นั้น ๆ ได้ มากกว่านั้นคือ ความสะดวกของการใช้งานโดยเฉพาะหากใช้งานกับ Google Cloud Platform เราสามารถ Deploy Container Image ผ่านได้จาก Container Registry UI
Cloud Source Repositories คือ services ที่ให้บริการ Private Git หรือที่จัดเก็บ Source Code บน Google Cloud Platform ลักษณะคล้าย Public Repositories ทั่วไป แต่มีความสามารถในการ Search หา Source code รองรับความซับซ้อนของการค้นหา มากกว่านั้นคือการนำ Source Code ไป Deploy โดยตรงได้เลย รวมถึงการทำ Integration กับ Google Cloud Services อื่น ๆ ได้อย่างดี เช่น Cloud Build, App Engine, Pub/Sub หรือกรณี services ในการดูแล Monitoring เช่น Cloud Monitoring, Cloud Logging เป็นต้น
หลังจากที่เราได้รู้จัก CI/CD Services บน Google Cloud Platform มาแล้ว หากต้องการเริ่มต้นสร้าง CI/CD Pipeline บน Google Cloud Platform ต้องวางแผนอย่างไรบ้าง ?
Cloud Build รองรับการทำ Integration กับ Git Repositories ดังต่อไปนี้
ซึ่งเราสามารถตั้งค่ากำหนด Cloud Build ว่าจะรับ Trigger Event ประเภทใดได้บ้าง เช่น ทุก commit จาก Main Branch, New Pull Request, New Tag เป็นต้น
ให้ไปที่ marketplace และค้นหา Google Cloud Build จากนั้นทำการติดตั้งกับ Repository
Grant Authorize สิทธิ์ของ GitHub และ Google Cloud ให้เชื่อมต่อกัน
เมื่อทำการเชื่อมต่อ GitHub และ Google Cloud เสร็จเรียบร้อยแล้ว ให้กลับไปที่หน้า Google Cloud Console และไปที่ Cloud Build จากนั้นเลือกเมนู Trigger เพื่อ setup ตัว Trigger กับ Repository
โดยจากรูปภาพด้านบนเป็นการตั้งค่า Trigger ว่าหากมี commit ใด ๆ เข้ามาที่ main branch ตัว trigger จะทำการ run pipeline ทันที
ถ้าหากเลื่อนลงมาด้านล่างจะเห็นว่า จะมีการ config เพิ่มเติมคือ Build Configuration โดยในส่วนนี้คือการกำหนดชื่อและเลือกที่อยู่ของ CI/CD script ใน Repositories ซึ่งจะเป็นตัวสร้างคำสั่งให้ Cloud Build ว่าต้องทำอะไรบ้าง ตามขั้นตอนเป็นลำดับขั้น
อีกส่วนคือ Subsitution Variables คือการกำหนดค่าตัวแปร Enviroment Variable ให้ Cl/CD ของ Cloud Build สามารถนำไปใช้ได้
โดยเราสามารถกำหนดขั้นตอนต่าง ๆ ว่าจะให้ Cloud Build ทำอะไรบ้าง ตามตัวอย่างภาพด้านล่างนี้
ในตัว YAML script จะคอยบอกว่า Cloud Build ต้องทำอะไรบ้างและทำขั้นตอนใดก่อน ใน Pipeline ซึ่งในแต่ละส่วนการทำงานสามารถกำหนดได้ตามความต้องการของโปรเจค เช่น Testing, Deploy, Build เป็นต้น หากเราต้องการ Build Image ใน CI/CD Pipeline ก็ต้องมี Dockerfile เพื่อกำหนดขั้นตอนการ Build Image เช่นกัน
ในกรณีที่ขั้นตอนใดเกิดข้อผิดพลาดก็จะเกิด alert error แจ้งเตือนขึ้นมา
ในขั้นตอนนี้จะทำการ Run test เพื่อทดสอบ code ของว่าสามารถทำงานได้ถูกต้องหรือไม่ ซึ่งรูปแบบการ Test นั้นมีหลากหลายระดับ เช่น Unit Test, Integration Test, UI Test เป็นต้น
ในขั้นตอนนี้เริ่มจะทำการ Build Image ซึ่งจะอ้างอิงขั้นตอนการ Build จาก Dockerfile หลังจากทำการ Build Image เสร็จเรียบร้อยแล้ว ในอีกขั้นตอนถัดไป คือการ Push Image ที่เราได้ทำการ Build ไปที่ Container Registry
โดยที่เราสามารถเรียกใช้ Environment Variable ได้ตามภาพ เช่น
$PROJECT_ID คือ ชื่อ project id
$REPO_NAME คือ ชื่อ repository
$SHORT_SHA คือ commit id แบบสั้น
$BRANCH_NAME คือ branch name
ในขั้นตอนนี้จะทำการ Deploy Image ที่ได้ build เมื่อขั้นตอนที่แล้ว โดยเราสามารถกำหนดได้ว่าจะให้ไป Deploy ที่ compute service ชนิดใด ตามภาพจะเป็นการ Deploy ไปที่ Cloud Run และกำหนด parameter ต่าง ๆ เช่น service name, image name, region, platform เป็นต้น
ในช่วงที่ Run Pipeline เราสามารถดูรายละเอียดได้ว่า Cloud Build ทำขั้นตอนใดอยู่ ใช้เวลาไปเท่านั้น หากเกิด error ก็สามารถมาตรวจสอบได้ว่าเกิดจากอะไรและขั้นตอนไหนใน Pipeline
บน Google Cloud Platform มี Compute Services หลากหลายรูปแบบ ซึ่งมีความแตกต่างกันในลักษณะของการใช้งานและตามความต้องการของผู้ใช้งาน
การทำ CI/CD Pipeline บน Google Cloud Platform สามารถมาเพิ่มความเร็วและประสิทธิภาพในการพัฒนา Software ของเราแล้ว แถมยังช่วยให้เราสามารถจัดการ ค่าใช้จ่ายบริการได้อย่างถูกต้องเป็นระบบและมีความยืดหยุ่นต่อธุรกิจ หากต้องการลดหรือเพิ่ม Scaling Resource Server ทำได้ทันที มีความยืดหยุ่นกว่า On-premise ที่มีข้อจำกัดมากกว่า
ทั้งนี้ตัวอย่าง CI/CD ด้านบนเป็นเพียงหนึ่งในตัวอย่างเท่านั้น เราสามารถทำ CI/CD ในลักษณะต่าง ๆ ที่เข้ากับแผนปฎิบัติงานของเรา เช่น DevOps, GitOps, MLOps ได้
นอกจากนั้นการที่เราใช้งาน Google Cloud Platform ทำให้เราสามารถ Integration กับ services อื่น ๆ อย่าง Seamless ได้ เช่น Firebase, Google Maps API, AutoML, Vision API, BigQuery, Cloud Storage, Data Studio และอื่น ๆ อีกมากมาย เพื่อเพิ่มศักยภาพในการพัฒนา Product ของเรา
Written by Peem Srinikorn
Cloud Ace Thailand
หากคุณต้องการคำปรึกษา Cloud Ace Thailand พร้อมให้บริการที่จะสนับสนุนคุณตั้งแต่ การให้คำปรึกษา จนถึงการออกแบบระบบ ติดตั้งระบบ ย้ายระบบ ในฐานะ Google Cloud Partner ที่มีความเชี่ยวชาญ และได้รับรางวัล Service partner of the year ในปี 2019
ติดต่อเรา th_sales@cloud-ace.com
Thank you for subscribing!
Have a great day!