เดี๋ยวไว้เขียนเรื่องอาหารต่อ วันนี้แว้บกลับมาเรื่อง Geek กันบ้าง จูงมือน้อง Parse มาแนะนำตัวให้ทุกท่านได้รู้จักกันแบบคร่าวๆ
Parse เป็นที่ถูกกล่าวขวัญกันในฝั่ง Startup และ Mobile App มาสักพักแล้ว จากการที่มันถูก Facebook ซื้อไปหวังจะเพิ่มประสิทธิภาพและพลังให้กับชื่อเสียงฝั่ง Mobile ให้ตัวเองนั่นเอง
ตอนนี้ Parse เติบโตขึ้น ไม่ได้มีแค่ Service เดียวเหมือนแต่ก่อนแล้ว วันนี้เลยพามาแนะนำให้รู้จักกันคร่าวๆในแง่ของ Concept ครับผม มีอยู่สามตัว Parse Core, Parse Push และ Parse Analytics
Parse Core
นี่คือจุดเริ่มต้นของ Parse เลย คือสกิลของคนทำ Mobile App กับสกิลของคนทำ Server มันต่างกันโดยสิ้นเชิง โดยเฉพาะในโลกตลอด 2-3 ปีที่ผ่านมา แอพฯต้องทำงานแบบ Online และมีข้อมูลวิ่งไปวิ่งมากับ Server ตลอดเวลา Server ต้องแกร่ง ไม่ล่มเป็นอันขาด
แต่คนที่ทำ Server แล้วสเกลได้แบบไม่มีปัญหา ทำงานได้ 24/7 มีน้อยมาก แถมถ้าทำได้ ก็แพงมากทั้งเรื่อง Infra และค่าตัวคนทำ
Parse จึงเกิดมาเพื่อเป็น Server สำหรับเก็บข้อมูลแบบ Ideal ยิง HTTP Request ไปเก็บค่าได้เลย ไม่ต้องสนใจเรื่องสเกล ไม่ต้องสนใจ Infra ไม่ต้องสนใจใดๆ มันจัดการเองหมด หน้าที่เดียวของเราคือส่งข้อมูลไปเก็บ วิธีการสั่งไปเก็บข้อมูลก็ง่ายมากๆ แค่นี้เอง
// Create a new Parse objectParseObject post = new ParseObject("Post");post.put("title", "Hello World"); // Save it to Parsepost.saveInBackground();
และข้อมูลที่เก็บได้ก็ไม่ได้มีแค่ Primitive Type แต่พวก Rich Media อย่างรูปภาพ ก็เก็บได้เหมือนกัน (ตัวอย่างโค้ด)
จะเห็นว่า Parse เกิดมาจาก "ปัญหา" จึงไม่ต้องแปลกใจที่มันบูมขึ้นมาเพราะไม่ว่าจะเป็น Startup หรือแม้แต่ Corporate หลายต่อหลายราย ก็ไม่อยากจะลงทุนกับอะไรที่ตัวเองไม่ถนัด ฝากชีวิตไว้กับคนที่ทำเป็นแน่ๆให้เค้าดูแลให้ดีกว่า
และเนื่องจากมันติดต่อผ่าน HTTP Request แบบง่ายๆ ทำให้ Parse เลยออก SDK มาสนับสนุนแทบทุก Development Tools และ OS ที่ได้รับความนิยม ตามนี้
หรือถ้าใช้ Dev Tools ตัวอื่นแล้วไม่มี SDK มาด้วย ก็ยิงผ่าน HTTP เอาเองก็ได้ (แต่อาจจะเหนื่อยหน่อย)
curl -X POST \-H "X-Parse-Application-Id: ${APPLICATION_ID}" \-H "X-Parse-REST-API-Key: ${REST_API_KEY}" \-H "Content-Type: application/json" \-d '{"title": "Hello World" }' \https://api.parse.com/1/classes/Foo
แน่นอนว่าการเก็บข้อมูลจะต้องเป็นการเก็บของ User นั้นๆ ต้องมีการ Login อะไรมาด้วย
ซึ่งต่อยอดมาจากส่วนนี้ Parse ก็ Provide ส่วนของการ Login/Register/Recover Password รวมถึง Login ผ่าน Social ไว้ด้วย
แต่ถามว่าง่ายมั้ย ... อ่านโค้ดแล้วก็ไม่ได้ต่างจากการใช้ SDK มาตรฐานจาก Social Network เจ้าต่างๆอ่านะ เพียงแต่มี Integration กับ ParseUser (Object Type แบบนึง) แล้วเอาไปใช้ได้ทันที
และตามปกติแล้ว ฝั่ง Server บางทีแค่เก็บข้อมูลอย่างเดียวไม่พอ ต้องมีการคิดคำนวณอะไรด้วย แต่จะไปตั้ง Server เองแล้วไปติดต่อกับ Parse มันก็กลับไปสู่ปัญหาเดิม ต้องไปจ้างคนมาดูแล Server อีก สเกลลำบากอีก ... อันนี้ Parse ก็จัดส่วนของ Cloud Code ให้เราเอาโค้ด Javascript ไปรันบน Parse Cloud ได้ด้วย ซึ่งเนยชอบแนวคิดนะ
ยังมีอีกเยอะ ลองไปอ่านรายละเอียดคร่าวๆได้จากหน้านี้ครับ Parse Core Overview
Parse Push
เมื่อ Parse กลายเป็นส่วนหนึ่งของแอพฯที่เอาไว้เก็บข้อมูล (ซึ่งส่วนใหญ่เป็นข้อมูล User) Parse จึงต่อยอดบริการเข้าไปอีกหนึ่งส่วนชื่อว่า Parse Push มีไว้ Push ข้อความเข้ามือถือผ่านทาง Web Interface ของ Parse ได้ทันที พร้อมกับระบบ Analytics เพื่อดูประสิทธิภาพการ Push ... ไปถึงกี่ข้อความ มีคนเปิดกี่คน คิดเป็นกี่ % บลาๆๆๆ
เมื่อสองวันก่อน Parse ก็เพิ่งปล่อยตัว Push Experiment เพื่อทำ A/B Testing ว่า Push แบบไหนคนเปิดมากกว่ากันอีกด้วย ก็น่ารักดี
บริการที่เหมือนกันก็มีหลายตัว Pushwoosh เอย Urban Airship เอย (เพราะมันทำง่ายด้วยแหละ) อันนี้ Parse เอา Unfair Advantage ของตัวเองจาก Parse Core มาใช้ให้เกิดประโยชน์ ก็ถือเป็นบริการอีกตัวที่เยี่ยมครับ
Parse Analytics
ในศาสตร์ของ Startup แล้ว การ Measure เป็นสิ่งสำคัญ การฝังโค้ดเพื่อเก็บ Stat ต่างๆของการใช้งานจึงเป็นสิ่งจำเป็น และ Parse ซึ่งก็มาจากสาย Startup อยู่แล้ว เล็งเห็นตรงนี้ เลยเปิดบริการอีกตัวชื่อว่า Parse Analytics เพื่อเก็บ Stat การใช้งาน เปิดแอพฯกี่คน เปิดหน้านี้กี่คน มีคนกดปุ่มนี้กี่คน ฯลฯ ตาม Metric ที่วางไว้
ความจริง ความเด็ดขาดของระบบแบบนี้คือ Dashboard หลังบ้าน อันนี้ยังบอกไม่ได้ว่าดีไม่ดี เจ๋งไม่เจ๋งอย่างไร ต้องลองไปกดหลังบ้านดูอีกที (ยังไม่เคยลอง)
คู่แข่งของบริการนี้ก็มีอยู่หลายตัว ที่ดังๆก็เช่น MixPanel และ KissMetrics อันเลื่องชื่อนั่นเอง
Pricing
ราคาของ Parse ถือว่าน่ารักทีเดียวเพราะคิดเป็น req/s limit ถ้ายังอยู่ที่ 30 req/s ยังฟรีอยู่ แต่ถ้ามากกว่านั้นก็คิดเพิ่ม 10 req/s ละ $100 ต่อเดือน มีเนื้อที่มาให้ 20GB (ส่วนเกินคิด GB ละ $0.03) ส่วน Data Transfer อยู่ที่ 2TB (ส่วนเกินคิด GB ละ $0.10)
ดังนั้น ... ถ้าทำ Service ที่มีคนใช้เยอะและสเกลขึ้นเรื่อยๆ คำนวณค่าใช้จ่ายไว้ด้วย =) แต่คิดว่ายังไงก็คงถูกกว่าไปใช้พวก Amazon + ค่าตัว Infra Engineer หละมั้ง
ส่วน Parse Push ส่งฟรี 1,000,000 Unique Recipients แรก ... ย้ำว่า Unique Recipients ซึ่งก็คือ 1,000,000 เครื่องนั่นเอง และส่งได้ไม่จำกัดจำนวน ขอแค่อยู่ภายใน 1,000,000 เครื่อง ก็ส่งฟรีอยู่ เรียกว่า Startup สัก 95% น่าจะไม่พ้น Tier นี้เลยมั้ง ใช้ฟรี ใช้ฟรี แต่ถ้ามากกว่านั้นก็จ่าย 1,000 Recipients ละ $0.05 ต่อเดือนเท่านั้น ถูกมากกกกกก ตาลุกวาววาวเสียงรถไฟแล่นไปฤทัยครื้้นเครงเลยทีเดียว ผมว่า Parse Push นี่ Promising ทีเดียวนะ ดูแล้วยังไงก็ถูกกว่าตั้ง Server เองทั้งระยะสั้นและระยะยาว =)
สุดท้าย Parse Analytics อันนี้ฟรีตาม Rate Limit ที่ตั้งไว้ของ Parse Core ครับ
ลองไปดูรายละเอียดทั้งหมดของ Pricing ได้ที่ Parse Pricing ครับผม
ควรใช้มั้ย?
อย่างที่บอกว่า Parse เหมาะกับทีมที่ไม่มี Resource ด้าน Server Side มากนักและราคาก็เหมาะกับโปรเจคสเกลไม่ใหญ่มาก (เพราะ Tier แรกๆฟรีและคนที่หลุด Tier ไปได้มีไม่มาก)
อย่างไรก็ตาม Parse ก็ยังทำอะไรที่ซับซ้อนมากไม่ได้ อยากทำอะไรแปลกๆก็ต้องพึ่งตัว Cloud Code ซึ่งก็ต้องใช้ Engineer อีก และถ้าจะทำอะไรที่มันซับซ้อนอลังการก็ทำไม่ได้ ทำได้แค่เบื้องต้นผิวๆเท่านั้น
และถ้าเริ่มเป็นโปรดักส์ที่สเกลกลางจนถึงใหญ่แล้ว 30 req/s เป็นอะไรที่น้อยมากเลย ราคาจะพุ่งไปแตะ $1,000 ต่อเดือนได้ในเวลาอันไม่ช้า ดูๆแล้ว จุดคุ้มทุนน่าจะอยู่ตรงยอดดาวน์โหลดสัก 50,000-100,000 โหลด (จริงๆมีหลายปัจจัย แต่นี่กะคร่าวๆให้ดู)
ดังนั้น ... ลองคำนวณ Pricing ดูครับ บางทีถ้าวางแพลนไว้ว่าจะต้องสเกลไปทั่วโลกนะ จะมีคนใช้เป็นล้านคนนะ ... ก็ลงทุนกับ Server Side ดีกว่าครับ เพราะจุดนึงพอเราคิดว่า Parse มันแพงเกินไปแล้ว เราจะย้ายข้อมูลจาก Parse ไป Server เราเองนี่ เป็นอะไรที่ไม่สนุกเลย เชื่อสิ
แต่ถ้าโปรเจคสเกลไม่ใหญ่มาก ใช้ Parse ก็เป็นตัวเลือกที่ดีมากเลยทีเดียว =)
อ้อ ... แนะนำว่าถ้าจะใช้เฉพาะ Parse Push ก็โอเคอยู่น้า เราว่ามันดูดีทีเดียวแหละ (ส่วนเรื่องราคาใน Free Tier ก็เท่ากับ Pushwoosh นะ ลองเล่นทั้งสองตัวดูก็ได้ถ้าอยากจะ Compare กั๊บ)
ความเห็นส่วนตัว
เคยลองใช้ Parse Core แล้วรู้สึกไม่ชอบอ่ะ ... อาจจะเพราะเรา Geek ไป เลย Concern หลายเรื่องจัด แต่เราก็ไม่อาจตัดสินใจแทนผู้คนได้ ลองเอาข้อมูลไปพิจารณาดูกันเองได้เลยจ้าว่าเหมาะกับงานท่านๆมั้ย
Donkey กันไปก่อน สวัสดีครับ ...
ลาหนะ ลา ...