อ่านประมาณ 9 นาที
ระดับเริ่มต้น
หมวด: เว็บ
อ้างอิง: ทีมงาน Smart Cyber Tech — เรียบเรียงจากการออกแบบ API ให้แอปและระบบลูกค้า
REST และ GraphQL เป็นสองวิธีหลักในการออกแบบ API ที่ให้แอปมือถือและเว็บดึงข้อมูลจากระบบหลังบ้าน คำตอบสั้นคือ ธุรกิจส่วนใหญ่เริ่มที่ REST ได้ เพราะเรียบง่าย ใช้แคชได้ทันที และหาทีมดูแลง่าย ส่วน GraphQL คุ้มเมื่อหน้าจอเดียวต้องรวมข้อมูลจากหลายแหล่ง และมีแอปหลายแบบที่ต้องการข้อมูลไม่เท่ากัน บทความนี้เทียบทั้งสองแบบใน 6 เรื่องที่มีผลกับผู้จ้างจริง พร้อมคำถามที่ควรถามทีมพัฒนาก่อนตัดสินใจ
REST และ GraphQL ต่างกันอย่างไร อธิบายแบบไม่ต้องเขียนโปรแกรม
ลองนึกถึงร้านอาหารสองแบบ REST เหมือนร้านที่มีเมนูชุดตายตัว อยากได้ข้อมูลสินค้าก็สั่งชุดสินค้า อยากได้รีวิวก็สั่งชุดรีวิวแยก แต่ละชุดมีที่อยู่ของตัวเอง เช่น /products/25 และ /products/25/reviews ได้ของครบตามชุดแม้บางอย่างไม่ได้ใช้ ส่วน GraphQL เหมือนร้านที่ให้เขียนรายการเองในใบเดียว บอกว่าต้องการชื่อสินค้า ราคา และรีวิวสามรายการล่าสุด แล้วได้กลับมาเฉพาะที่ขอในครั้งเดียว ทั้งสองแบบส่งข้อมูลผ่านอินเทอร์เน็ตเหมือนกัน ต่างกันที่ใครเป็นคนกำหนดว่าข้อมูลหนึ่งชุดมีอะไรบ้าง
เทียบ 6 เรื่องที่มีผลกับผู้จ้าง
REST กับ GraphQL ในเรื่องที่มีผลต่อเวลา ค่าใช้จ่าย และการดูแลระยะยาว เรื่อง REST GraphQL 1. ความเร็วในการเริ่มต้น เร็ว เครื่องมือและตัวอย่างมีมาก ต้องออกแบบ schema กลางก่อน ใช้เวลาตั้งต้นมากกว่า 2. จำนวนครั้งที่แอปต้องเรียก หน้าจอซับซ้อนอาจต้องเรียกหลายครั้ง มักได้ข้อมูลทั้งหน้าจอในครั้งเดียว 3. ปริมาณข้อมูลที่ส่ง ได้ทั้งชุดแม้ใช้ไม่หมด ได้เฉพาะฟิลด์ที่ขอ เหมาะกับเน็ตมือถือ 4. แคชและความเร็วฝั่งเซิร์ฟเวอร์ ใช้แคชของ HTTP และ CDN ได้ทันที ต้องวางระบบแคชเพิ่มเอง 5. ความปลอดภัยและการคุมโหลด คุมทีละที่อยู่ ตรวจและจำกัดง่าย ต้องจำกัดความลึกและความซับซ้อนของคำขอ กันคำขอหนักเกิน 6. การหาคนดูแลต่อ นักพัฒนาส่วนใหญ่ใช้เป็น ต้องมีคนที่เข้าใจ schema และเครื่องมือเฉพาะ
ตารางนี้ไม่ได้บอกว่าแบบไหนดีกว่า แต่บอกว่าแต่ละแบบย้ายต้นทุนไปไว้ที่ไหน REST จ่ายเพิ่มที่ฝั่งแอปซึ่งต้องเรียกหลายครั้ง GraphQL จ่ายเพิ่มที่ฝั่งเซิร์ฟเวอร์ซึ่งต้องคุมคำขอและแคชให้ดี การเลือกจึงขึ้นกับว่าความยุ่งยากฝั่งไหนรับได้มากกว่าสำหรับระบบของเรา
เมื่อไรควรเลือก REST
ระบบมีผู้ใช้ข้อมูลไม่กี่แบบ เช่น เว็บหนึ่งตัวกับแอปหนึ่งตัวที่ต้องการข้อมูลคล้ายกันต้องเปิดให้พาร์ทเนอร์ภายนอกเชื่อม เพราะคนภายนอกคุ้นกับ REST และอ่านเอกสารเข้าใจง่ายข้อมูลอ่านบ่อยและเหมือนกันทุกคน เช่น แคตตาล็อกสินค้าหรือบทความ ซึ่งได้ประโยชน์จากแคชของ CDN เต็มที่ทีมดูแลมีขนาดเล็ก และต้องการระบบที่ตรวจปัญหาได้ตรงไปตรงมา
ถ้าเลือก REST แล้ว สิ่งที่ทำให้ใช้งานได้ยาวคือการตั้งชื่อที่อยู่ให้สม่ำเสมอ มีหมายเลขเวอร์ชัน และตอบรหัสสถานะให้ถูกต้อง รายละเอียดเชิงเทคนิคอ่านต่อได้ที่<a href="article-rest-api-design">ออกแบบ REST API ให้มืออาชีพตามแนวทาง</a>
เมื่อไรควรเลือก GraphQL
หน้าจอเดียวรวมข้อมูลจากหลายระบบ เช่น หน้าบัญชีลูกค้าที่ต้องดึงออเดอร์ แต้มสะสม และคูปองพร้อมกันมีแอปหลายแบบที่ต้องการข้อมูลไม่เท่ากัน เช่น แอปมือถือต้องการข้อมูลน้อย จอหลังบ้านต้องการครบหน้าจอเปลี่ยนบ่อย ทีมฝั่งแอปปรับข้อมูลที่ดึงได้เองโดยไม่ต้องรอแก้ API ทุกครั้งผู้ใช้ส่วนใหญ่อยู่บนเน็ตมือถือ การลดจำนวนครั้งที่เรียกและขนาดข้อมูลมีผลกับความเร็วที่รู้สึกได้
ใช้ทั้งสองแบบพร้อมกันได้ไหม
ได้ และเป็นทางที่พบบ่อยในระบบที่โตขึ้น ระบบย่อยแต่ละตัวยังสื่อสารกันด้วย REST ตามเดิม แล้ววาง GraphQL เป็นชั้นกลางสำหรับแอปและเว็บ ที่รวมข้อมูลจากหลายระบบให้ในครั้งเดียว อีกทางคือเปิด REST ให้พาร์ทเนอร์ภายนอก และใช้ GraphQL เฉพาะแอปของบริษัทเอง สิ่งที่ไม่ควรทำคือเปลี่ยนทั้งระบบจาก REST เป็น GraphQL ในคราวเดียวเพียงเพราะเป็นของใหม่ ควรเริ่มจากหน้าจอที่ติดปัญหาเรียกข้อมูลหลายครั้งที่สุดก่อน
คำถามที่ควรถามทีมพัฒนาก่อนตัดสินใจ
หน้าจอที่สำคัญที่สุดของเราต้องเรียก API กี่ครั้งต่อการเปิดหนึ่งครั้ง จะเปิด API ให้คนภายนอกหรือพาร์ทเนอร์ใช้ด้วยหรือไม่ ข้อมูลส่วนไหนแคชได้ และจะแคชที่ไหน จะกันคำขอที่หนักเกินหรือถี่เกินอย่างไร เอกสาร API จะอยู่ที่ไหน และใครอัปเดตเมื่อระบบเปลี่ยน ถ้าเปลี่ยนทีมดูแลในอนาคต จะหาคนที่ใช้เทคโนโลยีนี้เป็นได้ง่ายแค่ไหน
คำถามที่พบบ่อย
GraphQL เร็วกว่า REST เสมอไหม ไม่เสมอไป GraphQL ลดจำนวนครั้งที่แอปเรียกและขนาดข้อมูล แต่ถ้าออกแบบฝั่งเซิร์ฟเวอร์ไม่ดี คำขอหนึ่งครั้งอาจไปดึงฐานข้อมูลหลายร้อยครั้ง ส่วน REST ที่ใช้แคชของ CDN ดีอาจตอบเร็วกว่ามากสำหรับข้อมูลที่ทุกคนเห็นเหมือนกัน
ระบบเดิมเป็น REST อยู่แล้ว ต้องเปลี่ยนไหม ไม่จำเป็น ถ้าแอปยังเร็วพอและทีมดูแลได้ ให้แก้เฉพาะจุดที่มีปัญหา เช่น เพิ่มที่อยู่ใหม่ที่รวมข้อมูลของหน้าจอนั้นให้ในครั้งเดียว หรือวาง GraphQL เฉพาะส่วน
เชื่อม LINE OA หรือโปรแกรมบัญชีต้องใช้แบบไหน บริการภายนอกเหล่านี้กำหนดรูปแบบมาแล้ว ส่วนใหญ่เป็น REST เราเลือกไม่ได้ สิ่งที่เลือกได้คือ API ของระบบเราเองที่ให้แอปและเว็บเรียก
ถ้ายังไม่แน่ใจว่าธุรกิจควรเริ่มลงทุนเรื่อง API เมื่อไร อ่านAPI คืออะไร ธุรกิจต้องมีเมื่อไร และเชื่อมระบบหลังบ้านกับ LINE OA และโปรแกรมบัญชีผ่าน API ประกอบได้ ทีมงาน Smart Cyber Tech ทำ API ให้แอปมือถือและเว็บ ทั้งแบบ REST และ GraphQL ตั้งแต่ออกแบบโครงข้อมูล การคุมโหลด แคช จนถึงเอกสารสำหรับทีมที่ดูแลต่อ ส่งรายละเอียดระบบที่มีอยู่มาได้ที่ แบบฟอร์มติดต่อ
สรุปสาระสำคัญ REST และ GraphQL ต่างกันอย่างไร อธิบายแบบไม่ต้องเขียนโปรแกรม เทียบ 6 เรื่องที่มีผลกับผู้จ้าง เมื่อไรควรเลือก REST
เกี่ยวกับบทความ เขียนโดยทีมงาน Smart Cyber Tech — เรียบเรียงจากการออกแบบ API ให้แอปและระบบลูกค้า ·
ดูบริการที่เกี่ยวข้อง ภาพปกจัดทำโดยทีมงาน Smart Cyber Tech
มีคำถามเพิ่มเติมเกี่ยวกับบทความนี้? เขียนหาเราได้ที่
info@smart-cyber-tech.com
บริการที่เกี่ยวข้องจากทีมงาน Smart Cyber Tech
แบ่งปันบทความนี้:
LINE
Facebook
X
คัดลอกลิงก์
ปรึกษาทีมของเรา