Distributed Systems · บทที่ 11 จาก 11

Peer-to-Peer & Ubiquitous Computing

บทสุดท้ายพาออกจากโลกของ client-server ไปสู่ระบบที่ไม่มีศูนย์กลางเลย (P2P) และระบบที่คอมพิวเตอร์แทรกอยู่ทุกหนแห่งจนผู้ใช้แทบไม่รู้ตัวว่ากำลังใช้งานคอมพิวเตอร์อยู่ (ubiquitous computing) — ทั้งสองแนวคิดคือปลายทางของ scalability และ transparency ที่วิชานี้พูดถึงมาตลอด

📚
อิงเนื้อหาจาก Coulouris บทที่ 10 (Peer-to-Peer Systems) และบทที่ 19 (Mobile and Ubiquitous Computing) — DHT ในบทนี้คือรากฐานของ consistent hashing ที่ Cassandra และ DynamoDB ใช้จริงในการกระจายข้อมูล (เชื่อมโยงกับบทที่ 9)

1P2P รุ่นที่ 1: Unstructured Overlay

แนวคิดรวม
P2P ทำให้ทุก node มีบทบาทเท่ากัน (ตามสถาปัตยกรรมในบทที่ 1) ทั้งเป็นผู้ให้และผู้ขอทรัพยากร — เป้าหมายหลักคือ scale ได้มหาศาลโดยไม่ต้องพึ่ง server กลางที่จะกลายเป็นคอขวดหรือจุดล้มเหลวเดียว
ระบบวิธีค้นหาไฟล์จุดอ่อน
Napsterมี server กลางเก็บดัชนีว่าใครมีไฟล์อะไร — การค้นหาถามที่ server กลาง แต่การถ่ายโอนไฟล์จริงเป็น P2P ตรงระหว่าง node สองตัว (เป็น hybrid ไม่ใช่ P2P บริสุทธิ์)Server กลางที่เก็บดัชนียังเป็น single point of failure และเป้าหมายทางกฎหมายที่ชัดเจน (ปิด server ตัวเดียวก็ล้มทั้งระบบ)
Gnutellaไม่มี server กลางเลย — ค้นหาด้วยการflood query ไปยัง neighbor ทุกทิศทาง แล้ว neighbor ส่งต่อไปเรื่อย ๆ จนกว่าจะเจอไฟล์หรือครบ TTL (hop limit)Flooding สร้าง traffic มหาศาลเมื่อเครือข่ายใหญ่ขึ้น — ไม่ scale ในทางปฏิบัติ

2P2P รุ่นที่ 2: Structured Overlay และ DHT

ปัญหาที่ต้องแก้
Unstructured overlay ค้นหาไม่มีประสิทธิภาพ (ต้อง flood หรือพึ่ง server กลาง) — Distributed Hash Table (DHT) แก้ปัญหานี้ด้วยการจัด "ตำแหน่ง" ของแต่ละ node และแต่ละข้อมูลอย่างมีโครงสร้างบน keyspace เดียวกัน ทำให้ค้นหาได้เร็วแบบมีขอบเขตเวลาที่คาดการณ์ได้ (ไม่ใช่ flood แบบสุ่ม)

Chord: ตัวอย่าง DHT คลาสสิก

แนวคิดหลัก
ทั้ง node และ key (ข้อมูล) ถูกแฮชด้วยฟังก์ชันเดียวกันให้ตกลงบนวงแหวนตัวเลข (ring) ขนาดคงที่ — key แต่ละตัวถูกเก็บโดย node ที่มี ID "ถัดไปตามเข็มนาฬิกา" จาก hash ของ key นั้น (successor node)
Ring keyspace: 0 ... 2^m - 1

Node 0 ---- Node 8 ---- Node 21 ---- Node 32 ---- (วนกลับ Node 0)

key ที่ hash ได้ 25 -> เก็บที่ node 32 (node แรกที่ ID >= 25 ตามเข็มนาฬิกา)
Finger Table — ค้นหาแบบ O(log N)
แทนที่แต่ละ node จะรู้จักแค่ node ข้างเคียง (ซึ่งจะค้นหาช้ามาก ต้องเดินทีละ hop) แต่ละ node เก็บ finger table ที่ชี้ไปยัง node ที่ห่างออกไปเป็นเลขยกกำลังสอง (2¹, 2², 2⁴, ...)
จำนวน hop ที่ใช้ค้นหา key ใด ๆ = O(log N)
เมื่อ N คือจำนวน node ทั้งหมดใน ring — สเกลได้ดีกว่า flooding อย่างมหาศาล
เชื่อมโยงกับบทที่ 9
แนวคิด "แฮช key แล้ว map ไปยัง node ที่รับผิดชอบ" ใน Chord คือรากฐานเดียวกับ Consistent Hashing ที่ Cassandra และ DynamoDB ใช้กระจายข้อมูลไปยัง replica — เมื่อ node เพิ่ม/ลด เฉพาะ key ที่อยู่ใกล้ node นั้นบน ring เท่านั้นที่ต้องย้ายที่ (ต่างจาก hash แบบธรรมดาที่ node เปลี่ยนหนึ่งตัวทำให้ mapping ของ key เกือบทั้งหมดเปลี่ยนไปด้วย)

3BitTorrent: กลยุทธ์ P2P ที่ต่างออกไป

แนวคิด
ต่างจาก Napster/Gnutella/Chord ที่เน้น "ค้นหา" BitTorrent เน้น "กระจายไฟล์ขนาดใหญ่ให้เร็วที่สุด" — ไฟล์ถูกแบ่งเป็นชิ้นเล็ก (piece) ผู้ที่กำลังดาวน์โหลด (peer) แลกเปลี่ยนชิ้นที่ตัวเองมีกับ peer อื่นไปพร้อมกัน (ไม่ต้องรอให้ดาวน์โหลดครบก่อนถึงจะแบ่งปันได้) — tracker ทำหน้าที่แค่บอกว่ามี peer ใครบ้างที่กำลังแชร์ไฟล์เดียวกัน (คล้ายบทบาทดัชนีของ Napster แต่ไม่เก็บว่าใครมีไฟล์อะไรในระดับละเอียด)

4Mobile Computing และ Ubiquitous Computing

แนวคิดความหมาย
Mobile Computingอุปกรณ์เคลื่อนที่ (laptop, มือถือ) เข้าถึงระบบกระจายได้แม้ตำแหน่งเปลี่ยนไปเรื่อย ๆ — ต้องรับมือกับการเชื่อมต่อไม่เสถียร, bandwidth จำกัด, และdisconnected operation (ทำงานต่อได้แม้ขาดการเชื่อมต่อชั่วคราว แล้ว sync ทีหลัง)
Ubiquitous (Pervasive) Computingคอมพิวเตอร์แทรกอยู่ในสภาพแวดล้อมจนผู้ใช้แทบไม่รู้ตัวว่ากำลังโต้ตอบกับมัน (ตรงข้ามกับการนั่งหน้าจอคอมพิวเตอร์โดยตรง) — เน้น context-awareness คือระบบปรับพฤติกรรมตามบริบทแวดล้อม เช่น ตำแหน่ง เวลา หรือกิจกรรมของผู้ใช้ โดยอัตโนมัติ
ทำไมสองแนวคิดนี้ทดสอบวิชาทั้งหมด
Mobile และ Ubiquitous computing บังคับให้ปัญหาพื้นฐานของบทที่ 1 (heterogeneity, failure handling, no global clock) รุนแรงขึ้นไปอีกขั้น — อุปกรณ์เชื่อมต่อ/ขาดการเชื่อมต่อได้ตลอดเวลาแบบไม่แจ้งล่วงหน้า (partial failure ที่ถี่กว่าระบบ server ทั่วไปมาก) และมักมีทรัพยากรจำกัด (แบตเตอรี่, bandwidth) ที่ต้องคำนึงถึงเพิ่มเติมจากทฤษฎีพื้นฐาน

5ทันสมัย: จาก P2P/Ubiquitous ยุคแรกสู่ Edge, IoT และ Web3

แนวคิดปัจจุบันสืบทอดจากบทนี้อย่างไร
Kademlia DHTDHT ที่ใช้จริงใน BitTorrent (trackerless mode), IPFS, และเครือข่าย blockchain จำนวนมาก — พัฒนาต่อจากแนวคิด Chord โดยปรับปรุงเรื่องความทนทานต่อ node ที่ล่มบ่อย
IPFS (InterPlanetary File System)ระบบไฟล์แบบกระจายที่ไม่มี server กลาง ใช้ content-addressing (แฮชเนื้อหาไฟล์เป็น key) บน DHT — คือ "Distributed File System (บทที่ 8) ที่ implement บน P2P overlay (บทนี้)"
WebRTCทำให้ browser สื่อสารกันแบบ P2P ตรง ๆ ได้โดยไม่ต้องผ่าน server กลาง (หลังจาก signaling เริ่มต้น) — นำแนวคิด P2P ในบทนี้มาสู่ web application ทั่วไป
Edge Computing & IoTย้ายการประมวลผลจาก cloud กลางไปยังอุปกรณ์ที่อยู่ "ใกล้" แหล่งข้อมูล (เซนเซอร์, มือถือ) — สืบทอดปรัชญาของ ubiquitous computing โดยตรง เพียงเปลี่ยนจากโจทย์ "ซ่อนคอมพิวเตอร์จากผู้ใช้" เป็น "ลด latency และ bandwidth โดยประมวลผลใกล้ต้นทางข้อมูล"
ข้อสังเกตปิดท้ายวิชา
ตลอด 11 บทของวิชานี้ ปัญหาพื้นฐานจากบทที่ 1 — heterogeneity, concurrency, partial failure, ไม่มี global clock, และความจำเป็นของ transparency — ปรากฏซ้ำแล้วซ้ำเล่าในรูปแบบที่ต่างกัน ตั้งแต่ marshalling ไปจนถึง Byzantine consensus ไปจนถึง DHT ระบบยุค cloud-native, blockchain, และ IoT ในปัจจุบันไม่ได้ "แก้" ปัญหาเหล่านี้ให้หายไป — มันแค่เลือก trade-off ที่ต่างกันสำหรับบริบทใหม่ ทฤษฎีในวิชานี้คือเครื่องมือที่ทำให้มองออกว่า trade-off ที่แต่ละระบบเลือกคืออะไร และทำไม

6P2P คือบทบาท ไม่ใช่แค่รูปร่างเครือข่าย

คำว่า peer-to-peer ไม่ได้แปลว่าไม่มี server ใดเลย แต่หมายถึง node ปลายทางหลายตัวแบ่งบทบาททั้งผู้ใช้และผู้ให้ทรัพยากร ระบบจริงมักเป็น hybrid: ใช้ server ช่วย login, signaling หรือค้นหา peer แล้วให้ข้อมูลวิ่งตรงระหว่าง peer การมีส่วนกลางบางชิ้นจึงไม่ทำลายความเป็น P2P หากงานหลักยังถูกแบ่งไปที่สมาชิก

สถาปัตยกรรมใครเก็บดัชนีใครส่งข้อมูลจุดเด่น
Client–serverServerServer ไป clientควบคุมง่าย นโยบายชัด
Hybrid P2PServer หรือ supernodePeer ไป peerค้นหาง่ายแต่ลดภาระ data plane
Pure P2Pกระจายใน overlayPeer ไป peerไม่มีศูนย์กลางเดียว แต่ดูแล membership ยาก
ภาพเปรียบเทียบ
ตลาดนัดมีฝ่ายจัดพื้นที่และป้ายบอกตำแหน่งร้าน แต่ผู้ซื้อขายกับแต่ละร้านโดยตรง ตลาดจึงมีศูนย์กลางด้านการประสานงานบางส่วน โดยไม่ได้หมายความว่าสินค้าทุกชิ้นต้องผ่านโกดังกลาง

7Overlay Network: แผนที่ตรรกะซ้อนบนถนนจริง

Peer เชื่อมกันเป็น overlay ซึ่งเป็นกราฟตรรกะบนเครือข่าย IP อีกชั้น Neighbor ใน overlay อาจอยู่คนละทวีป แม้ packet จริงต้องผ่าน router หลายสิบตัว ดังนั้นจำนวน overlay hop ต่ำไม่ได้แปลว่า latency ต่ำเสมอ เรียกว่า topology mismatch

ระบบ “ไร้ศูนย์กลาง” จึงมักยังมี bootstrap node, DNS seed หรือรายการ peer เริ่มต้น ไม่เช่นนั้น peer ใหม่ไม่มีทางรู้ว่าจะส่งข้อความแรกไปหาใคร

8Unstructured Search: Flooding, Random Walk และ Supernode

Flooding กระจาย query ไปเพื่อนบ้านทุกทิศเหมือนถามคนทั้งตลาดพร้อมกัน หาไฟล์หายากได้ดีในเครือข่ายเล็ก แต่จำนวนข้อความโตเร็วและข้อมูลซ้ำมาก TTL จำกัดวงการค้นหาแต่ก็ทำให้พลาดของที่อยู่ไกล

Random walk ส่ง query ไปเพียงบางเส้นทาง ลด traffic แต่หาเจอช้าลงและอาจเดินหลง Supernode ให้ peer ที่มีทรัพยากรสูงช่วยเก็บดัชนีของกลุ่ม ลดต้นทุนค้นหาแต่เพิ่มความไม่สมมาตร ระบบจึงเลือกระหว่างความกระจายศูนย์กับประสิทธิภาพ ไม่ได้มีคำตอบเดียว

ของหายากกับของยอดนิยม
Unstructured network เหมาะเมื่อ replication ตามความนิยมเกิดเอง ไฟล์ยอดนิยมมีหลายสำเนาจึงหาไม่ยาก แต่ rare item อาจต้อง flood กว้างมาก Structured DHT ให้ขอบเขตการค้นหาชัดกว่าเมื่อ lookup แบบ exact key สำคัญ

9Chord แบบค่อย ๆ เดินบนวงแหวน

Chord hash ทั้ง node ID และ key ลง keyspace เดียวกัน Key เป็นของ successor ตัวแรกตามเข็มนาฬิกา ถ้ารู้เพียง successor เราเดินทีละ node ใช้ O(N) hops Finger table เพิ่มทางลัดที่ระยะ 1, 2, 4, 8... ทำให้แต่ละก้าวเข้าใกล้เป้าหมายแบบลดระยะที่เหลือคร่าว ๆ ครึ่งหนึ่ง จึงได้ O(log N)

เมื่อ node เข้าและออก

  1. Node ใหม่หา successor ของ ID ตนผ่าน bootstrap peer
  2. รับผิดชอบ key ในช่วงระหว่าง predecessor เดิมกับ ID ของตน
  3. ย้าย key เฉพาะช่วงที่เกี่ยวข้อง ไม่ต้อง remap ทั้งระบบ
  4. กระบวนการ stabilize ตรวจ successor และปรับ pointer เป็นระยะ
  5. เก็บ successor list หลายตัวเพื่อทน node ข้างหน้าล่ม

นี่คือข้อดีของ consistent hashing: การเปลี่ยนสมาชิกหนึ่งตัวกระทบข้อมูลเพียงบางช่วง แต่คำว่า “consistent” ในที่นี้หมายถึงการ remap น้อย ไม่ใช่ consistency model ของการอ่านเขียนข้อมูล

10Kademlia: ระยะทางแบบ XOR

Kademlia นิยามระยะทางระหว่าง ID สองตัวด้วย XOR ค่าใกล้ศูนย์หมายถึง prefix เหมือนกันมาก Routing table แบ่ง peer เป็น k-bucket ตามช่วงระยะทาง ทำให้รู้จัก node ทั้งใกล้และไกลอย่างเป็นระบบ Lookup ถามหลาย peer แบบขนาน แล้วขยับไปหากลุ่มที่ใกล้ key มากขึ้น

XOR distance
distance(x, y) = x XOR y
ระยะนี้ symmetric และช่วยให้เส้นทาง lookup ค่อย ๆ ลดระยะได้ แต่ไม่ได้สะท้อนระยะทางภูมิศาสตร์ Node ที่ ID ใกล้กันอาจอยู่คนละประเทศ

Kademlia มักเก็บ node ที่เห็นมานานไว้ก่อน เพราะในเครือข่ายจริง peer ที่อยู่มานานมีแนวโน้มอยู่ต่อ ช่วยรับมือ churn ได้ดีขึ้น แนวคิดนี้พบใน BitTorrent DHT และระบบ content-addressed หลายชนิด

11Replication บน DHT และปัญหา Churn

ถ้า key เก็บเพียง node เดียว เมื่อ peer ปิดเครื่องข้อมูลหายทันที DHT จึง replicate ไป node ใกล้ key หลายตัวหรือเก็บสำเนาตาม successor list แต่สมาชิก P2P เข้าออกตลอดเวลา เรียกว่า churn ระบบต้องซ่อมสำเนาและ routing table อย่างต่อเนื่อง

12BitTorrent: การร่วมมือที่ออกแบบแรงจูงใจ

BitTorrent แบ่งไฟล์เป็น pieces และแต่ละ piece เป็น blocks Peer ดาวน์โหลดหลายชิ้นแบบขนานจากหลายคน แล้วตรวจ hash เพื่อจับข้อมูลเสีย กลยุทธ์ rarest first เลือกชิ้นที่มีสำเนาน้อยก่อน ป้องกัน swarm เหลือชิ้นหายากเพียงชิ้นเดียวจนทุกคนติดค้าง

Tit-for-tat โดยประมาณให้ upload กับ peer ที่ตอบแทนดี พร้อม optimistic unchoking เป็นครั้งคราวเพื่อค้นหาคู่ค้าที่ดีกว่าและเปิดโอกาสให้ peer ใหม่ เริ่มต้นได้ ระบบจึงไม่ได้พึ่งความใจดีล้วน ๆ แต่สร้างแรงจูงใจให้การแบ่งปันเป็นพฤติกรรมที่คุ้ม

องค์ประกอบหน้าที่
.torrent / magnet linkบอก metadata และตัวระบุเนื้อหาเพื่อเริ่มค้นหา swarm
Trackerแนะนำรายชื่อ peer ที่สนใจเนื้อหาเดียวกัน
DHTค้นหา peer โดยไม่ต้องพึ่ง tracker ตัวเดียว
Seedมีไฟล์ครบและยัง upload ให้ผู้อื่น
Leecher/peerกำลังรับและส่ง pieces ไปพร้อมกัน

13NAT, Firewall และการเชื่อมต่อ Peer โดยตรง

อุปกรณ์จำนวนมากอยู่หลัง NAT และไม่มี public address ที่รับ connection ได้ตรง ๆ การรู้ IP ของอีกฝ่ายจึงยังไม่พอ ต้องค้นว่า packet ภายนอกจะผ่าน mapping ใดเข้ามา

เหมือนอาคารที่มี รปภ.
รู้เลขห้องไม่ได้แปลว่าคนนอกเดินเข้าถึงห้องได้ STUN คล้ายถามว่าคนข้างนอกเห็นประตูใด Hole punching คือทั้งสองฝ่ายแจ้ง รปภ. ไว้ล่วงหน้า ส่วน TURN คือพบกันที่ห้องรับรองกลางเมื่อขึ้นไปหากันโดยตรงไม่ได้

14Content Addressing: ชื่อที่ผูกกับเนื้อหา

ระบบทั่วไปอ้างไฟล์ด้วยตำแหน่ง เช่น URL บอก server และ path แต่ content addressing ใช้ hash ของเนื้อหาเป็นชื่อ ถ้า byte เปลี่ยน hash ก็เปลี่ยน ทำให้ตรวจ integrity และ deduplicate ได้โดยธรรมชาติ คำถามเปลี่ยนจาก “ขอไฟล์จากเครื่องนี้” เป็น “ใครมีเนื้อหาที่ hash นี้”

อย่างไรก็ตาม hash ไม่บอกว่าเนื้อหาเชื่อถือได้หรือควรตีความอย่างไร ผู้โจมตีส่งเนื้อหาอื่นที่ hash ไม่ตรงไม่ได้ง่าย แต่ยังหลอกให้เราเชื่อ hash ของข้อมูลอันตรายได้ จึงต้องมี signature, provenance และ naming layer ที่ชี้จากชื่อมนุษย์ไปยัง content ID

15Security ของ P2P: เมื่อใครก็เข้าร่วมได้

การโจมตีลักษณะแนวป้องกัน
Sybilผู้โจมตีสร้าง identity จำนวนมากเพื่อเพิ่มอิทธิพลต้นทุนการสร้างตัวตน, admission control, social trust หรือ stake
Eclipseล้อม routing table ของเหยื่อให้เห็นแต่ node ผู้โจมตีเลือก peer หลากหลาย, จำกัดต่อ subnet และตรวจเส้นทาง
Poisoningส่งข้อมูลผิดหรือ index ปลอมcontent hash, signature, reputation และหลายแหล่งอิสระ
Free ridingดาวน์โหลดแต่ไม่ยอมแบ่งปันtit-for-tat, quota หรือ incentive

ระบบเปิดต้องคิด identity และแรงจูงใจพร้อม routing algorithm เพราะ algorithm ที่ถูกต้องภายใต้ node ซื่อสัตย์อาจถูกบิดได้เมื่อผู้เข้าร่วมเลือก ID หรือส่งข้อมูลเท็จอย่างจงใจ

16Mobile Computing: การเคลื่อนที่เปลี่ยนสมมติฐาน

อุปกรณ์เคลื่อนที่ไม่ได้เป็น server ขนาดเล็ก มันเปลี่ยนเครือข่าย สลับ Wi-Fi กับ cellular เข้าสู่ sleep mode และมีพลังงานจำกัด Connection ที่ผูกกับ IP/port จึงขาดได้แม้ผู้ใช้ยังอยู่ใน session เดิม ระบบควรแยก identity ของงานออกจาก connection ชั่วคราวและรองรับ resume

17Offline-First และการประสานข้อมูลภายหลัง

Offline-first ไม่ใช่เพียงเปิด cache ให้หน้าเก่ายังอ่านได้ แต่ให้ผู้ใช้สร้างการเปลี่ยนแปลงระหว่างออฟไลน์แล้วนำไป reconcile เมื่อกลับมาออนไลน์ จึงต้องเก็บ operation log, stable local ID และสถานะ sync ที่ผู้ใช้เข้าใจได้

Command queue

บันทึกเจตนา เช่น “เพิ่มรายการ X” แล้วส่งซ้ำเมื่อออนไลน์ เหมาะกับ operation ที่ทำ idempotent ได้ ต้องแสดงสถานะ pending/failed และไม่ลบทิ้งก่อน server ยืนยัน

State synchronization

เทียบ local state กับ remote state แล้วรวม version เหมาะกับเอกสารหรือข้อมูลที่แก้หลายช่อง ต้องมี version vector, merge rule หรือให้ผู้ใช้ช่วยเมื่อ conflict มีความหมาย

Last-write-wins อาจลบงานของผู้ใช้
โทรศัพท์ที่ออฟไลน์หลายชั่วโมงอาจ sync ด้วย timestamp ใหม่กว่าและเขียนทับงานบน server ทั้งที่ข้อมูลของมันเก่ากว่าในเชิงสาเหตุ เวลาแก้ conflict ต้องมอง causal history ไม่ใช่นาฬิกาเพียงอย่างเดียว

18Ubiquitous Computing และ Context Awareness

Ubiquitous computing ตั้งเป้าให้การประมวลผลกลมกลืนกับกิจกรรม ผู้ใช้ไม่ได้เปิด “โปรแกรมห้องประชุม” แต่ไฟ อุณหภูมิ และจอปรับตามสถานการณ์ ปัญหาคือ context ไม่ใช่ความจริงที่สมบูรณ์ Sensor มี noise, ตำแหน่งคลาดเคลื่อน และกิจกรรมมนุษย์ตีความได้หลายแบบ

  1. Sensing รับสัญญาณจาก sensor หลายชนิด
  2. Inference รวมข้อมูลเพื่อคาดบริบท เช่น มีคนอยู่ในห้อง
  3. Policy ตัดสินว่า context แบบใดอนุญาต action ใด
  4. Actuation สั่งอุปกรณ์และเฝ้าดูผลย้อนกลับ

ระบบต้องสื่อสารความไม่แน่นอน เช่น confidence score และควรมีทางให้มนุษย์ override เพราะ automation ที่แน่ใจผิดอาจน่ารำคาญหรืออันตรายกว่าระบบที่ไม่ทำอะไรเลย

19Privacy: Context ที่สะดวกก็คือข้อมูลเฝ้าติดตาม

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

20Edge Computing: ใกล้ขึ้นไม่ได้แปลว่าง่ายขึ้น

Edge ย้าย compute ใกล้แหล่งข้อมูลเพื่อลด latency ลด bandwidth ขึ้น cloud และทำงานต่อเมื่อ uplink ขาด แต่ edge node มีจำนวนมาก กระจายตามพื้นที่ และดูแลยากกว่า data center การ deploy, observability, security patch และ data governance จึงซับซ้อนขึ้น

งานเหมาะประมวลผลที่ใดเหตุผล
หยุดเครื่องจักรเมื่อพบอันตรายDevice/edgeรอ cloud ไม่ได้และต้องทำงานเมื่อ link ขาด
รวมแนวโน้มหลายโรงงานCloudต้องเห็นข้อมูลข้ามพื้นที่และใช้ compute มาก
กรองวิดีโอเบื้องต้นEdgeลดข้อมูลดิบที่ต้องส่งและปกป้อง privacy
ฝึกโมเดลขนาดใหญ่Cloud/clusterต้องใช้ accelerator และข้อมูลรวมจำนวนมาก

สถาปัตยกรรมที่ดีมักเป็น continuum ไม่ใช่เลือก edge หรือ cloud ข้างเดียว งานเร่งด่วนอยู่ใกล้ sensor ส่วนงานรวมภาพใหญ่และจัดการระยะยาวอยู่ส่วนกลาง

21IoT Messaging และ Digital Twin

อุปกรณ์ IoT มักส่ง telemetry ผ่าน broker เพื่อแยกผู้ส่งจากผู้รับ QoS ของ messaging ไม่ได้ทำให้ business action exactly-once โดยอัตโนมัติ เพราะ device อาจ retry และ consumer อาจประมวลผลก่อน crash จึงต้องมี sequence number, deduplication และ device identity

Digital twin คือแบบจำลองสถานะของสิ่งจริงในระบบดิจิทัล แต่ค่าบนหน้าจอเป็นเพียงสิ่งที่ระบบ “เชื่อ” จาก message ล่าสุด ไม่ใช่สิ่งจริงเสมอ ต้องแสดง timestamp, freshness และสถานะ connection มิฉะนั้น operator อาจตัดสินใจจาก sensor ที่หยุดส่งมาหลายชั่วโมง

22กรณีศึกษา: แอปภาคสนามที่ออฟไลน์ได้

  1. เจ้าหน้าที่สร้างแบบสำรวจพร้อม local UUID โดยไม่รอ server
  2. รูปและข้อมูลเก็บเข้ารหัสในเครื่อง พร้อม operation log
  3. เมื่อมีเครือข่าย client ส่งแบบ resumable และใช้ idempotency key
  4. Server ตอบ version ใหม่ Client จึงทำเครื่องหมายว่า synced
  5. ถ้ามีการแก้รายการเดียวกันสองที่ ระบบ merge ช่องที่อิสระและให้คนเลือกเฉพาะ conflict ที่ตัดสินอัตโนมัติไม่ได้
  6. UI แสดง pending, synced, conflict และ failed แยกกัน ไม่ใช้คำว่า “บันทึกแล้ว” แบบกำกวม
แก่นของโจทย์
เครือข่ายที่ขาดไม่ควรทำให้งานภาคสนามหาย แต่การซ่อนว่าข้อมูลยังไม่ถึง server ก็อันตรายเช่นกัน Transparency ที่ดีจึงไม่ใช่ซ่อนความจริงทั้งหมด แต่ซ่อนรายละเอียดที่ไม่จำเป็นพร้อมเปิดสถานะที่มีผลต่อการตัดสินใจ

23แล็บและแบบฝึกที่แนะนำ

24คำถามตรวจงานออกแบบ

25จากวิชาสู่ระบบจริง

เมื่อนำ P2P, edge หรือ offline-first ไปใช้จริง ควรเริ่มจาก failure diary: จดว่า node เข้าออกเมื่อใด ข้อมูลรุ่นใดอยู่ที่ใคร และผู้ใช้เห็นสถานะอะไรในแต่ละช่วง แล้วค่อยพิจารณา algorithm เพราะประโยคว่า “ระบบ sync เอง” มักซ่อนคำถามสำคัญที่สุดไว้ทั้งหมด ทั้งเวลาในการลู่เข้า conflict ที่แก้ไม่ได้ ค่า relay และข้อมูลส่วนตัวที่ถูกเก็บระหว่างทาง

26สรุปและขั้นตอนถัดไป

P2P กระจายทั้งทรัพยากรและความรับผิดชอบออกจากศูนย์กลาง แต่ต้องแลกกับ membership ที่ไม่นิ่ง การค้นหา การซ่อมสำเนา NAT และผู้เข้าร่วมที่อาจไม่ร่วมมือ ส่วน mobile และ ubiquitous computing ทำให้ความไม่แน่นอนเข้ามาใกล้ผู้ใช้มากขึ้น ทั้งเครือข่ายขาด แบตเตอรี่จำกัด sensor คลาดเคลื่อน และ privacy

บทนี้เป็นปลายทางของรายวิชา แต่ไม่ใช่ปลายทางของเนื้อหา ขั้นตอนถัดไปที่เหมาะคือทดลองสร้างระบบขนาดเล็กแล้วฉีด failure จริง จากนั้นนำกรอบจาก DS 1–11 กลับมาถามว่า สมมติฐานใดพัง ระบบรักษาสัญญาอะไรไว้ได้ และ trade-off ที่เราเลือกยังสมเหตุสมผลหรือไม่ครับ

คำถามทบทวน
  1. เปรียบเทียบวิธีค้นหาไฟล์ของ Napster และ Gnutella พร้อมอธิบายจุดอ่อนของแต่ละแบบ
  2. อธิบายว่า Chord DHT ใช้ finger table เพื่อลดจำนวน hop ในการค้นหาจาก O(N) เหลือ O(log N) ได้อย่างไร
  3. อธิบายความเชื่อมโยงระหว่าง Consistent Hashing ใน Chord กับการกระจายข้อมูลใน Cassandra/DynamoDB ที่กล่าวถึงในบทที่ 9
  4. อธิบายว่าทำไม disconnected operation จึงจำเป็นสำหรับ mobile computing และยกตัวอย่างแอปพลิเคชันที่ใช้แนวคิดนี้
  5. อธิบายว่า Edge Computing สืบทอดปรัชญาของ Ubiquitous Computing อย่างไร และต่างจาก Cloud Computing (บทที่ 1) ในแง่เป้าหมายหลักอย่างไร