https://aws.amazon.com/s3

มาถึงช่วงชีวิตนึงคนเราก็จะเริ่มวาดฝันอยากจะมีบ้านเป็นของตัวเอง ซึ่งเป็นของที่ได้มาง่ายๆซะที่ไหนคนเราเลยมาสร้าง homepage กันแทนครับถึงแม้จะรู้ว่าไม่มีใครอยากเข้าก็ตามแต่ก็อยากพูดว่ามี homepage ที่แน่ๆ ต้องมีชื่อ domain ของตัวเอง .com จะหล่อทั้งทีต้องเอาให้สุด

อาจจะทำให้นึกถึงบริการ Web hosting + domain name registrar ดังๆเช่น hostgator.com, godaddy.com หรือของไทยก็น่าจะมีไม่ได้เซิจดู พอดีใช้ HostGator มาก่อน ขอเอาอันนั้นมาเทียบ

แปลงเป็นเงินไทย สร้างเว็บโง่ๆไว้เป็นของตัวเอง ปกติเสียปีละประมาณ 2000 บาท

Plan ปกติ ราคาเดือนละ 11.95$ แต่ซื้อแรกเริ่มได้ลดราคาถึงครึ่ง แต่ต้องทนอยู่กับมัน 3 ปี อะต่อให้เลยก็ได้ให้ใช้ราคาลดแล้ว เหลือเดือนละ 3.63$

ส่วน domain ก็ 13$ ต่อปี รวมแล้วเป็นปีละ (3.63*12) + 13 = 56.56$ = 2000 บาท แปลงเป็นเงินไทย สร้างเว็บโง่ๆไว้เป็นของตัวเอง เสียปีละประมาณ 2000 บาท (นี่ลดแบบ กระหน่ำสุดๆแล้ว)

พูดถึง Amazon Web Service (AWS) หลายๆคนอาจจะคิดถึงบริการเช่าใช้ computer บน cloud ระดับ professional ขั้นสูง สำหรับเอามาสร้างธุรกิจ! ซึ่งก็จริง บริการอันมากมายที่อาจจะทำให้มือใหม่กลัว มันแบ่งไว้ให้สามารถเลือกมาถอดประกอบเป็นอะไรก็ได้ที่เราอยากได้ ซึ่ง Web Hosting ก็ไม่เว้นครับ

ใครรู้จัก Amazon EC2 มาก่อน ก็คงคิดว่าต้องใช้ EC2 คือ เหมือนซื้อคอมกับ Amazon เลยแต่ไม่ได้ตั้งอยู่บ้านเรา เปิดปิด ลง OS ลงโปรแกรมอะไรตามสบาย ก็ใช้เป็นเซิฟโฮสต์เว็บได้ครับ แต่มีดีกว่านั้นคือคอมโบ Amazon S3 + Amazon Route 53 เหมาะสำหรับคนชอบ DIY (คือไม่ได้บอกซักนิดเลยนะ ว่า AWS นี่มันง่าย จริงๆคือระดับ hardcore ด้วยซ้ำ 555) และคนที่คิดจะใช้บริการอื่นของ AWS ด้วยยิ่งดี

Amazon S3 (Simple Storage Service)

เป็นประมาณ Harddisk เอนกประสงค์บนเน็ต แต่ไม่ถึงขั้นเป็นคอมเลย ใช้เก็บไฟล์ได้ หรือเป็นแหล่งไฟล์ให้ EC2 ก็ได้นะ แต่ทีเด็ด ซีเคร็ตของมันคือ มันสามารถ Host เว็บไซต์ static ด้วยตัวเองได้ (ถ้าต้องการทำเว็บที่ต้องใช้ server side script อย่าง PHP ก็คงต้องเปิด EC2 นะ หัวเรื่องก็บอกอยู่ว่าเว็บโง่ๆ) คอนเซ็ปต์คือสร้าง “Bucket” ไว้เก็บไฟล์ (ชื่อห้ามซ้ำกับซักคนในโลก)

ข้อดีของ S3 Bucket คือตอนสร้างสามารถเลือกที่อยู่ได้จาก datacenter ของ Amazon ทั่วโลก ถ้าทำเว็บให้คนไทยใช้บ่อยๆก็อาจจะเลือก Singapore ก็ใกล้ดี ส่วนผมเลือก Tokyo เพราะเดี๋ยวจะทำเป็นเว็บเกมให้คนญี่ปุ่นมาดูด้วย อะไรงี้ก็ดีกว่า hosting ทั่วไปที่ไม่รู้ว่าเขาจะเอาเว็บเราไปไว้ไหน ดีไม่ดีมีที่เดียวที่แสนจะไกลจากกลุ่มเป้าหมายเราทำให้ช้า

แล้วไฟล์ใน Bucket นี้ถ้ามี index.html ก็ใช้ bucket เป็นเว็บได้เลยครับ เพราะทุก bucket จะได้ HTML endpoint มาฟรีๆ 1 อัน

ซึ่ง HTML endpoint นี่ก็หน้าตาโง่ๆประมาณนี้ exceed7.com.s3-website-ap-northeast-1.amazonaws.com จะเห็นว่ากดเข้าไปแล้วเข้าเว็บได้จริง (exceed7.com นั่นคือชื่อ bucket ถามว่าทำไมตั้งชื่อยังกับเว็บแบบนี้ตั้งแบบอื่นได้มั้ย มันเป็นกฏครับ จะบอกทีหลัง) จะเห็นว่ามาถึงแค่ขั้นนี้เราก็มีเว็บส่วนตัวแล้ว ไม่ต้องเช่าคอมซักเครื่อง

แต่ชื่อยาวๆแบบนี้ก็ไม่หล่อ เราสามารถใช้บริการ Amazon อีกตัวคือ Amazon Route 53 ในการทำสามอย่างคือ : เป็น Domain name registrar + เป็น DNS บอกว่าชื่อนี้ต้องมาที่นี่ + เป็นตัวตอบว่าหลังจากตามชื่อมาเจอที่นี่แล้ว วิ่งไปที่ S3 Bucket

Amazon Route 53

คือในวงการ HTML เว็บมันเปิดที่ port เบอร์ 53 มันเลยตั้งชื่อแบบนี้

ตัวนี้เป็น DNS ได้แล้วยังสามารถจดทะเบียนชื่อ domain ใหม่ให้เราได้ในตัวด้วย แถมราคาไม่แพง เช่น .com ราคา 12$ แล้วก็มี . อื่นๆที่เพิ่มมาใหม่เช่น .ninja .moe ฯลฯ

ถ้ามี domain อยู่กับเจ้าอื่นแล้วก็ใช้แต่ DNS ได้ครับ แค่ไปเปลี่ยน Name server ที่เจ้าอื่นมาที่ NS ที่ Route 53 มันจะเสกให้เรา ซึ่งศัพท์แสงของมันคือ “Hosted Zone” หนึ่งอันมีให้ 4 name server เลยทีเดียว ถ้าซื้อ domain กับ Amazon มันจะสร้าง Hosted Zone ให้พร้อมจับคู่ให้เราแล้ว

เชื่อม S3 เข้ากับ Route 53 ยังไง

หลังจากชื่อเว็บเราวิ่งมาที่ DNS (Route 53) ได้แล้ว ก็ถึงเวลาที่ Route 53 จะตอบว่าให้ไปไหนด้วย A Record ส่วนมากนี่จะต้องเป็น IP Address ครับ แต่ Amazon ได้สร้างคอมโบไว้ให้เราใช้ คือเลือก A Record ให้ชี้ไปที่ Bucket ได้ แล้วเดี๋ยวมันคงจัดการเรื่อง IP ให้เราเอง

แต่มีกฏที่ Amazon ตั้งไว้คือชื่อ bucket ต้องตรงกับชื่อ domain ครับ หมายความว่าโฮสต์เว็บกับ AWS วิธีนี้ ถ้าใครซักคนในโลกเอาชื่อ bucket ไปแล้วก็อดนะครับ (แม้ว่าเราจะมี domain name แล้วก็ตาม) มันจะไม่ขึ้นในรายการให้เลือกแบบที่เห็นในภาพเลยด้วยซ้ำ มันเป็นกฏของ AWS ครับ ดังนั้นก่อนจะฝันหวานควรมาลองสร้าง bucket ก่อนว่าซ้ำมั้ย (ไม่น่าจะซ้ำนะเอาจริงๆ)

ในภาพจะเห็นว่ามี A Record ของ www.5argon.info อีกอัน อันนั้นก็คู่กับ bucket ชื่อ www.5argon.info (คนละอันกับ bucket 5argon.info) อันนี้ทำไว้รองรับคนที่อยากจะพิมพ์ www. ต่อหน้า ซึ่งพอวิ่งไปถึง bucket แล้ว สามารถให้ redirect ไปที่ bucket ที่ไม่มี www. ต่อหน้าได้ครับ (ข้างในก็ทิ้งเป็นว่างๆไว้ได้เลย)

เท่านี้ รออีกซักวันให้ propagate ก็เรียบร้อย

ค่าใช้จ่ายล่ะ

สไตล์ AWS คือ You pay what you use มันจะคิดละเอียดมาก ไม่ใช่เหมาจ่ายรายเดือนแบบระดับ consumer อย่าง HostGator แต่เป็นระดับคนเข้ามาทีก็เสียเงินที แต่เพราะแบบนี้ เว็บโง่ๆ คนเข้าก็แทบไม่มี ถึงได้ราคาที่ถูกมาก

ก่อนอื่นก็ S3

ค่าเก็บของก็จะหนักอยู่

สมมติเว็บเราประมาณ 5 GB… ต่อให้เป็น 10 GB เลยก็ได้ ก็เสีย 10 * 0.03 * 12 = 3.6$ = 127.26 บาทต่อปี

ต่อมามีค่าใช้จ่ายทุกครั้งที่ใช้ไฟล์ใน bucket หรือก็คือทุกครั้งที่คนเข้าเว็บนั่นแหละ

จะเห็นว่า GET ที่น่าจะโดนบ่อยๆเสียแค่ 0.004$ ต่อ 1 หมื่น request ซึ่งเว็บโง่ๆนี่มีคนเข้าถึง 100 คนต่อเดือน คนนึง GET ซัก 100 ครั้งก็บุญแล้ว ราคา 0.004$*12 นี่ก็แค่ 1.68 บาทต่อปี ส่วน data transfer นี่ก็ตัวหนัก ต่อให้ประมาณ 5 GB ต่อเดือนเลยเอ้า (แบบว่า เปิดโฮมเพจโชว์ผลงานอาร์ทอะไรงี้ เยอะหน่อย) ก็เสีย 0.12$ * 5* 12 = 7.2$ = 254.52 บาทต่อปี

รวมของ S3 ก็ได้ประมาณ 127.26 + 1.68 + 254.52 = 383.46 บาทต่อปี

แล้วจริงๆของทุกชิ้นใน S3 นี่ยังมีท่าลับอีกคือ IA!

ซึ่งจริงๆแล้วไม่ใช้โปรแกรมที่เห็นแต่เป็น Infrequent Access สามารถ mark ไฟล์ว่ายอมให้ช้าลง แลกกับราคาที่ถูกลงได้ เอาไว้สำหรับไฟล์ที่คนไม่ค่อยมาใช้อย่างเช่น download CV portfolio ในโฮมเพจ ที่แปะไว้เท่าไหร่ก็ไม่มีใครมาสนใจจ้างงานซักที ลดได้จาก 0.03$/GB/mo เหลือ 0.02$ ถ้าคิดว่าเว็บตัวเองโง่ทั้งเว็บก็ใช้ IA กับทุกไฟล์ 127.26 -> 84.84 บาทได้เลย แต่คิดราคานี้ต่อให้ ไม่ใช้ IA ก็ได้

ทีนี้ค่า Route 53

ง่ายๆก็ เว็บละ 0.5$ * 12 = 6$ = 212.1 บาทต่อปีครับ ส่วนค่า Query นี่มันระดับ 10 กว่าบาทต่อ 1 ล้าน Query ขอไม่คิดก็แล้วกันมันน้อยมากสำหรับเว็บโง่ๆ

แล้วก็ค่า .com ก็ 12$ ต่อปี (424 บาท) อันนี้ของ AWS แพงจริงครับ! ถ้าเป็นไปได้หาของไทยที่ปีละ 200–320 บาทก็จะดี ถ้าหาได้ ก็เป็น 320 บาท -> 212.1 + 320 = 532.1 บาท

รวมแล้ว

S3 + Route 53 383.46 + 532.1= 915.56 บาทต่อปี เท่านั้น! เทียบกับของ HostGator ที่ต่อให้ลดราคาแล้ว ปีละ 2000 บาท มันช่างต่างกันเกือบ 2 เท่า!

แล้วนี่จริงๆยังมีต่อให้อีกอย่างนึง คือ AWS ถ้าเพิ่งสมัครใหม่จะได้ buff เทพ 1 ปี เช่น S3 เก็บได้ 5GB ฟรีๆ แถมส่งข้อมูล 15GB ฟรีทุกเดือนเป็นเวลา 1 ปี เท่ากับว่าปีแรกนี่ตัดค่า S3 ทิ้งออกไปเลยยังได้ (Route 53 ไม่มีของฟรี) เหลือปีแรก 532.1 บาทเท่านั้น (ของ HostGator 2000 บาทต่อปีนั้น อย่าลืมว่าจริงๆแล้วนั่นเป็นราคา 3 ปีแรก ต่อจากนั้นแพงกว่านี้อีก)

แล้วอย่าลืมว่า S3 เราเลือกที่ตั้งทางภูมิศาสตร์ให้เว็บเราได้อีกด้วย พร้อมทั้งอัพโหลดไฟล์ขึ้น bucket ง่ายดายผ่าน AWS CLI ทำเว็บบนเครื่องเสร็จแล้วอัพขึ้น bucket ง่ายแค่นี้เองนะ มันฉลาดอัพแค่อันที่เปลี่ยนจริงๆอีกต่างหาก หรือยกเว้นบางโฟลเดอร์ก็ได้ ง่ายกว่า FTP ไปโยนไฟล์อีก

aws s3 sync ./5argonWebsite s3://5argon.info --exclude "./5argonWebsite/NotRelated/*"

ข้อเสีย (ซึ่งเป็นข้อดีด้วย) ของ AWS คือ You pay for what you actually used นี่แหละ สมมติเว็บเราเกิดฮิตขึ้นมาสุดๆ ราคาก็จะแพงขึ้นด้วยครับไม่เหมือนพวกเหมาจ่าย แต่คิดว่ายังไงเว็บโง่ๆก็ไม่มีทางฮิตจนต้องเสียเกินปีละ 2000 บาท ทำเว็บโง่ๆแล้วไปเช่าที่อื่นมีแต่จะโดนเขาหลอกฟันเงินไปวันๆ

ถูกกว่า Hosting ของไทยจริงหรือ

ใครทำเว็บสำหรับคนไทยที่คิดว่า HostGator แพงไป อาจจะมี solution ของไทยที่ถูกกว่านี้ก็ได้ เท่าที่เซิจมาก็ไม่ค่อยถูก (แต่ค่า domain .com ค่อนข้างถูกกว่า) อันนี้ plan แรกโผล่มา 1500 + 200 domain name = 1700 แล้ว เทียบกับ AWS ที่แค่ 900 กว่าบาท

อันนี้ของ P&T Hosting ถูกจริง สามารถทำให้ถูกกว่า AWS ได้

แต่มีจำกัดจำนวนพื้นที่, domain กับ bandwidth อันนี้แล้วแต่คนว่าเว็บโง่ๆนี่จะโชว์อะไร แต่เว็บส่วนตัวที่ทำตอนนี้ก็ 500 MB กว่าๆแล้วเพราะมีโชว์ภาพแถมเปิดให้โหลด wallpaper ฟรีด้วย ซึ่งถ้าแพคเกจที่ให้พื้นที่พอ ก็เสียไป 1150 บาทแล้วซึ่งมากกว่าที่คำนวณมาให้ (ยังไม่รวม domain name 1 อันอีก 300 กว่าบาท) ถึงจะทำเว็บเล็กก็ตาม แต่ก็จำกัด 1 domain อยากทำอะไรเพิ่มก็คงต้องคิดหนัก แถมยังไม่รวมค่าโดเมน ข้อดีที่ใช้ง่ายแน่นอนไม่ hardcore เหมือน AWS

ถ้าเว็บเล็กจัดจริงแล้วร้างมาก ตัดค่า S3 ออกหมดเลยก็เหลือ 532.1 บาทของ Route 53 (รวมค่า domain แล้ว) จะแพ้ 99 บาทของ P&T + 300 บาท .com domain = 399 บาท แพ้ประมาณ​ 100 กว่าบาทนะ ดีที่ว่าคนเข้าเยอะขึ้นมาก็แค่จ่ายเพิ่ม ไม่โดนล๊อค package เหมือนถ้าตัดสินใจเลือกเลยแบบนี้ แต่ก็จะกลายเป็นแพงกว่าหน่อย (และอย่าลืมว่า 99 บาทที่ว่ามีที่ 30 MB แล้วคนโหลดอะไรได้แค่ 250MB ต่อเดือน)

แล้ว Digital Ocean ซึ่งก็ flexible เหมือนกันล่ะ

อันนี้ไม่เคยใช้ครับแต่น่าจะเป็นแบบเปิดคอมใหม่เหมือน EC2 สามารถทำ server-side อะไรได้เต็มที่ ไม่รู้แพงกว่า AWS มั้ย แต่เป็นเหมาจ่ายเหมือนกัน ไม่รู้มีบริการอื่นที่เอาไว้โฮสต์ static web ได้โดยไม่ต้องเปิด instance แบบ S3 รึเปล่า

ใช้ AWS มีข้อดีอีกหลายอย่างเช่น

  1. มัน scale ได้ไม่จำกัด ตามกระเป๋าตังเรา เพิ่มโดเมน เพิ่มอะไรก็ตามแต่เราจะทำเองเลยไม่มี lock package เวลาไปจ่ายกับที่อื่น ถ้ารู้สึกเหมือน package ไหนก็ไม่ fit กับเว็บเราซะที เกินนิดหน่อยก็ต้องเลื่อนไปอันแพง (นั่นแหละวิธีหาเงินของเขา) ก็ควรมาลอง AWS
  2. ใช้ท่าอื่นของ AWS ปรับแต่งต่อไปได้ เช่น เสกให้เว็บเราไปโผล่ที่ทั่วโลกได้ด้วย CloudFront
  3. คลิก clone bucket ให้ backup ลง AWS Glacier ได้
  4. อยากใช้ Database ขึ้นมาก็มี AWS DynamoDB ให้ใช้
  5. ส่วน reliability ของ AWS ก็สูงมาก 99.999999999% (คือเขา clone ไฟล์ S3 ทุกไฟล์ของเราไว้หลายที่มาก เก็บไฟล์ไว้ 10000 ชิ้นใน S3 ประมาณ​ 10 ล้านปีจะหาย 1 ไฟล์)
  6. อยากเขียน Web app (Node.js เป็นต้น) ต่อขึ้นมา ก็มีบริการอื่นเช่น AWS ElasticBeanstalk อัพโหลดเว็บแอพขึ้นออนไลน์ได้ทันที
  7. พอมาทำอะไรแบบนี้ที่ต้องประกอบเอง มันเสริมความเข้าใจดีครับ (โดยเฉพาะเรื่อง Name server ผมได้ AWS สอนพอสมควร)
  8. ความเชี่ยวชาญใน AWS ซึ่งเป็นสิ่งที่ค่อนข้างฮิต ผมคิดว่าเป็นสกิลติดตัวที่ดีครับ อาจจะทำให้ได้งานในอนาคตก็ได้นะ
  9. รู้สึกโดน lock-in น้อยกว่า คือไม่กลัวมันปิดหนีเท่าไหร่นั่นแหละ แล้วก็ไม่กลัวมันเล่นแผนแปลกๆหรือมาเสนอขายบริการเพิ่มเติมกับเรา (HostGator ที่เคยอยู่ มาขาย domain privacy บ้างล่ะ ขาย theme บ้างล่ะ)

บทความนี้มาบอกความเป็นไปได้ของการใช้ AWS โฮสต์เว็บโง่ๆเฉยๆ ส่วน step by step เชิญบทความนี้เลย

http://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html