My Thought on Google App Engine

บล็อกนี้เป็น followup จากที่คุยกับคุณ Chanwit ณ Manchester ทาง IM นำไอเดียมาพัฒนาต่อเป็นบล็อก (แต่ยังไม่ละเอียดขนาดเป็นบทความได้)

คุณ Chanwit ถามผมว่าคิดยังไงกับ Google App Engine

สารภาพตามตรงว่าตอนที่ตอบคือไม่รู้ ตอบไปมั่วๆ :P ผ่านไปวันสองวันมีเวลาทบทวน ความคิดเริ่มตกตะกอนขึ้นมาอีกนิด

ในแง่ผลิตภัณฑ์ App Engine คงไม่มีอะไรใหม่ ถ้าว่ากันตามจริงมันคือ Amazon Web Service (S3, EC2, SimpleDB) แบบรวมแพกเกจ โดยใช้เซิร์ฟเวอร์ของกูเกิลแทน อีกยี่ห้อที่พอยกมาเทียบได้คือ Grid-Service ของ MediaTemple

ในแง่ตัวเทคโนโลยีก็ไม่มีอะไรใหม่เช่นกัน App Engine เป็นการ leverage เทคโนโลยีหลายๆ อันที่กูเกิลพัฒนามานานแล้ว อย่างเช่น GWS (เว็บเซิร์ฟเวอร์ - Apache เวอร์ชันโมดิฟาย), GFS (file system), BigTable (database) ให้คุ้มค่าจ้างนักพัฒนา ส่วนฮาร์ดแวร์ยิ่งแล้วใหญ่ เป็นการ leverage เซิร์ฟเวอร์ฟาร์มของกูเกิล ที่ลงทุนไปแล้วมากมาย (ลดสัดส่วนของ fixed cost)

แต่ความน่าสนใจมันอยู่ตรงที่ความเป็นกูเกิลของ Google App Engine ซึ่งพอมารวมๆ กันแล้ว อาจเป็นสัญญาณบ่งชี้ได้ว่า Space Race ของ Software as a Service เริ่มขึ้นแล้ว

ปัจจุบันนี้เราเกือบพูดได้ว่า client-server นั้นตายแล้ว และ web application นั้นกินตลาดเกือบทั้งหมด แอพพลิเคชันใหม่ๆ ในยุค Web 2.0 อย่าง Gmail, GDocs, Salesforce, Basecamp นั้นพิสูจน์ตัวเองแล้วว่า web application ทำงานซีเรียสได้จริง และทำงานร่วมกันได้ (โดยส่วนใหญ่เป็น REST)

ปัญหาอยู่ที่กว่าจะพัฒนา web application ขึ้นมาจนกระทั่งมันติดต่อกันด้วย REST ได้นั้น ต้องมีรากฐานหรือ stack ที่สูงมาก นับตั้งแต่ระบบไฟใน data center ไปจนถึงเวอร์ชันของเฟรมเวิร์ค ซึ่งมองในแง่เศรษฐศาสตร์แล้ว cost มันสูงและซ้ำซ้อน

ธรรมชาติของปัญหานี้แก้ได้ด้วยการ consolidation หรือแชร์ทรัพยากรเพื่อให้ประสิทธิผล (efficiency) สูงขึ้น นำส่วนนี้ไปลด cost ซึ่งตัวอย่างที่เห็นกันทั่วไปอย่างเช่น ระบบขนส่งมวลชน หรือการสร้างห้องน้ำสาธารณะ สำหรับด้านไอทีเราเห็นการ consolidation กันมาหลายแบบหลายชั้น เช่น

  • Web framework (ลด cost จากการ maintain โค้ดที่พัฒนาเอง มาเป็นการเรียกใช้โค้ดบางส่วนที่มีคน maintain ให้)
  • Database (ลด cost จากการดูแลไฟล์ผ่าน file system โดยให้ RDBMS จัดการให้)
  • Virtual hosting (ลด cost จากการ maintain หลายโค้ดหลาย instance มาเป็นโค้ดเดียว แยกแค่ server instance)
  • Package management (ลด cost จากการ maintain ซอฟต์แวร์​ เช่น ไม่ต้องตามดูแล security issues เอง นั่งอัพแพกเกจตามอย่างเดียวพอ)
  • Load balance/Virtualization (ลด cost จากการดูแลหลายเครื่อง เช่น cost ด้านพลังงาน, ด้านความยุ่งยากในการดูแล, support contract, การรับ spike load)
  • Data center (ลด cost จากสร้างระบบปรับอากาศ, ห้อง server ไร้ฝุ่นเอง มาใช้ของรวม)

ถ้าใช้กรอบของการ consolidation มามอง บริการอย่าง S3 ก็เสมือนเป็นชุดของ consolidation หลายๆ อย่าง ตั้งแต่ data center, server, os, package management, backup, load balance จนมาถึงระดับแอพพลิเคชันนั่นคือให้บริการ file system นั่นเอง

เพียงแต่สิ่งที่ App Engine ต่างออกไป คือนโยบายในการใช้งาน และข้อกำหนดในการสร้างเว็บแอพพลิเคชัน

ตอนนี้ App Engine ยังมีแต่รุ่นไม่คิดเงิน โดยให้พื้นที่และ CPU time เพียงพอต่อการใช้งานทั่วๆ ไปของคนส่วนใหญ่ (ซึ่งเราเดาได้ไม่ยากว่า อนาคตเวอร์ชันเสียเงิน จะออกมาสำหรับคนที่ต้องการใช้เกินลิมิต) สำหรับด้านแอพพลิเคชัน App Engine ใช้วิธีควบคุมสิทธิ์บางส่วน (เช่น รันใน sandbox) เพื่อแลกกับความง่ายในการดูแล (ซึ่งส่งผลให้เสถียรภาพของระบบโดยรวมดีขึ้น) ในขณะเดียวกันก็ไม่เข้มงวดจนถึงขั้น no compromise คือยอมให้รันไลบรารีอื่นๆ เองได้ตราบที่ไม่ขัดกับนโยบายเรื่อง Sandbox และอำนวยความสะดวกให้แก่นักพัฒนา โดยเตรียมเฟรมเวิร์คที่นิยมกันอยู่แล้วอย่าง Django มาให้เสร็จสรรพ

นโยบายและโปรโมชันของแต่ละเจ้าก็จะต่างกันออกไป อย่างของ Grid-Service ก็คล้ายๆ กันแต่เป็น Rails ส่วนของ EC2 เอง ถ้าจำไม่ผิดก็มีเวอร์ชันที่ลง RHEL มาให้พร้อมใช้งาน

ในยุคที่ซอฟต์แวร์ฝั่งเซิร์ฟเวอร์เป็นโอเพนซอร์สเกือบทั้งหมด ไม่มีใครได้เปรียบเหนือใครมากนัก (กูเกิลมี GFS แต่อีกไม่นานก็คงมีคนเอา Hadoop มาสู้) ปัจจัยชี้เป็นชี้ตายจึงมีอยู่ 2 เรื่อง คือ เสถียรภาพของเซิร์ฟเวอร์ กับ support

สำหรับเรื่องเสถียรภาพของเซิร์ฟเวอร์ ผมเคยเขียนไว้ในเรื่อง Red Shift ว่าสุดท้ายแล้ว จะมีแต่รายใหญ่เท่านั้นที่เหลือรอด เพราะการทำเซิร์ฟเวอร์ให้ดีๆ นั้นลงทุน fixed cost สูง (ค่าสถานที่ ค่าไฟ ค่า engineering expertise) และต้องอาศัย economy of scale ถึงจะอยู่รอด

ส่วนเรื่อง support นั้นเป็นประเด็นที่คุณ Chanwit ชี้ช่องมา คือตัวซอฟต์แวร์เป็นโอเพนซอร์ส ใครๆ ก็หามาใช้ได้อย่างเท่าเทียม แต่บุคคลากรและความเชี่ยวชาญนั้นเป็นอีกเรื่อง ความเชี่ยวชาญในตัวซอฟต์แวร์พอที่จะทำ commercial support ไม่ได้หากันง่ายๆ ช่วงหลังนี้เราจึงเห็นปฏิบัติการ "ซื้อแหลก" ของผู้เล่นรายใหญ่ในตลาดนี้ ตั้งแต่

  • Novell ซื้อ SuSE (platform stack), พัฒนา Mono (framework stack)
  • Oracle ซื้อสารพัด + ออก Unbreakable Linux (platform stack)
  • Red Hat ซื้อ JBoss (framework stack)
  • Sun ซื้อ StorageTek/VirtualBox/MySQL (infra stack)
  • EMC ซื้อ VMWare (infra stack)
  • Citrix ซื้อ XenSource
  • IBM ก็ซื้อเยอะแต่ผมไม่ค่อยได้ตาม ส่วนมากเป็น application stack
  • Google ใช้วิธีซื้อตัวเอา อย่างเช่นเคสนี้ก็ได้ Guido van Rossum มา
  • Yahoo ลงทุนใน Hadoop (platform stack)

ผมคิดว่าการซื้อกิจการกันไปมาจะยังมีต่อไปอีก 4-5 ปี เพราะยังเป็นตลาดใหม่ (แต่ไม่ใช่ใหม่กิ๊ง) จนถึงภาวะตลาดเริ่มสมดุล เหลือผู้เล่นรายใหญ่ไม่มากนักในช่วงหลังจากนั้น และคาดว่าใน list ข้างต้นที่ยกมา เราจะเห็นการดีลกันเองสัก 2-3 ดีลในไม่ช้า

ปัจจัยสนับสนุนสำคัญอีกประการหนึ่งคือมาตรฐานกลางของ virtual machine จะเห็นว่าใน list นี้มีบริษัทด้าน virtualization ถูกซื้อกันค่อนข้างเยอะ เนื่องจากมันเป็นเทคโนโลยีสำคัญของ SaaS (คือลบขีดจำกัดของ OS stack ที่ต่างกัน) แต่ virtualization เองก็ยังเป็นเทคโนโลยีที่เพิ่งเริ่มบูม vm ของแต่ละค่ายยังทำงานข้ามกันไม่ได้ เท่าที่จำได้ หลายยี่ห้อกำลังพยายามตกลงหามาตรฐาน vm กลางอยู่ ถ้าเห็นข่าวประกาศความสำเร็จด้าน vm กลางเมื่อไร แปลว่าเราใกล้ SaaS เข้ามาอีกขั้น เพราะตอนนั้นตลาด virtualization จะแข่งกันที่ประสิทธิภาพอย่างเดียวแล้ว

รู้สึกว่าชักออกทะเล ขอสรุปเลยละกัน

  • ปัจจุบัน web application ถือว่า dominate ในตลาด enterprise software
  • กว่าจะได้ web application ต้องลงทุนสูงมาก ค่าโน่นนี่จิปาถะ
  • ดังนั้น เทรนด์ในระยะยาวคือแทนที่จะซื้อเองทั้งหมด เช่าเอาจากผู้ให้บริการที่ consolidate resource ถูกกว่า ดีกว่า
  • ผู้ให้บริการเหล่านี้มีไม่เยอะ เพราะเป็น economy of scale
  • ตอนนี้ Amazon เป็นผู้นำในตลาดมี full service stack ไล่ตั้งแต่ data center มาจนถึงระดับ platform ในขณะที่บริษัทอื่นๆ อย่าง Red Hat หรือ Sun อาจจะไม่มี full stack แต่ก็มีชิ้นโน้นชิ้นนี้บ้าง แปรผันกันไป และกำลังพยายามสร้าง full stack อยู่เหมือนกัน
  • Google App Engine เป็นการรุกตลาดนี้อย่างเต็มตัวของ Google ซึ่งถือว่าไม่เป็นรองใครในอุตสาหกรรม ทั้งแง่ฐานลูกค้า แบรนด์ และทรัพยากรองค์กร
  • Space race เพิ่งเริ่มต้น และจะเริ่มแข่งกันเดือดในอีกประมาณ 4-5 ปีข้างหน้า

Space race อีกด้านที่น่าสนใจ คือเครื่องมือในการพัฒนา lightweight application แบบใหม่ๆ ไม่ว่าจะเป็น RIA (AIR, Silverlight) หรือมือถือ (iPhone, Android) ซึ่งจะหาเวลาและความขยันเขียนถึง

Add new comment