Google Cloud Platform (GCP) คือ บริการ Cloud Service ของบริษัท Google ที่มีผลิตภัณฑ์หลากหลายมากๆครับ เช่น ให้เช่า Server, การจัดเก็บข้อมูล, บริการเครือข่าย, Big Data และ AI เป็นต้น
สำหรับคนที่ยังไม่รู้จัก Cloud อธิบายง่ายๆก็คือมันเป็นการจัดการกับข้อมูลต่างๆแบบออนไลน์ครับ ตัวอย่างเช่น สมัยก่อนเราถ่ายรูปเสร็จเราก็จะย้ายไฟล์จากกล้องมาเก็บไว้ในฮาร์ดดิสก์ใช่ไหมครับ แต่สมัยนี้เราถ่ายรูปปุ๊บก็สามารถอัปโหลดขึ้นไปเก็บไว้บน Cloud แล้วเรียกมาดูจากที่ไหนก็ได้ที่ต่ออินเตอร์เน็ตได้ ทำให้สะดวกสบายมากขึ้นเลยครับ
เนื่องจากบริการของ GCP นี่มันมีหลากหลายชนิดมากและแต่ละชนิดก็ยังแยกย่อยอีกมากมาย ในบทความนี้จะขอพูดถึงบริการเฉพาะชนิด Server ครับ ซึ่งบริการเกี่ยวกับ Server ของ GCP ที่เด่นๆมีอยู่ 4 อย่างดังนี้
คือ การสร้างเครื่องเสมือนหรือ Virtual Machine (VM) ขึ้นมาทั้งตัวเพื่อใช้เป็น server โดยในการสร้างเครื่องเสมือนนี้เราจะสามารถเลือกสเปคของเครื่องได้ตามสเกลงานและงบประมาณของเรา ตั้งแต่ใช้ 1 vCPU ไปจนถึง 160 vCPUs หรือเลือก Memory ได้ถึง 3.75 TB ซึ่งในบริการนี้เราจะสามารถเข้าไปจัดการทุกอย่างเลือก OS หรือลงโปรแกรมต่างๆได้เหมือนมีคอมพิวเตอร์จริงๆเครื่องหนึ่งเลยครับจึงนับเป็น service ที่ยืดหยุ่นที่สุด
สำหรับเรื่องราคาก็ขึ้นกับสถานที่ตั้งของ Server ชนิด Machine และสเปคนี่เราเลือก สามารถดูได้จาก https://cloud.google.com/compute/all-pricing เช่น
คือ Environment สำหรับจัดการกับ Containerized Application ในเรื่อง build, deploy และ scale สำหรับท่านที่ยังไม่รู้จัก Container ว่าคืออะไร ถ้าให้อธิบายง่ายๆก็ต้องย้อนกับไปที่ service แบบแรกที่ผู้อ่านทราบแล้วว่ามันคือการสร้าง Virtual Machine ขึ้นมา ทีนี้บางทีสมมติว่าเราอยากได้ Application 3 อัน ถ้าเลือกวิธีแรกเราก็ต้องสร้าง VM 3 ตัว ซึ่งบางครั้งมันก็สิ้นเปลืองทรัพยากรโดยไม่จำเป็น ดังนั้นจึงเกิดแนวคิด Container ขึ้นมาเพื่อมาแก้ปัญหานี้ครับ โดยเราจะใช้ Hardware และ OS ร่วมกัน (Host OS) แล้วเอา Container มาครอบ Application แต่ละตัวแทน ทำให้ประหยัดทรัพยากรไปได้อย่างมาก แต่ก็แลกมาด้วยความยืดหยุ่นที่น้อยลงเพราะทั้ง 3 Application จะต้องใช้ Hardware และ OS เหมือนกัน เปลี่ยนของตัวใดตัวหนึ่งไม่ได้ครับ
สำหรับเรื่องราคาจะใช้ราคาของ Google Compute Engine instances สำหรับแต่ละ nodes ใน cluster จนกว่า cluster นั้นจะถูกลบทิ้งครับ
คือ Platform สำหรับสร้าง Application บนเว็บหรืออุปกรณ์เคลื่อนที่โดยที่เราไม่ต้องไปยุ่งกับส่วน Infrastructure หรือ server เลย (platform-as-a-service (PaaS)) ข้อดีคือทำให้เราประหยัดเวลาได้มาก เอาเวลาไปเขียนแค่เขียน Application อย่างเดียวพอแต่ก็แลกมากับความยืดหยุ่นที่น้อยลงไปกว่า 2 service ข้างบน ในตอนนี้ Google App Engine รองรับภาษาหลายภาษา ได้แก่ Java, PHP, Node.js, Python, C#, .Net, Ruby และ Go
สำหรับเรื่องราคาจะขึ้นอยู่กับทรัพยากรที่ Application ของเราใช้ โดยจะรันเป็น instance ใน environment ที่เราเลือก ดังนั้นจึงจะต้องมีราคาของ instances บวกกับค่า APIs และ Services ที่เราต้องใช้ครับ สามารถประมาณราคาได้จาก https://cloud.google.com/products/calculator/#tab=app-engine
คือ Platform สำหรับงาน Event-driven โดยที่เราไม่ต้องไปยุ่งกับส่วน Infrastructure หรือ server เลย (function-as-a-service (FaaS)) service นี้เป็นวิธีที่ง่ายที่สุดในการรันโค้ดของเราบน cloud ซึ่งโค้ดของเราจะเป็นแค่ฟังก์ชันฟังก์ชันเดียวไม่ใช่ทั้ง Application แบบใน GAE หรือ container แบบใน GKE หรือ VM แบบใน GCE ดังนั้นจึงสามารถทำได้ง่ายและรวดเร็วที่สุดในบรรดา service ทั้งหมดที่กล่าวมา โดย GCF มีหลักการทำงานดังนี้
สำหรับเรื่องราคาเราจะต้องจ่ายเฉพาะเวลาที่รันโค้ดของเราเท่านั้นครับ โดยจะขึ้นกับจำนวนของ request ที่เรียกฟังก์ชันและทรัพยากรที่ใช้ในการคำนวณดังนี้
หลังจากรู้จักแต่ละ service หลักๆกันไปแล้ว หลายคนก็ยังคงสับสนอยู่ว่าควรจะเลือกใช้ service ไหนดี สำหรับเรื่องนี้ Goolgle มี flowchart สรุปให้ดูว่างานแบบไหนควรจะเลือกใช้ service ไหน ดังนี้
หรือสามารถไปอ่านอย่างละเอียดได้จาก [6] ครับ และลองคำนวณค่าใช้จ่ายทั้งหมดได้จาก [7] ครับ ในตอนหน้าเราจะมาลองทำโปรเจกต์ Hello World ด้วย Google App Engine กัน แล้วพบกันใหม่บทความหน้าครับ
[1] https://cloud.google.com/compute/
[2] https://cloud.google.com/kubernetes-engine/
[3] https://cloud.google.com/appengine/
[4] https://cloud.google.com/functions/
[5] https://medium.com/the-node-js-collection/time-to-hello-world-part1-overview-8624fa38e523
[6] https://cloud.google.com/blog/products/gcp/choosing-the-right-compute-option-in-gcp-a-decision-tree
[7] https://cloud.google.com/products/calculator/
Tag ที่น่าสนใจ: google_cloud_platform gcp cloud_service server virtual_machine containerized_application platform-as-a-service function-as-a-service google_compute_engine google_kubernetes_engine google_app_engine google_cloud_functions
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM