ทำ Data Pipeline กับ SFTP Server ด้วย GitLab และ Google Cloud Platform

เมื่อวานลองทำ Data Pipeline ท่าใหม่ที่ไม่เคยทำมาก่อน โดยลูกค้าจะเอาไฟล์มา Drop ไว้ให้บน SFTP แล้วเราจะต้องดูดจาก SFTP ส่งไปหา BigQuery คิดไปคิดมาได้ Solution แปลกใหม่น่าสนใจ เลยเอามาแชร์ให้อ่านกันเล่นๆ

Concept โดยคร่าวคือ เราจะต้อง Sync ข้อมูลจาก SFTP ลงมาใน Local ให้ได้ก่อน แล้วก็เลือกเฉพาะไฟล์ที่มีการเปลี่ยนแปลงส่งขึ้นไปบน Google Cloud Function (GCF) แล้วไปรัน Data Pipeline ต่อบนนั้น ซึ่งข้างบน GCloud นี่ไม่น่าเห็นห่วง เครื่องมือเขาพร้อมอยู่แล้ว แล้วน้องๆ ก็ช่วยกันดำเนินการจนสำเร็จสวยงามไปแล้ว เหลือแต่ส่วนที่เรารับผิดชอบเนี่ยแหละยังไม่ได้ทำ ทุกคนรออยู่ 555 สิ่งที่ต้องคิดเพราะยังไม่เคยทำมาก่อนคือ เรา Sync ไฟล์ลงมาจาก SFTP ได้ยังไงนี่ล่ะ แล้วจะเลือกส่งเฉพาะไฟล์ที่มีการอัพเดทได้อย่างไร

ระหว่างจัดการเรื่อง SFTP หันไปหันมา ไปเจอ lftp มีคำสั่งเอาไว้ mirror ไฟล์จาก SFTP ได้ เทพมาก ไม่ต้องคิดมากเรื่อง sync กับ SFTP อีกต่อไป

ต่อมาเริ่มพยายามเขียน Bash Script เลือกเอาเฉพาะไฟล์ใหม่ที่เพิ่มลงมา เตรียมส่งขึ้น GCF ละ แต่ฉุกคิดขึ้นมาได้ว่า เฮ้ย ถ้าเอาไปใส่ Git ล่ะ ทำได้ไหมนะ ก็ลองลองดู ไปสร้าง User ใหม่ใน GitLab ให้สิทธิ์เข้า Repo แล้วก็เชื่อม SSH Key สำหรับเครื่อง Server แล้วก็ Clone มาลงเรียบร้อย

จากนั้นก็สร้าง Script ให้มันรันทุกอย่างเป็นอัตโนมัติประมาณนี้

ทุกครั้งที่รัน จะสั่ง git pull อัพเดท Script เรียบร้อยแล้วสั่ง Sync ไฟล์จาก SFTP จากนั้นใส่ทุกความเคลื่อนไหวลงไปใน Git ทำการ Commit และ Push ขึ้นไป เรียบร้อยแล้วก็เซท Cron ให้มันรันเองทุกๆ ช่วงเวลาที่กำหนด

!! Work like magic !!

  • ไม่ต้อง Remote เข้าไปที่ Server เพื่อแก้ Script เพราะแก้จาก Git Remote ได้เลย ก่อนจะรันมัน Git Pull
  • เมื่อมีการเปลี่ยนแปลง จะเกิดขึ้น จะมี Git Commit ใหม่และถูก Push ขึ้นมา แต่ถ้าไม่มีการเปลี่ยนแปลง มันก็จะ Commit ไม่ได้ จึงไม่มีการเปลี่ยนแปลง
  • ตาม Track ได้ตลอดว่ามีไฟล์อัพเดทเมื่อไหร่จาก GitLab ไม่ต้อง Remote เข้าไปดูเอง
  • พอมี Commit Push ขึ้นไป GitLab CI ก็จะถูกรัน ทีนี้อยากจะเขียนภาษาอะไรจัดการต่อก็จัดได้หมด อยากรู้ว่าไฟล์ไหนมีการเปลี่ยนแปลงบ้างก็ไปเอา History ของ Git ออกมาดูแล้ว Regex เอาเฉพาะที่เปลี่ยนแปลงมารันได้เลย

วันนี้ตื่นมาสมองโปร่ง คิดต่อยอดไปได้อีกหน่อย ทำไมเราถึงต้องตั้งเครื่อง Server มาเปิดทิ้งไว้ด้วยล่ะ เสี่ยงมีปัญหา ต้องมีคอย Monitor ในเมื่อมี Farm GitLab Runner ของตัวเองอยู่แล้ว แล้วทุกๆ ครั้งที่มันรัน Pipeline มันก็สร้างเครื่องก็ Pull Git มาอยู่ละ ทำไมไม่รันบน GitLab CI ไปเลย แล้วก็สั่งให้มันรัน Pipeline บน GitLab ได้เลย ไม่ต้องตั้ง Cron บน Server ทีนี้ก็จะทำ Data Pipeline โดยไม่ต้องดูแลเครื่อง อันนี้เดี๋ยวก็จะต่อยอดกันต่อไปเร็วๆ นี้

นี่เป็นครั้งที่ 2 ในการเลือกเอา GitLab CI ในการทำ Data Pipeline ก่อนหน้านี้เอามารัน Script ที่รันโคตรนานแต่แบ่งงานได้ ก็เลยให้มันช่วยแบ่งงานแล้วทำเป็น Parallel Spawn เครื่อง Preemptible ขึ้นมารัวๆ ซึ่งความจริงมันก็คืองานโปรเจกต์เดียวกันนี่ล่ะ แต่รอบนี้เอามารัน Data Pipeline ซะเลย เพิ่มความ Automate ขึ้นไปอีกระดับ

เป็นการใช้เครื่องมือที่ไม่ได้ออกแบบมาให้เป็น Data Pipeline แต่โคตรเหมาะกับบางโจทย์ของการทำ Data Pipeline เลย

Credit OK ของเราใช้ 3 เครื่องมือทำครบทุกอย่าง GCP, GitLab, Slack 🙂

EP 3: Serverless Big Data Architecture on Google Cloud Platform @ Credit OK

สวัสดีทุกท่าน มาถึงตอนสุดท้ายแล้วนะครับ ซึ่งในตอนนี้ผมจะเล่าถึงวิธีการจัดการกับ Big Data แบบที่ Credit OK ทำอยู่นั้นเป็นประมาณไหน แล้วเราใช้ Serveeless Service จาก GCP อย่างไร เราเจออุปสรรคอะไรบ้าง และแก้ปัญหามาได้อย่างไร

บทความนี้เขียนขึ้นเพราะได้ขึ้นไปพูดที่งาน Barcamp นะครับ ใครสนใจดู Slide เปิดได้จากที่นี่เลย Serverless Big Data Architecture on Google Cloud Platform at Credit OK

Continue reading

EP 2: Serverless Big Data Architecture on Google Cloud Platform @ Credit OK

สวัสดีครับ สัปดาห์นี้จะมาเล่าต่อกันเรื่องการใช้ Google Cloud Platform ที่บริษัท Credit OK สำหรับสัปดาห์ที่แล้วได้เล่าถึงประวัติศาสตร์การ Deploy Application ต่างๆ ตั้งแต่ Bare Metal ไปจนถึง Cloud Functions ท่านใดสนใจจะกลับไปอ่านบทความก่อนหน้าก็ตามลิงค์ไปได้เลย Server & Application Deployment History ส่วนสัปดาห์นี้ ผมจะขอแนะนำบริการต่าง  ที่น่าสนใจบน Google Cloud Platform ทั้งทางฝั่ง Compute, Storage, Database และ Data Analytics

Continue reading

EP 1: Serverless Big Data Architecture on Google Cloud Platform @ Credit OK

สวัสดีครับทุกท่าน สืบเนื่องจากที่ผมได้ทำงานอยู่ที่ Credit OK ซึ่งเป็น Fintech Startup ที่ต้องใช้เทคโนโลยีสำหรับจัดการกับ Big Data แบบเป็นเรื่องเป็นราว มาตั้งแต่ตอนต้นปี 2018 โดยเริ่มต้นจากไม่มีอะไรเลย จึงได้มีโอกาสได้ศึกษาและเลือกเทคโนโลยีที่จะใช้อย่างอิสระ ได้ทดลองแล้วมาถูกใจกับ Google Cloud Platform (GCP) เพราะบริการที่มีให้ค่อนข้างตรงกับโจทย์ธุรกิจที่ต้องการ นอกจากนั้นยังเป็นบริการที่เข้าไปใช้งานได้เลยผ่านทาง GUI หรือ Library โดยไม่ต้องมากดตั้งเครื่องสักตัว (Serverless) ก็เลยรู้สึกว่าอยากจะมาแบ่งปันประสบการณ์​ที่ได้พบเจอมา และได้มีโอกาสไปพูดเป็นวิทยากรในหัวข้อนี้กับ MSIT ของ ม.เกษตร และในงาน Barcamp Bangkhen 2018 ก็พบว่าหลายคนให้ความสนใจในหัวข้อนี้ จึงเป็นอันควรแล้วจะมาเขียน Blog แบ่งปันความรู้กัน 🙂

สำหรับ Slide ในงาน Barcamp สามารถดูได้จากที่นี่ครับ
Serverless Big Data Architecture on Google Cloud Platform at Credit OK

Continue reading