Data-Driven Ship Design using ELK stacks beat approach


Share this article

การขับเคลื่อนด้วยข้อมูลไม่ใช่เรื่องไกลตัวอีกต่อไป ข้อมูลถูกให้ความสำคัญหรือถูกมองว่ามีมูลค่ามากขึ้นเมื่อ AI (artificial intelligence) เริ่มมีการใช้อย่างแพร่หลายและเป็นที่คุ้นเคยกับบุคคลทั่วไป ในช่วงเวลาที่ผ่านมาจะเห็นได้ว่า ธุรกิจต่างๆ เช่น ธนาคาร ผู้ให้บริการเครือข่ายโทรศัพท์ หรือแม้กระทั่ง ผู้ให้บริการแอพพลิเคชั่น ต่างให้ความสนใจ กับการวิเคราะห์ข้อมูลที่มีอยู่ เพื่อใช้ในการตอบโจทย์ทางธุรกิจ เช่น การกระตุ้นยอดขาย จากการวิเคราะห์แนวโน้มหรือลักษณะของลูกค้า หรือ การตรวจสอบระบบ (monitoring system) เพื่อหาจุดบกพร่องหรีอสิ่งผิดปกติที่เกิดขึ้นในระบบ โดยทั่วไปแล้วในการวิเคราะห์ข้อมูล บริษัทส่วนใหญ่มักจะแบ่งบุคคลากรออกเป็น สองหน้าที่หลักๆด้วยกัน คือ data scienctist (นักวิทยาศาสตร์ข้อมูล) และ data engineer (วิศวกรข้อมูล) โดย data engineer จะทำหน้าที่ ในการออกแบบ ตัวระบบขับเคลื่อนข้อมูล ไม่ว่าจะเป็นการออกแบบ data pipelinหรือ data warehouse (คลังข้อมูล) เพื่อให้ data scienctist นำไปใช้วิเคราะห์ข้อมูล ไม่ว่าจะเป็นการทำ data visualization (การแสดงข้อมูล) หรือนำไปวิเคราะห์เพื่อหาคำตอบให้กับ โจทย์ทางธุรกิจ ซึ่งในบทความนี้จะกล่าวถึงข้อมูลด้าน data engineer เกี่ยวกับแนวคิด การออกแบบตัวส่งข้อมูล เพื่อเพิ่มประสิทธิภาพของการเก็บข้อมูล รวมถึงการวิเคราะห์ และตรวจสอบ ตลอดจนการทำงาน ในขณะที่ที่ทำการส่งข้อมูล โดยในบทความนี้จะอธิบายถึง วิธีการหรือแนวคิดสำคัญในการขับเคลื่อนข้อมูล สำหรับการออกแบบตัวส่งข้อมูล แล้วจะอธิบาย แนวคิดการออกแบบสำหรับตัวส่งข้อมูล ที่ถูกเรียบเรียงโดย Gaspar (2018) [1] และสุดท้ายจะพูดถึงตัวอย่างการออกแบบตัวส่งข้อมูลโดยนำ ELK Stack Beats มาใช้ในการวิเคราะห์

1. วิธีการขับเคลื่อนข้อมูลสำหรับการออกแบบตัวส่งข้อมูล

ในยุคปัจจุบันที่เทคโนโลยีเข้ามามีบทบาทกับชีวิตประจำวันมากขึ้นหลายธุรกิจเริ่มตระหนักถึงปริมาณของข้อมูลที่มากขึ้นการออกแบบระบบที่เหมาะสม ทำให้สามารถรักษาสเถียรภาพในการทำงานได้อย่างต่อเนื่อง การศึกษาเรื่องนี้มีความสำคัญ เนื่องจากเป็นพื้นฐานที่เราจะสามารถเปลี่ยนข้อมูลให้เป็นความรู้ที่จะนำไปใช้ได้ การออกแบบที่ดี จะเพิ่มประสิทธิภาพของ การทำงานโดยเฉพาะเวลาส่งข้อมูล ที่จะรวดเร็วและแม่นยำมากขึ้น นอกจากนี้การขับเคลื่อนด้วยข้อมูลนั้นมักจะเชื่อมโยงกับ การสร้างและพัฒนาเครื่องมือ ซึ่งรวมถึงทักษะ และกระบวนการที่ใช้กับข้อมูล  โดยเราสามารถสรุปเป็นหัวข้อหรือสิ่งที่ต้องทำการตรวจสอบสำหรับการออกแบบตัวส่งข้อมูลอย่างมีประสิทธิภาพ [2] ดังต่อไปนี้

การรวบรวมข้อมูล (Data Collection)

การเก็บข้อมูลทั้งหมดที่เกี่ยวข้องกับธุรกิจจากหลายแหล่งที่มาไม่ว่าจะเป็น ข้อมูลตัวเลข ภาพวาด ระบบบันทึกต่างๆ ก็อาจจะมีรูปแบบเฉพาะตัวหรือต่างไปตามเครื่องมือที่ใช้ก็เป็นได้

คุณภาพของข้อมูล (Data Quality)

ก่อนที่จะนำข้อมูลไปใช้ควรจะทำการสำรวจข้อมูลไม่ว่าจะเป็น ความแม่นยำ ความเชื่อมโยง ความสมบูรณ์ ความสม่ำเสมอและความเกี่ยวข้อง ต่างก็ส่งผลกระทบต่อประสิทธิภาพในการขับเคลื่อนข้อมูล

การเข้าถึงข้อมูล (Data Access)

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

การวิเคราะห์ข้อมูล (Data Analysis)

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

รายงาน/แจ้งเตือน (Report/Alert)

หลังจากข้อมูลถูกส่งเข้ามาต้องทำการรายงานและตรวจสอบเพื่อยืนยันประสิทธิภาพข้อมูลที่จะนำไปใช้งาน

รูปที่ 1 ตัวอย่าง visualization dashboard ของ system log บน Kibana

2. การออกแบบตัวส่งข้อมูล

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

ผลิตภัณฑ์และกระบวนการในการออกแบบตัวส่งข้อมูล

ในที่นี้คำว่าผลิตภัณฑ์จะหมายถึง ตัวส่งข้อมูล ซึ่งจะเป็นผลลัพธ์จากกระบวนการออกแบบ เพื่อให้สามาถเลือกวิธีที่เหมาะสมและครอบคลุมสำหรับในการประเมินประสิทธิภาพของตัวส่งข้อมูล เช่น ประสิทธิภาพดีขึ้นกว่าตัวก่อนด้วยการที่สามารถส่งข้อมูลได้เร็วขึ้น และกระบวนการติดตั้งสะดวกขึ้นหรือง่ายกว่า แต่ควรจะเข้าใจก่อนว่า การวัดของทั้งสองรูปแบบที่กล่าวไปนี้ อาจจะไม่เกี่ยวข้องกัน โดยปกติแล้วตัวส่งข้อมูลที่ดีนั้น อาจจะได้มาจากกระบวนการออกแบบที่ไม่ดี ในขณะที่การออกแบบที่ดีอาจจะทำให้ประสิทธิภาพด้อยกว่าตัวก่อนหน้า สามารถดูได้จากในรูปที่ 2 ถ้าข้อมูลภายในรูปนั้นเชื่อมโยงกับความเป็นจริงของการทำงานสำหรับตัวส่งข้อมูล จะทำให้สามารถสรุปถึงความสัมพันธ์ระหว่าง ผลิตภัณฑ์ (product) และกระบวนการ (process) ได้ว่า กระบวนการหรือการออกแบบเดิมย่อมทำให้ได้ผลิตภัณฑ์หรือตัวส่งข้อมูลประสิทธิภาพเท่าเดิม เป็นโซนสีเหลืองในรูปที่ 2 ถ้าไม่มีปัจจัยภายนอกเข้ามาเกี่ยวข้อง สำหรับแนวคิดในการพัฒนาหรือผลพวงจากการเรียนรู้ [3] โดยมักจะถูกนำมาเปรียบเทียบกับการออกแบบหรือตัวส่งข้อมูลรุ่นก่อนหน้าหรือที่ใช้งานอยู่ ดังนั้นเราสามาถวัดได้ว่าการออกแบบที่ดีขึ้นถึงแม้จะทำให้ได้ผลิตภัณฑ์หรือตัวส่งข้อมูล ไม่ว่าจะแบบเดิมหรือดีกว่า ก็ยังนับว่าเป็นการพัฒนาที่ดี เป็นโซนสีเขียวในรูปที่ 2 และสิ่งที่ควรหลีกเลี่ยงมากที่สุด คือการออกแบบที่ดีแต่ลดประสิทธิภาพของตัวส่งข้อมูล ย่อมไม่ก่อให้เกิดความพึงพอใจต่อคนออกแบบด้วยการลดต้นทุนแต่อาจก่อให้เกิดตัวส่งข้อมูลที่แย่กว่าเดิมและอาจทำให้ไม่มีประสิทธิภาพมากพอในการใช้งานได้

รูปที่ 2 แนวคิดของผลิตภัณฑ์และกระบวนการ คุณภาพข้อมูลในการออกแบบตัวส่งข้อมูล
วิธีการล่างขึ้นบนและบนลงล่างสำหรับตัวส่งข้อมูล

วิธีการออกแบบตัวตัวส่งข้อมูลมักจะถูกแบ่งออกเป็น 2 ประเภทด้วยกันคือ วิธีการออกแบบจากบนลงล่างและล่างขึ้นบน ซึ่งจะมีความต่างกันที่ วิธีบนลงล่างจะเน้นพิจารณาจากสิ่งที่ต้องการโดยการหาวิธีที่ใช้งานได้จริงภายในระยะเวลาที่สั้น และพิจารณาถึงต้นทุนตามมา แต่จะขาดในเรื่องของนวัตกรรม มีอคติ และขาดต่อข้อมูลเชิงลึกจากการศึกษาการออกแบบก่อนหน้า ส่วนวิธีการมองจากล่างขึ้นบนนั้น เป็นวิธีการที่จะเชื่อมกันระหว่างองค์ประกอบหลักเฉพาะและระบบย่อยที่ส่งผลโดยตรงต่อตัวส่งข้อมูล ซึ่งมีวิธีที่แตกต่างกันสำหรับการแบ่งตัวส่งข้อมูลและความเข้าใจในวิธีการ เช่น การออกแบบเหมือนบล็อกอาคารของ Andrews and Pawling (2005) [4] ซึ่งการออกแบบในแนวนี้มักเป็นจุดเริ่มต้นของการสร้างนวัตกรรมและเทคโนโลยีใหม่ๆ แต่จะพบกับปัญหาเนื่องจากขาดความรู้ที่เชื่อมโยงกับความไม่แน่นอนของโครงการประเภทเดียวกัน ตัวอย่างทั่วไปของวิธีการจากบนลงล่างคือการวิเคราะห์การถดถอยและสูตรเชิงประจักษ์ที่สังเกตได้ในส่วนใหญ่ของการชดเชยการออกแบบตัวส่งข้อมูลงานของ Roh and Lee (2018) [5] โดยรูปที่ 3a จะอธิบายถึงการประเมินแบบดั้งเดิมโดยอ้างอิงจากการใช้น้ำหนักและปริมาตรมาคิดในรูปแบบของบนลงล่าง ส่วนรูปที่ 3b จะเห็นได้ว่าจะเริ่มจากส่วนสำคัญที่ส่งผลในการส่งข้อมูลก่อนแล้วสิ่งที่ต้องการถึงจะตามมาหลังจากบล็อกส่วนอื่นถูกประกอบเข้าด้วยกัน ซึ่งถ้ามองจากในรูปคร่าวๆ จะเห็นได้ว่า ถ้าจะทำการสร้างเรือนั้นก็จะทำการสร้างตัวใบพัดเรือที่ใช้ในการขับเคลื่อนก่อน หลังจากนั้นจึงสร้างส่วนอื่น ๆ ของเรือตามมา

Top-Down
Bottom-Up
รูปที่ 3: วิธีการบนลงล่าง, Roh and Lee (2011)

รูปที่ 4: วิธีการจากล่างขึ้นบน, Andrews and Pawling (2005) ซึ่งเป็นการอธิบายการออกแบบตัวส่ง

การใช้วิธีเหล่านี้ไม่ได้การันตีผลลัพธ์ในการที่จะสามารถออกแบบตัวส่งข้อมูลที่ดีได้ เป็นเพียงแนวคิดในการช่วยในการออกแบบเท่านั้นโดยปกติเรายังต้องคำนึงถึงองค์ประกอบหรือความเป็นจริงด้วย ดังตัวอย่างต่อไปนี้ในการออกแบบของ Levander (2006) [5] ที่เป็นวิธีการออกแบบระบบรวมกันระหว่างการคำนวณปริมาตรและการถดถอยตามน้ำหนักรวม สิ่งที่เป็นความท้าทายคือ การจัดการที่เหมาะสมเพื่อเชื่อมต่อระหว่างจุดปลายของทั้งสองข้อมูลในมาตรฐานเดียวกัน โดยเฉพาะในระหว่างการออกแบบแนวคิดขณะที่การปรับพาราเมตริกโมเดลที่ดีจะช่วยทำให้สามารถส่งมอบวิธีการแก้ไขปัญหาได้อย่างรวดเร็ว อาจจะเห็นได้ว่าทางออกของการแก้ปัญหานี้อาจจะต้องอยู่ในมือของเหล่านักออกแบบที่มีประสบการณ์ ด้วยความรู้ที่สั่งสมมานานนับหลายปีจากการฝึกฝนในการตัดสินใจมากกว่าวิธีการแบบบนลงล่างหรือล่างขึ้นบน

3. แพลตฟอร์ม ELK Stack

ในส่วนนี้จะทำการอธิบายการออกแบบ โดยยกตัวอย่างจากเครื่องมือหรือแพลตฟอร์มของ ELK Stack ซึ่งย่อมาจาก  Elastic search, Logstash และ Kibana ซึ่ง Beats ทำหน้าที่เป็น data shipper ซึ่งก็ถือเป็นเครื่องมือตัวหนึ่งที่ไว้ใช้สำหรับเป็นตัวส่งข้อมูล ซึ่งถูกออกแบบมาให้สามารถทำงานกับ ELK Stack [6] ได้นั่นเอง ซึ่งก็เป็นเครื่องมือที่ได้รับการตอบรับ แล้วใช้อย่างแพร่หลายในปัจจุบัน มีกระบวนการและการติดตั้งที่ใช้งานได้ง่าย ซึ่งโดยปกติจะมีโครงสร้างทั่วไป [7] ตามในรูปที่ 4 โดยจะมี Beats ทำหน้าที่เก็บข้อมูล Logstash ทำหน้าที่เป็น preprocess pipeline ส่วน Elasticsearch เป็น data warehouse และสุดท้าย Kibana ทำหน้าที่ visualization

READ  Personalized Medicine with Artificial Intelligence
รูปที่ 5 โครงสร้างโดยทั่วไปที่เหมาะกับการใช้งานสภาพแวดล้อมขนาดเล็ก

เก็บข้อมูลมีจำนวนเพิ่มขึ้น ซึ่งจะทำให้ปริมาณข้อมูลที่ถูกเก็บมีมากขึ้น และอาจจะทำให้ประสิทธิภาพของระบบที่เป็นอยู่นั้นลดลง เราสามารถออกแบบโดยการเพิ่มตัว buffer ก่อนที่จะส่งเข้า Logstash เพื่อทำการ preprocess ข้อมูลดังรูปที่ 5 ที่มีการเพิ่ม buffer เช่น Kafka, Redis หรือ RabbitMQ เข้าไปและมีการเพิ่มความปลอดภัยโดยใช้ NGINX เนื่องจากเรารู้ว่าถ้ามีปริมาณข้อมูลเข้ามาพร้อมกันมากเกินไปกว่าที่ Logstash จะรับไหวจะทำให้ Logstash มี JVM Heap ไม่เพียงพอในการรับข้อมูลที่ถูกส่งเข้ามา ซึ่งจะถูกบังคับให้เรียกใช้งาน Garbage collector ซึ่งไม่ได้ส่งผลให้แค่สูญเสียทรัพยากรเพิ่มเติมเท่านั้น ยังทำให้ระบบโดยรวมช้าลงอีกด้วย ที่กล่าวมาเป็นเพียงการยกตัวอย่างเพื่อก่อให้เกิดความเข้าใจได้ง่ายขึ้นเท่านั้น ส่วนในการใช้งานในภาคธุรกิจจริงนั้น อาจจะต้องมีการรับมืออีกหลายๆปัจจัย โครงสร้างอาจจะประกอบไปด้วย Elasticsearch หลายๆตัวเข้าด้วยกัน หรืออาจจะมี Logstash หลายตัวเพื่อทำ Load balance โดยที่อาจจะไม่จำเป็นต้องใช้ buffer เพิ่มอีก และที่สำคัญคือการปรับพารามิเตอร์ภายใน โดยต้องอ้างอิงถึงทรัพยากรของเซิร์ฟเวอร์ที่มีด้วย ซึ่งจะต้องอาศัยความชำนาญและประสบการณ์ เช่นขนาดของ batch ที่ไว้ส่งข้อมูลบน Beats หรือขนาดของ JVM heap บน Logstash ในบางทีอาจจะต้องทำการสร้าง Beats ใหม่ที่สนับสนุนการเก็บข้อมูลตามที่เราต้องการโดยต้องทำการเลือก Beats ให้ถูกประเภทหรือมีการใช้ module ที่มีอยู่ใน Beats ก็อาจจะทำให้สามารถลดภาระในการเขียน data pipeline ลงบน Logstash ได้

รูปที่ 6 เป็นการออกแบบเพื่อรองรับ data pipeline ที่ซับซ้อนขึ้นและปริมาณข้อมูลที่มากขึ้น

จากที่บทความกล่าวมาข้างต้นนั้นเป็นแนวคิดที่จะช่วยออกแบบสำหรับตัวส่งข้อมูล รวมถึงสิ่งที่ควรคำนึงหรือตระหนักถึง แต่ที่สำคัญคือเราต้องศึกษาข้อมูลของตัวเครื่องมือ หรือ platform ที่เราใช้งานว่ามีข้อดีข้อเสียยังไง เพื่อที่จะสามารถหาแนวทางในการช่วยออกแบบตัวส่งข้อมูลได้ โดยในบทความนี้ทำการยกตัวอย่างจากแพลตฟอร์ม ELK Stack ในกรณีที่ต้องมีการออกแบบระบบใหม่ ซึ่งสุดท้ายนั้นก็ต้องอาศัยความชำนาญ และความเข้าใจเป็นสำคัญในการเลือกตัดสินใจให้สามารถออกแบบระบบตัวส่งข้อมูลได้อย่างมีประสิทธิภาพ

Reference
[1] Henrique M. Gaspar (2018), Data-Driven Ship Design

[2] ANDERSON, C. (2015), Creating a Data-Driven Organization, O’Reilly

[3] ERICHSEN, S. (1994) The effect of learning when building ships, J. Ship Production 10/3, pp.141-145

[4] ANDREWS, D.; PAWLING, R. (2008), Concept studies for a joint support ship, J. Nav. Eng. 44/2

[5] ROH, M.; LEE, K.Y. (2018), Computational Ship Design. Springer

[6] ELK Stack, https://www.elastic.co

[7] Daniel Berman (2020) ,The Complete Guide to the ELK Stack, https://logz.io/learn/complete-guide-elk-Stack/


ลงทะเบียนรับข่าวสาร

ไม่พลาดทุกการอัพเดทจาก Big Data Experience Center

Big Data Experience Center (BX)

ชั้น 14 อาคาร Knowledge Exchange Center (KX)
110/1 ถนนกรุงธนบุรี, แขวงบางลำภูล่าง เขตคลองสาน กรุงเทพฯ 10600
อีเมล์: [email protected]
Tel: 097-941-9889

ABOUT

SERVICES