รู้จักกับ Google Cloud Platform(GCP)
Google Cloud Platform(GCP) คือ Cloud service provider(CSP) ผู้ให้บริการ public cloud เหมือนกับ AWS และ Azure ซึ่ง GCP เองมี services ที่ให้บริการมากมาย สามารถตอบสนองได้หลาย solution โดยเฉพาะผู้ที่ทำ Big data, Machine Learning หรือผู้ให้บริการ Web Application ยกตัวอย่าง services ที่ Google Cloud มีให้บริการและเราต้องรู้จักไว้มีดังนี้
สิ่งที่เราสร้างขึ้นมาบน Cloud เราจะเรียกว่า resource ดังนั้นก่อนที่จะเข้าไปทำความรู้จักกับ google cloud เราต้องทำความเข้าใจความหมายของ resource และลำดับชั้นของ resource กันก่อน
Google Cloud Resource
การใช้งาน resource ต่างๆบน cloud service เราจะต้องทำความเข้าใจลำดับชั้นของ resource ซึ่งจะแบ่งออกเป็น
- Organization 1 account ขององค์กรในนี้สามารถมีได้หลาย application
- Folder เราสามารถแบ่งแยกการทำงานออกเป็นเรื่องๆ เช่น แยกตามแผนก หรือตามทีมพัฒนา ตามรูปด้านล่าง
- Project เป็น 1 application ซึ่งเกิดจาก resources ต่างๆภายใน project นี้ทำงานร่วมกัน
- Resources เป็นสิ่งที่สร้างขึ้นจาก services ของ google cloud เช่น เราสร้าง instance ขึ้นมาจาก google cloud compute เพื่อให้บริการ web server เราจะเรียก instance นี้ว่า resource
ข้อแนะนำ คือเราต้องแยก 1 project ต่อ 1 application และ 1 environment
นั่นหมายความว่า ถ้าเรามี 1 application แต่เรามี 3 environment(staging, pre-production, production) เราต้องสร้าง project ขึ้นมา 3 project
ราคา Google Cloud
การใช้งาน cloud service นั้นเราจะจ่ายตามปริมาณการใช้งานดังนั้น ถ้าเราจะประเมินค่าใช้จ่าย เราจะต้องเข้าไปที่ Google Cloud Calculator เพื่อประเมินค่าใช้จ่ายเบื้องต้น โดยเราจะเข้าไปที่ https://cloud.google.com/products/calculator
หลังจากนั้นกดปุ่ม Add to estimate เพื่อระบุ resource ที่เราต้องการใช้งาน
หลังจากนั้นระบุประเภทของ resource ที่เราต้องการสร้าง ในตัวอย่างนี้เราจะประเมินราคาของ google cloud compute
- จำนวน 1 instance
- ใช้ 730 ชั่วโมง/เดือน (เปิดตลอดทั้งวัน)
- 4 vCPUs และ Memory 15 GB
- Boot Disk ขนาด 20 GiB
ทั้งหมดจะใช้ค่าใช้จ่ายทั้งหมดประมาณ 4,919.39 บาท/เดือน
สำหรับ User ที่สมัครเข้าไปใช้งานครั้งแรกคุณจะได้ Free credit 300 usd หรือประมาณ 10,746.30 บาท แสดงว่าเราสามารถใช้งาน instance นี้ฟรีได้ประมาณ 2 เดือนกว่าๆ
Google Cloud Compute
เป็น service เริ่มต้นที่เรามักจสร้างขึ้นมาเป็นตัวแรกๆ ซึ่งเราจะสร้าง instance ขึ้นมาโดยที่ระบุ spec ต่างๆ ดังนี้
- CPU และ Memory ที่ต้องการใช้
- Operating System(OS) ซึ่งจะมีให้เลือกหลายตัวเลย เช่น Debian, CentOS,Ubuntu หรือจะเลือกแบบมี License เช่น Windows Server ซึ่งก็จะมีให้เลือกทั้งแบบที่นำ License ของเราเข้าไปติดตั้งเอง(Bring Your Own License) หรือจะให้ Google Cloud เป็นคนจัดการเรื่อง License ให้เรา
- Provision Model ซึ่งจะมีให้เลือก 2 แบบคือ
- Regular สร้าง VM ขึ้นมาใช้งานแบบปกติ ซึ่ง Google จะคอยดูแล infrastructure ของ instance แบบนี้ให้
- Spot เป็น instance ที่ราคาถูกกว่า regular แต่จะไม่มี availability นั่นคือ instance นี้อาจอยู่หรือไม่อยู่ก็ได้ เหมาะกับงานที่ใช้ทดสอบหรือ prove of concept(PoC)
- ขนาดของ Disk ที่ใช้ boot
ซึ่งนอกจากการสร้าง VM ขึ้นมาแล้ว Google Cloud ยัง support compute แบบอื่นๆ เช่น container หรือ serverless อีกด้วย
Google Cloud Storage
Cloud Storage เป็นส่วนที่ต้องมีใน solution ของเราแน่ๆ เพราะเราต้องจัดเก็บ data ซึ่ง cloud storage จะแบ่งออกเป็นกลุ่มใหญ่ๆ ดังนี้
Object Storage
Object Storage จะเป็นกลุ่มที่เก็บข้อมูลที่ไม่มีโครงสร้าง เป็นอะไรก็ได้ เราอาจเรียกว่า Blob Storage ส่วนใหญ่จะใช้เก็บไฟล์ต่างๆ เช่น รูปภาพของผู้ใช้งาน หรือ report ที่ generate ออกมาจากระบบ
ข้อดี ของ Object Storage คือรองรับข้อมูลขนาดใหญ่ แถมยังกำหนด tag เพื่อใช้ในการค้นหา หรือ meta data ของ storage เพื่อกำหนดรูปแบบการทำงาน รวมทั้งยังสามารถ access จากที่ไหนก็ได้
ข้อเสีย ของ Object Storage คือการอ่านเขียนข้อมูลที่จะช้ากว่า Block Storage หรือ File Storage
ใน Google Cloud จะมี service ประเภทนี้อยู่ตัวเดียวเลยคือ Google Cloud Storage
Block Storage
Block Storage จะแยกข้อมูลออกเป็น block เล็กๆ เพื่อความรวดเร็วในการดึงข้อมูล
Block Storage จะเหมาะกับงานที่ต้องการความเร็วเช่น Boot Disk ใน Virtual Machine หรือ Disk ที่ใช้กับ database
ใน Google Cloud มี services ให้เลือกหลายตัว ดังนี้
- Persistance Disk
- Local SSD
- Hyper Disk
File Storage
File Storage จะเป็นเหมือน File server ที่เราใช้จัดเก็บไฟล์ โดยจะเน้นที่การ share เช่นเราจะใช้ File store ในการเก็บข้อมูลก่อนเอาไปวิเคราะห์ใน Analytics Service หรือเก็บ ไฟล์รูปภาพที่ถูก resize แบบอัตโนมัติด้วย Cloud Functions
Services ต่างๆที่เราสามารถเลือกใช้งานใน Google Cloud มีดังนี้
- File Store
- Parallelstore
- Google Cloud NetApp Volumes
Google CloudDatabase
ไม่มี application ไหนไม่มี database ดังนั้น Goole Cloud จึงได้เตรียม database มาให้เราใช้งาน ซึ่ง database ในปัจจุบันได้แบ่งออกเป็น 2 ประเภทหลักๆคือ
Relational Database
เป็นฐานข้อมูลที่เหมาะกับข้อมูลที่มี transaction(เราสามารถ roll back กลับไปได้) และยังสามารถกำหนดรูปแบบของข้อมูล(Schema)ได้ database ประเภทนี้บน Google Cloud ได้แก่
- Cloud SQL
- Cloud Spanner
NoSQL
เป็นฐานข้อมูลที่นืยมนำมาใช้งานกับ data ที่ไม่ได้ต้องการ transaction เช่น product catalog หรือ shopping cart เป็นต้น ซึ่ง Google Cloud มี NoSQL database ให้เราเลือกใช้หลายตัว ดังนี้
-
Cloud Big Table สำหรับการจัดเก็บ data ขนาดใหญ่ เหมาะสำหรับทำ data anlytics ด้วย Big Query
-
Cloud Memory Store เป็น In-Memory database เหมาะสำหรับการทำ Caching
-
Cloud Firestore เป็น serverless document database หมายถึงเราไม่ต้องดูแล instance ด้านล่าง(Serverless) และมีการจัดเก็บข้อมูลในรูปแบบ document เหมือนกับ MongoDB
ซึ่ง Cloud Firestore จะเหมาะกับ project ที่เป็น Serverless เช่น Firebase หรือ Cloud Functions
-
Firebase Realtime Database เป็น Cloud database ที่ถูกนำไปใช้สร้าง application มากที่สุดเนื่องจากเป็น Serverless และมี SDK ให้เรานำไปพัฒนา Mobile Application ทั้งบน Android และ iOS หรือ Single Page Application ด้วย JavaScript ได้ง่าย
Identity and Access Management(IAM)
การทำงานกับ Cloud service เราจำเป็นต้องมี Identity and Access Management หรือ IAM มาช่วยกำหนดสิทธิให้กับ user ที่เข้ามาใช้งาน ทั้งแบบที่เป็นคน และ Service account(ระบบ) เช่น automated deployment tools หรือ monitoring tools
IAM จะระบุว่าใครสามารถเข้าถึง resources อะไรบ้าง ซึ่งสิ่งที่เราต้องรู้จักใน IAM มีดังนี้
- User ผู้ใช้งานทั้งคน และระบบ(service account)
- Group กลุ่มของผู้ใช้งาน เวลากำหนดสิทธิให้ทำใน Level นี้จะได้จัดการง่ายๆ
- Role สิทธิของการเข้าใช้งาน resource เช่น Storage Object Viewer จะมีสิทธิแค่ get หรือ list รายชื่อ folders และ objects ออกมาเท่านั้น ไม่สามารถเขียนข้อมูลลงไปได้
จากรูปจะเห็นว่าเรามี user ที่อาจมาจาก
- Google Account
- Service Accout
- Google Workspace account
- Google Group
และ user ต้องการเข้าถึง resource ซึ่ง user ที่ต้องการเข้ามานั้นจะถูก assign role ให้ ในตัวอย่างนี้เป็น compute.imageUser
compute.imageUser เป็นสิทธิในการอ่าน image ถ้าใครมี role เป็น compute.imageUser จะสามารถสร้าง instance หรือ persistance disk โดยใช้ image ที่อยู่ใน ortganization, folder หรือ project ได้
Google Cloud Network
ในการใช้งาน Cloud services เราจำเป็นต้องมีพื้นฐานในด้าน network เพราะเราต้องเป็นผู้กำหนดสิทธิหรือแบ่ง network ของเราออกเป็น segment ย่อยๆ ซึ่งบน Google Cloud จะมี Network services ให้เราต้องรู้ดจักมี ดังนี้
-
Virtual Private Cloud(VPC) เป็นการกำหนดกลุ่มของ network ซึ่งใน VPC จะใช้ IP range เดียวกัน ซึ่งเราสามารถแบ่ง network ออกเป็น subnet ย่อยๆได้
-
Subnet จะเป็น network ที่อยู่ภายใน VPC ซึ่งโดย default Google Cloud จะไม่ได้สร้าง subnet มาให้เรา เราจำเป็นต้องสร้าง subnets ขึ้นมาเอง ซึ่ง subnets มีอยู่ 2 ประเภทด้วยกันคือ
- Single Stack จะเป็น network ที่มีเฉพาะ IPv4 เท่านั้น
- Dual Stack จะเป็น network ที่มีทั้ง IPv4 และ IPv6
Auto mode IPv4 คือ ช่วงของ IPv4 ที่สร้างขึ้นมาโดย default ซึ่งจะอ้างอิงตาม region เราสามารถเข้าไปดูช่วยของ IPv4 ที่สร้างขึ้นมาโดย default ได้ที่ Subnet IP range
-
Cloud DNS เป็น Cloud service ที่ให้บริการ DNS ซึ่ง Cloud DNS จะมี features ต่างๆ ดังนี้
- Garantee availability 100%
- Auto scaling สามารถขยายตัวได้ตามจำนวน DNS records
- Domain management สามารถจัดการ domain ตั้งแต่ register, setup DNS zone และการต่ออายุ