Jun 24, 2008

What is the best operating system for you?

ถ้าถามผมว่า os. ใหน ดีที่สุด คำตอบคือ ไม่ทราบครับ

สาเหตุที่ไม่ทราบก็เพราะว่า ผมก็ไม่เคยลองใช้ os. ครบทุกตัว คนอื่นๆ ที่ทดลองใช้เค้าทดลองในสิ่งที่เราต้องใช้หรือป่าวก็ไม่ทราบ หลักการง่ายๆ ในการเลือก os. ของผมก็คือ
  1. ต้องดูว่า application ที่เราต้องใช้ จำเป็นต้องรันบน os. ใดเป็นพิเศษหรือไม่ ถ้าจำเป็น โอกาสในการเลือกของเราก็น้อยลงหรือแทบไม่มีเลย แต่ถ้าเป็น gereral application เช่น พวก web server หรือ java application ก็ยังพอเลือกได้ ดูข้อต่อไปเลย
  2. ถ้า application ที่ต้องการใช้ไม่ได้เลือกมากอะไร ยกตัวอย่างเช่น ต้องการ web server ที่รัน php ได้ ผมก็จะเลือกโดยใช้หลักการง่ายๆ คือ "เลือก os. ที่เรารู้จักและใช้งานคล่องที่สุด" และขอแนะนำหลักการนี้ให้ทุกคนนำไปใช้ได้จริง

เหตุผลง่ายๆ ที่ต้องเลือก os. ที่รู้จักและใช้งานคล่องที่สุดคือ

  • เราสามารถควบคุมทุกอย่างได้ เช่น ถ้าเป็น linux distro ที่ถนัด เราจะรู้ว่า file configuration หลักๆ อยู่ที่ใหน ถ้าจะแก้ไขให้รองรับ scale ที่ใหญ่ขึ้นจะต้องแก้อย่างไร ลองนึกดูว่า คุณต้องแก้ไข tcp buffer size ให้ใหญ่ขึ้นเพื่อรองรับปริมาณข้อมูลที่มากใน os. ที่ไม่ถนัด คุณจะใช้เวลานานแค่ใหน
  • เวลาที่ระบบมีปัญหา ไม่สามารถทำงานได้ตามที่ต้องการ การ troubleshoot os. ที่เราถนัดถือว่าเป็นงานที่ไม่หนักมาก

ตอนนี้อย่าเพิ่งไปนึกถึงว่า os. นี้มีข้อเสีย แพ้ตัวโน้นเรื่อง blah blah blah เพราะที่เคยพบมา ปัญหามักจะเกิดจากการ config ของเรา หรือ coding ที่เขียนไว้ไม่ดีพอเสียมากกว่า บางครั้งมันยังไม่ถึง limitation ที่ os. มีด้วยซ้ำไป อีกอย่างหนึ่ง os. ทุกตัวจะมีค่า default setting ซึ่งถ้าคุณรู้จัก os. ตัวนั้นดีจริงๆ คุณจะรู้ว่า os. ที่ใช้อยู่ยังสามารถ customize ให้เพิ่มประสิทธิภาพและความปลอดภัยได้มากกว่าที่ทราบเยอะมาก

Jun 18, 2008

General Web Development Process

ตอนหะแรกตั้งใจไว้ว่าจะคุยต่อเรื่อง primary dns server ของบริษัทที่เป็น CDN ว่าเค้าทำกันอย่างไร ก็มีอันต้องระเห็จ จำเป็นต้องเขียนบล็อกแบบ offline ซะ ไม่มีเน็ตใช้ก็เลยหาข้อมูลมาประกอบไม่ได้ ขอยกยอดไว้คราวหน้าก็แล้วกัน

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

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

  • PD ก็คือ Product Development แผนกนี้มีหน้าที่คิด มีหน้าที่หาอะไรใหม่ จะไปลอกชาวบ้านมาก็แล้วแต่ จะคิดเองก็แล้วแต่ ขอให้เด็ด เจ๋งๆ ก็ใช้ได้
  • IT ก็มีหน้าที่รับ requirement ที่เป็นทาง PD เค้าคิดมา ทำหน้าที่ฤาษีแปลงสารจาก ความคิดในเอกสาร BRD ให้เป็นเว็บดีๆ ซักอัน โดยทั่วไปถ้า BRD ดี หรือนิ่งก็ดีไป แต่ส่วนใหญ่แล้ว มันไม่เคยนิ่ง ไม่เคยดีพอสำหรับ IT ครับพี่น้อง (ขอใช้เวทีนี้โวยแทน IT PM ก็แล้วกัน)
  • ก่อนที่ IT จะแปลงสารให้เป็น HTML document ดีๆ ประกอบรูปร่างสวยๆ แล้ว จะต้องมีแผนกที่สำคัญอีกส่วนหนึ่งคือ Graphic Designer บางที่แผนกนี้จะแยกตัวชัดเจน บางที่ก็แฝงอยู่กับ IT แต่ส่วนใหญ่มักจะเกาะติดกับ PD มากกว่า เพื่อให้สามารถสื่อสารกับคนที่เป็นเจ้าของ project ได้

จากนั้นก็จะเป็นกระบวนการออกแบบ พัฒนา ทดสอบ ติดตั้งระบบ เปิดการใช้งาน ... เปิดไปเปิดมา คนไม่มาใช้ ก็เห็นปิดกันไปนักต่อนัก .. ที่ยังอยู่ก็ต้องสู้ต่อไป ... จากกระบวน software development life cycle ข้างบน มันก็ออกมาเป็นเว็บหนึ่งอัน ดีไม่ดี คนใช้ชอบหรือไม่ชอบมันก็ขึ้นกับสามแผนกหลักๆ ด้านบนนั่นแหละครับ

การที่ user คนนึงจะเข้าเว็บครั้งแรก ชอบและกลับเข้ามาใหม่ ในมุมมองของผม (ขอย้ำนะ มุมมองของผม ใครไม่เห็นด้วยก็แชร์เลยครับ ยินดี) มันก็มีประเด็นดังนี้ที่เกี่ยวข้อง

  • functionality ของเว็บนั้นๆ ว่าโดนหรือไม่ บางทีเว็บไม่สวยเห่ยๆ แต่ฟังก์ชันเจ๋งคนก็เข้ามาเยอะมาก ถ้าเป็นเว็บพวกข่าว ก็ต้องมีข่าวที่อัพเดตเร็ว เชื่อถือได้
  • เว็บเขียนดี ไม่มีบั้ก จะใช้อะไรก็ใช้ได้เต็มที่ ไม่ล่ม โหลดเร็ว
  • รูปแบบ หน้าตาของเว็บดูดี ตรงใจกับกลุ่มเป้าหมาย
  • สุดท้ายอาจจะเป็นประเด็นเรื่องการมีส่วนร่วมในเว็บนั้นๆ เพราะคนในโลกอินเทอร์เน็ตบางคนชอบที่จะอยู่ในโลกเสมือนแห่งนี้ เพราะบางที่เค้ามีสิทธิ์พิเศษ แตกต่างกับชีวิตจริงที่เค้าอาจจะไม่มีอะไร ไม่มีใครเลยก็เป็นได้

คราวนี้มาดูกันว่า software development life cycle ข้างบน มันตอบโจทย์กลุ่มเป้าหมายหรือเปล่า

  • จุดสำคัญอยู่ที่ PD ถ้า PD สามารถสรุป functionality ของเว็บ หาจุดแข็งแล้วนำออกมาโปรโมตได้แล้ว ซึ่งการทำ function ที่ PD ต้องการให้ใช้งานได้ ก็เป็นหน้าที่ของ IT แหละครับ งานนี้งานหนัก ยิ่งเวลาบีบๆ programmer ก็เขียนกันหน้าเขียวเลยทีเดียว แมลงบินกันว่อนเลย
  • ถ้า function ที่ PD ออกแบบมาดี IT มีเวลาออกแบบระบบหลังบ้านให้รองรับโหลดเยอะๆ ทำไว้ดีหน่อย มันก็จะไม่มีปัญหาอะไร แต่ที่เจอประจำคือ function เยอะ เวลาไม่มี ต้องเอาขึ้นแล้ว แบบนี้ก็มักจะเจอปัญหาทีหลังกันประจำ เช่น เว็บช้า ล่มบ่อย database มีปัญหามั่งละ ความซวยมาเยือนใคร ก็คงไม่พ้นทีม operation และก็ทีม system support (sysadmin) นะแหละ ทำก็ไม่ได้ทำกับเค้า ดันต้องมาเหนื่อยยาวกับ product ที่ทำไว้รีบๆ
  • อีกจุดที่มองเห็นจุดบอดคือ graphic designer บางคน (ขอย้ำว่าบางคน) อาจจะไม่เข้าใจหลักการทำงานของ browser ดีเพียงพอ ท่านก็จะ design graphic ชิ้นใหญ่ๆ เน้นสวยอย่างเดียว คราวนี้แหละครับ ไปกันใหญ่เลย

กระบวนการทั้งหมดนี้ สามารถตรวจจับดักได้ครับ ถ้ามี testing process ที่ชัดเจน มี rule ที่ทุกคนต้องปฏิบัติตาม รวมทั้งการ simulate performance test ที่สามารถทดสอบ capability ของระบบได้เต็มๆ ก่อนที่จะขึ้น production แต่ทุกท่านก็คงทราบ ชีวิตจริงกับ ideal life มันแตกต่างกันเยอะครับ จะมี project ใหนที่ทำเต็ม process กันได้ บางอันท่านก็เล่น cowboy coding กันเลย ออกแบบเอง PD เอง เขียนโปรแกรมเอง เจอแบบนี้ทีมไอทีหลังบ้านก็ต้องเข็มแข้ง ทำหน้าที่ของเราแล้วก็ให้เต็มที่ หมั่นสื่อสารกันกับทุกๆ ทีม knowledge sharing ช่วยเราได้ครับ

Jun 16, 2008

CDN (Content Delivery Network)

เคยได้ยินคำว่า CDN กันบ้างมั้ยครับ CDN = Content Delivery Network เป็นศัพท์ทั่วไปที่ใช้เรียกพวก provider ระดับโลก เช่น akamai ที่ให้บริการฝาก content ลูกค้าก็จะเป็นพวกเว็บใหญ่ๆ เช่น google, yahoo ระดับโลกกันทั้งนั้น

สาเหตุที่เว็บดังๆ เหล่านี้ต้องมาใช้บริการบริษัทที่เป็นพวก CDN ก็เพราะว่า เค้าต้องการให้ลูกค้าดึงข้อมูลจากเว็บได้เร็วที่สุด เพราะว่าพวก CDN พวกนี้จะเอา server ไปวางไว้ตาม ISP ต่างๆ ทั่วโลกไปหมดเลย สมัยที่ผมเคยทำงานที่ KSC ก็พบว่ามี server ขนาด 1U ราวๆ 10 ตัวของ akamai ตั้งไว้อยู่ ตอนแรกๆ ก็งงว่า ตั้งไว้ทำใม แถมไม่จ่ายตังส์ด้วยมั้ง (ไม่แน่ใจมาไม่ทันตอนเค้าดิวกัน) พอได้ศึกษาเทคโนโลยีของ CDN ก็ถึงบางอ้อว่า เค้าตั้งไว้เป็นประมาณว่า web server / proxy server เอาไว้เก็บ content ให้พวกลูกค้า ให้มาดึงข้อมูลจาก server ที่อยู่ใกล้ที่สุดไป

หลักการทำงานคร่าวๆ (เอาคร่าวๆ นะ ละเอียดไม่รู้ ถ้าผิดก็บอกด้วย) เริ่มต้นเลย สมมุติว่า yahoo มีข่าวอันนึงดังมาก คนเข้าทั้งโลก yahoo บอกว่า server ของ yahoo รับได้แต่อาจจะอืดไปสำหรับข่าวดังๆ แบบนี้ ก็เลยติดต่อ akamai ขอฝากรูปซัก 10 รูปไว้หน่อยนะ ช่วยเอาไป distribute ตาม server ของ akamai ทั้งโลกเลยนะ จากนั้นทาง akamai ก็จะจัดการเอา content ที่ว่า 10 รูปนั้นไปวางตาม server ซึ่งก็ควรจะเป็น automate process ทั้งหมด ทาง yahoo ซึ่งปกติมี image server ของตัวเอง ก็จะเปลี่ยน URL ของ เช่น จากเดิมใช้ http://a.yimg.com/abc.jpg ก็อาจจะเปลี่ยนไปใช้ http://xxx.akamai.net/yyy/zzz/abc.jpg อะไรประมาณนั้น

บางคนอาจจะงงว่า แล้วมันจะเร็วได้ยังงัย ก็ต้องมาดูว่า เมื่อ browser เราดึง content html มาจาก yahoo ได้แล้ว ก็ต้อง follow <a href> link เพื่อไปเอารูปมาแสดง ดังนั้นก็ต้อง nslookup xxx.akamai.net ก่อนเพื่อจะได้เปิด HTTP connection ไปยัง xxx.akamai.net คาดว่าที่ akamai เอง ใช้อุปกรณ์ตัวนึงวางคั่นหน้า primary dns server ของ akamai ตัวอุปกรณ์ตัวนี้มันฉลาด มันมีฐานข้อมูลของเกือบทุกไอพีหมดเลย ว่าไอพีใหนอยู่ที่ประเทศใหน เมื่อมันรู้อย่างนี้มันก็ return A record ของ xxx.akamai.net ตัวที่ใกล้ที่สุดมาให้เรา ดังนั้นเราก็จะรู้สึกเสมือนว่าทำใมเปิดเว็บพวกนี้เร็วจัง เหมือนเปิดเว็บในประเทศเลย

คราวนี้มาดูบริษัทเล็กๆ กันบ้าง ไม่มีตังส์แต่อยากทำแบบนี้ทำได้มั้ย ได้แน่นอน บางที่ใช้ก็ใช้ Load balancer ที่มีฟังก์ชัน GSLB มาทำหน้าที่ปล่อยไอพีแทน บางที่ก็เล่นง่ายๆ ใช้ DNS Server ที่ support การทำ geography มาแทนเลย แบบนี้ก็ได้ ที่คุ้นๆ ตาคิดว่าทำได้คือ PowerDNS ว่างๆ ก็ลอง search มาลองใช้กันดู

ถ้าอยากเห็นตัวอย่างการใช้งานจริงๆ ก็ลองเปิดเว็บ cnn.com ดูนะ เปิด firebug ดูแล้วจะเห็นว่า เทคนิคนี้เค้าใช้กันจริงๆ ครับ ผมจะพิสูจน์ให้ดูง่าย ท่านลองทำตามเลยก็ได้

1. เปิด firebug ดูแล้วจะเห็นว่า มีการวางรูปไว้ที่ domain i.cdn.turner.com
2. เราเปิด cmd บน windows เราแล้ว nslookup มาดู จะได้ว่า i.cdn.turner.com = 207.123.44.123
3. สมมุติว่าเราเป็น User ที่ america เราจะได้ไอพีเดียวกันมั้ย ลองง่ายๆ เปิดเว็บที่เป็น dns tool เช่น www.dnstools.com มา แล้วคีย์ i.cdn.turner.com ออกมาดู ณ ขณะนี้ผลลัพธ์ทีได้คือ 199.93.46.126

เห็นชัดเจนครับว่า ต่าง zone ก็จะได้ ip ของ i.cdn.turner.com ที่ต่างกัน

บางคนที่พอจะเข้าใจเรื่อง dns server ลึกซึ้งหน่อย ก็จะมองออกว่า เอ้ะ มันเหมือนมี single point of failure ที่ระดับ dns server นะ คราวหน้าผมจะมาเฉลยครับว่า ระดับโลกเค้าทำกันอย่างไร เพื่อแก้ไขปัญหานี้

May 24, 2008

อืม บล็อกแรก

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

ผมขออนุญาตใช้ภาษาธรรมดา เพราะจะได้ไม่เสียเวลาเรียบเรียงกันมาก เอากันง่ายๆ เว้ากันซื่อๆ เน้นความเข้าใจก็พอ ที่ผ่านมาเคยทำเอกสารเชิงวิชาการ กว่าจะผลิตได้แต่ละเรื่องก็ไม่ทันกินแล้ว ชาวบ้านเค้าไปถึงดาวอังคารแล้ว (ว่าไปนั่น)

OK เข้าประเด็นหลักกันเลยครับ เนื่องจากผมเป็นคนในวงการไอที แต่ไม่ใช่สาย develop นะ ดูแลทางด้าน system, infrastructure, security ให้กับเว็บไซต์(ใหญ่)แห่งหนึ่งในบ้านเรา ก็เลยพอจะมีประสบการณ์ทางด้านการดูแลระบบ โดยเฉพาะอย่างยิ่งด้าน infrastructure ซึ่งรวมทั้งงานด้าน network และ system โดยเฉพาะเรื่องของการ manage, design ระบบให้รองรับกับปริมาณคนเข้าเว็บจำนวนมาก เรื่องเหล่านี้ก็จะค่อยๆ ว่ากันไป ไม่ผลีพลาม อันใหนที่ลองแล้วดีก็จะแนะนำ อันใหนลองแล้วไม่ได้เรื่องก็จะนำมาบอกกล่าว เพื่อที่จะได้ทราบกันไว้

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

วันนี้แนะนำตัวแค่นี้ก่อน ช่วงวันหยุดนี้จะมีเรื่องที่เป็นแก่นสารมา update กันอย่างแน่นอน ราตรีสวัสดิ์ครับ