บทความนี้แอดสรุปเนื้อหาอย่างละเอียดจากคอร์ส Data Engineering for Everyone ของ DataCamp ถ้าอยากรู้ว่า data engineer ทำงานอะไรบ้าง และแตกต่างจาก data scientist และ data analyst ยังไง อ่านต่อได้เลยคร้าบ Show
สำหรับเพื่อนๆที่สนใจ คอร์สเรียนนี้ใช้เวลาเรียนประมาณ 2 ชั่วโมง ประกอบด้วย 11 วีดีโอ 32 แบบฝึกหัด สอนโดย Hadrien Lacroix เนื้อหาแบ่งออกเป็นสามบท อธิบายคอนเซ็ปต์และคำศัพท์พื้นฐานของงาน data engineer
ส่วนตัวแอดคิดว่าคอร์สนี้สอน concept โอเคเลย ได้เห็นภาพรวมของงาน data engineer และเข้าใจศัพท์เทคนิคที่เราใช้กันเยอะมากในสายงาน data เช่น data warehouse, databases, data lake, ETL pipeline เป็นต้น Data Workflowมาเริ่มกันที่ Data (Analytics) Workflow หรือกระบวนการไหลของข้อมูลจากต้นจบจบ ออกมาเป็น data products หรือง่ายสุดคือ models โดย data engineer (หรือ DE) จะทำงานที่ phase 1 เป็นหลักคือเรื่อง data collection & storage แปลไทยว่าการรวบรวมและจัดเก็บข้อมูลนั่นเอง Data Workflow การไหลของข้อมูล (ที่มา DataCamp)ถ้า DE เตรียมข้อมูลมาดี คนอื่นๆในบริษัท (Data Scientist/ Data Analyst) ก็จะสามารถทำงานได้สะดวกขึ้นมาก จริงๆต้องบอกว่าถ้าไม่มี DE คนอื่นๆจะทำงานต่อไม่ได้เลย (หรือถ้าต้องทำ data workflow เอง ก็จะเสียเวลามาก) Data Scientist (DS) และ Data Analyst (DA) จะอยู่ที่ท้ายๆของ data workflow งานส่วนใหญ่สามารถเขียน SQL เพื่อดึงข้อมูลออกมาใช้งานได้เลย เช่น การทำ exploration/ visualization ไปจนถึงการทดลองและสร้างโมเดล What is Data Engineer?Data Engineer (DE) คือคนที่เก็บรวบรวม จัดเก็บ และดูแลข้อมูลทั้งหมดของบริษัทให้มันสามารถใช้งานได้จริง DataCamp สรุปนิยามของตำแหน่งไว้ดีมาก ดังนี้ ✔️ Data engineer delivers the หน้าที่หลักของ DE คือการย่อย (ingest v.) ข้อมูลจากหลายแหล่งที่บริษัทเราเก็บมา เช่น ข้อมูลการใช้งานของลูกค้า ข้อมูลจาก Facebook, Twitter, YouTube หรือ social media อื่นๆ ข้อมูลจากร้านค้าทั้งแบบออนไลน์และออฟไลน์ และเซนเซอร์รูปแบบต่างๆ (Internet of Things) พอย่อยข้อมูลเสร็จแล้ว DE จะทำความสะอาดข้อมูล จัดการ missing values ปรับหน้าตาข้อมูลเบื้องต้น หรือทำ data aggregation ตามความต้องการของธุรกิจนั้นๆ (business requirements) และโหลดข้อมูลใส่ data warehouse/ databases ให้กับ users คนอื่นๆใช้งานต่อไป ขั้นตอนที่แอดสรุปมาเรียกว่าการทำ ETL Pipeline หรือ Note – ภาษาอังกฤษเราใช้คำว่า data ingestion คือกระบวนการรวบรวมข้อมูล (obtain/ extract) เพื่อทำ processing อื่นๆต่อไป ในบทความนี้แอดแปล ingest ว่า “ย่อย” ใครมีคำดีกว่านี้ ช่วยแนะนำด้วยนะคร้าบ 555+ Big Dataปัจจัยสำคัญที่ทำให้ data engineer เป็นที่ต้องการมากในตลาดคือปริมาณข้อมูลที่เพิ่มขึ้นอย่างต่อเนื่อง และข้อมูลที่มีความหลากหลายมาจากหลาย sources ทุกวันนี้เราเรียกข้อมูลขนาดใหญ่ว่า “Big Data” คอร์สเรียนของ DataCamp สรุปคุณลักษณะของ Big Data ไว้ 5 ข้อ ดังนี้
อันนี้นอกเรื่อง Hadley Wickham เคยเขียนไว้ว่าโปรเจ็ค Big Data ส่วนใหญ่หลังจากที่เรา process & transform ข้อมูลเสร็จแล้ว มันก็ไม่ได้ใหญ่อย่างที่คิด 555+ ตัวอย่างเช่น ลูกค้าดีแทคแบบรายเดือน 5 ล้านคน เตรียมข้อมูลไว้ 50 คอลัมน์ ถ้าเราจะเทรนโมเดลในคอมพิวเตอร์ตัวเอง จริงๆก็สามารถทำได้ อาจจะใช้เวลานานหน่อยแต่ได้ผลลัพธ์เหมือนกัน สำหรับเพื่อนๆที่อยากมาสาย data engineer จะต้องมีความรู้ความเข้าใจเกี่ยวกับเทคโนโลยี Big Data หลายตัวด้วยกัน เช่น Spark, Airflow, Snowflake (เรื่องเทคโนโลยีจะขึ้นอยู่กับบริษัทที่เราไปทำงานด้วย รู้ภาพรวมคร่าวๆก็ดีครับ) รวมถึงผู้ให้บริการ cloud platform ต่างๆ เช่น Amazon AWS, Google Cloud Platform และ Microsoft Azure Data Engineers Enables Data Scientistsส่วนตัวแอดชอบประโยคนี้มาก “Data engineers enable data scientists” โฟกัสที่คำว่า “enable” (V.) งาน data science จะเกิดขึ้นไม่ได้เลยถ้าไม่มีทีมวิศวกรข้อมูลดีๆ แอดสรุปความแตกต่างของ DE vs. DS ในตารางด้านล่าง
สรุปง่ายๆจากตารางนี้ DE คือคนวางระบบข้อมูล ส่วน DS/ DA เป็นคนนำข้อมูลมาใช้ต่อ (หรือจะเรียกว่า users ก็ได้) DE ยังมีหน้าที่ทำพวก optimization อีกด้วย เช่น การปรับจูนฐานข้อมูลให้ทำงานได้เร็วขึ้น นำเทคโนโลยีใหม่ๆมาช่วยทีม DS/ DA ให้ทำงานได้มีประสิทธิภาพมากขึ้น ตามนิยามที่เราอธิบายมาก่อนหน้านี้คือ as efficiently as possible โดยคำว่า Automated Data Pipelineตะกี้แอดมีเกริ่นเรื่อง Data Pipeline มาคร่าวๆ ต้องบอกว่าคำนี้เป็นศัพท์ที่สำคัญที่สุดของงาน data engineer เลย อธิบายง่ายๆเป็นภาษาไทยคือการย้ายข้อมูลจากที่หนึ่งไปอีกที่หนึ่ง (pipe n. แปลว่า ท่อ เหมือนท่อการไหลของข้อมูล) โดยข้อมูลจะถูกไหลไปใส่ databases/ data warehouse ที่มา Google Cloud Platformลองนึกภาพทุกเดือนเวลามีลูกค้าใหม่เข้ามาใช้บริการของบริษัทเรา ตั้งแต่การลงทะเบียน ซื้อสินค้า และการใช้งานต่างๆ data engineer จะเตรียม script เพื่อทำขั้นตอนต่างๆใน data pipeline แบบอัตโนมัติ และตั้งเวลาให้รันทุกๆวันที่ 30 ของเดือน (batch) หรือรันแบบ stream แปลง่ายๆว่าการรัน pipeline สำหรับลูกค้าแต่ละคนเลย (individual data) งาน Automated Pipeline ที่ DE ทำกันตลอด เช่น Data StructuresDE จะมีความรู้เกี่ยวกับ data structures ดีมาก โดยเราสามารถจับกลุ่มข้อมูลตามโครงสร้าง (structures) ได้สามแบบ
โลกของเรามีข้อมูลประเภท unstructured เยอะมาก เช่น รูปภาพ ไฟล์เสียง วีดีโอ และข้อความต่างๆ คอร์สเรียนของ DataCamp ประเมินว่าข้อมูลประเภทนี้มีอยู่ประมาณ 80% (เปรียบเทียบกับ structured แค่ 20%) Structured Data เป็นข้อมูลที่ทำงานด้วยง่ายที่สุด มีความเป็นระเบียบเรียบร้อยสูง เช่น ตารางที่อยู่ในฐานข้อมูล (Relational Databases) หรือไฟล์ csv/ excel ที่เราใช้งานอยู่ทุกวัน ที่มา What is Structured Data? (IAC)ถัดมาคือข้อมูลแบบ semi-structured ต่อยอดมาจาก structured เพิ่มความยืดหยุ่นในการเก็บข้อมูล ตัวอย่างเช่น JSON, XML และ YAML (อ่านว่า แยม-เมล) ข้อมูลด้านล่างคือข้อมูล JSON ง่ายๆที่แอดเอามาจากเว็บไซต์ MongoDB เราเรียกการเก็บข้อมูลแบบนี้ว่า schemaless ลูกค้าแต่ละคนไม่จำเป็นต้องมีจำนวนคอลัมน์หรือ attribute เท่ากันก็ได้
สุดท้ายคือข้อมูลแบบ unstructured ตัวอย่างเช่น วีดีโอบน YouTube หรือ facebook posts/ comments ในแต่ละวันมากกว่าพันล้านครั้ง ข้อมูลประเภทนี้จะจัดการได้ยากที่สุดเลย ทั้งการค้นหาหรือจัดระเบียบต่างๆ ส่วนใหญ่จะถูกเก็บอยู่ใน data lake เก็บเป็นไฟล์แบบ raw format ยังไม่ได้ผ่านการ process ใดๆ Unstructured data จัดการได้ยากที่สุดแต่ก็มีประโยชน์มากที่สุดเช่นกัน ทุกวันนี้เราสามารถใช้ AI/ ML โดยเฉพาะ Deep Learning ในการ extract ข้อมูลสำคัญออกมาจาก unstructured sources ตัวอย่างเช่นการวิเคราะห์ภาษาธรรมชาติหรือ natural language processing หรือการทำ object detection ด้วย computer vision SQL Databasesภาษาที่ Data Engineer ชำนาญมากที่สุดคือ SQL SQL ย่อมาจาก Structured Query Language เป็นภาษาทางการที่เราใช้ทำงานกับฐานข้อมูลตั้งแต่ปี 1970s ส่วนตัวแอดคิดว่านี่คือภาษาแรกที่ทุกคนควรเรียนเลย เรียนรู้ง่าย นำไปใช้ประโยชน์ได้ทันที
ตำแหน่ง DE vs. DS จะมีวัตถุประสงค์ในการเขียน SQL ต่างกันดังนี้
อธิบายสั้นๆ DE ใช้ SQL เพื่อสร้างและอัพเดทข้อมูลใน databases ส่วน DS/ DA คือ users ที่ดึงข้อมูลไปวิเคราะห์ SQL ในตลาดจะมีอยู่หลายเวอร์ชันด้วยกัน เช่น SQLite, MySQL, PostgreSQL, Oracle Server, SQL Server รวมถึง SQL on Cloud อย่างเช่น Amazon Aurora และ Google Cloud SQL Data Warehouse vs. Data LakeDatabase หรือฐานข้อมูลมีนิยามง่ายๆว่า “Organized data ทบทวนเรื่องการเก็บข้อมูล data warehouse จะเก็บข้อมูลแบบ structured ส่วน data lake เก็บข้อมูลแบบ raw/ unstructured แอดทำตารางสรุปฟีเจอร์ของสองเทคโนโลยีนี้ด้านล่าง
Data Lake จะมี data catalog เหมือนเป็น document เพื่อบันทึกรายละเอียดข้อมูลที่ถูกเก็บใน lake เช่น ที่มาของข้อมูล ใครเป็นเจ้าของข้อมูล ความถี่ในการอัพเดท ข้อมูลถูกนำไปใช้ทำอะไรต่อ เป็นต้น เวลาเลือกเทคโนโลยีในการเก็บข้อมูล นอกจากเรื่อง data structures เราต้องคำนึงถึงปัจจัยอื่นๆ เช่น Processing DataData Processing คือการเปลี่ยนข้อมูลจาก raw format เป็น meaningful information หลายคนน่าจะเคยได้ยินคนพูดกันว่า “Data is the new oil” หน้าที่ของ data engineer คือทำการกลั่นน้ำมันดิบ refine/ process จนมันสามารถนำมาใช้ประโยชน์ได้ กระบวนการกลั่นเกิดขึ้นใน pipeline ที่เรากำหนด (ตรงนี้คือ programming ล้วนๆ) โดยเครื่องมือของ DE จะมีให้เลือกใช้เยอะมากมีทั้งแบบฟรีและเสียเงิน เครื่องมือของ data engineer (ที่มา DataCamp)แล้ว data processing ต้องทำอะไรบ้าง? แอดสรุปมา 5 ข้อ
ภาษาที่ data engineer ใช้หลักๆคือ SQL, Python, Java, Scala และ Shell สำหรับเพื่อนๆที่สนใจงานตำแหน่งนี้ เริ่มศึกษา SQL + Python ก่อนได้เลย สองภาษานี้คือพื้นฐานสำคัญ ใช้เวลาเรียนไม่นาน นำไปต่อยอดได้ง่าย SchedulingScheduling คือการกำหนดตารางการรันงานต่างๆของ data pipeline โดยเราสามารถตั้ง schedule ได้สามแบบ
สำหรับ data engineer อะไรที่มัน automate ได้ ก็ควรทำเป็น automate ให้หมด ตรงส่วนนี้จะใช้ความรู้ด้าน software engineering เยอะหน่อย อีกเรื่องหนึ่งที่ DE ต้องคำนึงถึงคือวิธีการ ingest data ใน pipeline
Parallel ComputingParallel Computing คือเทคโนโลยีที่ช่วยให้การ process ข้อมูลขนาดใหญ่สามารถทำได้ง่ายและเร็วขึ้นในปัจจุบัน วิธีการทำงานของ parallel คือการแตกงานใหญ่เป็นงานย่อย (subtasks) และกระจายไปตาม processing units ต่างๆ (ให้มองแต่ละ unit เป็นคอมพิวเตอร์เครื่องหนึ่งก็ได้) ตัวอย่างเช่น ถ้าเราต้องพับเสื้อ t-shirt 1000 ตัว โดยเวลาในการพับอยู่ที่ 100 ตัว/ 15 นาที ถ้าทำงานนี้คนเดียวจะใช้เวลา 2 ชั่วโมงครึ่งถึงจะทำเสร็จทั้งหมด แต่ถ้าเราใช้คอนเซ็ปต์ของ parallel computing กระจายงานไปที่เพื่อนสี่คน (processing units) บรีฟงานเพื่อนใช้เวลา 10 นาที แต่ละคนจะใช้เวลาแค่ 1 ชั่วโมง 15 นาที พับเสื้อ 250 ตัว รวม output ทั้งหมดได้ 1000 เท่าเดิม อธิบายคอนเซ็ปต์ง่ายๆเรื่อง parallel computing (ที่มา DataCamp)ข้อดีของการใช้ parallel computing คือเราได้ extra processing power ทำงานเสร็จเร็วขึ้น แต่ข้อเสียคือการย้ายข้อมูล (moving data) ไปที่ processing units ต่างๆมีต้นทุนที่เราต้องจ่าย รวมถึงเวลาที่ processing units ต้องคุยกันด้วย (communication time) สังเกตในรูปด้านบน หลังจากทุก unit ทำงานเสร็จแล้ว ทั้งสี่ units จะใช้เวลาอีกประมาณ 5 นาที เพื่อรวมเสื้อที่พับแล้วทั้งหมดเข้าด้วยกัน รวมเวลาในการทำงานทั้งหมด บรีฟงาน 10 นาที พับเสื้อ 75 นาที และรวมเสื้ออีก 5 นาที = 10 + 75 + 5 = 90 นาที หรือหนึ่งชั่วโมงครึ่ง ประหยัดเวลาได้หนึ่งชั่วโมง Note – Parallel Computing ไม่ได้เหมาะสมกับทุกสถานการณ์ ถ้าประโยชน์ที่เราได้จากการทำ parallel ไม่มากพอ ก็ใช้วิธี processing แบบเก่าไปก่อนก็ได้ ตัวอย่างเช่น สถานการณ์ที่การย้ายข้อมูลไปที่ processing units ช้ามากหรือมีต้นทุนสูง เป็นต้น Cloud ComputingCloud คือบริการให้เช่า storage, databases, computing power ตาม demands ที่เราต้องการใช้งาน ผู้ให้บริการรายใหญ่ในตลาดคือ Amazon AWS, Microsoft Azure และ Google Cloud ตามลำดับ ผู้ให้บริการ Cloud รายใหญ่ เรียงตามส่วนแบ่งตลาด (ที่มา DataCamp)ทุกวันนี้งานของ data engineer (เกือบ)ทั้งหมดสามารถทำผ่าน cloud services ได้เลย ตั้งแต่การ ingest ข้อมูล สร้าง data pipeline/ flow และโหลดข้อมูลเข้าสู่ databases/ data warehouse พร้อมให้ users ใช้งาน เปรียบเทียบกับ on premises (ออน-เพรม คือการลงทุนซื้อและสร้าง data centers ของตัวเอง) การเช่าใช้งาน cloud มีข้อดีกว่าหลายอย่าง แอดสรุปมาแล้วในตารางด้านล่าง
ข้อดีที่สุดของ cloud คือการที่เราสามารถปรับเปลี่ยนขนาด resources (server, storage, computing power) ตามการใข้งานจริง จ่ายเงินเฉพาะที่เราใช้ ไม่จำเป็นต้องลงทุนเยอะๆ (no high investment cost) และไม่ต้องกังวลเรื่อง unused capacity เมื่อเทียบกับ on-premises แบบเก่า แต่ข้อเสียคือเข้ามาใช้บริการแล้วเลิกยาก 555+ เพราะบริษัท cloud เค้าก็พยายามจะล็อคเราไว้กับเค้าเสมอ ส่วนตัวแอดคิดว่า cloud คืออนาคตจริงๆ เพิ่งไปสอบ AWS Certified Cloud Practitioner มาเมื่อเดือนก่อน ถ้าใครสนใจลองดูรายละเอียดการสมัครสอบได้ที่นี่ ไว้แอดเขียนสรุปให้อ่านอีกที So What’s Data Engineer?หวังว่าตอนนี้ทุกคนจะเข้าใจแล้วว่างาน Data Engineer เป็นยังไง ต้องเจอกับอะไรบ้าง มาสรุปกันอีกครั้งหนึ่ง
Thank You!ขอบคุณที่อ่านจนจบคร้าบ บทความนี้คือบทความที่ 100 ของเว็บไซต์เราพอดีเลย ชอบกดไลค์ ใช่กดแชร์ เป็นกำลังใจให้แอดด้วยนะคร้าบ 😚 หน้าที่หลักของ Data Engineer มีอะไรบ้างวิศวกรข้อมูล (Data engineer) คือผู้ที่จะนำข้อมูลเข้าระบบ ทำการแปลงข้อมูล ทำเรื่อง Data Cleansing ทำให้ข้อมูลมีความถูกต้องขึ้น ซึ่งงานตรงส่วนนี้ต้องมีความรู้ด้านไอที การพัฒนาโปรแกรมภาษาต่างๆเช่น Python และเทคโนโลยีด้านข้อมูล โดยเฉพาะเรื่องของ Big Data อาทิเช่น Database, Hadoop, Spark และ Cloud services ต่างๆ
ต้องมีทักษะใดจึงจะเป็น Data Engineer ได้Data Engineer จะต้องมีทักษะในการใช้แพลตฟอร์มสำหรับจัดการ Big Data ซึ่งนั่นหมายความว่าจะต้องมีการอัพเดทแพลตฟอร์มใหม่ ๆ รวมถึงศึกษาและเข้าใจข้อดี-ข้อเสียของหลาย ๆ แพลตฟอร์ม เพื่อประกอบการตัดสินใจเลือกนำมาใช้งานให้เหมาะสมกับองค์กรมากที่สุด
หน้าที่หลักและความสามารถที่ Data Scientist ต้องมีมีอะไรบ้างกระบวนการทำงานของอาชีพ Data Scientist คือ ตั้งสมมติฐาน → ค้นคว้าหาข้อมูล → วิเคราะห์ข้อมูล → สร้างแบบจำลอง → สื่อสารผลลัพธ์ ทักษะที่จำเป็น Data Scientist คืออาชีพที่บูรณาการองค์ความรู้หลายด้าน ทั้งทักษะทางตรง (Hard skill) และ ทักษะทางอ้อม (Soft skill) ประกอบไปด้วย
องค์ประกอบใดของ Big Data ที่จะต้องอาศัยทักษะของ Data Engineerการเชื่อมโยงข้อมูล เป็นส่วนที่สำคัญมาก และเป็นปัญหาใหญ่ในการทำ Big Data Project ต้องอาศัยทักษะของ Data Engineer ทั้งการเขียนโปรแกรมเอง และใช้เครื่องมือที่มีอยู่มากมาย ทั้งนี้การจะออกแบบช่องทางการเชื่อมโยงข้อมูลได้อย่างสมบูรณ์แบบ จำเป็นต้องทราบก่อนว่า จะนำข้อมูลใดไปทำอะไรต่อบ้าง มิเช่นนั้น การสร้างช่องทางการเชื่อมที่ ...
|