Learning AtlasIT Support → Cybersecurity
คลังบทอ่าน16.1 / การพัฒนาและติดตั้งระบบบทถัดไป
สารบัญบทอ่าน / Engineering and Deployment / 16.1
04 · เขียนโค้ดและนำระบบไปใช้ · บท 16.1

Engineering Foundations

พื้นฐานพัฒนาระบบ

ซอฟต์แวร์ที่ทีมดูแลได้ต้องเก็บประวัติ ตรวจผล และส่งมอบแบบที่ย้อนกลับได้

5 หัวข้อคำอธิบายในหน้านี้ภาพอธิบายและกลไกทีละส่วน
ควรรู้ก่อน: 15.1 สร้างระบบเว็บ
หัวข้อในบทนี้
ศัพท์ในบทนี้ · กดคำที่ขีดเส้นใต้ในเนื้อหาเพื่อดูความหมายได้ด้วย
OS
ระบบปฏิบัติการ จัดการทรัพยากรและให้บริการกับโปรแกรม
VM
เครื่องเสมือนที่รัน guest OS บนทรัพยากรที่ hypervisor จัดให้
จากหลักการไปถึงกลไก

จากแก้โค้ด ไปถึงรุ่นที่ปล่อยจริง

Git เก็บประวัติชุดไฟล์ Commit คือ snapshot ที่มีข้อมูลอ้างอิง ไม่ใช่การส่งขึ้น server โดยอัตโนมัติ Testing ตรวจพฤติกรรมตามขอบเขต CI รัน checks จากการเปลี่ยน ส่วน deployment ส่ง artifact ไปปลายทาง ต้องรู้ว่า artifact ใดผ่านตรวจและระบบใช้งานรุ่นใด

ลำดับงาน · อ่านตามลูกศรจากแก้โค้ด ไปถึงรุ่นที่ปล่อยจริง
  1. Working tree

    ไฟล์ที่กำลังแก้ ยังมีการเปลี่ยนที่ไม่ได้เก็บใน commit

  2. Stage + commit

    เลือกการเปลี่ยนเข้า snapshot พร้อมข้อความที่อธิบาย การ commit ไม่เท่ากับ push

  3. Test + build

    ตรวจผลที่ต้องการ สร้าง artifact โดยมี dependencies และเครื่องมือที่กำหนด

  4. Container / package

    รวมสิ่งจำเป็นตามรูปแบบ Container ใช้ kernel ของ host ตามสถาปัตยกรรมที่รองรับ ไม่ใช่ VM เต็มตัว

  5. Deploy + observe

    ปล่อยรุ่น ตรวจงานจริง logs และทางกลับ ไม่ใช้ build ผ่านแทนผลใช้งาน

เลือกภาษาเพิ่มเมื่อระบบต้องใช้ เช่น Java มี runtime libraries และแนวทางของระบบมันเอง ไม่ต้องเรียนทุกภาษาเพื่อเริ่มซัพพอร์ต การทดสอบที่เทียบ output กับความคาดหมายมีค่ากว่าทดสอบเพียงว่าฟังก์ชันถูกเรียก Pipeline ต้องจำกัด secrets permissions และแหล่ง artifact เพื่อไม่ให้โค้ดที่ไม่เชื่อถือได้ใช้สิทธิ์ปล่อยระบบ

01 / 05

กิตและควบคุมรุ่นGit and Version Control · 16.1.1

Git เก็บประวัติการเปลี่ยน Branch แยกงาน Commit อธิบายชุดการเปลี่ยนที่ตรวจได้

Git เก็บประวัติ snapshot และความสัมพันธ์ commit Working tree คือไฟล์ที่แก้ Staging area เลือกส่วนที่จะ commit Branch เป็นชื่ออ้างเส้นประวัติ Remote ใช้แลกเปลี่ยนไม่ใช่สำเนาที่มีทุกการเปลี่ยน local อัตโนมัติ

เทียบหน้าที่เพื่อไม่สับสน
•Working tree

ไฟล์ที่กำลังแก้

•Index / commit

สิ่งที่เลือกและบันทึกประวัติ

•Remote

ที่แลกเปลี่ยน commit

ก่อน commit ดู diff และเลือกไฟล์ที่ตั้งใจ ไม่ใส่ secret หากเผลอ commit secret การลบใน commit ถัดไปไม่ลบประวัติเดิม ต้องเพิกถอนข้อมูลรับรองและจัดการประวัติตามขอบเขตที่ตกลง

ดูก่อนบันทึกประวัติ
git status
git diff
git diff --staged

status ดูสถานะไฟล์ diff ดูการเปลี่ยนที่ยังไม่ stage และ --staged ดูสิ่งที่จะ commit ทั้งสามเป็นการอ่าน ช่วยตรวจว่าไม่มีไฟล์หรือ secret เกิน scope

ที่มาของหัวข้อนี้ · คำอธิบายต่อยอด

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

เป็นส่วนต่อยอดที่เขียนเพื่อเชื่อมความเข้าใจ ไม่มีชื่อ Video/Reading เฉพาะที่ยืนยันจาก inventory เดิม

02 / 05

ทดสอบและแก้บั๊กTesting and Debugging · 16.1.2

Test ตรวจพฤติกรรมที่คาด Debugging ตรวจเหตุที่พฤติกรรมผิด ต้องใช้ทั้งสองอย่าง

Testing ตรวจพฤติกรรมที่ต้องการ Debugging หาสาเหตุพฤติกรรมผิด Unit ตรวจหน่วยเล็ก Integration ตรวจการเชื่อม End-to-end ตรวจเส้นงานผู้ใช้ เลือกตามความเสี่ยง ไม่ถือว่าทดสอบหนึ่งชั้นผ่านแล้วทุกชั้นถูก

เทียบหน้าที่เพื่อไม่สับสน
•Unit

พฤติกรรมหน่วยย่อย

•Integration

การทำงานร่วมกัน

•End-to-end

เส้นงานสำคัญของผู้ใช้

Parser ควรตรวจ input ปกติ ผิดรูปแบบ และขอบกรณี ส่วนหน้าเว็บต้องดู keyboard link และการตอบจากบริการด้วย Test ที่เพียงลอก implementation อาจผ่านพร้อม bug หากทั้งคู่คิดผิดเหมือนกัน

ที่มาของหัวข้อนี้ · 1 รายการ

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

03 / 05

สร้างระบบซีไอซีดีCI/CD Implementation · 16.1.3

CI ตรวจงานเมื่อเกิดการเปลี่ยน CD ช่วยเตรียมหรือส่งมอบตามกติกาของทีม

Pipeline รันขั้นตอน build test และ package ด้วย environment ที่กำหนด Artifact คือผลที่นำไป deploy ควรระบุรุ่นและ trace กลับ commit ได้ Deployment ต้องมีเงื่อนไข readiness และวิธี rollback

อ่านภาพตามลำดับการทำงาน
01Build / test

สร้างและตรวจรุ่น

02Artifact

ผลที่ระบุแหล่งและรุ่นได้

03Deploy / observe

นำไปใช้แล้วตรวจผล

การ build ผ่านไม่พิสูจน์ migration ปลอดภัยต่อข้อมูลจริง แยกตรวจ schema กับ deploy และเฝ้าผลหลังปล่อย อย่าส่ง production secret ให้ job จากโค้ดที่ยังไม่น่าเชื่อถือ

ที่มาของหัวข้อนี้ · 1 รายการ

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

04 / 05

คอนเทนเนอร์และติดตั้งระบบContainers and Deployment · 16.1.4

Container รวมสภาพแวดล้อมแอป Deployment ต้องกำหนด config ทรัพยากรและวิธีย้อนกลับ

Image เป็นชุด filesystem และ metadata สำหรับเริ่ม container Container เป็น process ที่รันจาก image พร้อม runtime state มักใช้ kernel ร่วม host จึงไม่เหมือน ทุกด้าน Volume เก็บข้อมูลนอก writable layer ของ container

เทียบหน้าที่เพื่อไม่สับสน
•Image

แบบพร้อมเริ่มงาน

•Container

process และ runtime state

•Volume / network

ข้อมูลถาวรและการเชื่อมต่อ

ลบ 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 รายการ

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

05 / 05

จาวาหรือภาษาอื่นตามงาน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 ต้องเรียนเพิ่ม

เทียบหน้าที่เพื่อไม่สับสน
•Shared concepts

หลักโปรแกรมที่ใช้ร่วม

•Runtime / toolchain

ตัวรัน build และ dependency

•Job need

ความลึกตามระบบที่ทำงาน

IT Support ไม่ต้องเรียนทุกภาษาให้ลึกก่อนทำงาน อ่าน log และ dependency ของระบบที่รับผิดชอบก่อน หากต้องแก้แอป Java ให้เข้าใจ build dependency configuration และ exception ตามงาน ไม่เพียง syntax

ที่มาของหัวข้อนี้ · คำอธิบายต่อยอด

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

เป็นส่วนต่อยอดที่เขียนเพื่อเชื่อมความเข้าใจ ไม่มีชื่อ Video/Reading เฉพาะที่ยืนยันจาก inventory เดิม

เชื่อมความเข้าใจ

นำศัพท์มาเชื่อมกับงาน

ตัวอย่างให้เห็นภาพ

เมื่อรุ่นใหม่มีปัญหา ประวัติ commit ผล test และรุ่นที่ deploy ช่วยแยกสาเหตุได้

สิ่งที่บทนี้เชื่อมไว้

ซอฟต์แวร์ที่ทีมดูแลได้ต้องเก็บประวัติ ตรวจผล และส่งมอบแบบที่ย้อนกลับได้

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

บันทึกในเบราว์เซอร์นี้
บทเรียนที่เกี่ยวข้องและที่มาของบทอ่าน

คำอธิบายหน้านี้เขียนใหม่ตามหัวข้อใน Atlas รายการด้านล่างเป็นชื่อ Video/Reading ที่เคยจับคู่ไว้ แสดงไว้ให้ตรวจที่มาของชื่อหัวข้อ และไม่รับรองว่าคอร์สสอนทุกส่วนของคำอธิบายนี้