เคยสงสัยกันไหมว่า ? นักพัฒนาเขาพัฒนา สร้าง แอปพลิเคชัน, ซอฟต์แวร์ หรือเกมต่าง ๆ ขึ้นมา และทำให้มันสามารถทำงาน หรือสื่อสารกับตัวระบบปฏิบัติการ หรือแพลตฟอร์มต่าง ๆ ร่วมกันได้อย่างไร ?
คำตอบนั้นอยู่ที่ Software Development Kits (SDK) และ Application Programming Interfaces (API) นั่นเอง
โดยทั้ง SDK และ API ถือเป็นเครื่องมือที่มีความสำคัญมากสำหรับการทำงานของนักพัฒนา โดย SDK สร้างขึ้นมาโดยผู้ผลิตเพื่อเป็นเครื่องมือให้ผู้พัฒนา บุคคลที่สาม (3rd-Party) ได้สามารถนำไปใช้สร้างซอฟต์แวร์ต่อได้โดยง่าย เช่น Google พัฒนา Android SDK ออกมาเพื่อให้นักพัฒนาสามารถนำไปใช้สร้างแอปพลิเคชันลงระบบปฏิบัติการ Android ได้ง่าย ๆ ส่วน API นั้นจะต่างออกไป โดยมันประกอบไปด้วยชุด โปรโตคอล (Protocol) และเครื่องมือต่าง ๆ ที่ช่วยให้องค์ประกอบต่าง ๆ สามารถสื่อสารหากันได้ง่าย ๆ
ในบทความนี้ เราจะมาเจาะลึกรายละเอียดของ SDK และ API กันให้มากขึ้น ว่ามันคืออะไร ? และแตกต่างกันอย่างไร ?
Software Development Kits (SDK) คือเครื่องมือที่เจ้าของแพลตฟอร์มปล่อยออกมาเพื่อช่วยให้นักพัฒนาสามารถมันในการพัฒนาแอปพลิเคชัน หรือซอฟต์แวร์มาลงในแพลตฟอร์มได้ง่าย ๆ
มันแตกต่างไปจากภาษาโปรแกรมมิ่งทั่วไปที่นักพัฒนาสามารถใช้พัฒนาซอฟต์แวร์ไปลงบนแพลตฟอร์มไหนก็ได้ที่รองรับภาษาที่คุณใช้สร้างซอฟต์แวร์ อย่างที่บอกไปในย่อหน้าที่แล้วว่า SDK เป็นเครื่องมือจากเจ้าของแพลตฟอร์ม แน่นอนว่าไม่มีใครรู้ดีว่าแพลตฟอร์มรองรับคุณสมบัติการทำงานอะไรได้บ้าง ? มากไปกว่าตัวเจ้าของแพลตฟอร์มเอง ตัว SDK จึงเป็นเครื่องมือพัฒนาซอฟต์แวร์ที่สามารถเรียกใช้งานคุณสมบัติ และลูกเล่นต่าง ๆ ของแพลตฟอร์มดังกล่าวได้อย่างสมบูรณ์แบบ ทั้งนี้ SDK มักจะประกอบด้วยภาษาโปรแกรมมิ่งหลายภาษา แม้จะเป็นการพัฒนาบนแพลตฟอร์มเดียวกันก็ตาม
ภาพจาก : https://developer.android.com/studio
สรุปง่าย ๆ ว่า SDK คือชุดเครื่องมือที่นักพัฒนาสามารถดาวน์โหลดมันมาติดตั้ง และพัฒนาซอฟต์แวร์ลงบนแพลตฟอร์มที่กำหนดได้อย่างง่ายดาย ซึ่งใน SDK ก็มักจะมี API เป็นส่วนหนึ่งในตัวมันเองด้วย ซึ่งเราจะอธิบายถึงในหัวข้อถัดไป
เราเคยมีบทความอธิบาย Application Programming Interface (API) อย่างละเอียดไปแล้ว ในบทความนี้จึงขออนุญาตไม่เจาะลึกรายละเอียดซ้ำอีกครั้งให้เปลืองพื้นที่
API เป็นอินเทอร์เฟส (ส่วนต่อประสานระหว่างสองสิ่งให้สื่อสารทำงานร่วมกันได้) ซึ่งในภาคของการพัฒนาซอฟต์แวร์นั้นจะช่วยให้การสื่อสารระหว่าง 2 แพลตฟอร์มทำได้โดยง่าย
เป้าหมายหลักของ API คือการเป็นอินเทอร์เฟสมาตรฐานสำหรับให้ 3rd-Party สามารถเชื่อมต่อซอฟต์แวร์ให้ทำงานร่วมกันได้ง่าย ๆ โดยไม่ต้องพัฒนาระบบเชื่อมต่อขึ้นมาเองให้เสียเวลา
แต่นอกเหนือจากการช่วยอำนวยความสะดวกให้กับนักพัฒนาแล้ว API ยังมีประโยชน์ในการกำหนดคุณสมบัติของการเชื่อมต่อได้ด้วยว่าจะจะให้คุณสมบัติไหนแลกเปลี่ยนข้อมูลได้บ้าง และข้อมูลประเภทไหนที่เชื่อมต่อหากันได้
ส่วนใหญ่แล้ว API จะประกอบด้วย 2 ส่วนใหญ่ ๆ ดังนี้ คือ
API นั้นยังมีการแบ่งย่อยออกเป็นหลากหลายประเภท ขึ้นอยู่กับการใช้งาน และคุณสมบัติในการทำงานของมัน ตัวอย่างสถาปัตยกรรมของ API ที่น่าจะพบเห็นได้บ่อย ๆ จะมีดังต่อไปนี้
เป็นอินเทอร์เฟสมาตรฐานที่ส่วนประกอบของเว็บไซต์ใช้ในการสื่อสาร เช่น เว็บเบราว์เซอร์, อุปกรณ์ทั่วไป หรืออุปกรณ์เฉพาะทาง
อินเทอร์เฟสที่ใช้ทำงานร่วมกับ XML, JSON และไฟล์ข้อความ API นี้ยังเป็นที่รู้จักในชื่อ RESTful API โดย API ตัวนี้ถือเป็นตัวเลือกหลักสำหรับเว็บแอปพลิเคชันที่อาศัย HTTP/S ในการสื่อสาร
ความนิยมในการใช้งาน XML ทำให้ REST API ไม่สามารถตอบสนองความต้องการที่มากขึ้นของนักพัฒนาได้ จึงมีการพัฒนา SOAP API ขึ้นมา มันมีคุณสมบัติในการทำงานที่รองรับงานที่ซับซ้อนมากขึ้น เพิ่มระบบรักษาความปลอดภัยให้กับการสื่อสาร
API ในกลุ่มนี้จะใช้ในการดำเนินการ, กระบวนการ หรือขั้นตอนที่กำหนดเอาไว้เพื่อให้ได้ผลลัพธ์อย่างที่ต้องการ ด้วยการกำหนดคุณลักษณะ (Parameters) ไว้ล่วงหน้า RPC ยังสามารถทำงานร่วมกับ JSON และ XML ด้วย ทำให้มันถูกเรียก JSON-RPC หรือ XML-RPC ในหมู่นักพัฒนา
คือ API เปิดสาธารณะ ที่พร้อมให้นักพัฒนา หรือ องค์กรต่าง ๆ มาขอใช้งานได้เลย หลายองค์กรอย่างเช่น Microsoft สามารถหารายได้โดยการเปิด Public API ให้นักพัฒนาอื่น ๆ สามารถเข้าถึงแอปพลิเคชัน หรือข้อมูลที่ต้องการจาก Windows ได้จากนั้นก็จ่ายเงิน บ้างอาจมีแจกฟรี แล้วแต่ตามข้อตกลง เช่น Windows API ที่นักพัฒนาสามารถเขียนโปรแกรมที่เข้าถึงระบบของ ระบบปฏิบัติการ Windows ได้
คือ API ที่มีให้สำหรับคู่ค้า หรือ พาร์ทเนอร์ทางธุรกิจ เพื่อเป็นการอำนวยความสะดวกให้พาร์ทเนอร์เข้าถึงข้อมูลฝ่ายตรงข้ามได้โดยมีข้อกำหนดว่าสามารถใช้ข้อมูลได้เฉพาะที่ต้องการเท่านั้น เช่น โปรแกรม CRM ที่บริษัท A เปิด API ให้บริษัท B ใช้ข้อมูลลูกค้าบางรายการของบริษัท A เป็นต้น
คือ API ส่วนบุคลที่มีไว้ใช้เฉพาะในองค์กรเท่านั้น เพื่อเชื่อมต่อข้อมูลและระบบภายในองค์กรเข้าด้วยกันอย่างปลอดภัย ลองนึกถึงองค์กรใหญ่ ๆ ที่มีหลายแผนกหลายฝ่าย แต่ละฝ่ายก็มีฐานข้อมูลที่ใช้งานต่างกันไป หากต้องการเข้าถึงระบบของฝ่ายอื่น ๆ ในองค์กร ก็อาจมีการสร้าง API และ เปิดให้อีกฝ่ายใช้งานเป็นต้น
คือรูปแบบการผสมผสาน API ตั้งแต่ 2 บริการขึ้นไปเข้าด้วยกัน เวลาทำงานจะสามารถ ช่วยให้เรียกใช้ข้อมูลพร้อมกันได้ในครั้งเดียว ประโยชน์คือช่วยลดปัญหาการใช้ API ซ้ำซ้อน และ ปรับปรุงประสิทธิภาพแพลตฟอร์มในเรื่องของความเร็วได้ด้วย
ภาพจาก : https://www.altexsoft.com/blog/engineering/what-is-api-definition-types-specifications-documentation/
เป้าหมายของ API คือช่วยอำนวยความสะดวกระหว่าง 2 แพลตฟอร์มให้ทำได้โดยง่าย
ยกตัวอย่างเช่น คุณต้องการพัฒนาระบบจองที่พักล่วงหน้าแบบออนไลน์ คุณก็เลยจำเป็นต้องรู้ว่าโรงแรมที่ใช้บริการแพลตฟอร์มของคุณมีที่พักจำนวนกี่ห้อง ซึ่งโรงแรมแต่ละแห่งก็มีจำนวนที่พักไม่เท่ากัน รวมไปถึงข้อมูลห้องว่างที่ต้องได้รับการอัปเดตแบบเรียลไทม์ เพื่อให้แพลตฟอร์มสามารถแสดงผลข้อมูลให้กับผู้ให้บริการได้อย่างถูกต้อง
และนี่เองที่ API จะเข้ามามีบทบาทสำคัญ โรงแรมแต่ละแห่งจะได้ได้รับ API ที่สามารถใช้เชื่อมโยงกับฐานข้อมูลที่พัก ซึ่งเราสามารถดึงข้อมูลจาก API endpoint มาใช้ยังแพลตฟอร์มของคุณได้ ทำให้สามารถอัปเดตข้อมูลได้แบบเรียลไทม์อย่างสมบูรณ์แบบ
API สามารถประยุกต์ใช้งานได้หลากหลายรูปแบบ ตัวอย่างเช่น
ถึงแม้ว่าทั้ง SDK และ API จะมีความแตกต่างกัน แต่ในการใช้งานเราไม่จำเป็นต้องเลือกว่าจะใช้อะไร เพราะสุดท้ายแล้ว มันต้องใช้ทั้งคู่ และ API ก็มักเป็นส่วนหนึ่งของ SDK อยู่แล้ว เพราะเราต้องใช้ SDK ในการสร้าง และใช้ API ในการเชื่อมต่อนั่นเอง
|
แอดมินสายเปื่อย ชอบลองอะไรใหม่ไปเรื่อยๆ รักแมว และเสียงเพลงเป็นพิเศษ |