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

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

งานของผมค่อนข้างหลากหลาย อาจจะเนื่องจากผมชอบทำทั้ง Software และ System ถ้ายังไงลองอ่านแล้วไปประยุกต์ปรับใช้กันดูนะครับ

1. Monitoring

จริงๆตัว monitoring นี้ผมก็ไม่ได้ทำจริงจังสักเท่าไหร่ในระยะเวลาสองปีที่ผ่านมา แต่ก็ได้ทำลองทำระบบ monitor สำหรับ infrastructure ใหญ่ๆ ด้วย tools ต่างๆ ไม่ว่าจะเป็น Zenoss, Hyperic HQ (ซึ่งหัวหน้าไม่ได้บอกหรอกครับ ผมอยากเล่นของผมเอง 55) จนไปถึงการ Custom ทำเอง ซึ่งการ monitor system ขนาดใหญ่ให้ได้ครบถ้วนนั้นเป็นเรื่องที่ค่อนข้างยาก ใช้เวลาในการเซทอัพค่อนข้างนาน แถมนอกจากการ monitor hardware โดยทั้วไปแล้ว เราก็จำเป็นจะต้องมีการ monitor Software ที่ทำงานอยู่บน hardware เหล่านั้นด้วย

จะได้เห็นได้ว่าการทำระบบ monitor นั้นต้องอาศัยความรู้ที่หลากหลาย เข้ามาผสมรวมกัน ดังนั้นคนที่จะทำงานนี้ได้ดีจะต้องบูรณาการความรู้ในทุกๆด้าน ไม่ว่าจะเป็น Server, SAN, Network, OS และ Software เพื่อที่จะเลือกวิธีการ monitor ได้อย่างเหมาะสม

ในช่วงสองปีที่ผ่านมาผมได้ทดลองใช้ Technology/Software ต่อไปนี้ในการ Monitor ระบบ

#Zenoss #HypericHQ #Graylog2 #JMX #Jmeter+Plugin #Sigar #XMPP #HTTP+AJAX+Servlet #Weblogic #GelfLogger

2. Task Automation

อันนี้เป็นงาน sideline ที่ช่วยประหยัดเวลาและความซับซ้อนในการทำงานไปได้บ้าง

ตัวอย่างหนึ่งก็คือ ที่ทำงานที่ผมทำงานอยู่มีการใช้หน้า authen สำหรับการ login เข้า firewall แล้วมีอยู่ช่วงหนึ่ง ตัว firewall นี้มีปัญหาทำให้ session login หลุดบ่อย ทำให้ต้องมีการ authen ทุกๆ 5 นาที ซึ่งเสียเวลาเป็นอย่างมาก ผมก็เลยสร้าง Bot ขึ้นมาตัวหนึ่งทำหน้าที่ check ว่าเรายังต่อได้อยู่หรือไม่ ถ้าไม่ ให้ต่อเข้าไปทำการ authen ให้โดยอัตโนมัติ ซึ่งปรากฎว่ามันใช้ได้ดีเลยทีเดียว

นอกจากนี้ก็จะมีงานอะไรเล็กๆน้อยๆ ให้ได้เขียน Java มา automate เล่นๆขำๆ ซึ่งก็่ค่อนข้างสนุกดี

#AuthenBot #ThreadDump(Shell Script)

3. Performance Tuning

จริงๆงานนี้อาจจะเป็นอันดับ 1 ก็ได้หากมันไม่ได้เครียดเกินไป (แต่มันดันเครียดค่อนข้างมาก)

ปัญหาของโปรแกรมที่ต้องรองรับ Transaction เป็นจำนวนมากก็คือ ปัญหาทางด้าน Performance ซึ่งส่วนใหญ่มันก็จะเกี่ยวข้องกับตัว Code ของโปรแกรม และ Bug ของ Database (เรายังใช้ RDBMS)  โปรแกรมที่ผมต้องทำการจูนนั้นเกี่ยวข้องกับการอ่าน/เขียน/โปรเซส XML ซึ่งหากโค้ด เขียนไม่ดีแล้วละก็ มีปัญหาเรื่อง contention/lock ตามมาแน่นอน (สำหรับโปรแกรมแบบ Multi-threaded) ยิ่งถ้า CPU ทำงานช้าแต่มี Thread เยอะด้วยและละก็จำเป็นจะต้องจูนโปรแกรมให้ถึงที่สุดในระดับที่แทบจะไม่มี contention/lock ใหญ่ๆ กันเลยทีเดียว ซึ่งเวลาผ่านไปผมก็สามารถทำให้มันไม่มี lock ได้แต่ performance ก็ยังไม่ดีพอ แต่เนื่องจากผมค่อนข้างติดตามเรื่องของ High Scalability มาโดยตลอด ซึ่งเทคนิคหนึ่งที่นิยมใช้กันก็คือการ cache object ที่ถูกเรียกใช้งานบ่อยๆ ซึ่งก็ทำให้ผมได้ทดลองเล่น product หลายๆตัว ไม่ว่าจะเป็น Infinispan, Ehcache, Hazelcast, Coherence ซึ่งแต่ละตัวก็ใช้งานได้เหมือนๆกัน ฮ่าฮ่า ซึ่งการใช้ cache เข้ามาช่วยนั้นก็แบ่งเบาภาระออกไปได้ในระดับหนึ่ง จนสุดท้ายเมื่อเราจูนทุกอย่างแล้ว ผลลัพธ์ที่ได้ก็น่าพอใจ ความเร็วของระบบเพิ่มขึ้นหลายสิบหลายร้อยเท่าตัว

งาน Performance Tuning ถ้าจะทำให้ได้ดีก็ต้องมีความรู้ค่อนข้างลึกลงไปในระดับ Thread/JVM เพื่อหาจุดที่เราจะสามารถพัฒนาให้มันเร็วกว่านี้ได้ และก็ต้องอาศัยความรู้ทางด้าน Network และ Hardware จนถึง OS ด้วย

#Cache #ThreadLocal #ThreadDump #JVM Parameter Tuning

4. Technical Architecture

นี่คือชื่อตำแหน่งของผมในโปรเจคนี้ งานที่ทำก็จะคล้ายๆ System Admin + Analyst นิดๆ ดีไซน์ระบบ เขียนเอกสาร ติดต่อ vendor เข้าไป config ระบบบ้าง แก้ network เช็ค wiring ซึ่งผมว่าเป็นงานที่ดีอย่างนึงคือมันไม่ค่อยเครียดและมีความสุขเมื่อได้เล่นของเล่นใหม่ๆ ได้ค้นคว้าหาความรู้ เผื่อที่จะนำมาคุยกับ vendor ให้รู้เรื่องให้ได้ ซึ่งจุดนี้น่าจะทำให้ผมชอบทำ เพราะว่าได้เรียนรู้อะไรใหม่ๆ ดังนั้นถ้าใครไม่ชอบความเครียด ทำงานไปเรื่อยๆ ได้เล่นเทคโนโลยีใหม่ๆ ใครมีความรู้ Hardware/San/Network ตำแหน่งนี้ผมแนะนำ

#IBM P System #XIV #Brocade #Cisco

5. นั่งเฉยๆ

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

#Settrade #books24 #Sitting Duck

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

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