วันอังคารที่ 23 มิถุนายน พ.ศ. 2558

สัมภาษณ์คนไทยในซิลิคอนวัลเลย์ - ทัศพล อธิอภิญญา Hortonworks กับงาน Big Data

ช่วงที่ผมไปซิลิคอนวัลเลย์มีโอกาสเจอคนไทยที่ทำงานอยู่ในบริษัทไอทีระดับโลกหลายคน เลยติดต่อขอสัมภาษณ์ลง Blognone เพื่อถ่ายทอดประสบการณ์ล้ำค่าเหล่านี้กับคนอื่นๆ ที่อยากไปสานฝันในระดับเดียวกัน
บทสัมภาษณ์ชุดนี้จะทยอยลงต่อกันเป็นซีรีส์ ซึ่งบทความตอนแรกเริ่มจากคุณทัศพล อธิอภิญญาวิศวกรของบริษัท Hortonworks ที่มีชื่อเสียงด้าน Hadoop ครับ (บริษัทนี้แยกตัวมาจากยาฮูในปี 2011) จะมาให้ความรู้เกี่ยวกับเทคโนโลยีด้าน Big Data และ Hadoop ที่กำลังร้อนแรงอยู่ในปัจจุบัน จากมุมมองของคนที่อยู่ในบริษัทด้านนี้โดยตรง

อยากให้แนะนำตัวสักหน่อยครับ

สวัสดีครับ ชื่อทัศพล อธิอภิญญา (Tassapol Athiapinya) ตอนนี้ทำงานเป็น Senior Quality Engineer อยู่ที่ Hortonworks Inc. เมือง Santa Clara, CA (ส่วนหนึ่งของ Silicon Valley) ในประเทศสหรัฐอเมริกา

เป็นยังไงมาไงถึงมาทำงานที่นี่ได้

ผมเรียนจบวิศวกรรมคอมพิวเตอร์ที่จุฬาฯ เคยทำงานด้าน IT Security ที่ ACIS Professional Center / ACIS i-Secure ในเมืองไทย แล้วมาเรียนต่อปริญญาโทที่ University of California, San Diego ในอเมริกา
ตอนที่เรียนมีโอกาสฝึกงานกับ VMware ที่ Silicon Valley จากนั้นหลังเรียนจบมาได้งานที่บริษัท Informatica (ทำด้าน enterprise database integration) ซึ่งอยู่ไม่ไกลจากกันมากนัก ทำงานที่นี่อยู่สองปี จากนั้นมี recruiter มาชวนมาทำงานที่ Hortonworks

แนะนำบริษัท Hortonworks ให้คนที่ไม่คุ้นเคยกับบริษัทได้รู้จักกันหน่อย

Hortonworks เป็นบริษัทที่ทำซอฟต์แวร์ Hadoop รายแรกที่ขายหุ้นในตลาด Nasdaq (เข้าซื้อขายวันแรกเดือนธันวาคม 2557) ธุรกิจของบริษัทคือขาย technical support ของ Hadoop ให้ลูกค้าองค์กรและบริษัทดอทคอม ในอเมริกา ยุโรปและประเทศเอเชียบางส่วน (ตอนนี้ยังไม่ทำการตลาดในเอเชียตะวันออกเฉียงใต้)

อยากให้อธิบาย Hadoop ว่าเกี่ยวข้องอะไรกับ Big Data

Hadoop เป็นโครงการโอเพนซอร์ส เริ่มต้นโดยทีมงานยาฮูที่สร้างซอฟต์แวร์จากเปเปอร์ MapReduce กับ Google File System ของกูเกิล กูเกิลเป็นคนคิดค้นระบบนี้แต่ไม่เปิดโค้ดออกมา เปิดเฉพาะหลักการทำงานผ่านเปเปอร์ ทำให้ยาฮูสร้างซอฟต์แวร์เลียนแบบระบบของกูเกิลขึ้นมาใหม่ในชื่อ Hadoop
หลักการทำงานของมันคือใช้ process code ที่เขียนในรูป Map และ Reduce ที่สามารถ scale จำนวนข้อมูลแบบ linear ได้และใช้เก็บไฟล์ขนาดใหญ่มากๆ ระดับ terabyte ได้โดยมี fault tolerant
ทีมที่ทำ Hadoop ที่ยาฮูเป็นทีมที่ก่อตั้งบริษัท Hortonworks

ในวงการซอฟต์แวร์ Hadoop มีแต่ตัว Hadoop หรือเปล่า

ไม่ใช่ครับ ผู้ใช้ส่วนใหญ่จะใช้งาน SQL หรือ query ผ่านทางซอฟต์แวร์อีกตัวคือ Apache Hive หรือ Apache Pig มากกว่า เพราะใช้งานง่ายกว่า เมื่อรัน query จะถูกแปลงไปเป็น Hadoop (Map-Reduce และ HDFS) โดยอัตโนมัติ
ซอฟต์แวร์ตัวอื่นที่เกี่ยวข้องยังมี HBase (key-value store คล้าย MongoDB), Oozie (workflow), Storm (real-time processing), Tez (อธิบายง่ายๆ คือ multi-stage next-gen map reduce) และอีกหลายตัว

เข้าใจว่าซอฟต์แวร์ทุกตัวเป็นโอเพนซอร์ส แบบนี้ทำไมเราถึงต้องจ่ายเงินให้ Hortonworks

Hortonworks ช่วยทำแพ็กเกจของซอฟต์แวร์ติดตั้งง่ายขึ้น โดยรวมซอฟต์แวร์โอเพนซอร์ส 16 โครงการมาจัดเป็นชุดให้ คอนฟิกเตรียมไว้ให้ แค่สั่ง yum install ก็ใช้งานได้ทันที
นอกจากนี้ยังมีซอฟต์แวร์ด้าน operation management (start/stop services และเปลี่ยน config) และ automation testing สำหรับค้นหาและแก้ไขบั๊กก่อนส่งให้ลูกค้าทุกครั้งด้วย

Automation Testing คืออะไรครับ

บริษัทซอฟต์แวร์สาย enterprise ส่วนใหญ่ที่นี่จะมีโค้ดอีกชุดสำหรับทดสอบฟังก์ชันการทำงานของซอฟต์แวร์ ทั้งการทดสอบแบบ positive (functional ทดสอบว่าทำงานได้จริง) และ negative (error detection ทดสอบหาปัญหา)
การทดสอบพวกนี้จะรันทุกครั้งเมื่อมีการส่งโค้ดเข้าโครงการในระดับ production เพราะก่อนซอฟต์แวร์จะส่งให้ลูกค้าได้ ต้องผ่านการตรวจสอบ QA sign-off ว่าไม่มี regression (พบบั๊กในฟังก์ชันเก่าๆ ที่เคยทำได้ไม่มีปัญหา) และตรวจว่าบั๊กที่ลูกค้ารายงานมา ต้องถูกแก้ไขเรียบร้อยแล้ว
ตำแหน่งงาน Quality Engineer ที่ผมทำอยู่ก็คือดูแลโค้ดตรงนี้

เทคโนโลยี Big data และ Hadoop มีคนสนใจเยอะมากขึ้นเรื่อยๆ อยากให้แชร์มุมมอง สถานะของวงการนี้ที่สหรัฐสักหน่อยครับ

ขอตอบรวม Big data กับ Hadoop กันไปเลยนะครับ เพราะว่า Hadoop เป็นส่วนเลเยอร์ล่างสำหรับงานด้านประมวลผล (processing) และสตอเรจ (storage) ซึ่งถือเป็นส่วนสำคัญของ Big Data
สำหรับคนที่ไม่คุ้นเคยกับคำว่า Big Data ต้องเริ่มจากนิยามก่อน บริษัทวิจัย Gartner ให้ความหมายว่า
Big data is high-volume, high-velocity and high-variety information assets that demand cost-effective, innovative forms of information processing for enhanced insight and decision making.
แปลเป็นภาษาไทยว่าเป็นแหล่งข้อมูลที่มีปริมาณมาก ความเร็วในการรับข้อมูลสูง มีความหลากหลายของรูปแบบ จำเป็นต้องมีวิธีการประมวลข้อมูลใหม่ๆ เพื่อจะได้เข้าใจตัดสินใจกับข้อมูลได้ถูกต้อง
โดยรวมผมคิดว่าเทคโนโลยี Big Data ตรงนี้ต้องมีความสำคัญในอนาคตแน่นอนด้วยปริมาณข้อมูลที่มีแนวโน้มสูงขึ้นเรื่อยๆ ส่วนตัว ผมคิดว่าเทคโนโลยีที่ต้องรองรับปริมาณและรูปแบบข้อมูลใหม่ๆ ต้องมาเป็นกระแสหลักแน่นอน
ตอนนี้เราเห็นข้อจำกัดว่าฐานข้อมูลแบบ Relational Database ไม่สามารถจะสเกลตัวเองกับปริมาณข้อมูลจำนวนมากได้ และรูปแบบของข้อมูลเองก็ไม่ได้มาเป็น strict column based อย่างในอดีตแล้ว
บริษัท enterprises ของอเมริกา-ยุโรปเข้าใจเรื่องนี้แล้ว และพยายามทดสอบระบบ Big Data กันอยู่ แต่ว่าหลายองค์กรก็พบอุปสรรคกันหลายอย่าง เช่น
อย่างแรกคือองค์กรพยายามเก็บข้อมูลมากขึ้น แต่ก็เกิดคำถามว่าจะเอาข้อมูลมาจากไหน เชื่อมโยงกับอันไหน หรือจะแสดงผลยังไง หลายองค์กรที่ยังไม่แน่ใจก็ต้องค้นหาคำตอบกันไป
อย่างที่สองคือเทคโนโลยีใหม่ๆ พวกนี้ใช้ยากกว่าเดิม เปลี่ยนเร็วกว่าเดิม คนดูแลไอทีในองค์กรส่วนใหญ่ตามไม่ทัน การหาคนที่มีความรู้ก็ยากขึ้นหรือค่าใช้จ่ายสูงขึ้นตาม

พอจะมีตัวอย่างงานสาย Big Data ไหมครับว่าตัวเนื้องานเป็นอย่างไรบ้าง

งาน Big Data จะมีสามแบบใหญ่ๆ ดังนี้
  • งาน software engineer แบ่งเป็นงานที่สร้างซอฟต์แวร์ด้าน Big Data โดยตรงเลย เช่น Hadoop, MongoDB กับงานที่ประยุกต์เอาโซลูชันพวกนี้ไปใช้ เช่น เขียน Hive QL เพื่อ query ตาม requirement หรือว่า store/query application data ที่ key value store
  • งาน professional services/technical support ช่วย implement proof of concept ให้ลูกค้าที่อยากเอาเทคโนโลยีพวกนี้ไปใช้ หรือซัพพอร์ตลูกค้า ทำตัวเป็นเหมือนด่านแรกที่ช่วยแก้ไขปัญหา ให้คำปรึกษาให้ลูกค้าก่อนส่งมาบอกว่าเป็นบั๊กจริงๆ
  • งาน data scientist ถือเป็นงานสาขาใหม่ เป็นการทำความเข้าใจข้อมูล ทดลองแล้วสรุปออกมาว่าด้วยข้อมูลชุดนี้เราเข้าใจอะไรบ้าง เช่น กลุ่มลูกค้าใด (อายุ อาชีพ) ใช้บริการเยอะน้อยแค่ไหน ใช้งานในรูปแบบยังไง

อยากให้แนะนำซอฟต์แวร์สาย Big Data เผื่อว่ามีคนสนใจศึกษาเรื่องนี้ ควรเริ่มอย่างไร

ถ้างานเป็นการประมวลผลข้อมูลทั่วๆ ไป (general processing) ควรเลือกแพลตฟอร์มเป็น Hadoop/SQL on Hadoop (Hive, Pig) เหตุเพราะว่าคนใช้กันเยอะ ตลาดแรงงานชัดเจน ตัวเทคโนโลยีเองก็เริ่มนิ่ง มีการเปลี่ยนแปลงช้าลง ตามเรียนรู้ได้ง่ายขึ้น
ถ้างานเป็น key-value store เป็น MongoDB, HBase, Cassandra ด้วยเหตุผลเดียวกัน
ถ้าเทคโนโลยีที่ใหม่กว่านี้ แนะนำให้ดู​ Apache Spark (in-memory processing) ที่ทำงานเร็วกว่า Hadoop หากข้อมูลอยู่ในหน่วยความจำ แต่ต้องบอกว่าเทคโนโลยีนี้ยังใหม่ ส่วนของ API คงแก้ไขกันอีกมาก ต้องรับความเสี่ยงเรื่องการเปลี่ยน API ไว้ด้วย
สำหรับงานส่วนอื่นที่เกี่ยวข้องกับ Big Data เช่น Visualization การแสดงข้อมูลให้อ่านง่าย กับ Data Analytics นั้น ตลาดมีความต้องการชัดเจน แต่กลับยังไม่มีเทคโนโลยีไหนที่โดดเด่นขึ้นมา อาจต้องรอเวลากันอีกหน่อย

เมื่อพูดถึง Big Data เรานึกถึงปริมาณข้อมูลจำนวนมหาศาล สำหรับคนเพิ่งเริ่ม จะไปหาข้อมูลพวกนี้มารันทดสอบจากไหน

ระดับของการเรียนรู้ เราไม่จำเป็นต้องมีข้อมูลขนาดใหญ่ครับ เพราะว่าตัวเทคโนโลยีโดนคนอื่นทดสอบมาแล้วว่ารองรับข้อมูลจำนวนมากได้แน่ๆ
สิ่งที่ควรศึกษาคือ API, configuration เป็นหลัก ให้ลองติดตั้งซอฟต์แวร์พวกนี้กับหลายเครื่อง คอนฟิกหลายๆ แบบให้เชี่ยวชาญก่อน พอเก่งแล้วค่อยทดสอบความเร็วหรือหาคอขวด เพื่อเรียนรู้ข้อจำกัดในการทำงานจริงของมัน
ส่วนข้อมูลที่ใช้ทดสอบ ลองหาอะไรที่ใกล้กับที่ใช้งานจริงอยู่แล้ว อาจจะเป็น text, social network data หรือ column row data ทั่วไป

ทราบมาว่าเป็น Apache Tez committer ด้วย

Apache Tez เป็นส่วนหนึ่งของงานที่ทำอยู่แล้ว และผมก็อยากสนับสนุนโครงการโอเพนซอร์สด้วย พอพัฒนาฟีเจอร์ใช้ภายในบริษัทเสร็จก็เลยขอส่งโค้ดเข้าโครงการโอเพนซอร์สด้วย การเข้าร่วมกับโครงการโอเพนซอร์สจะช่วยขยายความคิดของเราให้กว้างขึ้น เพราะมีโอกาสเรียนรู้จากนักพัฒนาคนอื่นๆ
ขออธิบายกระบวนการว่า โครงการใต้ร่ม Apache แต่ละโครงการจะเลือกนักพัฒนาที่สามารถส่งโค้ดเข้าร่วมกับโครงการได้ ถ้าเป็นนักพัฒนาระดับ committer ก็สามารถเปลี่ยนโค้ดของ trunk (latest) version และ bug fix version ได้เองเลย
ตามปกติแล้วโครงการของ Apache ใช้วิธีเปลี่ยนโค้ดด้วยการส่งเรื่อง jira ticket เข้าไปที่ https://issues.apache.org/jira เลือกประเภทเป็นแจ้งบั๊ก (bug report) หรือว่าปรับปรุง (improvement idea) ก็ได้
ตอนเริ่มต้น เราก็เข้าไปส่งแพตช์แก้ไขสำหรับบั๊กนั้นๆ แล้วจะมีนักพัฒนาคนอื่นมารีวิวโค้ดของเรา และ commit เข้าระบบให้ ถ้าเราส่งเข้าไปอย่างต่อเนื่อง ก็จะถูกชุมชนเลือกให้เป็น committer ด้วยเลย

อยากให้เล่าถึงประสบการณ์การทำงานในสหรัฐเทียบกับที่เมืองไทย

งานพัฒนาซอฟต์แวร์ในอเมริกามีโครงการที่มีความท้าทายในทางเทคนิค (technical challenge) ลึกกว่างานที่เมืองไทย
วัฒนธรรมการทำงานที่นี่เน้น performance-based หรือ project-based เข้างานไม่ต้องตอกบัตรเข้าออก แต่ไม่ใช่ว่าเข้ากี่โมงก็ได้ ถ้าทีมเราเข้า 8 โมงเช้าเพราะต้องคุยงานกับทีมต่างประเทศ เราก็ต้องเข้าตาม ส่วนการทำงานล่วงเวลาหรือทำงานในวันหยุด อันนี้แตกต่างกันตามวัฒนธรรมของแต่ละบริษัท โดยทั่วไปแล้ว ช่วงที่ระบบกำลังขึ้นก็มีงานล่วงเวลาเป็นปกติทุกบริษัท ทำงานจากนอกที่ทำงานผ่าน VPN มีเยอะสำหรับนอกเวลา
ส่วนบรรยากาศการทำงานค่อนข้างจริงจัง แต่ไม่ได้รู้สึกเหมือนเป็นครอบครัวพี่น้องเหมือนออฟฟิศเมืองไทย

ในฐานะคนไทยในซิลิคอนวัลเลย์ อยากให้คำแนะนำกับคนที่อยากมาทำงานสายไอทีในสหรัฐ ว่าควรเตรียมตัวอย่างไรบ้าง

แนะนำให้ฝึกทักษะทางเทคนิคให้รู้ลึก เข้าใจภาษา โครงสร้างข้อมูล อัลกอริทึมกับ concept ที่เรียนในมหาวิทยาลัย เขียนโค้ดให้เร็ว ไม่มีบั๊ก ฝึกเขียนให้ได้หลายภาษาแต่ให้มีภาษาที่คล่องที่สุดด้วย
นอกจากนี้ต้องฝึกภาษาอังกฤษให้คล่องในระดับสื่อสารได้ อธิบายโค้ดหรือความคิดเป็นภาษาอังกฤษได้
สุดท้ายคือพยายามทำโปรเจ็คให้เป็น portfolio ของตัวเอง ถ้าเป็น open-soure committer ได้จะมีประโยชน์มาก เพราะหลายบริษัทใหญ่ที่นี่มองว่าเป็นผลงานที่ชุมชนนักพัฒนาให้การยอมรับ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น