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

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

– ดูระบบ, 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

ProFTPd Tuning Tips

วันนี้ผมมีเทคนิคเล็กๆ น้อยๆ มาฝากสำหรับการ tuning proftpd ให้ทำงานได้ดี
มีประสิทธิภาพ มากกว่าเดิม ซึ่งปัญหาที่ผมเจอก็คือ เครื่อง client ftp มาหา
เครื่องที่เป็น FTP Server (proftpd) ได้มากผิดปกติ วิธีการแก้ไขก็คือ ให้เรา
ไปทำการ add hosts บนเครื่อง FTP Server ที่ /etc/hosts เพิ่ม IP เครื่อง client
เข้าไป แค่นี้ก็ทำให้ client สามารถ FTP ได้เร็วกว่าเดิม และดีกว่าเดิมครับ 🙂

หรือวิธีง่ายๆ ที่ไม่ต้องให้ proftpd ไปวุ่นกับ DNS ก็จะทำให้ทำงานได้เร็วขึ้นครับ
ไปแก้ที่ /etc/proftpd/proftpd.conf ดูว่า มีบรรทัด พวกนี้อยู่หรือไม่ ถ้าไม่มีก็ใส่เพิ่ม
IdentLookups                    off
UseReverseDNS                   off
จากนั้นทำการ restart proftpd ใหม่ ก็จะทำให้ client FTP ได้เร็วกว่าเดิมแน่นอนครับ 🙂

วันพ่อแห่งชาติ 2010

Google ทำเก๋ วันพ่อแห่งชาติ เป็นสีธงชาติไทย และตัว g ตัวหลังเป็นรูปแผนที่ประเทศไทย

วันนี้เป็นวันพ่อแห่งชาติ ได้ดูถ่่ายทอดสดตอนเช้า เห็นในหลวงยังแข็งแรงมาก
รู้สึกปลื้มปิติมาก ในฐานะที่เกิดมาเป็นพสกนิกรของท่าน ได้เกิดมาบนผืนแผ่นดินไทย
น่าภูมิใจที่เกิดมาเป็นคนไทย แผ่นดินซึ่งอุดมสมบูรณ์ ทุกอย่าง ในน้ำมีปลา ในนามีข้าว
เดี๋ยวเย็นนี้ ดูถ่ายทอดสดช่วงเย็นต่อ ..

วันนี้ผมเองก็ไม่ได้กลับบ้าน เพราะว่าวุ่นๆ งานมาเข้าตั้งแต่เช้า กว่าจะแก้ไขได้
ก็เล่นเอาเหนื่อยเหมือนกัน ดันมาเกิดตอนวันหยุดอีก งานไม่เคยเลือกเวลา
แต่เมื่อเช้าโทรไปหาพ่อ คุยกะพ่อละ ก็คุยกันไม่นานนัก พ่อสบายดี เราสบายดี
ก็ ok ละ ตอนโทรไป พ่อเพิ่งกลับจากงานถวายพระพร ที่จัดขึ้นเหมือนกัน ..

หลังจากที่เมื่อวานเขียนระบบ auto บางอย่างให้กับระบบ พร้อมทั้ง fine tuning
เจ้า storage ใหม่ คิดว่าช่วยได้เยอะเหมือนกัน วันนี้ระบบเดิมที่มักจะมี load
กระโดดมาสูงเป็นบางเครื่อง ตอนนี้อาการหายหมดละ แต่จะยังวางใจไม่ได้
ต้องรอวันทำงานปกติ ที่คนเข้าเยอะๆ ถ้ายังทำงานได้นิ่งๆ เหมือนเดิม ก็ดีเลย
ถือว่าระบบ auto ที่เขียนขึ้นมาใช้ได้ มีประสิทธิภาพ คุ้มค่ากะการอดหลับอดนอน
นั่งเขียนทั้งวัน จะได้มีเวลาพักผ่อนมากขึ้นด้วย ไม่ต้องกลัวระบบมีปัญหา ..

Web Infrastructure

Web Infrastructure

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

1. จะมี service ทุกอย่างรวมกันอยู่ในเครื่องเดียว ทั้ง web server, DB และอื่นๆ
ใน 1 เครื่อง อาจจะมีจำนวนหลายเว็บ แบบนี้ก็ประเภท web hosting ต่างๆ

2. เมื่อมีคนเข้าเยอะขึ้น เครื่องเดียวทำงานไม่ไหว ก็ต้องมีการแยก web server กับ DB
ออกจากกัน เพื่อให้ทำงานได้มีประสิทธิภาพ รองรับจำนวนผู้ใช้งานได้มากขึ้น การแยก
web server ออกจาก DB นั้น ไม่ได้เกี่ยวกับเรื่อง security หลายๆ คนเข้าใจผิด คิดว่า
การแยกออกจากกันเพื่อเรื่องนี้ แต่จริงๆ แล้วเพื่อ performance อย่างเดียวจริงๆ

3. เมื่อระบบแบบที่ 2 รองรับไม่ไหว เราก็ต้องเพิ่มเครื่อง caching มาช่วยจัดการกับ
static file เช่นพวก jpg, gif, png, html เพื่อทำให้ web server ทำงานได้เบาลง
พวก caching ที่นิยมใช้งานก็เป็นพวก varnish, squid, nginx และพวก lighthttpd
อื่นๆ ที่เก่งในเรื่องการทำงานกับ static file แทน apache2 ที่ทำงานหนักกว่า ..

4. เมื่อเรามี caching มาช่วย web server แล้ว ปัญหาที่ตามมาอีกก็คือ ทางฝั่ง DB บ้าง
ก็จะเริ่มหนัก เราก็เลยต้องมีวิธีการแบ่ง Read/Write ออกจากกัน โดยที่ data ต้องเหมือนกัน
ในกรณีที่ใช้ MySQL เราก็จะทำ MySQL Replication แยก Read/Write ออกจากกัน
เพราะว่าส่วนใหญ่แล้ว จะเป็น Read ประมาณ 90%  Write ประมาณ  10% เท่านั้น ในกรณีนี้
ถ้าเครื่องเดียว ยังไม่เพียงพอกับการ Read เราก็สามารถเพิ่ม MySQL Slave เข้าไปได้
ให้เพียงพอกับจำนวน Read ที่เราต้องการ

5. ในเมื่อโครงสร้างเดิมๆ 1-4 ไม่สามารถรองรับกับจำนวนคนใช้งานได้แล้ว เราก็จำเป็นต้อง
มี LB (Load Balancer)  เข้ามาช่วยเป็นตัวจัดการกระจาย load ให้ระบบของเราให้เท่าๆ กัน
LB มีให้เลือกใช้งานมากมาย ทั้งที่เป็น S/W และ H/W ถ้ามีทุนมากหน่อย ก็เลือกแบบ H/W
ก็จะทำให้การจัดการทำได้ง่ายขึ้น แต่ถ้าต้องการประหยัด S/W LB หลายๆ ตัวก็ทำได้ดี
ในโครงสร้างรูปที่ 5 เราจะใช้ LB มาแบ่ง load ระหว่าง caching 2 ตัว ที่อยู่หน้า web server
เมื่อตัวใดตัวนึงมีปัญหา ระบบก็จะยังใช้งานได้ปกติ ในส่วนของ web server เองก็เช่นกัน เรามี
LB มาเป็นตัวช่วยกระจาย load โดยที่ web server ทุกตัวจะ mount file จาก NFS กลาง
ทำให้ทุกเครื่องมี data ที่เหมือนกัน เมื่อเครื่องใดเครื่องนึง มีปัญหาระบบก็ยังจะทำงานต่อไปได้
ส่วน DB ก็ใช้วิธีการแยก Read/Write เหมือนกับระบบที่ 4

6. เมื่อโครงสร้างแบบที่ 5 เริ่มรองรับไม่ไหว เราก็ต้องมีวิธีวางแผนกันใหม่ สิ่งที่ดีที่สุด ก็คือ
การแยก static กับ dynamic ออกจากกัน แล้วก็เอาเรื่องของ memory เข้ามาช่วย นอกนั้น
ส่วนอื่นๆ ก็คล้ายๆ กับโครงสร้างแบบที่ 5

เอาไว้เท่านี้ก่อนละกันครับ เดี๋ยววันหลังมาเขียนเพิ่มเติมครับ งานเข้าละ  🙂

System Engineer Jobs

รับสมัคร System Engineer รายละเอียดดังนี้ครับ
สนใจส่ง Resume มาที่ ton350d [at] gmail.com
สอบถามเพิ่มเติม +66868885195 (Ton)

Responsibilities
– Participate in the design, implementation and ongoing management of systems architectures that form the foundation for Weloveshopping.com production infrastructure
– Participate in the design of architectures and automation that deliver against strict requirements for functionality, scalability, performance and reliability
– Become proficient in understanding how each software component, system design, and configuration is linked together to form an end-to-end solution
– Serve in a low-volume on-call rotation as an escalation contact during incidents.

Requirements
– BS or MS degree in Computer Science, Engineering, related technical discipline, or equivalent experience
– Minimum of 3 years administering Linux systems in a production environment
– Proven ability to quickly learn and implement unfamiliar technologies
– Extensive expertise with configuration management systems
cfengine experience a plus
– Configuration and maintenance of common applications such as Apache, Nginx, Varnish, Memcached, noSQL, MySQL, NFS, DHCP, NTP, SSH, DNS, and SNMP
– Strong knowledge of Linux kernel configuration, performance monitoring, and tuning
– Advanced experience coding in one of the following languages: Shell, Python or Perl
– Prefer experience coding and/or debugging one or more of the following: PHP, C++ or Ruby
– Experience working with load balancing technologies and large-scale web server farms
– A strong background in internet service deployment, provisioning, IP networking, service infrastructure, or software deployments
– Excellent organization skills, project tracking abilities, communications skills
– Detail oriented with excellent written and verbal communication skills.

MySQL Replication Corrupted

สวัสดีปีใหม่ไทยครับทุกท่าน ช่วงหยุดสงกรานต์ที่ผ่านมาผมไม่ได้
เข้ามา update blog เลย เพราะว่าเดินทางท่องเที่ยว และทำกิจกรรม
ในช่วงวันหยุดพักผ่อน ส่วนรูปและเรื่องราวต่างๆ ติดตามได้ที่ FB ครับ
URL : http://www.facebook.com/pornpasok

ส่วนเรื่องที่ผมจะมาเขียนวันนี้มีความสำคัญมาก สำหรับท่านที่ใช้
MySQL Replication ซึ่งบางครั้ง เครื่อง Slave บางเครื่องอาจจะ
มีปัญหาเกี่ยวกับ bin-log ซึ่งเราจำเป็นต้องทำให้ไป sync กับ Master
ที่ bin-log และ Position ที่เราต้องการ วิธีการ check มีดังต่อไปนี้ครับ

1.mysql> SHOW SLAVE STATUS\G;
จะได้ค่าต่างๆ ของเครื่อง Slave มา ที่เราสนใจก็คือค่าต่างๆ ของ
Relay_Master_Log_File : และั Exec_Master_Log_Pos :

2.mysql> STOP SLAVE;
เป็นการสั่งเพื่อหยุดการทำงานของ Slave

3.สมมุติว่า เครื่อง Master มี IP เป็น 192.168.1.1  User-Password ใส่แบบตัวอย่าง
Relay_Master_Log_File : mysql-bin.000354 Exec_Master_Log_Pos : 823287655
เราก็ทำการใช้ command ในการเปลี่ยนเครื่อง Slave เราให้ทำงานที่ position ที่เราต้องการดังนี้
mysql> CHANGE master TO  MASTER_HOST=’192.168.1.1′,MASTER_USER=’slaveuser’,MASTER_PASSWORD=’slavepassword’,master_log_file=’mysql-bin.000354′,master_log_pos=823287655,MASTER_CONNECT_RETRY=10;

4.mysql> START SLAVE;

เท่านี้ก็จะแก้ปัญหาต่างๆ เกี่ยวกับการทำ MySQL Replication ได้แล้วครับ 🙂

เพิ่มเติม URL : http://www.mysqlperformanceblog.com/2008/08/02/troubleshooting-relay-log-corruption-in-mysql/

Anti DDoS

ไม่ได้เขียน blog มาหลายวัน เพราะว่าช่วงนี้ งานเข้าหนักเหมือนกัน วุ่นทั้ง week
วันนี้ก็เลยมาเขียนเล่าประสบการณ์เกี่ยวกับการดูระบบ Web Server ขนาดใหญ่ๆ
ว่าเราจะสามารถป้องกัน DDoS Attack (Distributed Denial-of-Service Attack)
ได้อย่างไร ต้องออกแบบ Infrastructure ของระบบ Network และ Server อย่างไร
และมีวิธีการ tuning Web Server อย่างไรให้รองรับ load, connection และ BW
จำนวนมากที่เข้ามาพร้อมกันในเวลาเดียวกันได้อย่างไร โดยที่ไม่กระทบต่อการใช้งาน
ของผู้ใช้งานจริงๆ และเว็บสามารถเข้าถึงได้เร็วเหมือนเดิม ..

ส่วนแรก ในส่วนของ Network Infrastructure กันก่อน คนทั่วไปมักคิดว่าการที่
มี Firewall มาวางหน้าสุด จะช่วยป้องกันการ attack ต่างๆ ได้ ซึ่งในความเป็นจริง
แล้ว Firewall ปกติที่ไม่ใช่ IDS, IPS จะไม่สามารถทำอะไรตรงนี้ได้มากนัก หน้าที่
ของมันก็แค่ทำการแบ่ง zone ของ server ออกจากกัน ภายในเท่านั้น ..
Firewall ก็คือ hardware ที่ spec ไม่ได้สูงอะไรมากมายนัก server หลายๆ ตัวที่ใช้กัน
ยังมี spec สูงกว่า Firewall ก็คือการเอาพวก Linux ที่ทำการ optimize แล้วมาทำ
ซึ่งอาจจะออกแบบให้มี GUI ที่ใช้งานง่าย ซึ่งจริงๆ มันก็คือ iptables, IPFW นั่นเอง
อีกอย่างคนทั่วไปมองว่า Firewall กันการโดน hack ได้ อันนี้ก็ยิ่งไม่เป็นความจริง
เพราะว่าการ hack สมัยนี้กว่า 98% มาจากความผิดพลาดของ web application
ตรงส่วนนี้ถ้าเป็น IPS ก็จะสามารถตรวจสอบได้ในระดับนึง แต่ก็อย่างที่กล่าวไว้ข้างต้น
พวกนี้ก็เป็น hardware ตัวนึงธรรมดา ถ้าจะให้รับ traffic หนักๆ มากพวกนี้ก็ทำงาน
ไม่ไหวเหมือนกัน ยิ่งพวกที่เป็น Box ขายกัน ราคาแต่ละยี่ห้อไม่ต้องพูดถึง แพงมาก
ซึ่งแนวทางออกของเว็บใหญ่ๆ ของโลกเช่น Google, Facebook, Yahoo, YouTube
จะเน้นการกระจาย load กระจาย traffic ออกไปให้ได้มากที่สุด โดยเน้นจำนวน server
ให้มีจำนวนมากเข้าไว้ แล้วก็ทำการ tuning kernel และทำ Firewall limit packet
ภายใน server แต่ละเครื่อง โดย hop ข้างหน้ามีเพียง Load Balance เป็นตัวแจก load
เท่านั้น ไม่ได้มาผ่านอะไรหลายๆ hop ทำให้ผู้ใช้งานเข้าถึงได้รวดเร็ว และป้องกันปัญหา
เรื่อง DDoS Attack ได้เป็นอย่างดี .. จากประสบการณ์ที่เคยคุยกับพี่กุ๊ก ที่ดูระบบเว็บ
ขนาดใหญ่มากในต่างประเทศ (ไม่ขอเปิดเผยชื่อเว็บ) เค้าเจอ DDoS Attack มาทีนึง
traffic 4GB/s ซึ่งถ้าเป็นบ้านเราคงพังทั้ง ISP แต่ระบบเค้าก็สามารถรับได้ เพราะว่ามี
BW ขาเข้าที่พอเพียง และมีจำนวน server หลายพันเครื่อง ไม่ต้องใช้ Box ราคาแพง
ต่างๆ ที่หลอกขายกันอยู่ในปัจจุบัน ..

ส่วนที่สอง ในส่วนของ Web Server โดยปกติถ้าเราลง OS ธรรมดา ลง Software ปกติ
มักจะเป็นค่า default ที่ออกแบบมาให้ใช้ได้กับทุกเครื่อง ตรงนี้บางทีเครื่องเรา spec สูง
เราก็ต้องปรับแต่งให้เข้ากับ hardware ของเรา เรียกว่าต้องรีดประสิทธิภาพให้ได้มากที่สุด
ซึ่งเรื่องพวกนี้ต้องทดลองปรับแต่ง tuning กัน ยิ่งทำมากยิ่งมีประสบการณ์มาก เริ่มตั้งแต่
tuning ค่าต่างๆ ของ Web Server เช่น Apache ให้ทำงานได้มีประสิทธิภาพ เหมาะกับงาน
ที่ทำ  tuning sysctl ที่เป็น parameter ของ kernel ตรงนี้ ต้อง advance นิดนึง เพราะมีผล
อย่างมากในการรีดพลังของ OS และ hardware ที่เรามีอยู่ ตรงนี้ผมจะพูดละเอียดอีกที ..
ตรงส่วนของ Web Server นั้น สมัยนี้มี หลายๆ ตัวที่ทำออกมาแล้วทำงานเบา กว่า Apache
เช่น lighttpd , nginx, cherokee, zeus และอื่นๆ อีกหลายๆ ตัว แต่การนำมาใช้งาน
ต้อง test ให้ละเอียดรอบคอบก่อนว่าจะมาใช้แทน Apache ได้ทั้งหมด แล้ว benchmark
ดู performance เทียบกับระบบเดิมว่า ดีกว่าขนาดไหน ในด้านไหนบ้าง ค่อยเปลี่ยนมาใช้ ..

ส่วนที่สาม ส่วนนี้สำคัญมากที่สุด ก็คือส่วนของ web application เอง ซึ่งมีเทคนิคต่างๆ
เป็นจำนวนมาก ให้ code ที่เขียนทำงานได้เบา และมีประสิทธิภาพ ตรงส่วนนี้ เวลาเขียน
ต้องทำการทดสอบ ตรวจสอบ ว่าทำงานหนักไหม มี query ที่ทำให้ DB หนักหรือเปล่า
ตรงนี้สำคัญมาก โดยเฉพาะเว็บใหญ่ๆ ที่คนเข้าใช้งานจำนวนมาก ถ้า code ทำงานหนัก
ก็จะทำให้เข้าถึงได้ช้า server มี load ตรงนี้ก็ต้องหาวิธีทดสอบและ benchmark โปรแกรม
ก่อนที่จะขึ้นใช้งานจริง หรือถ้าใช้งานไปแล้วมีปัญหา ก็ต้องหา solutions ในการแก้ไข
ที่จะทำให้มีประสิทธิภาพที่สุดต่อไป และเลือกใช้เทคโนโลยี่ที่เหมาะสม ..

ที่พูดมาทั้งหมด ก็เป็นวิธีการเบื้องต้นที่จะทำให้เว็บมีประสิทธิภาพ เข้าถึงได้เร็ว และป้องกัน
DDoS Attack และป้องการการโจมตีในรูปแบบต่างๆ ..
หัวใจหลักของเว็บ ก็คือ “ผู้ใช้เข้าถึงข้อมูลที่ต้องการได้เร็ว และข้อมูลมีคุณภาพตรงตามต้องการ”

ข้อมูลอ้างอิง  http://highscalability.com/

Cherokee Web Server

Cherokee Web Server

Cherokee Web Server http://www.cherokee-project.com/

The Fastest free Web Server out there!

Cherokee is a very fast, flexible and easy to configure Web Server. It supports the widespread technologies nowadays: FastCGI, SCGI, PHP, CGI, uWSGI, SSI, TLS and SSL encrypted connections, Virtual hosts, Authentication, on the fly encoding, Load Balancing, Apache compatible log files, Data Base Balancing, Reverse HTTP Proxy, Traffic Shaper, Video Streaming and much more.

Cherokee-Admin, a user friendly interface, provides a no-hassle configuration of the server. Check out the benchmarks and documentation to learn more, join our active Community and give it a try to squeeze your hardware to the fullest!

หายไปหลายวันครับ ไม่ได้มา update blog ช่วงนี้ก็เหมือนเดิม วุ่นๆ อยู่กับการคิดอะไรหลายๆ อย่าง
ตอนนี้ก็กำลัง plan เรื่อง infra ของปีหน้า ที่เว็บจะเติบโตกว่าเดิมอีกเท่าตัว แต่อยากรีด performance
Server ที่มีอยู่ให้ได้มากที่สุด เรื่องสำคัญก็คือเรื่องของ Web Server ที่ทำงานได้ดี เร็ว และใช้ resource
น้อยที่สุด และรัน PHP ได้ statble ที่สุด เท่าที่ลองหลายๆ ตัวแล้ว benchmark ดู ทั้ง apache13
apache2, lighttpd, nginx, cherokee, litespeed แล้วสรุปว่า cherokee เหมาะกับงานมากที่สุด
ส่วนวิธีการ benchmark และค่าที่ได้าจากการ benchmark เดี๋ยวผมจะนำมาลงให้ดูกันวันหลังครับ ..