Thailand Big Data User Group #1

จัดโดย อ.​ Thanachart Numnonda ที่ Q.House ลุมพินี วันที่ 9 ม.ค. 2558 มีผู้เชี่ยวชาญทางด้าน Big Data มาร่วมด้วยคือ John Berns กับ Axel Winter มาร่วมวงด้วย งานนี้เกิดขึ้นค่อนข้างกะทันหัน แต่ก็จัดออกมาได้ดี อ. คุมเวลาได้น่าประทับใจมาก (ปกติงานแบบนี้จะลากยาว) จากที่ออกจากกะลาไปนั่งฟัง เขียนออกมาตามความสนใจส่วนตัวได้ตามนี้

  • Hadoop จากเวอร์ชั่น 1.x ไปเวอร์ชั่น 2.x มีการเปลี่ยนแปลงเยอะมาก เปลี่ยนไปแบบยกเครื่อง เวอร์ชั่น 1.x นั้นเวลาทำอะไรกับข้อมูลที่ Hadoop Distributed File System (HDFS) จะต้องผ่านส่วน MapReduce ก่อน แต่เวอร์ชั่น 2.x จะมี YARN มาทำหน้าที่เป็น Cluster Resource Management ทำให้อะไรๆ ก็ไม่ต้องขึ้นอยู่กับส่วนของ MapReduce อีกต่อไป ลองดูภาพข้างล่าง

    Hadoop Stack
    Hadoop Stack (credit: annovate.blogspot.com)
  • Hadoop ทั้งสามารถเป็นทั้ง Data Storage และสามารถนำไปใช้ประมวลผลได้ด้วย การใช้ Hadoop นั้นสามารถลดค่าใช้จ่ายได้เป็นอย่างมาก ถ้าเทียบกับการเก็บข้อมูลแบบปกติ แต่ที่น่าสนใจอย่างหนึ่งคือ Cloud Storage อย่าง S3 ของ AWS Amazon ยังคงมีค่าใช้จ่ายที่ถูกกว่า -- มาถึงตรงนี้ก็เกิดคำถามขึ้นมาในใจว่า แล้วเราจะเลือกใช้อะไร? ระหว่างจะตั้ง Hadoop Cluster เอง หรือว่าไปทำบน AWS Amazon ลองอ่านความคิดเห็นจาก What are the advantages of Amazon EMR, vs. your own EC2 instances, vs. running Hadoop locally? ดู จริงๆ แล้วมันก็ trade-off กันเนอะ การคำนึงถึง long-term solution ของธุรกิจของเราให้มากๆ แล้วก็การลองผิดลองถูกอาจจะช่วยตัดสินใจได้
  • Apache Drill เป็นตัวที่เกิดมาใหม่ คล้ายๆ Hive คือ เป็น Query Engine เหมือนกัน แต่มีความสามารถอย่างหนึ่งคือ Schema Discovery On-The-Fly นั่นคือเราไม่ต้องกำหนด Schema ให้กับข้อมูลก่อนเหมือนอย่าง Hive ซึ่งแน่นอนว่าฝ่าย Business สามารถย่นระยะห่างระหว่างตัวเองกับข้อมูลมากขึ้น ทำให้ Agile มากขึ้น แล้วก็ช่วยลดภาระทางฝั่ง IT ด้วย (ถ้าเป็น Hive ฝั่ง IT อาจจะต้องช่วยกำหนด Schema ให้)
  • Query Engine หมายความว่า Query อย่างเดียว :) ไม่มี INSERT UPDATE หรือ DELETE
  • ตอนท้ายเป็น Open Discussion มีการอ้างถึง Use Case ต่างๆ บริษัทต่างๆ มีการปรับเปลี่ยนอย่างไรให้ทัน Technology ที่เกิดขึ้นใหม่มาแทบทุกวัน การตัดสินใจจะขึ้นอยู่กับข้อมูลแล้ว ไม่ใช่ขึ้นอยู่กับการมโนหรือการวางแผนเอาเอง เราอาจจะต้องลงทุนกับเวลาที่เสียไปเพื่อเลือก Technology ที่ใช่
  • มีการอ้างถึงคำพูดของ Amr A. Awadallah, CTO ของ Cloudera ว่า "Data goes to tape archives to die." สื่อออกมาประมาณว่า ข้อมูลที่โดน Archive ไปแล้ว จะค่อนข้างยาก หรืออาจจะมีค่าใช้จ่ายไม่ว่าจะเป็นทางด้านการเงินหรือเวลา ที่จะดึงกลับมาใช้งานหรือ Query ขึ้นมาได้อีก
  • เมื่อก่อน เนื่องด้วยข้อจำกัดทางด้านต่างๆ เวลาเราจะประมวลผลทางสถิติ หรือพัฒนาอัลกอริธึม Machine Learning ขึ้นมา เราจะ Sampling ข้อมูลมาแค่ส่วนหนึ่งเท่านั้นเพื่อมาแทนข้อมูลทั้งหมด แต่จะดีกว่าเยอะมากๆ ถ้าเราสามารถเอาข้อมูลทั้งหมดมาประมวลผลได้ ซึ่งสมัยนี้สามารถทำได้แล้ว Hadoop เป็น Technology หนึ่งที่ทำให้เราทำแบบนั้นได้
  • การเลือก Partner มาช่วยเรา ให้เลือก Partner ที่สามารถแนะนำเราได้ว่าอะไรคืออะไร แนะนำข้อดีข้อเสียได้ แต่อย่าไปเลือก Partner ที่มาบอกให้เราทำอะไร ซึ่งธุรกิจของเรา ข้อมูลของเรา ตัวเราเองเท่านั้นที่รู้ดีว่าควรจะทำอะไร
  • เทรนด์ในประเทศไทย ณ​ ตอนนี้ บริษัทต่างๆ เริ่มมีการนำ Hadoop เข้ามาใช้งานแล้ว แต่ส่วนใหญ่ยังใช้แค่เพื่อเก็บข้อมูลอยู่
  • ถ้าอยากเริ่มต้นศึกษาเรียนรู้ใช้แค่ Virtual Machine ก็สามารถเริ่มต้นได้แล้ว ไม่จำเป็นต้องรอให้มี Cluster จริงๆ เสียก่อน

จริงๆ มีเยอะกว่านี้แต่คงเขียนไม่ได้ออกมาหมด ใครสนใจลองเข้าไปติดตามเฟสบุคเพจ IMC Institute ต่อนะ ได้ยินมาว่าสไลด์ในงานจะโพสต์ไว้ที่นั่นครับ

ข้อสังเกต ในงานนี้ผมได้ยินคำว่า "Agile" บ่อยมาก ทั้งๆ ที่ไม่ใช่งาน Agile คำๆ นี้มันไปอยู่ทุกหนทุกแห่งจริงๆ :)

เป้าหมายพัฒนาตัวเองในปี 2015

ดูจากสรุปปีที่แล้วทำไว้ไม่ค่อยดีเท่าไหร่ รู้สึกเกินตัวไปหน่อย ปณิธานปีนี้เอาแค่ 3 ข้อพอ! สู้ๆ

  1. อย่างน้อยต้องเอา Verified Certificate ของ  Intro to Machine Learning ส่วนคอร์สที่เกี่ยวข้องอื่นๆ ถือเป็นโบนัส :)
  2. อ่าน Data Science for Business ให้จบ
  3. ปั่นจักรยานให้ครบ 3,000 km

สิ้นปีมาดูกัน

สรุปผลการพัฒนาตัวเองในปี 2014

จากที่ตั้งไว้ 5 ข้อ..

  1. Learn to be Data Scientist.
    เรียนได้ทุกคอร์สจริง แต่ว่าไม่จบสักคอร์สตามที่หวังไว้ แล้วก็ไม่ค่อยได้ตั้งใจเท่าไหร่ ไม่ผ่าน
  2. Learn Ruby more.
    ที่ว่าจะลองพัฒนา Web app ขึ้นมาก็ไม่ได้ทำ ไม่ผ่าน
  3. Stay healthy.
    ปั่นจักรยานให้ครบ 5,000 km? ปั่นไปได้แค่ 1,651.94 km วิ่งไปแค่ 35.53 km เศร้าจริง ไม่ผ่าน
  4. Read at least two text books.
    ได้อ่านหลายเล่ม แต่ก็ไม่จบสักเล่ม ไม่ผ่าน
  5. Give at least 5 public talks.
    ข้อนี้ควบคุมยากหน่อยเพราะมีปัจจัยภายนอกมาเอี่ยว แต่ก็ได้พูด 3 เรื่อง ถือว่า ผ่าน เป็นกำลังใจเนอะ :)
    1) Scrum at Pronto Marketing ที่ ม.เกษตร ท่าน อ.​มะนาวเชิญไป
    2) Pronto R&D Presentation ที่ ม.กรุงเทพ
    3) Achieving "Zero Downtime Deployment" with Automated Testing ที่งาน BugDay Bangkok 2014 จัดที่ Software Park แจ้งวัฒนะ

Pattern หนึ่งในการทำ Puppet Deployment

ช่วงนี้มีโอกาสได้ลองเริ่มใช้ Puppet กับงานที่บริษัทแบบจริงๆ จังๆ แล้วก็กำลังคิดถึงวิธีที่จะเอาสคริป Puppet ของเราไปวางไว้ที่ตัว Master สเต็ปที่คิดว่าจะทำคือ

  1. เขียนโค้ด รันเทสบนเครื่องให้เสร็จ
  2. Push เข้า Github
  3. ให้ CI รันเทสให้อีกที
  4. เอาสคริปสำหรับการ Deploy เข้า Puppet Master ไปวางไว้ใน CI แล้วให้ CI เป็นคนรัน

ไม่ค่อยแน่ใจว่าชาวบ้านทำกันแบบนี้หรือเปล่า เลยลองกูเกิ้ลเรื่อยๆ อยู่หลายวันก็ไม่ค่อยเจอคนบอกรายละเอียดสักเท่าไหร่ ส่วนใหญ่จะเจอแต่คำว่า Deploy แต่ไม่ค่อยเจอว่าเค้าทำกันอย่างไร วันนี้ว่างจัดเลยนั่งเคลียร์อีเมลที่ดองไว้ แล้วก็เจอเมลของ Sysadmin Casts ข้างในเนื้อหามีหัวเรื่องว่า Git to Puppet Deployment workflow ลองเข้าไปดูแล้วก็มั่นใจว่าที่เราคิดไว้ก็ถือว่าเป็น Pattern หนึ่งเหมือนกัน :) ลองดูรูปข้างล่างนี้

Episode #33 - Git to Puppet Deployment Workflow
Git to Puppet Deployment Workflow (Credit: https://sysadmincasts.com/)

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

สรุปโคตรสั้นกับหัวข้อที่ไปฟังมาในงาน Agile Tour Bangkok 2014 #AgileTourBKK

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

Scrum and Waterfall from the view of Plato and Aristotle โดย Fredrik Carleson

fredrik-agiletourbkk2014-scrum-philosophy

เมื่อ 2500 ปีก่อน ก็มีแนวคิดของ Agile หรือ Scrum กับ Waterfall เกิดขึ้นแล้วนะ อย่างแนวคิดของพลาโต้จะเน้นความคิดเป็นหลัก ความคิดสมบูรณ์จะไม่เปลี่ยนแปลง จะออกแนว Waterfall ที่ประมาณว่าความต้องการของลูกค้าจะไม่เปลี่ยนแปลง การพัฒนาระบบก็จะไปได้อย่างราบรื่น ส่วนแนวคิดของอริสโตเติ้ลจะแตกต่างไป แนวคิดนี้จะไม่บอกให้เชื่อแนวคิดของตัวเราเอง จะเน้นให้ออกไปทดลองทำจริง แล้วกลับมาพัฒนาแก้ไข..​ ซึ่งแนวคิด Scrum ก็เป็นเช่นนั้น

Practical Guide for First Time Product Owners โดย Alex Phelps

alex-agiletourbkk2014-po-guide

Product Backlog เป็นอาวุธที่ Product Owner (PO) จะนำเสนอแนวคิดให้กับทีมให้เข้าใจ อเล็กมีวิธีการสร้าง Product Backlog ที่ค่อนข้างจะแตกต่างจาก PO ทั่วไปคือ

  1. เก็บเกี่ยว หรือศึกษาแนวคิดต่างๆ โดยการ คุยกับ Stakeholder คุยกับ User รวมไปถึงการลองใช้ระบบของคู่แข่ง
  2. วิจัยทางด้านเทคนิค หรือทำ Spike เพื่อดูความเป็นไปได้ และดูว่าตรงความต้องการหรือเปล่า ก่อนที่จะเขียน User Story
  3. เขียน User Story เพื่อสื่อสารกับทีม
  4. สร้าง Prototype ทำ Basic UX Design รวมไปถึงทำ Mockup แบบจับต้องได้ เพื่อให้ทีมได้เข้าใจความต้องการมากขึ้น

สิ่งที่ PO ไม่ควรทำ เช่น อย่าตอบตกลงเพื่อที่ทำให้ลูกค้าพอใจ อย่าพลาดการประชุมบ่อยๆ อย่าเปลี่ยน requirement ตอน last minute ส่วนสิ่งที่ควรทำ เช่น ให้คอยบริหารจัดการความคาดหวังจาก Stakeholder อยู่ตลอดเวลา จัดการ Product Backlog ทุกวัน แล้วก็พยายามทำตัวให้ว่างเพื่อทีมจะได้ถามคำถามต่างๆ

Abstraction Is A Communication Tool, Period. โดย Terry Yin

terry-agiletourbkk2014-abstraction

คนส่วนใหญ่จะพยายามที่จะเอา Abstraction มาแก้ปัญหา ใช้เป็น Solution แต่จริงๆ แล้ว Abstraction นั้นเป็นแค่เครื่องมือในการสื่อสาร เราควรจะใช้แค่นั้น

Do and Don’t for Continuous Delivery โดย Michael Athiwat Wongwaisayawan

michael-agiletourbkk2014-cd

สิ่งที่ควรทำก็มีอย่างเช่น สร้างวัฒนธรรม DevOps ขึ้นมา รวมไปถึงการทำ Feature Toggle สิ่งที่ไม่ควรทำก็อย่างเช่น จ้างตำแหน่ง DevOps มา ซึ่งตรงนี้มองว่าเป็นการแก้ปัญหาไม่ถูกจุด การแก้ปัญหาจริงๆ ควรจะเป็นการสร้างวัฒนธรรม DevOps ขึ้นมามากกว่า โดย Dev Team กับ Ops Team จะต้องร่วมมือกัน และสื่อสารกันให้ดี ผมชอบสไลด์ข้างล่างนี้มากเลย

michael-agiletourbkk-2014-devops

ส่วน Panel Discussion นั้น.. ไม่ได้เข้าครับ แหะๆ

ปล. ดูตารางงานได้ที่  Agile Tour Bangkok 2014 Schedule
ปล. อีกรอบ สไลด์ของแต่ละหัวข้อจะอยู่ที่ Agile Tour Bangkok 2014 Slides