ย้าย Blog ใหม่มาพร้อมท่ายาก

การย้ายรังครั้งใหม่ต้องใช้ท่ายาก

ส่วนตัวแล้วผมไม่ใช่คนที่ชอบเขียน blog เท่าไร จริงๆก็อยากเขียนแหละแต่ไม่ค่อยมีเวลาเขียนสักเท่าไร blog ก่อนทำไว้ที่ blogger รู้สึกไม่ตอบโจทย์สักเท่าไร www.neverlock.org ปัญหาของผมบน blogger คือ

  • รู้สึกยากต่อการเก็บblogเพื่อเอาไปย้ายที่ใหม่
  • อยากได้พวก syntax highlight แล้วรู้สึกต้องพยายามเหลือเกิน ปรับแต่งอะไรเยอะถ้าย้ายก็ยุ่งยากอีก
  • หลักๆคือไป blogger เหมือนจะดีแต่มันไม่จบเพราะ requirement ของเราเอง

พอลองกลับมาคิดดู “แล้วเราต้องการอะไร?”

  • ไม่อยาก host เอง
  • เนื่องจากไม่อยาก host เองก็อยากได้ของราคาถูกๆ หรือฟรีก็ได้
  • อยากย้ายที่ได้ง่ายๆโครงสร้างของ blog ต้องพร้อมหนีจากจุดๆนี้ได้เสมอ
  • ปรับแต่งได้ง่ายๆเปลี่ยน theme ได้ง่ายๆ
  • analytics ได้ adsense ได้
  • syntax hightlight ได้

เลือก วิธีการ Blog

หาวิธีอยู่นานมากเนื่องจากเป็นคนที่ requirement ค่อนข้างเยอะในที่สุดก็มาลงตัวกับ Hugo

Hugo มันคืออะไรหละ Hugo คือ program สำหรับสร้าง static web โดยที่ source ของเว็บเราเขียนเป็น markdown language (เหมือน file Readme.md ใน github หนะแหละ) บางคนบอกทำไมไม่ใข้ wp ทำหละ ก็ไม่อยาก host เองไง แล้ว Medium หละ อยากย้ายง่ายๆ ไง (ตั้ง requirement ไว้ก่อน ใช้ไม่ใช้ว่ากันอีกที)

เลือก Host

ได้แนวทางในการเขียน blog มาแล้วมาเลือก Host กันว่าจะเอาไปไว้ไหนดี

  • Digitalocean 5$/m
    • คนใช้เยอะ
    • ได้ RAM น้อยไปหน่อย
    • ใกล้สุด SG
  • Vultr 5$/m
    • คล้ายๆ DO แต่ให้ RAM เยอะกว่า
    • มี ตัวที่เป็น Storage แบบ Disk ธรรมดาเอาไว้เก็บข้อมูลได้ 150GB ในราคา 5$ (ใช้อยู่ 2 อันขอบอก ดีย์)
  • Scaleaway น้อยกว่า 5$/m ถ้าเป็น ARM
    • ถูกสุด (จำราคาไม่ค่อยได้เท่าไร) แต่ต้องได้บอร์ด ARM
  • cloud ในไทย
    • เลิกคิด เพราะแพงทุกเจ้า

ทั้งหมดที่กล่าวมาไม่เลือก เพราะเสียค่ารายเดือนที่ผมถือว่าแพงสำหรับ blog เล็กๆของผม แล้วจะเลือกอะไรดีหละ

S3 Static website hosting คือคำตอบ ทำไมผมเลือก S3

  • ถูกถ้าคิดเทียบเงินที่เสียไปกับระยะเวลาที่ใช้งาน
    • S3 SG zone คิดค่าใช้จ่ายดังนี้ First 50 TB / Month $0.025 per GB static web มีขนาดเล็กมากถ้ารูปไม่เยอะ blog เป็นปีทุกวันก็ไม่ถึง 500MB
  • update blog ก็ง่าย
hugo -v --source=./my-src-web --destination=./my-static-web
cd my-static-web
aws s3 sync . s3://my-static-web-bucket/

แต่ ผมยังไม่พอใจแค่นี้เพราะผมเป็นพวกขี้เกียจ ขี้เกียจ gen แล้ว copy ข้อมูลขึ้น S3 และวางแผนว่าจะเก็บ source ของ blog ไว้ที่ github อยู่แล้ว เพราะกลัวหายเครื่องที่ใช้ๆอยู่ไม่รู้จะพังวันไหนต้องเก็บไว้ในที่ที่ไว้ใจได้หน่อย ศึกษาหาวิธีการอยู่นาน ในที่สุดก็ได้ท่ายากออกมาดังนี้

test img

อธิบายท่ายากกันหน่อย

คร่าวๆการทำงานจะเป็นประมาณนี้

  • github update จาก git push จะส่งสัญญาณไปบอก SNS
  • SNS จะไปสั่งให้ Lambda Function ทำงาน
  • Lambda Function โหลด src web จาก git มาแล้วสั่ง hugo gen static web แล้ว copy ไปไว้ใน S3 bucket
  • CloudFront Distribution ทำหน้าที่เป็น CDN cache data จาก S3
  • Route53 route DNS ที่เราตั้งไว้เข้าหา CloudFront ที่ชี้ไปหา S3 อีกที

เดี๋ยว blog หน้าจะมาอธิบายวิธีการ set ระบบทั้งหด