นี่เป็นส่วนที่สองของชุดบทความเกี่ยวกับระบบการวิเคราะห์ (
ในปัจจุบัน ไม่ต้องสงสัยเลยว่าการประมวลผลข้อมูลที่ถูกต้องและการตีความผลลัพธ์สามารถช่วยธุรกิจได้เกือบทุกประเภท ในเรื่องนี้ ระบบการวิเคราะห์เริ่มเต็มไปด้วยพารามิเตอร์มากขึ้นเรื่อยๆ จำนวนทริกเกอร์และเหตุการณ์ผู้ใช้ในแอปพลิเคชันก็เพิ่มขึ้น
ด้วยเหตุนี้ บริษัทต่างๆ จึงให้ข้อมูล "ดิบ" แก่นักวิเคราะห์มากขึ้นเรื่อยๆ เพื่อวิเคราะห์และเปลี่ยนให้เป็นการตัดสินใจที่ถูกต้อง ไม่ควรมองข้ามความสำคัญของระบบการวิเคราะห์สำหรับบริษัท และระบบเองก็ควรมีความน่าเชื่อถือและยั่งยืน
นักวิเคราะห์ลูกค้า
การวิเคราะห์ลูกค้าเป็นบริการที่บริษัทเชื่อมต่อกับเว็บไซต์หรือแอปพลิเคชันผ่าน SDK อย่างเป็นทางการ รวมเข้ากับโค้ดเบสของบริษัท และเลือกทริกเกอร์เหตุการณ์ วิธีนี้มีข้อเสียเปรียบที่ชัดเจน: ข้อมูลที่รวบรวมทั้งหมดไม่สามารถประมวลผลได้อย่างสมบูรณ์ตามที่คุณต้องการ เนื่องจากข้อจำกัดของบริการที่เลือก ตัวอย่างเช่น ในระบบหนึ่ง การรันงาน MapReduce ไม่ใช่เรื่องง่าย แต่ในอีกระบบหนึ่ง คุณจะไม่สามารถรันโมเดลของคุณได้ ข้อเสียอีกประการหนึ่งคือการเรียกเก็บเงินค่าบริการเป็นประจำ (น่าประทับใจ)
มีโซลูชันการวิเคราะห์ลูกค้ามากมายในตลาด แต่ไม่ช้าก็เร็วนักวิเคราะห์ต้องเผชิญกับความจริงที่ว่าไม่มีบริการสากลใดที่เหมาะกับงานใด ๆ (ในขณะที่ราคาสำหรับบริการเหล่านี้เติบโตอย่างต่อเนื่อง) ในสถานการณ์เช่นนี้ บริษัทต่างๆ มักจะตัดสินใจสร้างระบบการวิเคราะห์ของตนเองพร้อมการตั้งค่าและคุณสมบัติที่กำหนดเองที่จำเป็นทั้งหมด
นักวิเคราะห์เซิร์ฟเวอร์
การวิเคราะห์ฝั่งเซิร์ฟเวอร์เป็นบริการที่สามารถปรับใช้ภายในบนเซิร์ฟเวอร์ของบริษัทและ (โดยปกติ) ภายในบริษัทได้ ในโมเดลนี้ กิจกรรมผู้ใช้ทั้งหมดจะถูกจัดเก็บไว้ในเซิร์ฟเวอร์ภายใน ช่วยให้นักพัฒนาสามารถลองใช้ฐานข้อมูลที่แตกต่างกันสำหรับการจัดเก็บ และเลือกสถาปัตยกรรมที่สะดวกที่สุด และแม้ว่าคุณจะยังคงต้องการใช้การวิเคราะห์ฝั่งไคลเอ็นต์ของบุคคลที่สามสำหรับงานบางอย่าง แต่ก็ยังเป็นไปได้
การวิเคราะห์ฝั่งเซิร์ฟเวอร์สามารถใช้งานได้สองวิธี ขั้นแรก: เลือกยูทิลิตี้โอเพ่นซอร์สบางตัว ปรับใช้บนเครื่องของคุณ และพัฒนาตรรกะทางธุรกิจ
ข้อดี
cons
คุณสามารถปรับแต่งอะไรก็ได้
บ่อยครั้งเป็นเรื่องยากมากและจำเป็นต้องมีนักพัฒนาแยกต่างหาก
ประการที่สอง: ใช้บริการ SaaS (Amazon, Google, Azure) แทนที่จะปรับใช้ด้วยตนเอง เราจะพูดถึงรายละเอียดเพิ่มเติมเกี่ยวกับ SaaS ในส่วนที่สาม
ข้อดี
cons
อาจมีราคาถูกกว่าในปริมาณปานกลาง แต่หากเพิ่มขึ้นมากก็จะยังคงมีราคาแพงเกินไป
ไม่สามารถควบคุมพารามิเตอร์ทั้งหมดได้
การบริหารงานถูกเลื่อนไปที่ไหล่ของผู้ให้บริการโดยสิ้นเชิง
ไม่มีใครรู้ว่ามีอะไรอยู่ในบริการเสมอไป (อาจไม่จำเป็น)
วิธีรวบรวมการวิเคราะห์เซิร์ฟเวอร์
หากเราต้องการหลีกหนีจากการใช้การวิเคราะห์ลูกค้าและสร้างของเราเอง ก่อนอื่นเราต้องคิดถึงสถาปัตยกรรมของระบบใหม่ ด้านล่างนี้ ฉันจะบอกคุณทีละขั้นตอนถึงสิ่งที่คุณต้องพิจารณา เหตุใดแต่ละขั้นตอนจึงมีความจำเป็น และเครื่องมือใดที่คุณสามารถใช้ได้
1. การได้มาซึ่งข้อมูล
เช่นเดียวกับในกรณีของการวิเคราะห์ลูกค้า ประการแรก นักวิเคราะห์บริษัทจะเลือกประเภทของเหตุการณ์ที่ต้องการศึกษาเพิ่มเติมและรวบรวมไว้ในรายการ โดยปกติแล้ว เหตุการณ์เหล่านี้จะเกิดขึ้นในลำดับที่แน่นอน ซึ่งเรียกว่า "รูปแบบเหตุการณ์"
นอกจากนี้ ลองจินตนาการว่าแอปพลิเคชันมือถือ (เว็บไซต์) มีผู้ใช้ทั่วไป (อุปกรณ์) และเซิร์ฟเวอร์จำนวนมาก เพื่อถ่ายโอนเหตุการณ์อย่างปลอดภัยจากอุปกรณ์ไปยังเซิร์ฟเวอร์ จำเป็นต้องมีเลเยอร์กลาง ขึ้นอยู่กับสถาปัตยกรรม คิวเหตุการณ์ต่างๆ มากมายสามารถเกิดขึ้นได้
ตามที่
โพสต์บน Quora ในปี 2014 ผู้สร้าง Apache Kafka ตัดสินใจตั้งชื่อซอฟต์แวร์ตาม Franz Kafka เนื่องจาก “เป็นระบบที่ปรับให้เหมาะสมในการเขียน” และเพราะเขาชอบงานเขียนของ Kafka —วิกิพีเดีย
ในตัวอย่างของเรา มีผู้ผลิตข้อมูลและผู้บริโภคจำนวนมาก (อุปกรณ์และเซิร์ฟเวอร์) และ Kafka ช่วยเชื่อมต่อพวกเขาเข้าด้วยกัน เราจะอธิบายรายละเอียดเพิ่มเติมเกี่ยวกับผู้บริโภคในขั้นตอนต่อไป โดยพวกเขาจะเป็นผู้แสดงหลัก ตอนนี้เราจะพิจารณาเฉพาะผู้ผลิตข้อมูล (เหตุการณ์)
คาฟคาสรุปแนวคิดของคิวและพาร์ติชัน โดยเฉพาะอย่างยิ่งเกี่ยวกับเรื่องนี้ ควรอ่านที่อื่นดีกว่า (เช่น ใน
(รูปภาพ
ในเวลาเดียวกัน Kafka ช่วยให้คุณสามารถอ่านเป็นชิ้น ๆ และประมวลผลโฟลว์ของเหตุการณ์เป็นชุดย่อยได้ Kafka เป็นเครื่องมือที่สะดวกมากซึ่งปรับขนาดได้ดีกับความต้องการที่เพิ่มขึ้น (เช่น ตามตำแหน่งทางภูมิศาสตร์ของเหตุการณ์)
โดยปกติแล้ว ชิ้นส่วนเดียวก็เพียงพอแล้ว แต่สิ่งต่างๆ จะซับซ้อนมากขึ้นด้วยการสื่อสารเมื่อปรับขนาด (เช่นเคย) อาจไม่มีใครต้องการใช้ชิ้นส่วนจริงเพียงชิ้นเดียวในการผลิต เนื่องจากสถาปัตยกรรมต้องทนทานต่อข้อผิดพลาด นอกจาก Kafka แล้ว ยังมีโซลูชันอื่นที่รู้จักกันดีนั่นคือ RabbitMQ เราไม่ได้ใช้มันในการผลิตเป็นคิวสำหรับการวิเคราะห์เหตุการณ์ (หากคุณมีประสบการณ์ดังกล่าว โปรดบอกเราเกี่ยวกับเรื่องนี้ในความคิดเห็น!) อย่างไรก็ตาม มีการใช้ AWS Kinesis
ก่อนที่จะไปยังขั้นตอนถัดไป จำเป็นต้องกล่าวถึงอีกชั้นหนึ่งของระบบ - การจัดเก็บบันทึกดิบ นี่ไม่ใช่เลเยอร์บังคับ แต่จะมีประโยชน์ในกรณีที่มีสิ่งผิดปกติเกิดขึ้นและคิวเหตุการณ์ใน Kafka ถูกรีเซ็ตเป็นศูนย์ การจัดเก็บบันทึกดิบไม่จำเป็นต้องมีวิธีแก้ปัญหาที่ซับซ้อนและมีราคาแพง คุณสามารถเขียนบันทึกไว้ที่ไหนสักแห่งตามลำดับที่ถูกต้อง (แม้แต่ในฮาร์ดไดรฟ์)
2. การจัดการกระแสเหตุการณ์
หลังจากที่เราได้เตรียมกิจกรรมทั้งหมดและวางไว้ในคิวที่เหมาะสมแล้ว เราจะไปยังขั้นตอนการประมวลผล ที่นี่ฉันจะพูดถึงสองตัวเลือกการประมวลผลที่พบบ่อยที่สุด
ตัวเลือกแรกคือเปิดใช้งาน Spark Streaming บนระบบ Apache ผลิตภัณฑ์ Apache ทั้งหมดใช้งานบน HDFS ซึ่งเป็นระบบไฟล์จำลองที่ปลอดภัย Spark Streaming เป็นเครื่องมือที่ใช้งานง่ายซึ่งประมวลผลข้อมูลสตรีมมิ่งและปรับขนาดได้ดี อย่างไรก็ตาม การบำรุงรักษาอาจทำได้ยาก
อีกทางเลือกหนึ่งคือการสร้างตัวจัดการเหตุการณ์ของคุณเอง เมื่อต้องการทำเช่นนี้ คุณต้องเขียนแอปพลิเคชัน Python สร้างแอปพลิเคชันดังกล่าวใน Docker และสมัครรับคิวของ Kafka เมื่อทริกเกอร์มาถึงตัวจัดการใน Docker การประมวลผลจะเริ่มต้นขึ้น ด้วยวิธีนี้ คุณจะต้องให้แอปพลิเคชันทำงานอย่างต่อเนื่อง
สมมติว่าเราได้เลือกหนึ่งในตัวเลือกที่อธิบายไว้ข้างต้นและดำเนินการประมวลผลต่อไป ผู้ประมวลผลควรเริ่มต้นด้วยการตรวจสอบความถูกต้องของข้อมูล กรองขยะและเหตุการณ์ "เสียหาย" สำหรับการตรวจสอบเรามักจะใช้
3. ฐานข้อมูล
ขั้นตอนที่สามคือการบันทึกเหตุการณ์ที่ทำให้เป็นมาตรฐาน เมื่อทำงานกับระบบการวิเคราะห์สำเร็จรูป เรามักจะต้องเข้าถึงระบบเหล่านั้น ดังนั้นจึงเป็นเรื่องสำคัญที่จะต้องเลือกฐานข้อมูลที่สะดวก
หากข้อมูลเหมาะสมกับสคีมาคงที่ คุณสามารถเลือกได้
สำหรับข้อมูลที่ไม่มีโครงสร้าง คุณสามารถใช้ NoSQL ได้ เช่น
คุณสามารถยกสิ่งที่ง่ายกว่านี้ได้ เช่น
4. การรวมกลุ่ม
หลังจากบันทึกเหตุการณ์ทั้งหมดอย่างรอบคอบแล้ว เราต้องการรวบรวมข้อมูลสำคัญทั้งหมดจากชุดที่มาและอัปเดตฐานข้อมูล เราต้องการแดชบอร์ดและตัวชี้วัดที่เกี่ยวข้องทั่วโลก ตัวอย่างเช่นจากกิจกรรมไปจนถึงการรวบรวมโปรไฟล์ผู้ใช้และการวัดพฤติกรรม เหตุการณ์จะถูกรวบรวม รวบรวม และบันทึกอีกครั้ง (มีอยู่ในตารางผู้ใช้แล้ว) ในเวลาเดียวกัน คุณสามารถสร้างระบบในลักษณะที่ตัวกรองเชื่อมต่อกับผู้รวบรวมที่ประสานงานด้วย เพื่อรวบรวมผู้ใช้จากเหตุการณ์บางประเภทเท่านั้น
หลังจากนั้น หากคนในทีมต้องการเพียงการวิเคราะห์ระดับสูง คุณสามารถเชื่อมต่อระบบการวิเคราะห์ภายนอกได้ คุณสามารถใช้ Mixpanel อีกครั้ง แต่เนื่องจากมีราคาค่อนข้างแพง จึงไม่ได้ส่งกิจกรรมผู้ใช้ทั้งหมดไปที่นั่น แต่จะส่งเฉพาะสิ่งที่จำเป็นเท่านั้น ในการทำเช่นนี้ เราจำเป็นต้องสร้างผู้ประสานงานที่จะถ่ายโอนเหตุการณ์ดิบบางอย่างหรือสิ่งที่เรารวบรวมไว้ก่อนหน้านี้ไปยังระบบภายนอก API หรือแพลตฟอร์มโฆษณา
5. ส่วนหน้า
คุณต้องเชื่อมต่อส่วนหน้ากับระบบที่สร้างขึ้น ตัวอย่างที่ดีคือการบริการ
- ผู้ใช้สร้างแบบสอบถาม SQL
- เขาได้รับสัญญาณตอบกลับ
- สร้าง 'การแสดงภาพใหม่' ให้กับมันและรับกราฟที่สวยงามซึ่งคุณสามารถช่วยตัวเองได้แล้ว
การแสดงภาพในบริการเป็นการอัปเดตอัตโนมัติ คุณสามารถกำหนดค่าและติดตามการตรวจสอบของคุณได้ Redash นั้นฟรี ในกรณีที่โฮสต์เอง แต่สำหรับ SaaS จะมีราคา 50 ดอลลาร์ต่อเดือน
ข้อสรุป
หลังจากทำตามขั้นตอนข้างต้นทั้งหมดแล้ว คุณจะสร้างการวิเคราะห์ฝั่งเซิร์ฟเวอร์ของคุณ โปรดทราบว่านี่ไม่ใช่เรื่องง่ายเหมือนกับการเชื่อมต่อการวิเคราะห์ไคลเอ็นต์ เนื่องจากทุกอย่างจำเป็นต้องได้รับการกำหนดค่าด้วยตัวคุณเอง ดังนั้น ก่อนที่จะสร้างระบบของคุณเอง จึงควรเปรียบเทียบความต้องการระบบการวิเคราะห์ที่จริงจังกับทรัพยากรที่คุณพร้อมที่จะจัดสรร
หากคุณคำนวณทั้งหมดแล้วพบว่าต้นทุนสูงเกินไป ในส่วนถัดไป ผมจะพูดถึงวิธีสร้างการวิเคราะห์แบ็คเอนด์เวอร์ชันที่ถูกกว่า
ขอบคุณที่อ่าน! ฉันยินดีที่จะตอบคำถามในความคิดเห็น
ที่มา: will.com