Thursday, June 09, 2011

iCloud ในมุมมองนักพัฒนาโปรแกรม (My Thought on iCloud)



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

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

จากที่ได้ศึกษา iCloud จากเอกสารที่แอปเปิลแจกจ่ายให้กับนักพัฒนาโปรแกรม มีหลายสิ่งที่น่าสนใจมากเลยทีเดียว iCloud เป็นอย่างไร ทำอะไรได้บ้าง เราลองมาดูกัน









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

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

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



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

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

  • โปรแกรมที่เรียกใช้ 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 ทำงาน แน่นอนว่าเวอร์ชันของไฟล์เอกสารจะต้อง Conflict กัน เป็นต้น





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

แล้วทำไมเราจะไม่เก็บข้อมูลบนคลาวด์ล่ะ ? (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) ซึ่งก็มีข้อดีข้อเสียต่างกันไป อย่างไรก็ดี นี่เป็นเพียงการเริ่มต้นของยุคคลาวด์ เราคงต้องมองดูกันต่อไปยาวๆ ว่าที่สุดแล้วใครจะเป็นผู้ชนะในสงครามนี้

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


0 comments: