792 คำ
4 นาที
IT Foundation EP.03 — ซอฟต์แวร์ทำงานยังไง
สารบัญ
เกริ่นนำ — จากตรรกะสู่ร้านอาหาร 1. The Translation — ทำไมต้องมี “ล่าม” Abstraction — ศิลปะของการซ่อนความยาก 2. Frontend — ห้องอาหาร (ส่วนที่ลูกค้าสัมผัส) 2.1 HTML / CSS — โครงสร้างและการตกแต่ง 2.2 JavaScript — ความฉลาดของหน้าร้าน 2.3 Client-Side Storage — ความจำของร้าน 2.4 SEO — ป้ายหน้าร้าน 3. Backend — ห้องครัว (ส่วนสมองและความลับ) 3.1 Server Runtime & Routing — เชฟและการจัดคิว 3.2 Business Logic & Jobs — สูตรลับและงานประจำ 3.3 Error Management & Logging — กล้องวงจรปิดและสมุดบันทึก 3.4 Third-Party Integrations — Supplier ภายนอก 4. Data Flow — วงจรออเดอร์ (จากเมนูสู่จาน) 4.1 API — บริกร (The Waiter) 4.2 CRUD Operations — ภาษาในการสั่ง 4.3 Caching Strategy — ซุ้มอาหารตักเอง 4.4 Transactions — ป้องกันออเดอร์ชนกัน 5. Recap — โรงงานผลิตซอฟต์แวร์ สิ่งที่ผู้นำต้องจำ ก้าวต่อไป — จากร้านเดียวสู่อาณาจักรแฟรนไชส์

Series: IT Foundation — พื้นฐาน IT สำหรับยุค AI (ภาษาคน)

  1. EP.01 — รากฐานคอมพิวเตอร์
  2. EP.02 — พื้นฐาน Computer Science
  3. EP.03 — ซอฟต์แวร์ทำงานยังไง ← คุณอยู่ตรงนี้
  4. EP.04 — Architectures
  5. EP.05 — Web Technologies
  6. EP.06 — Security พื้นฐาน
  7. EP.07 — Performance & Testing
  8. EP.08 — Dev/Deploy/Ops
  9. EP.09 — Security ขั้นสูง
  10. EP.10 — Project Management

เกริ่นนำ — จากตรรกะสู่ร้านอาหาร#

ใน EP.02 เราคุยกันเรื่อง “สมองของคอมพิวเตอร์” — Data Structures, Algorithms, ตัวแปร, ลูป, เงื่อนไข ทั้งหมดนั้นคือ “ระเบียบวินัย” ที่ทำให้ Code คิดเป็น แต่แค่คิดเป็นอย่างเดียวยังขายของไม่ได้ครับ มันต้องประกอบร่างเป็น “ซอฟต์แวร์” ที่ลูกค้าใช้งานได้จริง

EP.03 นี้ผมจะชวนทุกคนมองซอฟต์แวร์เป็น “ร้านอาหาร” หนึ่งร้าน — มีห้องอาหารให้ลูกค้านั่ง มีห้องครัวทำอาหาร มีบริกรวิ่งระหว่างสองห้อง เวลาคุณกดปุ่ม “สั่งซื้อ” บนแอปครั้งเดียว เบื้องหลังมีคนทำงานเป็นขบวนใหญ่พอๆ กับร้านอาหารเปิดใหม่เลยครับ


1. The Translation — ทำไมต้องมี “ล่าม”#

ก่อนจะเปิดร้าน เรามีปัญหาพื้นฐานที่ต้องแก้ก่อน คือ มนุษย์พูดภาษาอังกฤษ (หรือไทย) แต่คอมพิวเตอร์เข้าใจแค่ไฟฟ้า 0 กับ 1 เราจะสั่งให้มันทำงานยังไงโดยไม่ต้องนั่งพิมพ์ 010101 ทั้งวัน

วิธีแก้คือเราสร้าง ภาษาโปรแกรม (Source Code) ขึ้นมา เช่น Python, JavaScript, Java — ภาษาที่คนอ่านรู้เรื่อง แล้วใช้ “ล่าม” ที่เรียกว่า Compiler หรือ Interpreter แปลกลับเป็นภาษาเครื่องให้อีกทีหนึ่ง

ผมชอบเปรียบเทียบแบบนี้ครับ: Code เหมือนแปลนบ้านที่สถาปนิกเขียน ส่วน Compiler คือ หัวหน้าคุมงาน ที่อ่านแปลนแล้วไปสั่งคนงาน (CPU) ให้ตอกตะปูทีละตัว

Management View: ภาษาโปรแกรมแต่ละภาษามีความถนัดต่างกัน — Python เก่งคำนวณและ AI, JavaScript เก่งหน้าเว็บ, Go เก่งงาน Server โหลดสูง อย่าบังคับทีม Dev ใช้ภาษาเดียวกับทุกงาน มันเหมือนเอาช่างไม้ไปเทปูน

Abstraction — ศิลปะของการซ่อนความยาก#

อีกเรื่องที่ต้องรู้คือ Abstraction หรือ “การซ่อนความซับซ้อน” ถ้าจะขับรถแล้วต้องรู้จังหวะการฉีดน้ำมันเข้าลูกสูบทุกครั้ง คงไม่มีใครขับรถเป็น วิศวกรจึงทำ “ปุ่มกดง่ายๆ” (แป้นเหยียบ, พวงมาลัย) มาครอบเครื่องยนต์ไว้

ซอฟต์แวร์ที่ดีก็เช่นกัน — อย่าให้ User ต้องรู้เรื่องหลังบ้าน User เห็นแค่ปุ่ม “สั่งซื้อ” ไม่ต้องรู้ว่าข้างหลังเรียก API กี่ตัว เช็คสต็อกกี่ฐานข้อมูล


2. Frontend — ห้องอาหาร (ส่วนที่ลูกค้าสัมผัส)#

ถ้าซอฟต์แวร์คือร้านอาหาร Frontend คือห้องอาหาร — โซนที่ลูกค้านั่ง เห็นหน้าร้าน จับเมนู ดูของตกแต่ง หน้าร้านต้องสวย โครงสร้างดี บริการต้องฉลาด

2.1 HTML / CSS — โครงสร้างและการตกแต่ง#

ถ้าเว็บมีแต่เนื้อหาตัวอักษร มันจะดูเหมือนเอกสารราชการ น่าเบื่อ อ่านยาก เราจึงต้องใช้สองเครื่องมือคู่กัน:

  • HTML — เป็น “โครงสร้าง” ครับ เสา คาน ผนัง หลังคา บอกว่าตรงนี้คือหัวข้อ ตรงนี้คือย่อหน้า ตรงนี้คือรูปภาพ
  • CSS — เป็น “การตกแต่ง” ทาสี จัดแสง เลือกเก้าอี้ ฟอนต์ สี ขนาด ระยะห่าง

Management View: ลูกค้าตัดสินความน่าเชื่อถือของบริษัทคุณภายใน 3 วินาทีแรกจากหน้าตาเว็บ ถ้าเว็บคุณพังบนมือถือ (ไม่ responsive) ลูกค้าหนีไปหาคู่แข่งทันทีโดยไม่บอกลา การมี Responsive Design ที่ปรับขนาดหน้าร้านตามจอจึงไม่ใช่ของฟุ่มเฟือย แต่คือสิ่งจำเป็น

2.2 JavaScript — ความฉลาดของหน้าร้าน#

เว็บสมัยก่อน (ยุค 2000 ต้นๆ) เหมือน “กระดาษแปะบอร์ด” — กดอะไรไม่ได้ รอโหลดหน้าใหม่ทุกครั้งที่จะทำอะไร ช้ามาก

วิธีแก้คือใส่ “สมอง” ให้หน้าเว็บด้วย JavaScript ทำให้เว็บขยับได้ กดปุ่มแล้วมีไฟกระพริบ โหลดข้อมูลเพิ่มได้โดยไม่ต้องเปลี่ยนหน้า (Asynchronous) เปรียบเหมือน พนักงานต้อนรับที่คล่องแคล่ว คอยบริการที่โต๊ะ ไม่ต้องให้ลูกค้าเดินไปหยิบของเอง

Keyword ที่คุ้มจำ: SPA (Single Page App) คือเว็บที่เปลี่ยนเนื้อหาในหน้าเดียวโดยไม่ต้องโหลดใหม่ (Gmail, Facebook เป็นตัวอย่าง), Async/Await คือวิธีให้เว็บทำหลายอย่างพร้อมกันโดยไม่ค้าง

2.3 Client-Side Storage — ความจำของร้าน#

ปัญหาคลาสสิกของเว็บสมัยก่อน: ลูกค้าคนเดิมกลับมาที่ร้าน แต่ร้านจำไม่ได้ว่าเขาชื่ออะไร ไม่รู้ว่าเขาเคยหยิบอะไรใส่ตะกร้าไว้ — อาการ Amnesia

วิธีแก้คือ “ฝากข้อมูลไว้ที่กระเป๋าของลูกค้า” (Browser ของเขาเอง):

  • Cookies — เหมือนบัตรสมาชิกใบเล็กๆ ที่ต้องโชว์ทุกครั้งที่เข้าร้าน
  • Local Storage — เหมือนล็อกเกอร์ส่วนตัวในมือถือลูกค้า เก็บข้อมูลได้เยอะกว่าและไม่ต้องส่งให้เซิร์ฟเวอร์ดูตลอด

Management View: สองสิ่งนี้ช่วยเพิ่ม Conversion Rate ตรงๆ ครับ เพราะลูกค้าไม่ต้อง Login ใหม่ทุกครั้ง ไม่ต้องหยิบของใส่ตะกร้าซ้ำ ใครเคยเจอเว็บที่ตะกร้าหายทุกครั้งที่ปิดหน้าต่างจะรู้ว่ามันหงุดหงิดแค่ไหน

2.4 SEO — ป้ายหน้าร้าน#

สุดท้ายของ Frontend คือเรื่องที่หลายคนลืม: ร้านสวย อาหารอร่อย แต่ถ้าตั้งในซอยลึกไม่มีใครเข้า ก็เจ๊ง

SEO (Search Engine Optimization) คือการจัดป้ายหน้าร้านให้หุ่นยนต์ของ Google อ่านออกและ “ชอบใจ” พอลูกค้าค้นหาเรื่องที่เราขาย Google จะพาเขามาหาเราเอง เราเรียกมันว่า Organic Traffic — เป็นการตลาดที่ยั่งยืนที่สุดในระยะยาว ดีกว่ายิง Ads อย่างเดียว เพราะเราไม่ต้องจ่ายเงินเข้าอย่างต่อเนื่อง


3. Backend — ห้องครัว (ส่วนสมองและความลับ)#

ห้องครัวคือพื้นที่หวงห้าม ลูกค้าเดินเข้าไม่ได้ มีแต่เชฟกับวัตถุดิบ ทุกกฎของร้าน ทุกสูตรลับ ทุก “ความได้เปรียบทางธุรกิจ” อยู่ในนี้ทั้งหมดครับ

3.1 Server Runtime & Routing — เชฟและการจัดคิว#

ลองจินตนาการว่าลูกค้า 50 โต๊ะสั่ง “ต้มยำ” “สเต็ก” “ซูชิ” พร้อมกัน ถ้าไม่มีระบบจัดการ ครัวจะวุ่นวายมาก

  • Routing — เหมือนคนยืนหน้าครัวที่คอยตะโกนว่า “ต้มยำไปแผนกครัวไทย!”, “สเต็กไปครัวฝรั่ง!” ในภาษาโปรแกรม มันคือการกำหนดว่า Request แต่ละประเภท (URL แต่ละอัน) ไปหา Code ตัวไหน
  • Runtime — คือสภาพแวดล้อมที่ทำให้เชฟ (Code) ทำงานได้ เช่น Node.js, Python runtime, Java JVM

3.2 Business Logic & Jobs — สูตรลับและงานประจำ#

Business Logic คือหัวใจของธุรกิจครับ — “ลูกค้าคนนี้เป็น VIP ไหม?”, “ลดราคาได้กี่เปอร์เซ็นต์?”, “ตัดสต็อกยังไง?”, “โปรโมชั่นนี้ใช้กับสินค้าชนิดไหนได้บ้าง?”

กฎเหล็กข้อหนึ่ง: Business Logic ต้องอยู่หลังบ้าน ห้ามอยู่หน้าบ้านเด็ดขาด เพราะ Code หน้าบ้าน (Frontend) นั่งอยู่ใน Browser ของลูกค้า ใครเปิด DevTools ก็อ่านได้หมด ถ้าคุณเขียนกฎส่วนลดไว้หน้าบ้าน ลูกค้าเก่งๆ แก้ Code แล้วได้ส่วนลด 99% ในวินาทีนั้นเลย

Jobs (Cron Jobs) คือ “งานที่ทำตอนร้านปิด” — ล้างจาน สรุปยอดขาย ส่งเมลอวยพรวันเกิดลูกค้า ทำรายงานให้ผู้จัดการตอนเช้า งานพวกนี้ไม่ต้องให้ลูกค้ารอ จึงไปทำตอนดึกๆ ที่ Server ว่าง

Management View: “Secret Sauce” หรือความได้เปรียบของบริษัทคุณอยู่ที่ Logic ตรงนี้แหละครับ ไม่ใช่ที่หน้าเว็บสวยหรือปุ่มเด้ง

3.3 Error Management & Logging — กล้องวงจรปิดและสมุดบันทึก#

จู่ๆ ลูกค้าโวยวายว่า “สั่งแล้วไม่ได้ของ!” หรือระบบล่มไปเฉยๆ โดยไม่มีใครรู้สาเหตุ — ถ้าคุณไม่มีระบบบันทึก คุณจะเดากันไปเดากันมาเป็นสัปดาห์

  • Logging — ติด “กล้องวงจรปิด” และให้ผู้จัดการจดบันทึกทุกเหตุการณ์ (ใครเข้ามาเมื่อไหร่ ทำอะไร เกิด error อะไร)
  • Error Handling — แผนรับมือฉุกเฉิน เช่น ถ้าแก๊สหมด ให้ขึ้นป้ายว่า “เมนูนี้หมดวันนี้” แทนที่จะปล่อยให้ร้านระเบิด หรือในภาษา Code ก็คือใช้ Try-Catch ดักข้อผิดพลาดแล้วตอบลูกค้าอย่างสุภาพแทนที่จะเด้ง error ดิบๆ

หลักคิดสำคัญของวิศวกรซอฟต์แวร์: ระบบที่ดีไม่ใช่ระบบที่ไม่เคยพัง แต่คือระบบที่พังแล้วเรารู้ทันทีว่าเพราะอะไร

3.4 Third-Party Integrations — Supplier ภายนอก#

เราทำเองทุกอย่างไม่ไหวครับ จะสร้างธนาคารเองเพื่อรับบัตรเครดิตหรอ? เราจึงเชื่อมต่อกับผู้เชี่ยวชาญผ่าน API Integration — เช่น Stripe/Omise รับชำระเงิน, Google Maps นำทาง, SendGrid ส่งอีเมล, LINE Notify แจ้งเตือน

คำที่ต้องรู้: API Keys (กุญแจยืนยันตัวตน), Webhooks (ให้ Supplier วิ่งมาบอกเราเมื่อมีเหตุการณ์)


4. Data Flow — วงจรออเดอร์ (จากเมนูสู่จาน)#

Chrome DevTools Network waterfall chart — แต่ละแถบคือ HTTP request หนึ่งตัว

หน้า DevTools Network tab ที่ dev ดูกันทุกวัน — แต่ละแถบสีแสดงเวลาที่ใช้โหลดแต่ละไฟล์

เรามีห้องอาหารและห้องครัวแล้ว คราวนี้ต้องมีระบบวิ่งออเดอร์ระหว่างสองห้อง

sequenceDiagram
    participant U as ลูกค้า (Browser)
    participant F as Frontend<br/>(ห้องอาหาร)
    participant B as Backend<br/>(ห้องครัว)
    participant D as Database<br/>(คลังเสบียง)

    U->>F: กดสั่งเมนู
    F->>B: ส่งออเดอร์ผ่าน API
    B->>D: ขอข้อมูลที่ต้องใช้
    D-->>B: คืนข้อมูล
    B-->>F: ประมวลผลแล้วส่งคำตอบ
    F-->>U: แสดงจานบนโต๊ะ

4.1 API — บริกร (The Waiter)#

ลูกค้า (Frontend) เดินเข้าครัวไปหยิบหมูหยิบไก่เองไม่ได้ — อันตราย สกปรก และยุ่งเหยิง ต้องสั่งผ่าน บริกร (API) บริกรจะจดออเดอร์ → ส่งครัว → ยกอาหารมาเสิร์ฟที่โต๊ะ

API ย่อมาจาก Application Programming Interface — มันคือ “ช่องทางสื่อสารที่ตกลงกันไว้” ระหว่างหน้าบ้านกับหลังบ้าน ประโยชน์สำคัญคือ ความปลอดภัย และ ความเป็นระเบียบ (Interface Contract) ทุกคนรู้ว่าต้องสั่งยังไง ตอบกลับยังไง

มาตรฐานที่ใช้กันเยอะ: REST (แบบคลาสสิก ใช้กับทุกแอปได้), GraphQL (แบบใหม่ ลูกค้าเลือกเอาเฉพาะข้อมูลที่อยากได้)

4.2 CRUD Operations — ภาษาในการสั่ง#

ไม่ว่าเมนูของคุณจะพิสดารแค่ไหน คำสั่งพื้นฐานมีแค่ 4 อย่างเท่านั้น:

  • Create (POST) — สั่งอาหารจานใหม่ (สร้างข้อมูล เช่น สมัครสมาชิก)
  • Read (GET) — ขอดูเมนู ขอดูบิล (อ่านข้อมูล เช่น เปิดดูโปรไฟล์)
  • Update (PUT/PATCH) — ขอเปลี่ยนจากไก่เป็นกุ้ง (แก้ไขข้อมูล เช่น เปลี่ยนเบอร์โทร)
  • Delete (DELETE) — ยกเลิกออเดอร์ (ลบข้อมูล เช่น ลบบัญชี)

ทุกแอปที่คุณใช้ในชีวิตประจำวัน ตั้งแต่ Facebook ยัน Shopee ทำงานด้วย 4 คำสั่งนี้ทั้งหมด

4.3 Caching Strategy — ซุ้มอาหารตักเอง#

ปัญหา: ลูกค้า 100 คนสั่ง “ข้าวผัด” พร้อมกัน ถ้าเชฟต้องผัดใหม่ 100 รอบ มันช้าและเปลืองแรงมาก

วิธีแก้คือ Caching — ทำข้าวผัดใส่ถาดอุ่นเตรียมไว้ใน Redis (ถาดอุ่นของวงการ Tech) ใครสั่งมาปุ๊บ ตักเสิร์ฟได้เลยใน 0.1 วินาที ไม่ต้องไปรบกวนเชฟตัวจริง

Management View: Caching คือเทคนิคที่ คุ้มค่าที่สุด ในการทำให้แอปเร็วขึ้นและประหยัดค่า Server ก่อนจะเอาเงินไปซื้อเครื่องแรงขึ้น ถามทีมก่อนว่า “Cache ดีพอยัง?”

เรื่องต้องรู้เพิ่ม: TTL (Time To Live) คือเวลาหมดอายุของ Cache — ข้าวผัดวางไว้นานเกินไปต้องทิ้ง ไม่งั้นลูกค้าได้ข้อมูลเก่า

4.4 Transactions — ป้องกันออเดอร์ชนกัน#

ปัญหาคลาสสิก: มี “กุ้งแม่น้ำ” ตัวสุดท้าย ลูกค้า 2 โต๊ะกดสั่งพร้อมกันเป๊ะๆ (วงการเรียกว่า Race Condition) ใครจะได้กิน? ถ้าระบบไม่ดี อาจขายให้ทั้งสองโต๊ะแล้วมีโต๊ะหนึ่งต้องเสียใจ

วิธีแก้คือระบบ Transaction — “ล็อก” กุ้งตัวนั้นให้คนแรกที่คำสั่งมาถึง อีกคนจะได้รับแจ้งว่า “ของหมด” ทันที คำย่อที่มักได้ยินคือ ACID (Atomicity, Consistency, Isolation, Durability) — 4 คุณสมบัติที่ระบบธุรกรรมต้องมี

อีกคำที่สำคัญมากในยุคนี้คือ Idempotency — กดปุ่ม “สั่งซื้อ” รัวๆ แต่ระบบตัดเงินแค่ครั้งเดียว ไม่ใช่ 5 ครั้ง ใครเคยเจอตัวเองกดซ้ำแล้วถูกตัดเงินหลายรอบจะรู้ว่าฟีเจอร์นี้สำคัญมาก


5. Recap — โรงงานผลิตซอฟต์แวร์#

มาเชื่อมต่อภาพรวม 3 บทแรกกันครับ:

  • EP.01 (Hardware) — คือ ร่างกาย (CPU, RAM, Network) ที่พร้อมทำงาน
  • EP.02 (CS Basics) — คือ สมองและระเบียบวินัย (Data Structures + Algorithms)
  • EP.03 (Software) — คือ การประกอบธุรกิจ:
    • สร้างหน้าร้านสวยและจำลูกค้าได้ (Frontend + Storage)
    • บริหารครัวที่มีประสิทธิภาพและตรวจสอบได้ (Backend + Logging)
    • วางระบบรับออเดอร์ที่รวดเร็ว (API + Caching)

สิ่งที่ผู้นำต้องจำ#

  1. Frontend is just the tip of the iceberg — สิ่งที่ User เห็นเป็นแค่ 20% ของงานทั้งหมด อย่าลืมให้งบกับ 80% ที่มองไม่เห็น (Backend, Security, Logging)
  2. Speed comes from Architecture — แอปจะเร็วได้ต้องออกแบบ Data Flow ดีๆ (Caching, ลด Request) ไม่ใช่แค่ซื้อ Server แพงๆ
  3. กฎต้องอยู่หลังบ้าน — ความลับทางธุรกิจ อย่าไว้ใจหน้าบ้าน เพราะหน้าบ้านอยู่ในมือลูกค้า

ก้าวต่อไป — จากร้านเดียวสู่อาณาจักรแฟรนไชส์#

โมเดล “ร้านอาหารเดียว” ที่เราเรียนมาใน EP.03 เรียกในวงการว่า Monolith — มันเวิร์คสำหรับลูกค้าหลักพันถึงหลักหมื่นคน

แต่ถ้าคุณต้องรองรับลูกค้า 1 ล้านคนพร้อมกันล่ะ? ครัวเดียวเอาไม่อยู่แน่ๆ เราต้องแตกเป็นครัวย่อยๆ หลายครัว มีครัวกลางประสานงาน มีระบบขนส่งระหว่างสาขา — นี่คือโลกของ Microservices & Cloud Architecture ที่เราจะไปเจาะลึกใน EP ถัดไปครับ

EP.04 — Architectures