API คืออะไร และกำลังเปลี่ยนแปลงโลกของการพัฒนาซอฟต์แวร์อย่างไร
19 ต.ค. 2564 22:54 น.API ย่อมาจาก Application Programming Interface เป็นซอฟต์แวร์ที่ทำให้ระบบซอฟต์แวร์ต่าง ๆ เชื่อมต่อ และคุยกันได้ API แต่ละตัวจะกำหนด specification ของตนซึ่งเมื่อซอฟต์แวร์อื่นเรียกขอบริการจาก API นั้น ตามข้อกำหนดนี้ ก็จะได้รับผลการบริการตามที่กำหนดและตกลงกันไว้ โดยผู้เรียกใช้ไม่จำเป็นต้องรู้วิธีการ implement หรือรายละเอียดอื่นใดภายในโปรแกรมซอฟต์แวร์นั้น
แม้โดยคำจำกัดความ API ไม่จำเป็นต้องเป็นการเชื่อมต่อผ่านอินเตอร์เน็ตเท่านั้น (สามารถเรียกใช้ API กันได้ แม้ซอฟต์แวร์แต่ละตัวอยู่บนเครื่องเดียวกัน) แต่สิ่งที่ทำให้ API มีผลกระทบอย่างมากกับการพัฒนาซอฟต์แวร์ในปัจจุบันก็เพราะมันทำให้ซอฟต์แวร์ที่เขียนต่างภาษากัน ระบบปฏิบัติการต่างกัน อยู่คนละมุมของโลก สามารถเรียกใช้งานกันได้ นั่นแปลว่า ซอฟต์แวร์ที่สร้างโดยองค์กร A สามารถเรียกใช้ซอฟต์แวร์ที่สร้างโดยองค์กร B ซึ่งอาจมีความเชี่ยวชาญและทำผลิตภัณฑ์ที่ต่างกัน แต่อาจเสริมกันได้เป็นอย่างดี สร้างประโยชน์ให้กับผู้ใช้อย่างมาก ด้วยลักษณะที่เป็น modular (การแยกเป็นส่วน ๆ ) โปรแกรมเมอร์สามารถสร้างแอปพลิเคชันที่มี functionality มากมายได้ด้วยการเรียกใช้ API ของแต่ละบริการซอฟต์แวร์เฉพาะทางจากหลายที่ เสมือนการต่อชิ้นส่วนเลโก้ ทำให้ได้แอปพลิเคชันสุดท้ายที่มีความสามารถสูงโดยที่โปรแกรมเมอร์นั้นไม่จำเป็นต้องรู้สิ่งที่เกิดขึ้นภายในของซอฟต์แวร์ที่เรียกผ่าน API ต่าง ๆ เลย
ตัวอย่าง API ในชีวิตประจำวัน
ภาพประกอบ : Canva
Twitter มี API ที่ช่วยให้นักพัฒนาสามารถเข้าถึงข้อมูลหลักของ Twitter และ Search API ไว้ให้นักพัฒนาใช้ในการโต้ตอบกับ Twitter Search และข้อมูลแนวโน้มต่าง ๆ ได้ ทุกครั้งที่เราใช้ Facebook ก็จะมีการเรียกใช้งานผ่าน API เพื่อนำผลมาแสดง การใช้งานค้นหาและจองตั๋วเครื่องบิน API ก็รับข้อมูลที่เรากรอกไป เพื่อส่งผ่านไปยัง engine ที่ทำการค้นหาไฟลต์ และส่งผลกลับมาให้เราดู แพลตฟอร์มอย่าง Zapier สามารถสร้าง automation ให้งานต่าง ๆ ระหว่างแอปพลิเคชันได้ด้วยการสื่อสารจากแอปพลิเคชันหนึ่งไปยังอีกอันหนึ่ง เช่น เมื่อมีอีเมล์เข้ามาทาง Gmail ให้ส่ง attachement ไปเก็บใน Google Drive และส่ง notification ไปยัง Slack ทั้งหลายเหล่านี้ล้วนแต่ต้องใช้ API ทั้งสิ้น
ชนิดของ API
เราสามารถแบ่งชนิดของ API ได้ต่าง ๆ กัน ดังนี้
1.ตามลักษณะการเข้าถึง
1.1) Private : เป็น API ที่ใช้เรียกภายในองค์กรหรือระบบซอฟต์แวร์เดียวกัน
1.2) Partner : เป็น API ที่ไว้ให้ partner รายใดรายหนึ่งเรียกใช้ ซึ่งอาจมีการ customize ตามที่ต้องการ และข้อตกลงทางธุรกิจโดยเฉพาะ
1.3) Public : เป็น API ที่เปิดให้ใครก็ได้เรียกใช้ด้วยมาตรฐานเดียวกัน
2.ตามลักษณะการทำงาน
2.1) Synchronous : เมื่อมีการเรียก API นี้ โปรแกรมจะหยุดเพื่อรอคำตอบจาก API จึงจะทำงานต่อได้
2.2) Asynchronous : ตรงข้ามกับ synchronous โปรแกรมไม่หยุดทำงานเพื่อรอคำตอบจาก API แต่จะใช้การ callback เมื่อได้รับการเรียกกลับมาจาก API
ทั้งนี้ API แต่ละลักษณะมีข้อดีข้อเสียต่างกัน ที่เราควรจะเลือกให้เหมาะสมตามการใช้งาน
API ที่ดีเป็นอย่างไร
ภาพประกอบ : Canva
- API ที่ดีควรยึดตาม standard ที่เป็นที่รู้จักเพราะจะทำให้ง่ายต่อความเข้าใจและการนำไปใช้โดยนักพัฒนาอื่น ซึ่งปัจจุบันเรามักจะใช้ http protocol ซึ่งเป็น standard ของ internet และ REST API ซึ่งเป็น standard สำหรับการทำ API ส่วนข้อมูลที่ส่งกลับมาก็มักจะอยู่ในรูปแบบที่เป็นสแตนดาร์ด เช่น JSON format
- การพัฒนา API ควรทำเช่นเดียวกับการพัฒนาซอฟต์แวร์ทั่วไป ไม่ว่าจะเป็นเรื่องการออกแบบ การทำเทสต์ การจัดการเวอร์ชัน รวมถึงการทำเอกสารประกอบ (documentation) ซึ่งสำคัญต่อการนำไปใช้โดยผู้อื่น
- ต้องมีการ maintain และ support เวอร์ชันเก่าที่นักพัฒนาอื่นอาจยังใช้อยู่ และให้เวลาในการเปลี่ยนไปใช้เวอร์ชันที่ใหม่กว่า หรือมี backward compatibility
- มีการรักษาความปลอดภัย ผ่านการใช้รหัสในการเรียกใช้บริการแต่ละครั้ง ซึ่งจะทำให้ข้อมูลภายในปลอดภัยและป้องกันการถูกโจมตีที่อาจทำให้บริการล่มใช้ไม่ได้
- มี Service Level Agreement (SLA) ที่เป็นที่ยอมรับได้ เช่น เวลาการให้บริการ 24/7 และอัตราการให้บริการได้ที่สูงกว่า 99% จากเวลาทั้งหมด เป็นต้น
สรุป
ในโลกปัจจุบัน เราจะเห็นได้ว่าผู้พัฒนาซอฟต์แวร์ที่เป็นแพลตฟอร์มมักจะสร้าง API เพื่อเพิ่มมูลค่าของแพลตฟอร์มให้มากยิ่งขึ้นไปอีกจากการที่ 3rd party developer สามารถสร้างแอปพลิเคชันเสริม และ feature ใหม่ ๆ เพิ่มเติมจากที่มีอยู่ นอกจากนี้ ด้วยแนวโน้มของ no-code/low-code ที่ทำให้การพัฒนาโปรแกรมซอฟต์แวร์ง่ายดายมากขึ้น จากการที่มีชิ้นส่วนของซอฟต์แวร์ที่ทำหน้าที่ต่าง ๆ มาเชื่อมต่อกันผ่าน API ตอบโจทย์การพัฒนาซอฟต์แวร์ที่รวดเร็ว ง่ายดาย และค่าใช้จ่ายต่ำ แนวโน้มทางด้าน Hyperconnectivity ซึ่งหมายถึงการรับส่งข้อมูลจากหลายช่องทาง ทำให้การสื่อสารที่ไร้รอยต่อระหว่างระบบ และอุปกรณ์ต่าง ๆ ยิ่งมีความจำเป็นมากขึ้น อินเตอร์เน็ตและ API ทำให้ภาพนี้เป็นจริงขึ้นได้แล้ว และนั่นเป็นเหตุผลว่าทำไม API จึงเป็นส่วนสำคัญที่กำลังเปลี่ยนแปลงโลกของซอฟต์แวร์อยู่เบื้องหลังอย่างเงียบ ๆ