SlideShare uma empresa Scribd logo
1 de 22
Baixar para ler offline
Tanapat Limsaipromp p
ธนาพัฒน์ ลิ้มสายพรหม
Tanapat Limsaiprom
Continuous Integration (CI)Continuous Integration (CI)
C (C )Continuous Integration (CI) คือ กระบวนท่าที่ใช้
สําหรับการรวบรวมซอฟแวร์ที่มีการพัฒนาแยกส่วนกันอย่างอัตโนมัติ อาจจะ
โดยหนึ่งหรือหลายนักพัฒนาก็ตามที สุดท้ายแล้วซอฟแวร์ที่พัฒนาชิ้นเล็กๆ ที่
พัฒนาขึ้นมาจะต้องนํามารวมกันเป็นชิ้นใหญ่หนึ่งชิ้น จะทําอย่างไรให้มั่นใจได้ว่า ไม่
มีชิ้นส่วนใดที่จะส่งผลให้ชิ้นส่วนอื่นๆ พังเสียหาย เนื่องจากเป็นการพัฒนาโดย
โปรแกรมเมอร์หลายคน
Tanapat Limsaiprom
Script TestScript Test
เป็นไปได้ว่าจะมี bug หลุดมาจากส่วนใดส่วนหนึ่ง แล้วเราจะป้องกันได้อย่างไร
ละ ดังนั้นจึงต้องมีการเขียน script test ที่คอยทดสอบความเข้ากันได้
ของแต่ละชิ้นส่วนโดยอัตโนมัตินั่นเอง โดยการ Testing จะเริ่มตั้งแต่
Unit Testing ซึ่งสร้างจากทีมพัฒนา และเป็นส่วนจะใช้ตรวจสอบว่าสิ่งg
ที่ทีมพัฒนายังทํางานถูกต้องและจะใช้เวลาช่วงสั้น ๆ เท่านั้น
Tanapat Limsaiprom
Integration TestIntegration Test
Sในโลกของการพัฒนานั้น มักใช้ Build Server มาช่วยเพื่อให้เป้าหมาย
ที่ตั้งไว้สําเร็จ กล่าวคือ จะเริ่มทําการ Integration กันตั้งแต่เมื่อมีการ
เปลี่ยนแปลง Source Code ที่ Repository กลาง ระบบจะ
ทําการตรวจสอบ Code หลังจากการเปลี่ยนแปลงว่าทํางานร่วมกันได้
หรือไม่ตั้งแต่ Compile, Testing
Tanapat Limsaiprom
Continuous Delivery & Deployment
C ti D li C tiContinuous Delivery และ Continuous
Deployment (CD) มักจะเกิดคําถามขึ้นมาเสมอว่า มันแตกต่างกัน
อย่างไร ? ทําไมต้องใช้ชื่อแตกต่างกันด้วยล่ะ ? ดังนั้นมาดูกันว่าแต่ละ คําคืออะไร และ
แตกต่างกันอย่างไร
Tanapat Limsaiprom
Continuous DeploymentContinuous Deployment
CContinuous Deployment คือ ในทุกๆ ขั้นตอนจนถึง
การ deployment ขึ้น production จะทําแบบอัตโนมัติ
ทั้งหมด
Tanapat Limsaiprom
Continuous DeliveryContinuous Delivery
CContinuous Delivery คือ การงานต่างๆ ใน
deployment pipeline นั้น จะเริ่มต้นทํางานตั้งแต่การ
compile, build ไปจนถึงขั้นตอนการทดสอบต่างๆ เช่น
Acceptance test เป็นแบบอัตโนมัติทั้งหมดp
ส่วนในขั้นตอนการ deployment ขึ้น production นั้น
จะต้องได้รับการอนมัติหรือการตัดสินใจกันก่อนจากทาง Business ซึ่งจะตองไดรบการอนุมตหรอการตดสนใจกนกอนจากทาง Business ซง
เป็นการทํางานแบบ manual นั่นเอง หรืออาจจะเป็น One Click
Deploy ก็ได้Deploy กได
Tanapat Limsaiprom
Delivery and DeploymentDelivery and Deployment
Tanapat Limsaiprom
Continuous DeliveryContinuous Delivery
Cทีมเราใช้เป็นแบบ Continuous Delivery นั่นเองแต่ของเราทั้ง
Step deploy to Staging Environment และ
deploy to Production Environment เป็น
manual One Click Deployp y
Staging อํานาจการตัดสินใจอยู่ในมือ QA เป็นคน Click ส่วน
Production ยกให้ Business เป็นคนตัดสินใจProduction ยกให Business เปนคนตดสนใจ
Tanapat Limsaiprom
ชดทดสอบระบบชุดทดสอบระบบ
Qส่วนของการทําชุดทดสอบระบบนั้น QA เราจะทําการ เลือกชุด test
case ที่เป็น Smoke test , Regression test
ขึ้นมา สําหรับแต่ละ component หรือ service ย่อยๆ การ
เพิ่มเติมเขียน script automated testing ใช้ Git ผ่านp g
Source Tree ในการ จัดการ source code
automated test case และ ใช้ Jenkins ในการ
config ให้ Trigger สั่งให้ Run ชุดทดสอบ automated
testing ในแต่ละ environmenttesting ในแตละ environment
Tanapat Limsaiprom
Tanapat Limsaiprom
Automated testAutomated test
A d ใ ใแล้ว เรานํา Automated test ไปใช้ทดสอบในช่วงไหนของ
กระบวนการ CI/CD กันหล่ะ?
Automated testing ถูกนําไปใช้ใน Process ของ CI
นั่นเอง..!!นนเอง..!!
กล่าวคือ ทุกการเปลี่ยนแปลงหนึ่งในนั้นคือ การทดสอบนั่นเอง แน่นอนว่า ต้อง
ป็ ั โ ั ิ ่ ่ (Automatedเป็นการทดสอบแบบอตโนมตอยางแนนอน (Automated
testing) ไม่ว่าจะเป็น Unit testing, Integration
t ti F ti l t titesting และ Functional testing
Tanapat Limsaiprom
Developer environmentDeveloper environment
ขออธิบายตั้งแต่เรื่องพัฒนาของ Developer กันเลย
ทางทีมพัฒนาระบบของเราจะแบ่ง environment เป็น 4 ส่วนคือ
Local , Alpha , Staging , Production มีขั้นตอน
ดังนี้ดงน
1. Developer เมื่อทําการพัฒนา feature เสร็จ จะทําการ
build test run ื่ ั (Local) ื่ ํ ใ ้build, test และ run บนเครองของตวเอง (Local) เพอทําให
แน่ใจว่าระบบทํางานได้ถูกต้องและให้แน่ใจว่าสิ่งที่เปลี่ยนแปลงไม่กระทบส่วนอื่น ๆ
Tanapat Limsaiprom
RepositoryRepository
2. ทําการดึง source code ล่าสุดจาก Repository ของ
ระบบ เพื่อตรวจสอบว่ามีการเปลี่ยนแปลงหรือไม่ถ้ามีการเปลี่ยนแปลงก็ให้ทําการ
รวม หรือ merge ที่เครื่องของ Devleoper ก่อน จากนั้นจึงทํา
การ build, test และ run อีกรอบ เมื่อทุกอย่างผ่านทั้งหมด ให้ทํา
การส่งการเปลี่ยนแปลงไปยัง Repository กลาง
Tanapat Limsaiprom
มีระบบ CI ทําการ buildมระบบ CI ทาการ build
C3. เมื่อ Repository กลางมีการเปลี่ยนแปลง จะต้องมีระบบ CI ทํา
การ build, หลังจาก build จะส่งต่อไป run unit testing
ก่อนถ้าผ่านหมดถึงจะส่งต่อไปยังระบบ Continuous Delivery
เพื่อ deploy to alpha environment (:p y p (
Tanapat Limsaiprom
Tanapat Limsaiprom
เมื่อ source code ถก deployเมอ source code ถูก deploy
4. to alpha environment แล้วจะ trigger ไปสั่งให้
run job automated testing ใน level ของเทสเคส
smoke test ซึ่งเป็นชุดเทสเคสย่อยๆไม่เยอะมากเฉพาะในส่วนของ
feature code ที่ถูก deploy มาเท่านั้นp y
Tanapat Limsaiprom
หลังจาก run smoke testหลงจาก run smoke test
5. หลังจาก run smoke test เสร็จแล้วถ้าเกิดว่า run มี
บางส่วนไม่ผ่านทั้งหมดจะไม่ส่งต่อไปยังระบบ Continuous
Delivery เพื่อ deploy to staging
environment QA จะทําการ investigate ว่าเกิดจากg
อะไร เป็นที่ระบบมี Bug เกิดขึ้นจริงหรือไม่ ถ้ามี bug ก็ให้ dev แก้ไข
และ deploy มาใหม่ วน loop ใหม่p y p
Tanapat Limsaiprom
Continuous DeliveryContinuous Delivery
ี ั run smoke test ่ ั้ ่ ่ ไ ั6. กรณีหลังจาก run smoke test ผ่านทังหมดจะส่งต่อไปยังระบบ
Continuous Delivery เพื่อ deploy to Staging
environment เมื่อ source code ถูก deploy top y
staging แล้ว จะ trigger ไปสั่งให้ run job automated
testing ใน level ของเทสเคส regression test และ QA ก็ทําการ
ทดสอบ Acceptance testing ไปด้วยพร้อมๆกันที่ Stagingทดสอบ Acceptance testing ไปดวยพรอมๆกนท Staging
environment นี้ เมื่อมีการ deploy ซํา◌้ ๆ เพื่อ fixed bug จากที่
QA เจอ หรือที่พบเจอจากการ run regression test แล้ว fail ก็จะเป็น
loop ั้ ่ ้ ั้ ่ ่ Business ฟั !!การวน loop ตงแตตนจนจบ จนกระทง ทุกอยางผานหมด Business ฟนธง!!
มาว่าเอาขึ้น production ได้ เป็นการ confirm ว่าเราจะเอา code
version สุดท้ายนี้ขึ้นไปที่ production environment
Tanapat Limsaiprom
ข้อดี&ข้อเสียจากการ ใช้ automated testingขอด&ขอเสยจากการ ใช automated testing
ใ d i ใข้อดี&ข้อเสียจากการ ใช้ automated testing มาใช้กับ
CI/CD
ข้อดี สามารถทดสอบได้บ่อย ๆ รู้สถานะของระบบได้ตลอดเวลา และ ได้
feedback ของระบบอย่อย่างเสมอ ไม่ว่าจะดีหรือร้าย ทําให้ทกคนเห็นfeedback ของระบบอยูอยางเสมอ ไมวาจะดหรอราย ทาใหทุกคนเหน
ความคืบหน้าของการพัฒนา
Tanapat Limsaiprom
ข้อเสียขอเสย
i bl kข้อเสีย ถ้าเขียน script test ไม่ดีก็อาจทําให้ block การ
deploy ระบบได้ เช่น เมื่อ run test แล้ว fail แต่เป็นการ fail
จากการเขียน script ผิด ไม่ได้เกี่ยวกับระบบมี Bug ก็จะทําให้ไปขั้นตอน
ต่อไปไม่ได้
Tanapat Limsaiprom
end
Tanapat Limsaiprom

Mais conteúdo relacionado

Semelhante a CI/CD

AutoTesting.pdf
AutoTesting.pdfAutoTesting.pdf
AutoTesting.pdfpsaku1
 
EveryBitsConsult_Services_Overview2.0
EveryBitsConsult_Services_Overview2.0EveryBitsConsult_Services_Overview2.0
EveryBitsConsult_Services_Overview2.0Atthaboon Sanurt
 
การเขียนโปรแกรม Dev c++
การเขียนโปรแกรม Dev c++การเขียนโปรแกรม Dev c++
การเขียนโปรแกรม Dev c++Naowarat Jaikaroon
 
พื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาพื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาSarocha Makranit
 
Microsoft security essentials
Microsoft security essentialsMicrosoft security essentials
Microsoft security essentialsthepvista
 
Achieving "Zero Downtime Deployment" with Automated Testing
Achieving "Zero Downtime Deployment" with Automated TestingAchieving "Zero Downtime Deployment" with Automated Testing
Achieving "Zero Downtime Deployment" with Automated TestingKan Ouivirach, Ph.D.
 
รูปแบบของรายงานวิเคราะห์ระดับความมั่นคงปลอดภัย
รูปแบบของรายงานวิเคราะห์ระดับความมั่นคงปลอดภัยรูปแบบของรายงานวิเคราะห์ระดับความมั่นคงปลอดภัย
รูปแบบของรายงานวิเคราะห์ระดับความมั่นคงปลอดภัยChaisuriya
 
Phptraining
PhptrainingPhptraining
Phptrainingphochai
 
Phptraining
PhptrainingPhptraining
Phptrainingphochai
 
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeansJava Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeansSoftware Park Thailand
 
Hand on Exercises Java Web Services and SOA using GlassFish ESB and NetBeans
Hand on Exercises Java Web Services and SOA using GlassFish ESB and NetBeansHand on Exercises Java Web Services and SOA using GlassFish ESB and NetBeans
Hand on Exercises Java Web Services and SOA using GlassFish ESB and NetBeansIMC Institute
 
คู่มือการติดตั้งโปรแกรมสำหรับสร้าง Mobile Application ด้วย HTML5 และ Ionic Fr...
คู่มือการติดตั้งโปรแกรมสำหรับสร้าง Mobile Application ด้วย HTML5 และ Ionic Fr...คู่มือการติดตั้งโปรแกรมสำหรับสร้าง Mobile Application ด้วย HTML5 และ Ionic Fr...
คู่มือการติดตั้งโปรแกรมสำหรับสร้าง Mobile Application ด้วย HTML5 และ Ionic Fr...Pitchayanida Khumwichai
 
การแก้ปัญหาการออกแบบและพัฒนาขั้นตอนวิธี
การแก้ปัญหาการออกแบบและพัฒนาขั้นตอนวิธีการแก้ปัญหาการออกแบบและพัฒนาขั้นตอนวิธี
การแก้ปัญหาการออกแบบและพัฒนาขั้นตอนวิธีSaranyu Srisrontong
 

Semelhante a CI/CD (20)

AutoTesting.pdf
AutoTesting.pdfAutoTesting.pdf
AutoTesting.pdf
 
EveryBitsConsult_Services_Overview2.0
EveryBitsConsult_Services_Overview2.0EveryBitsConsult_Services_Overview2.0
EveryBitsConsult_Services_Overview2.0
 
การเขียนโปรแกรม Dev c++
การเขียนโปรแกรม Dev c++การเขียนโปรแกรม Dev c++
การเขียนโปรแกรม Dev c++
 
Yii2install codingthailand
Yii2install codingthailandYii2install codingthailand
Yii2install codingthailand
 
Sw evo 2_model
Sw evo 2_modelSw evo 2_model
Sw evo 2_model
 
Netbeans
NetbeansNetbeans
Netbeans
 
พื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาพื้นฐานภาษาจาวา
พื้นฐานภาษาจาวา
 
Microsoft security essentials
Microsoft security essentialsMicrosoft security essentials
Microsoft security essentials
 
งานธิดารัตน์
งานธิดารัตน์งานธิดารัตน์
งานธิดารัตน์
 
THPHP => Agile testing
THPHP => Agile testing THPHP => Agile testing
THPHP => Agile testing
 
Achieving "Zero Downtime Deployment" with Automated Testing
Achieving "Zero Downtime Deployment" with Automated TestingAchieving "Zero Downtime Deployment" with Automated Testing
Achieving "Zero Downtime Deployment" with Automated Testing
 
รูปแบบของรายงานวิเคราะห์ระดับความมั่นคงปลอดภัย
รูปแบบของรายงานวิเคราะห์ระดับความมั่นคงปลอดภัยรูปแบบของรายงานวิเคราะห์ระดับความมั่นคงปลอดภัย
รูปแบบของรายงานวิเคราะห์ระดับความมั่นคงปลอดภัย
 
Phptraining
PhptrainingPhptraining
Phptraining
 
Phptraining
PhptrainingPhptraining
Phptraining
 
หลักการเขียนโปรแกรม
หลักการเขียนโปรแกรมหลักการเขียนโปรแกรม
หลักการเขียนโปรแกรม
 
Joomla 56 km
Joomla 56 kmJoomla 56 km
Joomla 56 km
 
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeansJava Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
 
Hand on Exercises Java Web Services and SOA using GlassFish ESB and NetBeans
Hand on Exercises Java Web Services and SOA using GlassFish ESB and NetBeansHand on Exercises Java Web Services and SOA using GlassFish ESB and NetBeans
Hand on Exercises Java Web Services and SOA using GlassFish ESB and NetBeans
 
คู่มือการติดตั้งโปรแกรมสำหรับสร้าง Mobile Application ด้วย HTML5 และ Ionic Fr...
คู่มือการติดตั้งโปรแกรมสำหรับสร้าง Mobile Application ด้วย HTML5 และ Ionic Fr...คู่มือการติดตั้งโปรแกรมสำหรับสร้าง Mobile Application ด้วย HTML5 และ Ionic Fr...
คู่มือการติดตั้งโปรแกรมสำหรับสร้าง Mobile Application ด้วย HTML5 และ Ionic Fr...
 
การแก้ปัญหาการออกแบบและพัฒนาขั้นตอนวิธี
การแก้ปัญหาการออกแบบและพัฒนาขั้นตอนวิธีการแก้ปัญหาการออกแบบและพัฒนาขั้นตอนวิธี
การแก้ปัญหาการออกแบบและพัฒนาขั้นตอนวิธี
 

Mais de Tanapat Limsaiprom

CompTIA CASP+ Train the Trainer Programe
CompTIA CASP+ Train the Trainer ProgrameCompTIA CASP+ Train the Trainer Programe
CompTIA CASP+ Train the Trainer ProgrameTanapat Limsaiprom
 
Microsoft Certificate - Tanapat
Microsoft Certificate - TanapatMicrosoft Certificate - Tanapat
Microsoft Certificate - TanapatTanapat Limsaiprom
 
Data science certificate - tanapat
Data science certificate - tanapatData science certificate - tanapat
Data science certificate - tanapatTanapat Limsaiprom
 
Tanapat Certificate From MS educator center
Tanapat Certificate From MS educator centerTanapat Certificate From MS educator center
Tanapat Certificate From MS educator centerTanapat Limsaiprom
 
Tanapat Data Science Certificate
Tanapat Data Science Certificate Tanapat Data Science Certificate
Tanapat Data Science Certificate Tanapat Limsaiprom
 
Certificate from Department of Industrial promotion of Thailand
Certificate from Department of Industrial promotion of ThailandCertificate from Department of Industrial promotion of Thailand
Certificate from Department of Industrial promotion of ThailandTanapat Limsaiprom
 
Tanapat Certificate form Google
Tanapat  Certificate form GoogleTanapat  Certificate form Google
Tanapat Certificate form GoogleTanapat Limsaiprom
 
Tanapat Certificate from Microsoft
Tanapat Certificate from MicrosoftTanapat Certificate from Microsoft
Tanapat Certificate from MicrosoftTanapat Limsaiprom
 
Tanapat limsaiprom certificate microsoft
Tanapat limsaiprom certificate  microsoftTanapat limsaiprom certificate  microsoft
Tanapat limsaiprom certificate microsoftTanapat Limsaiprom
 

Mais de Tanapat Limsaiprom (20)

CompTIA-Security_Plus
CompTIA-Security_PlusCompTIA-Security_Plus
CompTIA-Security_Plus
 
CompTIA-Server_Plus
CompTIA-Server_PlusCompTIA-Server_Plus
CompTIA-Server_Plus
 
Com tia pentest-plus
Com tia pentest-plusCom tia pentest-plus
Com tia pentest-plus
 
ComTIA CASP+
ComTIA  CASP+ComTIA  CASP+
ComTIA CASP+
 
ComTIA CySA+
ComTIA CySA+ComTIA CySA+
ComTIA CySA+
 
CompTIA CASP+ Train the Trainer Programe
CompTIA CASP+ Train the Trainer ProgrameCompTIA CASP+ Train the Trainer Programe
CompTIA CASP+ Train the Trainer Programe
 
Tanapat DataCamp Certificate
Tanapat DataCamp CertificateTanapat DataCamp Certificate
Tanapat DataCamp Certificate
 
Microsoft Certificate - Tanapat
Microsoft Certificate - TanapatMicrosoft Certificate - Tanapat
Microsoft Certificate - Tanapat
 
Data science certificate - tanapat
Data science certificate - tanapatData science certificate - tanapat
Data science certificate - tanapat
 
Tanapat Certificate From MS educator center
Tanapat Certificate From MS educator centerTanapat Certificate From MS educator center
Tanapat Certificate From MS educator center
 
Tanapat sap certificate
Tanapat sap certificate Tanapat sap certificate
Tanapat sap certificate
 
Tanapat Data Science Certificate
Tanapat Data Science Certificate Tanapat Data Science Certificate
Tanapat Data Science Certificate
 
Certificate from Department of Industrial promotion of Thailand
Certificate from Department of Industrial promotion of ThailandCertificate from Department of Industrial promotion of Thailand
Certificate from Department of Industrial promotion of Thailand
 
Tanapat Certificate From AWS
Tanapat Certificate From AWSTanapat Certificate From AWS
Tanapat Certificate From AWS
 
Tanapat Certificate form Google
Tanapat  Certificate form GoogleTanapat  Certificate form Google
Tanapat Certificate form Google
 
Tanapat Certificate from Microsoft
Tanapat Certificate from MicrosoftTanapat Certificate from Microsoft
Tanapat Certificate from Microsoft
 
Tanapat SAP Certificate
Tanapat SAP CertificateTanapat SAP Certificate
Tanapat SAP Certificate
 
Tanapat Certificate OpenSap
Tanapat Certificate OpenSapTanapat Certificate OpenSap
Tanapat Certificate OpenSap
 
Tanapat limsaiprom certificate microsoft
Tanapat limsaiprom certificate  microsoftTanapat limsaiprom certificate  microsoft
Tanapat limsaiprom certificate microsoft
 
Data science certificate
Data science certificate Data science certificate
Data science certificate
 

CI/CD

  • 1. Tanapat Limsaipromp p ธนาพัฒน์ ลิ้มสายพรหม Tanapat Limsaiprom
  • 2. Continuous Integration (CI)Continuous Integration (CI) C (C )Continuous Integration (CI) คือ กระบวนท่าที่ใช้ สําหรับการรวบรวมซอฟแวร์ที่มีการพัฒนาแยกส่วนกันอย่างอัตโนมัติ อาจจะ โดยหนึ่งหรือหลายนักพัฒนาก็ตามที สุดท้ายแล้วซอฟแวร์ที่พัฒนาชิ้นเล็กๆ ที่ พัฒนาขึ้นมาจะต้องนํามารวมกันเป็นชิ้นใหญ่หนึ่งชิ้น จะทําอย่างไรให้มั่นใจได้ว่า ไม่ มีชิ้นส่วนใดที่จะส่งผลให้ชิ้นส่วนอื่นๆ พังเสียหาย เนื่องจากเป็นการพัฒนาโดย โปรแกรมเมอร์หลายคน Tanapat Limsaiprom
  • 3. Script TestScript Test เป็นไปได้ว่าจะมี bug หลุดมาจากส่วนใดส่วนหนึ่ง แล้วเราจะป้องกันได้อย่างไร ละ ดังนั้นจึงต้องมีการเขียน script test ที่คอยทดสอบความเข้ากันได้ ของแต่ละชิ้นส่วนโดยอัตโนมัตินั่นเอง โดยการ Testing จะเริ่มตั้งแต่ Unit Testing ซึ่งสร้างจากทีมพัฒนา และเป็นส่วนจะใช้ตรวจสอบว่าสิ่งg ที่ทีมพัฒนายังทํางานถูกต้องและจะใช้เวลาช่วงสั้น ๆ เท่านั้น Tanapat Limsaiprom
  • 4. Integration TestIntegration Test Sในโลกของการพัฒนานั้น มักใช้ Build Server มาช่วยเพื่อให้เป้าหมาย ที่ตั้งไว้สําเร็จ กล่าวคือ จะเริ่มทําการ Integration กันตั้งแต่เมื่อมีการ เปลี่ยนแปลง Source Code ที่ Repository กลาง ระบบจะ ทําการตรวจสอบ Code หลังจากการเปลี่ยนแปลงว่าทํางานร่วมกันได้ หรือไม่ตั้งแต่ Compile, Testing Tanapat Limsaiprom
  • 5. Continuous Delivery & Deployment C ti D li C tiContinuous Delivery และ Continuous Deployment (CD) มักจะเกิดคําถามขึ้นมาเสมอว่า มันแตกต่างกัน อย่างไร ? ทําไมต้องใช้ชื่อแตกต่างกันด้วยล่ะ ? ดังนั้นมาดูกันว่าแต่ละ คําคืออะไร และ แตกต่างกันอย่างไร Tanapat Limsaiprom
  • 6. Continuous DeploymentContinuous Deployment CContinuous Deployment คือ ในทุกๆ ขั้นตอนจนถึง การ deployment ขึ้น production จะทําแบบอัตโนมัติ ทั้งหมด Tanapat Limsaiprom
  • 7. Continuous DeliveryContinuous Delivery CContinuous Delivery คือ การงานต่างๆ ใน deployment pipeline นั้น จะเริ่มต้นทํางานตั้งแต่การ compile, build ไปจนถึงขั้นตอนการทดสอบต่างๆ เช่น Acceptance test เป็นแบบอัตโนมัติทั้งหมดp ส่วนในขั้นตอนการ deployment ขึ้น production นั้น จะต้องได้รับการอนมัติหรือการตัดสินใจกันก่อนจากทาง Business ซึ่งจะตองไดรบการอนุมตหรอการตดสนใจกนกอนจากทาง Business ซง เป็นการทํางานแบบ manual นั่นเอง หรืออาจจะเป็น One Click Deploy ก็ได้Deploy กได Tanapat Limsaiprom
  • 8. Delivery and DeploymentDelivery and Deployment Tanapat Limsaiprom
  • 9. Continuous DeliveryContinuous Delivery Cทีมเราใช้เป็นแบบ Continuous Delivery นั่นเองแต่ของเราทั้ง Step deploy to Staging Environment และ deploy to Production Environment เป็น manual One Click Deployp y Staging อํานาจการตัดสินใจอยู่ในมือ QA เป็นคน Click ส่วน Production ยกให้ Business เป็นคนตัดสินใจProduction ยกให Business เปนคนตดสนใจ Tanapat Limsaiprom
  • 10. ชดทดสอบระบบชุดทดสอบระบบ Qส่วนของการทําชุดทดสอบระบบนั้น QA เราจะทําการ เลือกชุด test case ที่เป็น Smoke test , Regression test ขึ้นมา สําหรับแต่ละ component หรือ service ย่อยๆ การ เพิ่มเติมเขียน script automated testing ใช้ Git ผ่านp g Source Tree ในการ จัดการ source code automated test case และ ใช้ Jenkins ในการ config ให้ Trigger สั่งให้ Run ชุดทดสอบ automated testing ในแต่ละ environmenttesting ในแตละ environment Tanapat Limsaiprom
  • 12. Automated testAutomated test A d ใ ใแล้ว เรานํา Automated test ไปใช้ทดสอบในช่วงไหนของ กระบวนการ CI/CD กันหล่ะ? Automated testing ถูกนําไปใช้ใน Process ของ CI นั่นเอง..!!นนเอง..!! กล่าวคือ ทุกการเปลี่ยนแปลงหนึ่งในนั้นคือ การทดสอบนั่นเอง แน่นอนว่า ต้อง ป็ ั โ ั ิ ่ ่ (Automatedเป็นการทดสอบแบบอตโนมตอยางแนนอน (Automated testing) ไม่ว่าจะเป็น Unit testing, Integration t ti F ti l t titesting และ Functional testing Tanapat Limsaiprom
  • 13. Developer environmentDeveloper environment ขออธิบายตั้งแต่เรื่องพัฒนาของ Developer กันเลย ทางทีมพัฒนาระบบของเราจะแบ่ง environment เป็น 4 ส่วนคือ Local , Alpha , Staging , Production มีขั้นตอน ดังนี้ดงน 1. Developer เมื่อทําการพัฒนา feature เสร็จ จะทําการ build test run ื่ ั (Local) ื่ ํ ใ ้build, test และ run บนเครองของตวเอง (Local) เพอทําให แน่ใจว่าระบบทํางานได้ถูกต้องและให้แน่ใจว่าสิ่งที่เปลี่ยนแปลงไม่กระทบส่วนอื่น ๆ Tanapat Limsaiprom
  • 14. RepositoryRepository 2. ทําการดึง source code ล่าสุดจาก Repository ของ ระบบ เพื่อตรวจสอบว่ามีการเปลี่ยนแปลงหรือไม่ถ้ามีการเปลี่ยนแปลงก็ให้ทําการ รวม หรือ merge ที่เครื่องของ Devleoper ก่อน จากนั้นจึงทํา การ build, test และ run อีกรอบ เมื่อทุกอย่างผ่านทั้งหมด ให้ทํา การส่งการเปลี่ยนแปลงไปยัง Repository กลาง Tanapat Limsaiprom
  • 15. มีระบบ CI ทําการ buildมระบบ CI ทาการ build C3. เมื่อ Repository กลางมีการเปลี่ยนแปลง จะต้องมีระบบ CI ทํา การ build, หลังจาก build จะส่งต่อไป run unit testing ก่อนถ้าผ่านหมดถึงจะส่งต่อไปยังระบบ Continuous Delivery เพื่อ deploy to alpha environment (:p y p ( Tanapat Limsaiprom
  • 17. เมื่อ source code ถก deployเมอ source code ถูก deploy 4. to alpha environment แล้วจะ trigger ไปสั่งให้ run job automated testing ใน level ของเทสเคส smoke test ซึ่งเป็นชุดเทสเคสย่อยๆไม่เยอะมากเฉพาะในส่วนของ feature code ที่ถูก deploy มาเท่านั้นp y Tanapat Limsaiprom
  • 18. หลังจาก run smoke testหลงจาก run smoke test 5. หลังจาก run smoke test เสร็จแล้วถ้าเกิดว่า run มี บางส่วนไม่ผ่านทั้งหมดจะไม่ส่งต่อไปยังระบบ Continuous Delivery เพื่อ deploy to staging environment QA จะทําการ investigate ว่าเกิดจากg อะไร เป็นที่ระบบมี Bug เกิดขึ้นจริงหรือไม่ ถ้ามี bug ก็ให้ dev แก้ไข และ deploy มาใหม่ วน loop ใหม่p y p Tanapat Limsaiprom
  • 19. Continuous DeliveryContinuous Delivery ี ั run smoke test ่ ั้ ่ ่ ไ ั6. กรณีหลังจาก run smoke test ผ่านทังหมดจะส่งต่อไปยังระบบ Continuous Delivery เพื่อ deploy to Staging environment เมื่อ source code ถูก deploy top y staging แล้ว จะ trigger ไปสั่งให้ run job automated testing ใน level ของเทสเคส regression test และ QA ก็ทําการ ทดสอบ Acceptance testing ไปด้วยพร้อมๆกันที่ Stagingทดสอบ Acceptance testing ไปดวยพรอมๆกนท Staging environment นี้ เมื่อมีการ deploy ซํา◌้ ๆ เพื่อ fixed bug จากที่ QA เจอ หรือที่พบเจอจากการ run regression test แล้ว fail ก็จะเป็น loop ั้ ่ ้ ั้ ่ ่ Business ฟั !!การวน loop ตงแตตนจนจบ จนกระทง ทุกอยางผานหมด Business ฟนธง!! มาว่าเอาขึ้น production ได้ เป็นการ confirm ว่าเราจะเอา code version สุดท้ายนี้ขึ้นไปที่ production environment Tanapat Limsaiprom
  • 20. ข้อดี&ข้อเสียจากการ ใช้ automated testingขอด&ขอเสยจากการ ใช automated testing ใ d i ใข้อดี&ข้อเสียจากการ ใช้ automated testing มาใช้กับ CI/CD ข้อดี สามารถทดสอบได้บ่อย ๆ รู้สถานะของระบบได้ตลอดเวลา และ ได้ feedback ของระบบอย่อย่างเสมอ ไม่ว่าจะดีหรือร้าย ทําให้ทกคนเห็นfeedback ของระบบอยูอยางเสมอ ไมวาจะดหรอราย ทาใหทุกคนเหน ความคืบหน้าของการพัฒนา Tanapat Limsaiprom
  • 21. ข้อเสียขอเสย i bl kข้อเสีย ถ้าเขียน script test ไม่ดีก็อาจทําให้ block การ deploy ระบบได้ เช่น เมื่อ run test แล้ว fail แต่เป็นการ fail จากการเขียน script ผิด ไม่ได้เกี่ยวกับระบบมี Bug ก็จะทําให้ไปขั้นตอน ต่อไปไม่ได้ Tanapat Limsaiprom