iCloud ในมุมมองนักพัฒนาโปรแกรม

by khajochi
9 June 2011 - 07:20

งาน WWDC ของแอปเปิลในครั้งนี้ สำหรับนักพัฒนาโปรแกรมแล้ว สิ่งที่น่าสนใจมากไปกว่า OS X Lion หรือแม้แต่ iOS 5 ก็คือการเปิดตัว iCloud โดยเฉพาะนาทีที่สตีฟ จ็อบส์ประกาศว่าจะเปิด API สำหรับบริการ iCloud ให้กับนักพัฒนาโปรแกรมได้ใช้งานด้วย

มีเหตุผลอะไรที่แอปเปิลต้องสร้าง Data Center ที่ใหญ่โตขนาดนั้นเพียงเพื่อรองรับโปรแกรมเพียง 9 โปรแกรมที่จ็อบส์ประกาศออกไป นั่นเป็นเพราะแอปเปิลได้เปิดให้ทุกโปรแกรมที่ทำงานอยู่บนอุปกรณ์ iOS สามารถใช้งาน iCloud API ได้ทั้งหมด เราสามารถเขียนโปรแกรมให้ Sync ไฟล์ทั้งหมดได้เหมือนกับที่จ๊อปส์โชว์โปรแกรม Keynote เก็บเซฟของเกมส์ พอร์ตหุ้น รูปที่เพิ่งแต่งเสร็จ ไฟล์ทุกชนิดที่ใช้ในโปรแกรม ทั้งหมดสามารถที่จะไปเก็บไว้บน iCloud ได้นั่นเอง

iCloud API คืออะไร เป็นอย่างไร ทำอะไรได้บ้าง เราลองมาดูกัน

รู้จักกับ iCloud และ iCloud API

ข้อควรรู้เบื้องต้นเกี่ยวกับบริการ iCloud ของแอปเปิลมีดังนี้

  • เป็นบริการสำหรับจัดเก็บข้อมูล ให้บริการโดยแอปเปิล
  • ข้อมูลนั้นจะต้องเป็นข้อมูลของผู้ใช้ หรือ User Data
  • ต่างจากบริการ Cloud ของบริษัทอื่นๆ ตรงที่ iCloud API จะต้องเรียกใช้งานจากโปรแกรมที่ลงบน อุปกรณ์ iOS เราไม่สามารถเขียนโปรแกรมจากที่อื่นเข้ามาเรียกใช้งานได้
  • เป็นบริการฟรี ผู้ใช้แต่ละคนจะมีพื้นที่จัดเก็บข้อมูล 5GB (คาดว่าจะสามารถจ่ายเงินเพื่อเพิ่มเนื้อที่ได้ในอนาคต)
    พื้นที่ 5GB นี้แชร์ร่วมกันหมดสำหรับทุกโปรแกรม
  • ตามเอกสารของแอปเปิล ผู้ใช้สามารถเข้ามาลบไฟล์ต่างๆ ใน iCloud ได้เอง คาดว่าน่าจะมีหน้าเว็บสำหรับจัดการข้อมูลเองได้
  • iCloud Service จะทำงานเป็น Background Process บนอุปกรณ์ iOS สามารถเปิด/ปิดได้
  • ใช้งานเฉพาะบน iOS 5 ขึ้นไปเท่านั้น

บริการ iCloud จะแบ่งการเก็บข้อมูลของเราเป็น 2 ประเภท

  1. ไฟล์เอกสารต่างๆ (Document Storage) ไม่ว่าจะเป็นรูป วิดีโอ ไฟล์พรีเซ็นเทชั่น ไฟล์ PDF ทั้งหมดถือว่าเป็นไฟล์เอกสาร ขนาดของไฟล์ไม่จำกัด
  2. สถานะของโปรแกรม (Key-Value Data Storage) เช่น ตอนนี้เราเล่นเกมส์ Angry Bird ไปถึงด่านที่ 5 มีนกเหลืออยู่ 2 ตัว และหมูที่ยังไม่ตายอีก 1 ตัว เป็นต้น ขนาดของข้อมูลต้องไม่เกิน 10 กิโลไบต์

การทำงานของ iCloud Service

บน iOS 5 จะมีบริการใหม่ที่ชื่อ iCloud Service มีหน้าที่คอยจัดการเรื่องการรับและส่งข้อมูลระหว่างอุปกรณ์ iOS กับเซิร์ฟเวอร์คลาวด์ของแอปเปิล มีขั้นตอนการทำงานดังนี้

  • โปรแกรมที่เรียกใช้ iCloud API จะไม่ได้ติดต่อกับเซิร์ฟเวอร์ของแอปเปิลโดยตรงอย่างที่หลายคนเข้าใจกัน
  • ตรงกันข้าม เมื่อเราเรียกใช้ iCloud API ไฟล์เอกสารจะถูกนำไปจัดเก็บใน directory พิเศษ (local system-managed directory)
  • ซึ่ง directory นี้จะเป็นที่รวมไฟล์ของทุกโปรแกรมที่ต้องการส่งขึ้นไปที่ iCloud
  • เมื่อถึงเวลาที่เหมาะสม iCloud Service จะเข้ามาจัดการส่งไฟล์ขึ้นไปบนคลาวด์ให้เองโดยอัตโนมัติ
  • iCloud Service จะแจ้งเตือนมายังโปรแกรม เมื่อเกิดการเปลี่ยนแปลงใดๆ กับไฟล์ เช่นมีเวอร์ชันที่ใหม่กว่าอยู่บนคลาวด์ หรือผู้ใช้เข้าไปลบไฟล์นี้ออกไปจากคลาวด์

ในมุมของนักพัฒนาโปรแกรมแล้ว เป็นเรื่องดีที่เราไม่ต้องไปยุ่งเกี่ยวกับการรับส่งข้อมูลไปบนคลาวด์เซิร์ฟเวอร์แต่อย่างใด รวมไปถึงการเข้ารหัส, ระบบความปลอดภัย, ปัญหา Fail Over, ปัญหาพื้นที่เต็ม ฯลฯ เพราะทั้งหมดนี้ iCloud จะจัดการให้

สิ่งที่นักพัฒนาโปรแกรมต้องสนใจ คือการ Sync ข้อมูล แน่นอนว่าเราจะต้องเจอปัญหาเรื่องของเวอร์ชันของไฟล์ไม่ตรงกัน (File-Version Conflicts) เช่นนาย A และนาย B อาจจะแก้เอกสารเดียวกันอยู่ แต่อาจจะมีเครื่องของคนใดคนหนึ่งที่ไม่ได้ต่ออินเทอร์เน็ตเอาไว้ เมื่อถึงเวลาที่ iCloud Service ทำงาน แน่นอนว่าเวอร์ชันของไฟล์เอกสารจะต้อง Conflict กัน เป็นต้น

ข้อแนะนำอีกอย่างหนึ่งคือโปรแกรมควรจะเป็น Universal App คือโปรแกรมเดียวสามารถใช้งานได้ทั้ง iPhone และ iPad เช่นเดียวกับโปรแกรมของแอปเปิลอย่าง Keynote หรือ iBook เป็นต้น

ทำไมต้องเก็บข้อมูลบนคลาวด์ ?

แล้วทำไมเราจะไม่เก็บข้อมูลบนคลาวด์ล่ะ ? (Why Not ?)

แน่นอนว่าถ้าทุกโปรแกรมจัดเก็บข้อมูลไว้บนคลาวด์ ผู้ใช้ก็จะได้ประโยชน์มาก ลองนึกภาพนาทีที่เราซื้อ iPhone 5 หรือ iPad 3 มาใหม่ ใส่ Username+Password เสร็จแล้วก็สามารถเล่น Angry Bird ต่อจากด่านที่เล่นค้างอยู่ได้เลย, เปิดไฟล์พรีเซ็นเทชั่นเดิม เข้าไปคุยกับเพื่อนต่อใน WhatsApp หรือแม้แต่เปิดหน้าเว็บเข้าไปจัดการกับเอกสารต่างๆ บน iCloud ด้วยตัวเองก็ยังได้

ในมุมมองเจ้าของโปรแกรม การเก็บข้อมูลไว้บนคลาวด์ก็เป็นเทรนด์ที่หลายโปรแกรมพยายามทำกันอยู่ ตัวอย่างเช่น Photoshop Express หรือ Instgram ที่ให้ผู้ใช้ตกแต่งรูปถ่ายแล้วโอนข้อมูลไปเก็บไว้บนคลาวด์ของตัวเอง iCloud ช่วยให้นักพัฒนาสะดวกมากขึ้น ลดภาระด้านการจัดการเซิร์ฟเวอร์ และช่วยให้ผู้ใช้อยู่กับโปรแกรมของเราไปนานๆ

ยุทธศาสตร์คลาวด์ของแอปเปิล

แอปเปิลพยายามผลักดันอย่างมากให้นักพัฒนาปรับปรุงโปรแกรมเพื่อใช้บริการ iCloud (เป็นหัวข้อแรกสุดและกินเนื้อที่กว่าครึ่งบนเอกสาร iOS 5) ซึ่งถ้าหากว่าแอปเปิลสามารถทำได้สำเร็จ จะทำให้แอปเปิลถือครองข้อมูลของผู้ใช้แทบจะทั้งหมด ไม่ใช่เพียงแค่รูปภาพ วิดีโอ หรือเพลงเท่านั้น แต่เป็นข้อมูลของทุกโปรแกรมที่อยู่บนอุปกรณ์ iOS

ซึ่งในมุมของผู้ใช้ การที่จะย้ายค่ายเปลี่ยนไปใช้แฟรตฟอร์มอื่นอย่าง Android หรือ Windows Phone ก็จะเ็ป็นเรื่องยากขึ้นเรื่อยๆ ทำให้ในอนาคตผู้ใช้อาจจะต้องเลือกค่ายมากขึ้นกว่าในปัจจุบัน การที่แอปเปิลมีโปรแกรมอยู่ใน App Store มากถึง 500,000 โปรแกรมเป็นจุดที่ได้เปรียบมาก

ยุทธศาสตร์คลาวด์ของแอปเปิลคือเน้นไปที่โปรแกรม (Native Application) ส่วนคลาวด์ของกูเกิลนั้นเน้นไปที่โปรแกรมบนเว็บ (Web Application) ซึ่งก็มีข้อดีข้อเสียต่างกันไป อย่างไรก็ดี นี่เป็นเพียงการเริ่มต้นของยุคคลาวด์ เราคงต้องมองดูกันต่อไปยาวๆ ว่าที่สุดแล้วใครจะเป็นผู้ชนะในสงครามนี้

ที่มา - Khajochi Blog, รูปจาก Engadget, Apple iCloud

Blognone Jobs Premium