หางานครับ ใครมีมาจ้างได้นะ ราคากันเองครับ

ตอนนี้ ผมรับงานนอกนะครับ ระดมทุน สร้างโรงงาน ใครมีงานมาจ้างได้
งานที่รับ มีดังต่อไปนี้ครับ

– ดูระบบ, setup server, วาง infra
– Setup OpenStack, AWS, Google Cloud, Alibaba Cloud
– Tuning, Load Test, Penetration Test (Security Test)
– ทำ ChatBot, Machine Learning, ทำเว็บ e-Commerce
– IG Print งานแต่ง งาน events ต่างๆ
– Photo Booth
– IoT Development
– Bulk SMS
– SEO

ใครมีงานรายละเอียดประมาณนี้ มาจ้างได้ครับ
Line ID: pornpasok

highscalability

ผมอยากพูดถึงเรื่องการออกแบบ Web Infrastructure ซึ่งเป็นเรื่องที่ผมคิดว่าเป็น skills
ที่ผมถนัดที่สุด ไว้ให้เพื่อนๆ ได้ลองเอาไปวิเคราะห์ พิจารณา เผื่อจะเป็นประโยชน์บ้างครับ
เรื่องพวกนี้ ผมเคยเขียนไว้ ในหลายๆ ตอน ของ blog ผม ซึ่งบางทีลงรายละเอียด
ไว้มากไป ใน post นี้ ผมจะขอพูดถึง concept หลักๆ ที่สำคัญมากๆ ละกันครับ ..

1.Value คือต้องคุ้มค่า สมราคา อะไรที่แพงๆ ผมจะไม่ใช้ เน้นใช้ของให้คุ้ม อย่าไปเน้นของแพง
2.Performance คือประสิทธิภาพต้องสูง เข้าถึงได้เร็ว ช้านิดเดียวไม่ได้ ต้องคำนึงถึง user ที่ใช้งาน
3.Security คือต้องปลอดภัย เราให้บริการคนอื่นแบบ public จะพลาดนิดเดียวก็ไม่ได้
4.Simple คือต้องง่าย ไม่ซับซ้อน สามารถ track ปัญหาได้ง่าย
5.Scalability คือต้องขยายระบบได้ตลอดเวลา และขยายได้ง่าย

หลักๆ เน้นคำนึง ถึงเรื่องพวกนี้ให้มากๆ ครับ เท่าที่ผมเห็นในไทย ส่วนใหญ่
ยังไม่เคยเจอของหนักๆ จริงๆ กัน มักจะเน้นอุปกรณ์ เน้นว่าต้องมี Firewall
เน้นต้องมี หลายๆ tier (hop) ทำให้เวลา track ปัญหา กลับทำให้ยากขึ้น ..

ใครสนใจ เกี่ยวกับเรื่องพวกนี้ แนะนำเข้าเว็บนี้บ่อยๆ ครับ 🙂
URL: http://highscalability.com

High Performance Web Infrastructure

วันนี้ผมมีเวลาว่าง เลยอยากจะเขียนเล่าเรื่องการออกแบบ
Web Infrastructure ให้รองรับ load สูงๆ ได้ ว่าทำแบบไหนดี
โจทย์ของผมคือเป็น web สำหรับ booking ที่จะมีคนเข้าใช้งานจำนวนมาก
ในตอนเปิดให้ใช้งาน เป้าหมายที่ตั้งไว้คือ 1000 tps/s ++
และต้องไม่ down โดยผมมี physical server อยู่ 3 node

ในการออกแบบ Infrastructure นั้น ไม่มีแบบไหนถูกแบบไหนผิด
อยู่ที่ลักษณะของงานของเรา ว่าต้องการแบบไหน อยู่ที่จินตนาการของเรา
ว่าทำแบบไหนดี การออกแบบระบบ ก็เป็นศิลปะ อย่างหนึ่ง ..

Simply The Best เป็นคำตอบ ที่ผมใช้ออกแบบระบบที่ผมจะใช้งานนี้
เท่าที่ดูลักษณะ web แล้ว จะมีการ Read/Write DB หนักพอๆ กัน ถ้าเราแยก DB
ออกไป ก็จะทำให้เกิด connections จำนวนมากเกิดขึ้นในระบบ
ต้องแยก Read/Write ที่ตัว web app อีกเกิดความยุ่งยาก มากขึ้น
ผมเลยเอา web กับ DB ไว้ในตัวเดียวกันไปเลย แล้วใช้ HAProxy
เป็น Load Balancer round robin แบบ keep-alive
มี vip เป็น Public IP ที่ eth0 และใช้ eth1 เป็น Private IP
ยิงเข้าหา แต่ละ node ที่ต้องแยก interface เพื่อเป็นการกระจาย traffic
DB ที่ใช้ผมเลือกเป็น MariaDB ที่ทำงานได้ performance ดีกว่า MySQL
และใช้ Galera Cluster เป็นตัว sync data ของ DB แต่ละ node เข้าหากัน
ทำให้ ทุก node มี data ที่เหมือนกัน node ใด node นึง down ไป
ทุก node ก็จะยังทำงานได้สมบูรณ์ ถ้าเราต้องการเพิ่ม node เข้ามา
ก็สามารถทำได้ง่าย แค่ on ขึ้นมา Galera Cluster ก็จะทำการ sync data ให้

ในส่วนของ Web Server ผมใช้ Apache 2.2.22 ที่มากับตัว Debain Wheezy
มีการ tuning ค่าต่างๆ พอสมควรให้เหมาะกับการใช้งาน ตรงนี้เดี๋ยวผมมาเล่าอีกที
ที่เลือกใช้ apache เพราะ มีความยืดหยุ่นสูง ทำงานได้ดีกับ code ทุกรูปแบบ
ส่วน code เป็น PHP กระจายไปทุก node เก็บไว้ที่ local disk ของแต่ละ node
และใช้ APC เป็น opcode cache อีกระดับนึง

ปัญหาที่เจอ มีดังนี้
– auto increment จะไม่เรียงกัน เท่าไร มีกระโดดบ้าง แต่ก็รับได้
– HAProxy 1.5.4 default จะเก็บ log ทำให้ ถ้า log ใหญ่ๆ จะหนักได้
– เวลาแก้ code ต้อง up ทุก node

ผลที่ออกมา หลังจากใช้งานจริง พบว่า รองรับการใช้งานได้ดีมาก
รับ load จำนวนมหาศาล และ users ได้จำนวนมากพร้อมๆ กัน
ส่วนรายละเอียดการ tuning ผมจะขอแยกอธิบาย ในตอนต่อไป
เพราะว่า เยอะพอสมควร ..

VirtualBox SSH from Host to Guest OS (Linux)

สวัสดีครับ วันนี้ผมจะพูดถึง โปรแกรม VM ตัวนึงบน OS X หลังจากที่ผมลง Mountain Lion
ไปแบบ clean ก็ต้องมาลงโปรแกรมกันใหม่ ทั้งหมด VirtualBox นับว่าเป็นโปรแกรมตัวนึง
ที่ใช้ทำ VM ได้ดีมาก หลากหลาย และที่สำคัญคือฟรีด้วยครับ ..

หลายๆ คนมักเจอปัญหาว่า ว่าไม่สามารถ set ค่า Network แบบ Bridge ได้ เพราะว่า
ในวง Network ไม่สามารถรับ DHCP ได้หลาย IP หรือติดปัญหาเรื่อง การ Authen ต่างๆ
การทำ NAT กระหว่าง Host OS กับ Guest OS จึงเป็นทางเลือกที่ดี เพราะว่า Guest OS
เองจะได้ออก internet ได้ด้วย ทำให้ทำงานได้สะดวกขึ้น แต่คราวนี้ ค่า default ของตัว
NAT บน VirtualBox เองไม่ได้ทำให้ Host OS ที่แจก IP ไปให้ Guest OS ในวง 10
เช่น Host OS IP= 10.0.2.2, Guest OS IP=10.0.2.15 สามารถเข้าไปที่ Guest OS
โดยตรงได้ ซึ่งอันนี้ ผมก็ไม่แน่ใจเหมือนกัน ว่าจริงๆ มันมีวิธีทำได้ หรือวิธีอื่นๆ ที่ดีกว่า
นี้เหรือเปล่า เพราะถ้าเลือกเพิ่มอีก Adapter นึง แล้วเลือก Host-only Adapter ก็น่าจะได้
แต่วิธีนี้ อาจจะต้อง set static IP ระหว่าง Host และ Guest กันเอง ..

วันนี้ ผมจะมาพูดถึง Port Forwarding บน VirtualBox กันครับ การทำง่ายๆ มาก
แค่เข้าไปคลิก add rule เพิ่มเข้ามาใหม่ อย่างกรณีนี้ ผมใช้คำสั่ง ifconfig -a
เพื่อนจะดูว่า Guest OS ผมได้แจก IP อะไรมา จะได้เอามาสร้าง rule ได้ถูกต้อง


ผมก็จะได้ IP 10.0.2.15 มา ต่อจากนั้น ผมก็จะทำการ add rule เกี่ยวกับ Port Forwarding เข้าไป


จากรูปผมเลือ Protocol=TCP, Host IP=127.0.0.1, Host Port=2222 ส่วน Guest IP ก็คือ IP ที่
Guest OS ได้จากการ NAT และ Guest Port ก็คือ ssh port 22 ที่เราต้องการ

จากนั้นที่เครื่อง Host OS ผมเป็น Terminal ขึ้นมา แล้วทำการ ssh ด้วยคำสั่งต่อไปนี้
ssh 127.0.0.1 -p 2222 -l ton
เท่านี้ ผมก็จะสามารถติดต่อกับเครื่อง Guest OS ที่เป็น Linux Debian ใน VirtualBox ได้แล้ว


ผมเองก็ไม่ได้เชี่ยวชาญอะไรเกี่ยวกับพวก VM แต่ใช้จำลองการทำงานต่างๆ บ้าง เป็นครั้งคราว
แต่ถ้าเพื่อนๆ มีปัญหาอะไร สามารถแลกเปลี่ยนความรู้กันได้ครับ 🙂

High Scale Web Infrastructure 2012

porsche cayenne งามจริงๆ 🙂

สวัสดีครับ ช่วงนี้ ผมมักจะพูดถึงแต่เรื่อง Web Security ไม่ค่อยได้พูดถึงเรื่อง
การวาง Web Infrastructure มากนัก เพราะว่า ถ้าวางแผน วางครั้งแรก ดีๆ
มีการ monitor และ มีระบบ alert เมื่อ service มีปัญหา ก็จะทำให้ ปัญหาจุกจิกไม่มี

วันนี้ ผมจะมาพูดถึง technology ของเว็บในปี 2012 ว่า เราสามารถใช้ Open Source
ตัวไหนมาช่วยได้บ้าง ในที่นี้ผมจะพูดถึงเว็บทั่วๆ ไป และอ้างอิง technology ที่ใช้กัน
กับเว็บใหญ่ๆ ระดับโลกเช่น Facebook, Youtube และอื่นๆ ..
Varnish ตัวนี้ เป็น caching อย่างดี สำหรับเว็บในยุคนี้ คือจะสามารถ cache
ได้หลายระดับมาก และยังเขียน VCL (Varnish Configuration Language) ได้ละเอียด
ผมชอบตัวนี้มากๆ มันทำได้ดีและง่ายกว่าพวก hardware หรือ load balancer ราคาแพงๆ
เสียอีก เหมาะอย่างยิ่งกับเว็บที่เป็น static page ล้วนๆ แทบจะไม่ต้องไปเรียก web server
กันเลยทีเดียว หรือ dynamic page ก็สามารถ caching ได้ แต่เวลาที่มีการ update page
ใหม่ ต้องมีการ purge/ban URL หรือ page หรือ file ที่ไม่ต้องการให้ cache ออกไป
nginx (Engine X) ตัวนี้เป็น web server ที่ผมชอบมากๆ ส่วนตัวแล้ว ผมเอามาทำ
เป็น web server สำหรับ static file เพราะถ้าเทียบกับ web server รุ่นเก๋าอย่าง Apache22
แล้ว nginx เองทำงานเบากว่ามากๆ เรียกได้ว่า แทบไม่เปลือง memory ของเครื่องเลย
หรือถ้าเป็นไปได้ เอามาใช้กับเว็บที่ใช้ PHP แทน Apache22 ได้ ก็จะทำให้ web server
ทำงานบำลง แต่ได้ประสิทธิภาพเพิ่มขึ้นมาก ..
memcached เป็นอีกตัวนึงที่ใช้ร่วมกันเวลาเขียนโปรแกรม แล้วไม่ต้องเก็บ data เล็กๆ
บางอย่างลง file หรือเวลา query data มาจาก database ก็สามารถ เก็บลงบน memcached
ที่เป็น memory ก่อน ก็จะทำให้ ทำงานได้เร็วขึ้นมาก ..
FlashCache อันนี้ผมพูดถึงระดับ Kernel ของเครื่องที่ใช้ทำ File Server ตัวนี้ จะช่วยได้มาก
เวลาที่มีการเรียก file ต่างๆ ซ้ำๆ กัน จะไม่ต้องไปเรียก จาก file จริงๆ แต่จะมีการเรียกที่ระดับ
cache ของ Kernel แทน ตรงนี้ เป็นข้อดีของ Linux ที่ออกแบบโครงสร้างของ OS มาได้ดีมาก
PHP ผมจะไม่พูดถึงก็เป็นไปไม่ได้ เพราะว่าเว็บประมาณกว่า 90% ของโลก ใช้ PHP เขียน
สำหรับ PHP เอง ก็มีวิธีการที่ให้ทำงานได้เร็ว และมีประสิทธิภาพมากขึ้น โดยไม่ต้องทำอะไรมาก
เราสามารถใช้พวก Alternative PHP Cache (APC) มาลดการใช้งาน CPU ในการ compile code
ของ PHP ลงได้ ตัวนี้ ต้องลองใช้กันดูครับ สำหรับเว็บที่มีการใช้งาน PHP หนักๆ ..

สำหรับในเรื่องของส่วนอื่นๆ ที่ไม่ใช่ส่วนของ web server กันบ้าง แต่ก็มีความเกี่ยวข้องกัน
MySQL ผมว่าเป็น Database ที่ดีมากๆ ตัวนึง อยู่ที่ว่าเราออกแบบโครงสร้างและ optimize
ได้ดีเพียงใดเท่านั้น การทำ index ก็เป็นเรื่องที่สำคัญ บางครั้ง ผมเจอ load จำนวนมหาศาล
และทำงานได้ช้ามาก พอเข้ามาดูพบว่า ไม่มีการทำ index ที่ดี พอทำไป load หายไปหมด
และทำให้ทำงานได้เร็วขึ้นมากๆ ด้วย ตรงนี้ เป็นส่วนที่สำคัญมากครับ ..
noSQL มีอยู่หลายตัวที่นิยมนำมาใช้กัน แต่ผมจะไม่ได้พูดถึงในที่นี้ เพราะต้องยอมรับว่า
ที่ผ่านมา งานผมแค่ MySQL+Memcached ก็เอาอยู่แล้ว เลยยังไม่จำเป็นต้องใช้พวก
noSQL ต่างๆ พวกนี้ มาช่วยลดภาระของ Database หลัก ..
Wowza ตัวนี้ ไม่ถือว่าเป็น Open Source แต่ราคาก็ถือว่าไม่แพงมาก ถ้าเทียบกับ
Software ที่ใช้ทำ Streaming Server ตัวอื่น และประสิทธิภาพ เท่าที่ผมได้ทดลองใช้
ถือว่ายอดเยี่ยมเลยทีเดียว รองรับจำนวนผู้ใช้งานจำนวนมากได้พร้อมๆ กัน และยัง
มี format ในการ stream ได้รองรับทุก OS ทุก browser ไม่ว่าจะเป็น iOS, Android

ที่พูดมานี้ ก็เป็น technology ของยุคนี้ ที่เกี่ยวกับ web service, web application ต่างๆ
จริงๆ แล้วยังมี software อีกหลายๆ ตัวที่น่าสนใจ แต่ยังไม่ได้ใช้เป็นส่วนหลักๆ
วันหลังผมจะมาเขียนถึงแนวคิดต่างๆ ที่ควรคำนึงถึงในการวางระบบใหญ่ๆ ว่า มีอะไรบ้าง
ที่จะทำให้ระบบของเรามีประสิทธิภาพ รองรับกับการใช้งานของคนจำนวนมากได้ และสามารถ
ตรวจสอบปัญหา และแก้ไข ได้เร็ว ทันที ตลอดเวลา ..

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 ที่ไม่จำเป็น เป็นการช่วยลดโลกร้อน ที่เป็นปัญหาให้เกิดน้ำท่วมได้ 🙂

Open Compute Project by Facebook

สวัสดีครับ ไม่ได้มา  update blog นานมาก พอดีมีเรื่องน่าสนใจครับ
ที่ผมคิดว่าจริงๆ น่าจะเกิดขึ้นมานานแล้ว โครงการ Open Compute Project
ที่งานนี้ Facebook เป็นแกนนำหลัก ซึ่งถือว่าเป็นการนำเทคโนโลยี
ที่ดีๆ มาแบ่งปันให้กับคนทั่วโลกได้ครับรู้ครับ ..

สำหรับโครงการ Open Compute Project ของ Facebook ก็คือ
เป็นการทำ Server ที่มีคุณภาพ มีประสิทธิภาพสูง ราคาไม่แพงขึ้นมาใช้เอง
ซึ่งเหมาะอย่างยิ่งกับพวกเว็บขนาดใหญ่ ที่ให้บริการคนทั้งโลก เพราะว่า
ต้องใช้ Server จำนวนมาก และต้องประหยัดค่าใช้จ่าย ทั้งอุปกรณ์
การดูแลรักษา และค่าไฟฟ้า .. เรามาดูกันครับ ว่ามีอะไรบ้าง


สำหรับตัว Classic จะมีขนาดพิเศษคือ 1.5U เพื่อที่จะได้ใส่ Sink ได้สะดวก
และเป็นการทำให้ระบายความร้อนได้ดีกว่า ขนาด 1U ที่ทุกอย่างต้องจำกัด
ด้านหน้าประกอบด้วยพัดลม 4 ตัว แบบนี้รับรองระบายความร้อนได้ดีครับ


สำหรับ Motherboard สำหรับ AMD ก็จะรองรับกับ CPU AMD
dual AMD Opteron® 6100 Series ครับ และรองรับ การใส่
Memory ได้ถึง 24 DIMM slots เรียกว่าอัดแรมกันได้สะใจเลยทีเดียว
ตัว Motherboard เองตัดพวก port ต่างๆ ที่ไม่จำเป็นออกไป เพื่อ
เป็นการประหยัดไฟไปในตัว


สำหรับ Motherboard สำหรับ Intel ก็จะรองรับกับ CPU Intel
dual Intel Xeon® 5500 or Intel Xeon® 5600 ใส่ Memory
ได้ทั้งหมด 18 DIMM ครับ ส่วนอื่นๆ ก็จะคล้ายๆ กับของ AMD


ส่วนของ Power Supply ก็จะออกแบบมาอย่างดี ให้กำลังได้ 450W
ทั้ง AC/DC ส่วนรายละเอียด ในเชิงลึก อ่านได้ใน Datasheet ครับ

ทั้งหมดนี้ ผมว่าเป็นสิ่งที่ดีมากๆ ที่ต่อไปทั่วโลกจะได้มี Server ดีๆ ใช้กัน
ในราคาที่ไม่แพงมาก เกินความจำเป็น ยิ่งสั่งที่ละจำนวนมาก ก็ยิ่งน่าจะ
ทำให้ประหยัดได้มากขึ้น ..
บริษัทใหญ่ๆ ในไทย ลองเอา idea นี้ไปทำกันดูได้นะครับ น่าจะช่วยองค์กร
ประหยัดค่า Server ไปได้ปีละจำนวนมากครับ 🙂

สำหรับรายละเอียดเพิ่มเติม
URL : http://opencompute.org/