สวัสดีครับคุณผู้อ่านทุกท่าน วันนี้ผมจะมาพูดถึง Application Program Interface หรือที่เราเรียกกันสั้น ๆ ว่า API ว่าคืออะไร ใช้งานอย่างไร ด้านไหน รวมถึงมีประโยชน์อย่างไรบ้างครับ…
Application Program Interface (API) คือกลไกที่ช่วยให้ส่วนประกอบโปรแกรมหรือซอฟต์แวร์สองส่วนสามารถสื่อสารกันได้ โดยประกอบไปด้วยชุดคำสั่งหรือที่เราเรียกสั้น ๆ ว่าโค้ด (Code) ซึ่งชุดโค้ด API นี้ถูกสร้างขึ้นเพื่ออนุญาตให้ซอฟต์แวร์สามารถสื่อสารระหว่างกันได้ ถึงแม้ว่าซอฟต์แวร์ที่พัฒนาขึ้นมานั้นจะมีความแตกต่างกันในด้านภาษาที่ใช้พัฒนา เจ้า API นี้ก็ยังเป็นตัวกลางคอยช่วยให้ซอฟต์แวร์สามารถสื่อสารกันได้โดยการใช้งาน Function ผ่านการเรียกใช้ Document ที่เขียนไว้
การใช้งาน API
เรามาดูตัวอย่างการนำ API ไปใช้งานในด้านต่าง ๆ ดังนี้
- Libraries and Frameworks
การนำ API ไปใช้เป็น Software Library ซึ่งเขียนขึ้นเป็น Document ที่จะเรียกใช้งาน ในรูปแบบภาษาที่ต่างกันออกไปตามความเหมาะสมของงาน เพื่อนำไปทำเป็น Framework ให้กับระบบไว้ใช้ในการสื่อสารระหว่างกัน - Operating Systems
API ที่ใช้งานในการสื่อสารระหว่าง Application และ Operating System (OS) เช่น Portable Operating System Interface (POSIX) เป็นมาตราฐานการสื่อสารที่ถูกกำหนดโดย IEEE Computer Society ทำให้ซอฟต์แวร์ที่ผู้พัฒนาสร้างขึ้นมานั้นสามารถย้ายไปใช้งานกับระบบปฏิบัติการอื่น ๆ ที่รองรับ POSIX หรือเราจะเรียกการพัฒนาโปรแกรมแบบนี้ว่า การพัฒนาแบบ Cross-Platform นั่นเอง - Remote API
Remote API คือ API ที่ช่วยให้นักพัฒนาสามารถจัดการทรัพยากรจากระยะไกลผ่านโปรโตคอล ซึ่งเป็นมาตรฐานเฉพาะสำหรับการสื่อสารที่ช่วยให้เทคโนโลยีต่าง ๆ ทำงานร่วมกันได้ โดยไม่คำนึงถึงภาษาที่ใช้พัฒนาหรือแพลตฟอร์ม ตัวอย่างเช่น Java Database Connectivity API ที่ช่วยให้นักพัฒนาสามารถสืบค้นฐานข้อมูลหลายประเภทด้วย Function เดียวกัน จึงถูกใช้บ่อยในงาน maintenance เพื่อดึงข้อมูลจาก Server กลับมาใช้ทำงาน - Web API
Web API นิยมใช้กันมากในปัจจุบันเพราะการเชื่อมต่อ API ทำได้ง่ายและหลากหลาย ซึ่งหลายธุรกิจต่างก็ใช้ Website เป็นแพลตฟอร์มหลักอยู่แล้วนั่นเอง โดยเจ้า Web API นั้นทำงานผ่าน HTTP Protocol โดยรูปแบบการสื่อสารผ่าน XML และ JSON ซึ่งใช้มาตรฐาน API เช่น SOAP หรือ REST ในการพัฒนา
- SOAP (Simple Object Access Protocol) ใช้ XML Format ส่งข้อมูลผ่าน HTTP Request และ รับข้อมูลเป็น XML Format
- REST (Representational State Transfer) ใช้ JSON Format ส่งข้อมูลผ่าน URL และ รับข้อมูลเป็น JSON Format
ผมจะลองยกตัวอย่างการนำ API ไปใช้ในกรณีที่เป็น Web API โดยออกแบบโครงสร้าง Web Application Infrastructure เป็นแบบ One Server และ Many Servers — Many Databases ดังนี้
จากภาพที่ 1 จะเห็นได้ว่าการเชื่อมต่อระหว่าง Client กับ Server เป็นแบบ One Server กล่าวคือ Client ทั้งหมดเชื่อมต่อไปที่เซิร์ฟเวอร์หมายเลข 1 เครื่องเดียว โดยภายในอาจจะมีการเชื่อมต่อ Web Application และ Database ที่หลากหลายผ่าน API หรือผ่านการเชื่อมต่อแบบอื่นได้ ทำให้มีทั้งผลดีและผลเสียไปพร้อม ๆ กัน
ผลดีของการออกแบบ One Server คือมีความสะดวกในการพัฒนา ลดค่าอุปกรณ์และซอฟต์แวร์ต่าง ๆ เป็นต้น ส่วนผลเสียคือ ความเสี่ยงจะมีสูงมากหาก Web Application ใด ๆ ที่โฮสต์บนเซิร์ฟเวอร์นี้ถูกบุกรุกหรือหาก Web Application ใด ๆ ที่โฮสต์อยู่มีช่องโหว่ ข้อมูลของ Web Server ทั้งหมดจะตกอยู่ภายใต้ความเสี่ยง เหมือนเรานำไข่ทั้งหมดไปไว้ในตะกร้าใบเดียว นอกจากนี้หาก Web Server หยุดทำงานด้วยเหตุผลใดก็ตาม Web Application ที่โฮสต์อยู่ทั้งหมดก็จะไม่สามารถเข้าถึงได้จนกว่าปัญหาจะได้รับการแก้ไข
จากนั้นเรามาดูตัวอย่างการออกแบบ Web Application Infrastructure ถัดไปที่จะทำให้เราเห็นภาพมากยิ่งขึ้นว่าการนำ API มาใช้งานจะมีส่วนช่วยผู้พัฒนาได้อย่างไรบ้าง
จากภาพที่ 2 การออกแบบ Web Application Infrastructure เป็นแบบ Many Servers — Many Databases การออกแบบนี้ออกแบบมาเพื่อการใช้งานที่หลากหลาย เช่น ต้องการมีฐานข้อมูลสำรองหรือการทำ Load Balancers เป็นต้น และการทำเช่นนี้จะมีความยากให้การติดตั้งมากกว่าแบบแรกและค่าใช้จ่ายในด้านอื่น ๆ จะเพิ่มขึ้นเป็นอย่างมาก จากภาพ Server 1, Server 2, Server 3 หากมีการเขียนโค้ด API ไว้เชื่อมต่อกันแล้ว Server 1, Server 2, Server 3 ไม่จำเป็นต้องใช้ภาษาในการพัฒนาซอฟต์แวร์ภาษาเดียวกันก็ได้ Server 1 อาจใช้ภาษา Java ในการพัฒนา Server 2 อาจใช้ภาษา C# ในการพัฒนา Server 3 อาจใช้ภาษา PHP ในการพัฒนาและในส่วนที่เป็น Database ก็เช่นเดียวกันไม่จำเป็นต้องใช้ Database ชนิดเดียวกัน ซึ่งทั้งหมดสามารถเชื่อมต่อและสื่อสารกันได้ผ่าน Web API
ประโยชน์ของ Web API
- การพัฒนา Web Application หรือ Application จะพัฒนาได้ง่ายและรวดเร็ว ซึ่ง API จะช่วยให้นักพัฒนาไม่ต้องเข้าไปแก้ไข Function ที่ทำงานแต่สามารถเรียก Function ผ่าน Document ที่พัฒนาขึ้นมาได้
- การพัฒนา Web Application การต่อยอด การเปลี่ยนแปลงแก้ไขทำได้หลากหลายและสะดวกยิ่งขึ้น
- ผู้ใช้งาน Web Application ต่าง ๆ มีความสะดวกในการเข้าถึงข้อมูลของอีก Web Application ที่ใช้ตัวกลางเป็น Web API ตามที่ตกลงกันไว้ ทำให้ไม่จำเป็นต้องเข้า Web Application ที่ไม่ใช้เป้าหมายเพื่อดูข้อมูล การรับรู้ข่าวสารต่าง ๆ ก็จะทั่วถึงกันและสะดวกในการใช้งานของผู้ใช้
- ปัจจุบันเว็บไซต์ใหญ่ ๆ หลายเว็บไซต์มีการเปิดให้ใช้งาน API ของตน ซึ่งทำให้ผู้พัฒนาสามารถเรียกใช้งาน Function ได้โดยง่าย เช่น Google Maps API, YouTube APIs, Twitter APIs และ Amazon Product Advertising API เป็นต้น
จากบทความข้างต้นทำให้เราพอจะทราบถึงความหมาย การนำไปใช้งานและประโยชน์ของเจ้า API บ้างแล้ว ซึ่ง API ที่ดีควรยึดหลักมาตราฐานที่เป็นที่รู้จัก เพราะจะทำให้ง่ายต่อความเข้าใจและการนำไปใช้งานโดยนักพัฒนาท่านอื่น ๆ
การพัฒนา API ควรคำนึงถึงเรื่องการออกแบบ การทำการทดสอบ การอัปเดตเวอร์ชั่น การซัพพอร์ต ความปลอดภัย ความต่อเนื่องในการให้บริการ รวมถึงการทำ Document ประกอบการนำไปใช้งานหรือเรียกใช้งาน เช่นเดียวกับการพัฒนาซอฟต์แวร์ โดยผู้พัฒนาสามารถหาความรู้เพิ่มเติมในด้านความปลอดภัยของการพัฒนา API จาก OWASP API Top 10 ซึ่ง OWASP เอง เป็นองค์กรที่ได้รับความน่าเชื่อถือและเป็นองค์กรไม่แสวงหาผลกำไรที่เน้นให้ความรู้ด้านความปลอดภัยของระบบคอมพิวเตอร์ โดยได้จัดลำดับภัยคุกคามหรือช่องโหว่ที่พบได้บ่อย 10 ลำดับไว้ใน OWASP API Top 10 เพื่อน ๆ สามารถเข้าไปศึกษาเพิ่มเติมกันได้นะครับ