Why Varnish Cache

User <-------> Varnish <-------> Web Server <--------> DB

วันนี้ ผมมีโอกาสมาพูดถึง เจ้า Varnish อีกครั้ง ว่าทำไม มันถึงน่าสนใจ มันมีอะไรดี
แล้วมันช่วยอะไรกับระบบเว็บขนาดใหญ่ ที่มีคนเข้าจำนวนมากได้ ..
โดยเฉพาะถ้าเว็บคุณเป็น content พวก static ยิ่งดีเลย เพราะว่า varnish สามารถ
caching ตรงส่วนนี้ได้หมด บน memory ทำให้ เครื่อง web server และ DB เอง
แทบไม่ต้องทำงานอะไรเลย แต่ถ้าเป็นพวก dynamic ตัว varnish เอง ก็ช่วยได้เหมือนกัน
มาดูรายละเอียดกันครับ ว่าทำไมต้อง varnish ??

– เพราะเป็น Open Source ที่มีคุณภาพ ทำไมต้องไปใช้ BlueCoat ที่มีราคาแพงด้วย
ทั้งๆ ที่ Varnish ดีกว่ามากๆๆๆๆๆๆๆๆๆ ถ้าคุณใช้มันเป็น 🙂

– Varnish Configuration Language (VCL) ซึ่งเป็นการเขียน config แบบเข้าใจได้ง่าย
เป็นโครงสร้างที่คล้ายๆ ภาษา C ทำให้เราสามารถ เขียน VCL ให้ทำงานต่างๆ ได้ละเอียด
ตามที่เราต้องการ และใช้การ compile เพียงครั้งเดียว ทำให้ การทำงานทำได้อย่างดี เร็ว
และมีประสิทธิภาพมากๆ

– Varnish เก็บ cache ต่างๆ บน memory ด้วยโครงสร้างที่ดี ทำให้ lookup ได้เร็วมาก
เวลาต้องการเรียกใช้งาน cache ที่ต้องการ โดยแทบจะไม่ทำให้ เครื่อง เกิด i/o load เลย

– Varnish สามารถทำเป็น Load Balance ได้

– Purge URL ที่ต้องการไม่ให้ cache ได้ โดยใช้คำสั่งเข้าใจง่ายๆ สามารถใช้ PHP
เขียนติดต่อ ที่ T port เพื่อทำการ purge URL ทำให้เว็บ มีประสิทธิภาพมาก เพราะว่า
ในกรณีนี้ เราจะสามารถ เขียน VCL ให้ cache URL ทั้งหมด ของระบบได้ ทำให้
Web Server และ DB Server แทบไม่ต้องทำงานเลย แต่ถ้าเวลามีการ update ต่างๆ
เราก็สามารถส่ง URL ที่ต้องการ มา purge ได้ 🙂

ที่เล่ามาก็เป็นส่วนหนึ่งที่ทำไมผมคิดว่า Varnish เหมาะที่จะมาช่วยทำให้ระบบเว็บขนาดใหญ่
สามารถทำงานได้ดีขึ้น มีประสิทธิภาพสูงขึ้น และประหยัดค่าใช้จ่ายในการซื้อ Software
และ Hardware ที่ไม่จำเป็น เป็นการช่วยลดโลกร้อน ที่เป็นปัญหาให้เกิดน้ำท่วมได้ 🙂