Coding Gun

รู้จักกับ 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 มีให้บริการและเราต้องรู้จักไว้มีดังนี้

  1. Compute
  2. Storage
  3. database
  4. Identity and Access Management(IAM)
  5. network

สิ่งที่เราสร้างขึ้นมาบน Cloud เราจะเรียกว่า resource ดังนั้นก่อนที่จะเข้าไปทำความรู้จักกับ google cloud เราต้องทำความเข้าใจความหมายของ resource และลำดับชั้นของ resource กันก่อน

Google Cloud Resource

การใช้งาน resource ต่างๆบน cloud service เราจะต้องทำความเข้าใจลำดับชั้นของ resource ซึ่งจะแบ่งออกเป็น

  1. Organization 1 account ขององค์กรในนี้สามารถมีได้หลาย application
  2. Folder เราสามารถแบ่งแยกการทำงานออกเป็นเรื่องๆ เช่น แยกตามแผนก หรือตามทีมพัฒนา ตามรูปด้านล่าง
  3. Project เป็น 1 application ซึ่งเกิดจาก resources ต่างๆภายใน project นี้ทำงานร่วมกัน
  4. Resources เป็นสิ่งที่สร้างขึ้นจาก services ของ google cloud เช่น เราสร้าง instance ขึ้นมาจาก google cloud compute เพื่อให้บริการ web server เราจะเรียก instance นี้ว่า resource

Google resource hierarchy
Google Cloud Resource Hierarchy

ข้อแนะนำ คือเราต้องแยก 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

Google cloud pricing calculator
https://cloud.google.com/products/calculator

หลังจากนั้นกดปุ่ม Add to estimate เพื่อระบุ resource ที่เราต้องการใช้งาน

Add google cloud resource to estimate price
เพิ่ม google cloud resource เข้าไปเพื่อประเมินราคา

หลังจากนั้นระบุประเภทของ resource ที่เราต้องการสร้าง ในตัวอย่างนี้เราจะประเมินราคาของ google cloud compute

ทั้งหมดจะใช้ค่าใช้จ่ายทั้งหมดประมาณ 4,919.39 บาท/เดือน

Google cloud resource configuration
เราสามารถเปลี่ยนสกุลเงินที่เราต้องจ่ายได้ที่มุมขวาบนของ calculator

สำหรับ User ที่สมัครเข้าไปใช้งานครั้งแรกคุณจะได้ Free credit 300 usd หรือประมาณ 10,746.30 บาท แสดงว่าเราสามารถใช้งาน instance นี้ฟรีได้ประมาณ 2 เดือนกว่าๆ

Google Cloud Compute

เป็น service เริ่มต้นที่เรามักจสร้างขึ้นมาเป็นตัวแรกๆ ซึ่งเราจะสร้าง instance ขึ้นมาโดยที่ระบุ spec ต่างๆ ดังนี้

ซึ่งนอกจากการสร้าง 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 ให้เลือกหลายตัว ดังนี้

File Storage

File Storage จะเป็นเหมือน File server ที่เราใช้จัดเก็บไฟล์ โดยจะเน้นที่การ share เช่นเราจะใช้ File store ในการเก็บข้อมูลก่อนเอาไปวิเคราะห์ใน Analytics Service หรือเก็บ ไฟล์รูปภาพที่ถูก resize แบบอัตโนมัติด้วย Cloud Functions

Services ต่างๆที่เราสามารถเลือกใช้งานใน Google Cloud มีดังนี้

Google CloudDatabase

ไม่มี application ไหนไม่มี database ดังนั้น Goole Cloud จึงได้เตรียม database มาให้เราใช้งาน ซึ่ง database ในปัจจุบันได้แบ่งออกเป็น 2 ประเภทหลักๆคือ

Relational Database

เป็นฐานข้อมูลที่เหมาะกับข้อมูลที่มี transaction(เราสามารถ roll back กลับไปได้) และยังสามารถกำหนดรูปแบบของข้อมูล(Schema)ได้ database ประเภทนี้บน Google Cloud ได้แก่

NoSQL

เป็นฐานข้อมูลที่นืยมนำมาใช้งานกับ data ที่ไม่ได้ต้องการ transaction เช่น product catalog หรือ shopping cart เป็นต้น ซึ่ง Google Cloud มี NoSQL database ให้เราเลือกใช้หลายตัว ดังนี้

Identity and Access Management(IAM)

การทำงานกับ Cloud service เราจำเป็นต้องมี Identity and Access Management หรือ IAM มาช่วยกำหนดสิทธิให้กับ user ที่เข้ามาใช้งาน ทั้งแบบที่เป็นคน และ Service account(ระบบ) เช่น automated deployment tools หรือ monitoring tools

IAM จะระบุว่าใครสามารถเข้าถึง resources อะไรบ้าง ซึ่งสิ่งที่เราต้องรู้จักใน IAM มีดังนี้

Google Cloud IAM policies
Google Identity and Acess Manamgement(IAM)

จากรูปจะเห็นว่าเรามี user ที่อาจมาจาก

และ 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 ให้เราต้องรู้ดจักมี ดังนี้

  1. Virtual Private Cloud(VPC) เป็นการกำหนดกลุ่มของ network ซึ่งใน VPC จะใช้ IP range เดียวกัน ซึ่งเราสามารถแบ่ง network ออกเป็น subnet ย่อยๆได้

  2. 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

  3. Cloud DNS เป็น Cloud service ที่ให้บริการ DNS ซึ่ง Cloud DNS จะมี features ต่างๆ ดังนี้

    • Garantee availability 100%
    • Auto scaling สามารถขยายตัวได้ตามจำนวน DNS records
    • Domain management สามารถจัดการ domain ตั้งแต่ register, setup DNS zone และการต่ออายุ

อ่านต่อเพิ่มเติมได้ที่

Phanupong Permpimol
Follow me

Software Engineer ที่เชื่อในเรื่องของ Process เพราะเมื่อ Process ดี Product ก็จะดีตาม ปัจจุบันเป็นอาจารย์และที่ปรึกษาด้านการออกแบบและพัฒนา Software และ Web Security