Engineering Foundations
พื้นฐานพัฒนาระบบ
ซอฟต์แวร์ที่ทีมดูแลได้ต้องเก็บประวัติ ตรวจผล และส่งมอบแบบที่ย้อนกลับได้
หัวข้อในบทนี้
ศัพท์ในบทนี้ · กดคำที่ขีดเส้นใต้ในเนื้อหาเพื่อดูความหมายได้ด้วย
- OS
- ระบบปฏิบัติการ จัดการทรัพยากรและให้บริการกับโปรแกรม
- VM
- เครื่องเสมือนที่รัน guest OS บนทรัพยากรที่ hypervisor จัดให้
จากแก้โค้ด ไปถึงรุ่นที่ปล่อยจริง
Git เก็บประวัติชุดไฟล์ Commit คือ snapshot ที่มีข้อมูลอ้างอิง ไม่ใช่การส่งขึ้น server โดยอัตโนมัติ Testing ตรวจพฤติกรรมตามขอบเขต CI รัน checks จากการเปลี่ยน ส่วน deployment ส่ง artifact ไปปลายทาง ต้องรู้ว่า artifact ใดผ่านตรวจและระบบใช้งานรุ่นใด
- Working tree
ไฟล์ที่กำลังแก้ ยังมีการเปลี่ยนที่ไม่ได้เก็บใน commit
- Stage + commit
เลือกการเปลี่ยนเข้า snapshot พร้อมข้อความที่อธิบาย การ commit ไม่เท่ากับ push
- Test + build
ตรวจผลที่ต้องการ สร้าง artifact โดยมี dependencies และเครื่องมือที่กำหนด
- Container / package
รวมสิ่งจำเป็นตามรูปแบบ Container ใช้ kernel ของ host ตามสถาปัตยกรรมที่รองรับ ไม่ใช่ VM เต็มตัว
- Deploy + observe
ปล่อยรุ่น ตรวจงานจริง logs และทางกลับ ไม่ใช้ build ผ่านแทนผลใช้งาน
เลือกภาษาเพิ่มเมื่อระบบต้องใช้ เช่น Java มี runtime libraries และแนวทางของระบบมันเอง ไม่ต้องเรียนทุกภาษาเพื่อเริ่มซัพพอร์ต การทดสอบที่เทียบ output กับความคาดหมายมีค่ากว่าทดสอบเพียงว่าฟังก์ชันถูกเรียก Pipeline ต้องจำกัด secrets permissions และแหล่ง artifact เพื่อไม่ให้โค้ดที่ไม่เชื่อถือได้ใช้สิทธิ์ปล่อยระบบ
กิตและควบคุมรุ่นGit and Version Control · 16.1.1
Git เก็บประวัติการเปลี่ยน Branch แยกงาน Commit อธิบายชุดการเปลี่ยนที่ตรวจได้
Git เก็บประวัติ snapshot และความสัมพันธ์ commit Working tree คือไฟล์ที่แก้ Staging area เลือกส่วนที่จะ commit Branch เป็นชื่ออ้างเส้นประวัติ Remote ใช้แลกเปลี่ยนไม่ใช่สำเนาที่มีทุกการเปลี่ยน local อัตโนมัติ
ไฟล์ที่กำลังแก้
สิ่งที่เลือกและบันทึกประวัติ
ที่แลกเปลี่ยน commit
ก่อน commit ดู diff และเลือกไฟล์ที่ตั้งใจ ไม่ใส่ secret หากเผลอ commit secret การลบใน commit ถัดไปไม่ลบประวัติเดิม ต้องเพิกถอนข้อมูลรับรองและจัดการประวัติตามขอบเขตที่ตกลง
git status
git diff
git diff --stagedstatus ดูสถานะไฟล์ diff ดูการเปลี่ยนที่ยังไม่ stage และ --staged ดูสิ่งที่จะ commit ทั้งสามเป็นการอ่าน ช่วยตรวจว่าไม่มีไฟล์หรือ secret เกิน scope
ที่มาของหัวข้อนี้ · คำอธิบายต่อยอด
คำอธิบายและภาพในหน้านี้เรียบเรียงใหม่ ชื่อบทต้นทางด้านล่างใช้ตรวจที่มา ไม่ได้แทนเนื้อหาที่คุณต้องไปอ่านเพิ่มเพื่อเข้าใจหน้านี้ และไม่ยืนยันว่าทุกประโยคมีอยู่ในคอร์ส
เป็นส่วนต่อยอดที่เขียนเพื่อเชื่อมความเข้าใจ ไม่มีชื่อ Video/Reading เฉพาะที่ยืนยันจาก inventory เดิม
ทดสอบและแก้บั๊กTesting and Debugging · 16.1.2
Test ตรวจพฤติกรรมที่คาด Debugging ตรวจเหตุที่พฤติกรรมผิด ต้องใช้ทั้งสองอย่าง
Testing ตรวจพฤติกรรมที่ต้องการ Debugging หาสาเหตุพฤติกรรมผิด Unit ตรวจหน่วยเล็ก Integration ตรวจการเชื่อม End-to-end ตรวจเส้นงานผู้ใช้ เลือกตามความเสี่ยง ไม่ถือว่าทดสอบหนึ่งชั้นผ่านแล้วทุกชั้นถูก
พฤติกรรมหน่วยย่อย
การทำงานร่วมกัน
เส้นงานสำคัญของผู้ใช้
Parser ควรตรวจ input ปกติ ผิดรูปแบบ และขอบกรณี ส่วนหน้าเว็บต้องดู keyboard link และการตอบจากบริการด้วย Test ที่เพียงลอก implementation อาจผ่านพร้อม bug หากทั้งคู่คิดผิดเหมือนกัน
ที่มาของหัวข้อนี้ · 1 รายการ
คำอธิบายและภาพในหน้านี้เรียบเรียงใหม่ ชื่อบทต้นทางด้านล่างใช้ตรวจที่มา ไม่ได้แทนเนื้อหาที่คุณต้องไปอ่านเพิ่มเพื่อเข้าใจหน้านี้ และไม่ยืนยันว่าทุกประโยคมีอยู่ในคอร์ส
- Automate Cybersecurity Tasks with Python · Module 4: Python in practiceVideo: Debugging strategiesCY7.M4.V7
สร้างระบบซีไอซีดีCI/CD Implementation · 16.1.3
CI ตรวจงานเมื่อเกิดการเปลี่ยน CD ช่วยเตรียมหรือส่งมอบตามกติกาของทีม
Pipeline รันขั้นตอน build test และ package ด้วย environment ที่กำหนด Artifact คือผลที่นำไป deploy ควรระบุรุ่นและ trace กลับ commit ได้ Deployment ต้องมีเงื่อนไข readiness และวิธี rollback
สร้างและตรวจรุ่น
ผลที่ระบุแหล่งและรุ่นได้
นำไปใช้แล้วตรวจผล
การ build ผ่านไม่พิสูจน์ migration ปลอดภัยต่อข้อมูลจริง แยกตรวจ schema กับ deploy และเฝ้าผลหลังปล่อย อย่าส่ง production secret ให้ job จากโค้ดที่ยังไม่น่าเชื่อถือ
ที่มาของหัวข้อนี้ · 1 รายการ
คำอธิบายและภาพในหน้านี้เรียบเรียงใหม่ ชื่อบทต้นทางด้านล่างใช้ตรวจที่มา ไม่ได้แทนเนื้อหาที่คุณต้องไปอ่านเพิ่มเพื่อเข้าใจหน้านี้ และไม่ยืนยันว่าทุกประโยคมีอยู่ในคอร์ส
- Automate Cybersecurity Tasks with Python · Module 4: Python in practiceReading: Automating Tasks in CI/CDCY7.M4.R1
คอนเทนเนอร์และติดตั้งระบบContainers and Deployment · 16.1.4
Container รวมสภาพแวดล้อมแอป Deployment ต้องกำหนด config ทรัพยากรและวิธีย้อนกลับ
Image เป็นชุด filesystem และ metadata สำหรับเริ่ม container Container เป็น process ที่รันจาก image พร้อม runtime state มักใช้ kernel ร่วม host จึงไม่เหมือน ทุกด้าน Volume เก็บข้อมูลนอก writable layer ของ container
แบบพร้อมเริ่มงาน
process และ runtime state
ข้อมูลถาวรและการเชื่อมต่อ
ลบ container แล้วข้อมูลที่ไม่ได้จัดเก็บถาวรอาจหาย Mapping port กำหนดทางเข้าจาก host แต่ยังต้องดู app bind และ firewall เลือก non-root และสิทธิ์เท่าที่จำเป็นแทน privileged โดยไม่มีเหตุผล
Container versus Virtual Machine (ขอบเขตรันต่างกัน)
ให้ guest มี kernel ของมันผ่าน virtualization Container แยก process และทรัพยากรตามระบบที่ใช้ โดยมักแชร์ kernel ของ environment ที่รัน container บนเครื่อง Windows หรือ macOS ที่รัน Linux containers อาจมี VM รองรับอีกชั้น จึงต้องอ่านสถาปัตยกรรมจริง
Image ไม่รวม state ของทุกสิ่งโดยอัตโนมัติ ข้อมูลใน volumes config secrets และ external database ต้องจัดวงจรแยก Container ที่รันได้ในเครื่องผู้เขียนยังอาจขาด network permission resource หรือ dependency ที่ปลายทาง Image digest ช่วยระบุ artifact ไม่พิสูจน์ความพร้อมใช้งาน
ที่มาของหัวข้อนี้ · 1 รายการ
คำอธิบายและภาพในหน้านี้เรียบเรียงใหม่ ชื่อบทต้นทางด้านล่างใช้ตรวจที่มา ไม่ได้แทนเนื้อหาที่คุณต้องไปอ่านเพิ่มเพื่อเข้าใจหน้านี้ และไม่ยืนยันว่าทุกประโยคมีอยู่ในคอร์ส
- Operating Systems and You: Becoming a Power User · Module 6: Operating Systems in PracticeVideo: Operating Systems Deployment MethodsIT3.M6.V11
จาวาหรือภาษาอื่นตามงานJava or Other Languages by Need · 16.1.5
เลือกภาษาตามระบบและงาน Java มี runtime และ ecosystem ของตัวเอง ไม่จำเป็นต้องเรียนทุกภาษาพร้อมกัน
ภาษาเพิ่มเติมเลือกตามระบบ เช่น Java สำหรับแอป JVM JavaScript สำหรับเว็บและ Node หรือ C# สำหรับระบบ .NET หลัก variable function control flow และ error handling ย้ายข้ามภาษาได้แต่ runtime และ toolchain ต้องเรียนเพิ่ม
หลักโปรแกรมที่ใช้ร่วม
ตัวรัน build และ dependency
ความลึกตามระบบที่ทำงาน
IT Support ไม่ต้องเรียนทุกภาษาให้ลึกก่อนทำงาน อ่าน log และ dependency ของระบบที่รับผิดชอบก่อน หากต้องแก้แอป Java ให้เข้าใจ build dependency configuration และ exception ตามงาน ไม่เพียง syntax
ที่มาของหัวข้อนี้ · คำอธิบายต่อยอด
คำอธิบายและภาพในหน้านี้เรียบเรียงใหม่ ชื่อบทต้นทางด้านล่างใช้ตรวจที่มา ไม่ได้แทนเนื้อหาที่คุณต้องไปอ่านเพิ่มเพื่อเข้าใจหน้านี้ และไม่ยืนยันว่าทุกประโยคมีอยู่ในคอร์ส
เป็นส่วนต่อยอดที่เขียนเพื่อเชื่อมความเข้าใจ ไม่มีชื่อ Video/Reading เฉพาะที่ยืนยันจาก inventory เดิม
นำศัพท์มาเชื่อมกับงาน
เมื่อรุ่นใหม่มีปัญหา ประวัติ commit ผล test และรุ่นที่ deploy ช่วยแยกสาเหตุได้
สิ่งที่บทนี้เชื่อมไว้
ซอฟต์แวร์ที่ทีมดูแลได้ต้องเก็บประวัติ ตรวจผล และส่งมอบแบบที่ย้อนกลับได้
ใช้ภาพกับตัวอย่างด้านบนเชื่อมหน้าที่ของแต่ละส่วน แล้วตรวจความเข้าใจด้วยการอธิบายเหตุผลของผลที่เห็น ก่อนเปิดบทถัดไป
บทเรียนที่เกี่ยวข้องและที่มาของบทอ่าน
คำอธิบายหน้านี้เขียนใหม่ตามหัวข้อใน Atlas รายการด้านล่างเป็นชื่อ Video/Reading ที่เคยจับคู่ไว้ แสดงไว้ให้ตรวจที่มาของชื่อหัวข้อ และไม่รับรองว่าคอร์สสอนทุกส่วนของคำอธิบายนี้