รีวิว DevSecOps Transformation & Technologies — Skooldio (Part 1/3)
พัฒนา Software อย่างมีประสิทธิภาพ ด้วย DevSecOps
รีวิว DevSecOps Transformation & Technologies — Skooldio (Part 1/3)
พัฒนา Software อย่างมีประสิทธิภาพ ด้วย DevSecOps

Connect with me and follow our journey: Linkedin, Facebook
Course Overview
คอร์ส DevSecOps Transformation & Technologies (พัฒนา Software อย่างมีประสิทธิภาพ ด้วย DevSecOps) จาก Skooldio เป็นการปูพื้นฐาน DevSecOps โดยเน้นไปที่ Mindset และหลักการทำงาน มากกว่าการใช้เครื่องมือหรือการเขียนโค้ด สิ่งที่ชอบในคอร์สนี้คือการอธิบายภาพรวมของ DevSecOps ได้อย่างชัดเจน ช่วยให้เข้าใจแนวคิดหลักและสามารถนำไปต่อยอดได้ หัวข้อหลักๆ ในคอร์สประกอบด้วย:
- Introduction
- CI/CD and Artifacts
- Infrastructure: Cloud, Container, Docker, Kubernetes
- Monitoring
- Automation Security
- How to Start DevSecOps
1. Introduction
What is DevSecOps?
- DevSecOps ย่อมาจาก Development (การพัฒนา), Security (ความปลอดภัย), และ Operations (การปฏิบัติการ)
- DevSecOps คือ Mindset ที่ผสาน Security เข้ากับ DevOps ช่วยให้การพัฒนาซอฟต์แวร์มีความปลอดภัย, คล่องตัว, และมีประสิทธิภาพ โดยใช้ Automation และความร่วมมือของทีม Dev, Ops, และ Sec ในทุกขั้นตอน
DevSecOps Workflow
- DevSecOps ประกอบขึ้นจาก DevOps Workflow ดังนี้:
Plan → Code → Build → Test → Package → Release → Configure → Monitor

Figure: DevOps Photo from https://proeffico.com/devops-devsecops/
- และเสริม Securityเข้าไปในทุกขั้นตอน (Security in Every Step with Automation)

Figure: DevSecOps Photo from https://www.dynatrace.com/news/blog/what-is-devsecops/
Key Concepts of DevSecOps
- Integration of Security Early (Shift-Left): ใส่ Security ตั้งแต่ต้นกระบวนการ
- Collaboration Across Teams: ลด Silo ระหว่างทีม Dev, Ops, และ Sec
- Automation of Security Processes: ใช้ Automation ผนวก Security ใน CI/CD Pipeline
- Continuous Monitoring and Feedback: ตรวจสอบและปรับปรุงอย่างต่อเนื่อง
Environment in DevSecOps
Environment หมายถึงพื้นที่ในการพัฒนาหรือทดสอบระบบ แบ่งได้ 4 ประเภทหลัก:
- Development (Dev) Environment:
- ใช้โดยทีม Developer สำหรับเขียนและทดสอบโค้ดเบื้องต้น
- เน้นความยืดหยุ่น สามารถ Reset ได้ง่าย - User Acceptance Testing (UAT) Environment:
- ใช้ตรวจสอบ UX/UI และ Business Logic ว่าตรงตามความต้องการผู้ใช้หรือไม่
- ทดสอบโดย QA หรือผู้ใช้ปลายทาง - Staging Environment:
- จำลองสภาพแวดล้อม Production สำหรับทดสอบขั้นสุดท้าย
- เน้นการทดสอบ Performance, Load Testing และ Security - Production Environment:
- ระบบที่ใช้งานจริงโดยผู้ใช้ปลายทาง
- ต้องมีความเสถียร, ปลอดภัย, และมีการ Monitoring อย่างต่อเนื่อง
DevSecOps and Agile
- Agile: Framework Framework การทำงานแบบยืดหยุ่นที่เน้นการส่งมอบงานเร็ว ปรับเปลี่ยนไว และทำงานเป็นรอบสั้นๆ ตามความต้องการของลูกค้า โดยใน DevSecOps Workflow นั้น Agile จะเน้นที่ Plan, Code, Build, และ Test

Figure: DevSecOps and Agile (Image by Author)
- Scrum: DevSecOps อยู่ใน Sprint และ Sprint Review
Version Control System (VCS)
- VCS เป็นระบบจัดการเวอร์ชันของโค้ด ช่วยให้ทีมพัฒนาติดตามการเปลี่ยนแปลงและทำงานร่วมกันได้อย่างมีประสิทธิภาพ
- Git: เป็นระบบ VCS ที่นิยมมากที่สุด มี Feature สำคัญคือ Branching ช่วยให้ Developer สามารถทำงานแยกกันได้แบบขนาน โดยไม่กระทบกับ Code หลัก
2. CI/CD and Artifacts

Figure: CI/CD ใน DevOps Work Flow (Image by Author)
Continuous Integration (CI)
- Continuous Integration (CI): กระบวนการรวมโค้ดจากนักพัฒนาหลายคนเข้าด้วยกันอย่างอัตโนมัติ พร้อมตรวจสอบคุณภาพโค้ดผ่านขั้นตอน Build, Test, และ Package
- Build: ขั้นตอนการแปลง Source Code และ Dependencies ซึ่งรวมไปถึง:
- Compile: แปลง Source Code เป็น Machine Code หรือ Bytecode
- Dependency Management: จัดการ Third-party Libraries เช่นrequirements.txtใน Python
- Package: รวมไฟล์ให้อยู่ในรูปแบบที่ Deploy ได้ เช่น Docker Image - Package Manager (PM) ที่นิยมใช้กับ Python คือ poetry
Key Focus ใน DevSecOps - รู้ว่า Developer ดึงอะไรมาใช้งานบ้าง: เช่น Third-party Libraries, Tools
- ตรวจสอบ Dependencies: Third-party Libraries ที่ดึงมาใช้ปลอดภัยหรือไม่
- ตรวจจับช่องโหว่: ในขั้นตอน Build มีช่องโหว่หรือไม่
- **Test:**ตรวจสอบคุณภาพ, ฟีเจอร์, และความปลอดภัยของซอฟต์แวร์หรือระบบ ตัวอย่างประเภทของการทดสอบ:
- Unit Test: ทดสอบโค้ดส่วนเล็กๆ เช่น ฟังก์ชันหรือเมธอด
- Integration Test: ทดสอบการทำงานร่วมกันของโมดูลต่างๆ
- Functional Test: ตรวจสอบว่าระบบทำงานตามที่ระบุใน Requirements
- Performance Test: ทดสอบประสิทธิภาพ (ความเร็ว, การรองรับ Load)
- Acceptance Test: ทดสอบว่าเป็นไปตามความต้องการของลูกค้าหรือไม่
- UI Test: ทดสอบส่วนติดต่อผู้ใช้งาน (UX/UI)
สิ่งสำคัญของ Test - ตกลงนิยามเรื่อง Test แต่ละประเภทให้ชัดเจน
- กำหนดผู้รับผิดชอบในแต่ละ Test
- ตัวอย่างเครื่องมือที่นิยมใช้:
- Unit Test: JUnit (Java), PyTest (Python), Jest (JavaScript/TypeScript)
- UI Test / Browser Simulation Test: Selenium, Cypress, Puppeteer - Behavior Driven Development (BDD): แนวทางการเขียนเทสที่เข้าใจง่ายในรูปแบบ ภาษาเชิงพฤติกรรม เช่น
Given-When-Thenช่วยให้ทุกคนในทีม (Dev, QA, Business) เข้าใจตรงกัน Tools ที่นิยมเช่น Cucumber - Cloud-Based Testing: การใช้ Infrastructure บน Cloud สำหรับรันการทดสอบแบบอัตโนมัติ โดย Tools ที่นิยมได้แก่ BrowserStack, Sauce Labs
DevSecOps:
มุ่งเน้นการเขียน Automated Tests ที่รวดเร็วและรันได้ผ่าน Command Line โดยไม่ต้องแสดง GUI เพื่อให้การทำ Automation ง่ายและไวขึ้น
- Package: การรวบรวมไฟล์และโค้ดทั้งหมดที่จำเป็นสำหรับการ Deploy ให้อยู่ในรูปแบบที่พร้อมใช้งาน เช่น Docker Image เมื่อทำ Packaging เสร็จแล้ว Output ที่ได้เรียกว่า Artifacts
- Artifacts: ผลลัพธ์จากขั้นตอน Build, Compile หรือ Test ซึ่งพร้อมสำหรับการ Deploy (รวมถึง Report ของการ Testing) Artifacts ที่ได้นั้นขึ้นอยู่กับ Programming language และวิธีการ Deploy เช่น
- Java: ผลลัพธ์จาก Gradle หรือ Maven
- Python: โฟลเดอร์ที่รวม Script หรือ Libraries
- Test Reports: ผลลัพธ์จากการทดสอบ - Packaging Tools (Artifacts Server): Artifacts ที่สร้างขึ้นจะถูกจัดเก็บใน Artifacts Server เพื่อความสะดวกในการจัดการและนำไป Deploy ตัวอย่าง Artifacts Server ที่นิยมใช้: Nexus Repository, GitLab Package Registry, JFrog Artifactory, etc.
Continuous Delivery/Deployment (CD)
- Continuous Delivery/Deployment (CD): ขั้นตอนการนำโค้ดที่ผ่าน CI ไป Deploy โดยอัตโนมัติ ซึ่งครอบคลุมขั้นตอน Release และ Configure
- Release: การนำโค้ดที่ผ่านการทดสอบไปใช้งานใน Production หรือ Environment อื่นๆ อย่างเป็นระบบ
- Release Strategies สามารถแบ่งได้เป็น 2 หมวดใหญ่:
- Deployment: กลยุทธ์การ Roll Out เวอร์ชันใหม่
- Feature: กลยุทธ์การทดสอบฟีเจอร์ใหม่ๆ - Release Strategies for Deployment: เป็นวิธีที่ช่วยให้การ Deploy เวอร์ชันใหม่เกิดขึ้นอย่างราบรื่น โดยมีหลายวิธีดังนี้:
- Recreate/Replace Deployment: ลบระบบเก่าและแทนที่ด้วยระบบใหม่
- Rolling Deployment: ค่อยๆ ทดแทนระบบเก่าด้วยระบบใหม่ทีละส่วน
- Blue-Green Deployment (หรือ Red-Black Deployment) ใช้ 2 ระบบคู่ขนาน สลับ Traffic ไปยังระบบใหม่
- Canary Deployment ทดสอบระบบใหม่กับผู้ใช้งานบางส่วนก่อน - Release Strategies for Feature: ช่วยในการทดสอบฟีเจอร์ใหม่ๆ:
- Environment Separation: สร้าง Environment แยกเฉพาะสำหรับฟีเจอร์ใหม่
- A/B Testing: ทดสอบฟีเจอร์ใหม่ (Version B) กับผู้ใช้งานบางส่วน เปรียบเทียบกับฟีเจอร์เดิม (Version A) เพื่อตัดสินใจว่า Version ใดทำงานได้ดีกว่า
- Feature Toggle (Feature Flag): ใช้ Code Base เดียวกัน แต่ควบคุมการเปิด/ปิดฟีเจอร์ใหม่ผ่านตัวควบคุม (Flag)
- User Targeted Testing: ทดสอบฟีเจอร์ใหม่เฉพาะกับผู้ใช้งานกลุ่มเป้าหมาย เช่น Beta Users หรือ Internal Users - เครื่องมือที่นิยมใช้สำหรับ CI/CD
- On-Premise Open Source: GitLab Runner/GitLab CI, Jenkins
- On-Premise Commercial (มี GUI): Bamboo
- On-Cloud: CircleCI, Travis CI, Azure DevOps - Pipeline as Code: การเขียนขั้นตอนการทำงานของ CI/CD Pipeline เป็น โค้ด แทนการตั้งค่าผ่าน GUI (Graphical User Interface)

Figure: สรุปภาพรวมเนื้อหาในส่วนที่ 1 (Image by Author)
ใน Part 1/3 นี้ เราได้เรียนรู้เกี่ยวกับภาพรวมของ DevSecOps, CI/CD และ Artifacts ซึ่งเป็นส่วนสำคัญในการพัฒนาซอฟต์แวร์ให้มีประสิทธิภาพและปลอดภัย ในตอนถัดไป เราจะเจาะลึกเรื่อง Infrastructure: Cloud, Container, Docker, Kubernetes ฝากติดตามด้วยนะครับ!
Data Science Explore the world of data science with Donato_Story
Dashboard Discover the power of data visualization with Donato_Story
Donato_Journey Join me on my journey (Thai version)
Course_Review Discover the training courses with Donato_Story (Thai version)
Let’s Connect!
Your feedback is invaluable. Feel free to share your thoughts or questions in the comments below. You can also connect with me on:
- Medium: medium.com/donato-story
- Facebook: web.facebook.com/DonatoStory
- Linkedin: linkedin.com/in/nattapong-thanngam
Originally published on Medium
Related
A Practical Guide to Building Agents
คู่มือปฏิบัติ: การสร้าง Agent ด้วย LLM โดย OpenAI
AI in the Enterprise โดย OpenAI
ถอดรหัสเคล็ดลับองค์กรระดับโลก ปลดล็อกศักยภาพ AI สร้างความได้เปรียบทางธุรกิจ
Best Practices for Bar Charts
Visualization Series — Episode 2
Best Practices for Line Charts
Visualization Series — Episode 3