เข้าร่วมครอบครัว Talkhouse? - Peer to Peer To Peer, การโทรวิดีโอและการสร้างเว็บแอพสร้างด้วย Mern Stack
แอพ e-commerce ที่สร้างขึ้นโดยการสื่อสารแบบอะซิงโครนัส
เป็นเว็บแอปที่ใช้อีคอมเมิร์ซสำหรับการซื้อและขายตั๋วที่มีกิจกรรมสดและความสนุกสนานที่เกิดขึ้นทั่วเมืองตามสถาปัตยกรรม Microservices แอพนี้แบ่งออกเป็นบริการหลายรายการที่พูดคุยกันผ่านการเผยแพร่กิจกรรมผ่านทางรถบัส แต่ละบริการมีหน้าที่รับผิดชอบในการจัดการและใช้คุณสมบัติเฉพาะของแอพเช่น Auther Service จัดการการรับรองความถูกต้องคำสั่งซื้อบริการจัดการคำสั่งซื้อบริการชำระเงินใช้การชำระเงินของผู้ใช้และบริการทั้งหมดเหล่านี้ทำงานและสื่อสารแบบอะซิงโครนัสผ่านบัสกิจกรรม (NATS-Streaming) เพื่อเรียกใช้แอพทั้งหมด
การใช้สถาปัตยกรรม microservices และไม่พึ่งพารูปแบบ monoloith ทำให้แอพทนทานมากขึ้นทนต่อความผิดปกติมีให้สูงและเพิ่มเวลาของแอพที่เพิ่มขึ้น ดังนั้นหากหนึ่งในบริการล่มส่วนอื่น ๆ ของแอพจะยังคงใช้งานได้และพร้อมใช้งานสำหรับผู้ใช้ Microservices และระบบกระจายเป็นหัวใจสำคัญของซอฟต์แวร์ที่ทันสมัยและวิศวกรรมแบ็คเอนด์
Next.js สำหรับการแสดงผลด้านเซิร์ฟเวอร์และการสร้างส่วนหน้าExpress.js ใช้สำหรับการสร้างแบ็กเอนด์Mongodb เป็นฐานข้อมูลMongoose เป็น ORMTypescript , Backend ถูกเขียนเป็น typeScript ทั้งหมดเพื่อป้องกันอาการปวดหัวที่คุณจะได้รับเมื่อจำนวนเหตุการณ์ที่เกิดขึ้นStripe สำหรับการจัดการการชำระเงินJest and Supertest สำหรับการทดสอบDocker สำหรับการบรรจุKubernetes สำหรับ orchestration ConatinerSkaffold ที่อำนวยความสะดวกในการพัฒนาอย่างต่อเนื่องสำหรับแอปพลิเคชัน Kubernetes-Native ทำให้การทำงานกับและจัดการ Kubernetes และบริการ Kubernetes ที่แตกต่างกันและ deploymets ง่ายขึ้นมากNATS Streaming ใช้เป็นกิจกรรมบัสหรือคิวข้อความสำหรับ Publisihing และจัดการกิจกรรมที่ปล่อยออกมาจากบริการที่แตกต่างกันBull.js เป็นระบบคิวที่รวดเร็วและแข็งแกร่ง มันถูกใช้เพื่อใช้ตัวจับเวลาหมดอายุการชำระเงินแอพนี้แบ่งออกเป็น 7 บริการที่จัดการและใช้คุณสมบัติและฟังก์ชั่นเฉพาะของแอพ:
auth จัดการการรับรองความถูกต้องของแอพทั้งหมดและการอนุญาต ใช้การรับรองความถูกต้องตามคุกกี้และคุกกี้expiration จัดการจับเวลาหมดอายุการชำระเงินเพื่อให้แน่ใจว่าผู้ใช้จ่ายภายในกรอบเวลาที่กำหนดorders สำหรับการจัดการคำสั่งซื้อของผู้ใช้payments สำหรับการจัดการการชำระเงินแถบtickets สำหรับการจัดการตั๋ว (การสร้างอัปเดตการดึงข้อมูล) แทนที่จะขายผลิตภัณฑ์แอพอีคอมเมิร์ซนี้ขายตั๋วของกิจกรรมสดที่แตกต่างกันที่เกิดขึ้นทั่วเมืองcommon ฟังก์ชั่นทั่วไปทั้งหมดเช่นต้องการการจัดการข้อผิดพลาดและมิดเดิ้ลแวร์และฟังก์ชั่นอื่น ๆ ที่ใช้ร่วมกันโดยบริการที่แตกต่างกันจะถูกจัดกลุ่มเข้าด้วยกัน บริการนี้เผยแพร่เป็นแพ็คเกจ NPM และติดตั้งในบริการอื่น ๆ ที่จะใช้client จัดการและดำเนินการส่วนหน้าของแอพinfra จัดการไฟล์การปรับใช้และบริการ Kubernetes ทั้งหมด (.yaml) ที่เรียกใช้ Run the App แต่ละบริการฐานข้อมูล MogongoDB และเซิร์ฟเวอร์การสตรีม NATS ได้รับการเชื่อมต่อเป็นคอนเทนเนอร์ Docker Docker Conatiners ได้รับการจัดการและจัดเตรียมโดยไฟล์ Kubernetes ที่เกี่ยวข้องกับไฟล์. yaml ภายในไดเรกทอรี Infra การสื่อสารระหว่างการปรับใช้ Kuberentes ที่แตกต่างกันนั้นถูกควบคุมโดย Service ObjectType ในที่สุด Ingress-Service ซึ่งใช้ Ingress-Nginx (คอนโทรลเลอร์ Ingress สำหรับ Kubernetes โดยใช้ Nginx) เป็นพร็อกซีย้อนกลับและโหลดบาลานซ์สำหรับพร็อกซีหรือคำขอเข้ามาโดยตรงไปยังบริการที่เกี่ยวข้องภายใต้ชื่อ ticketing.dev Skaffold ใช้เพื่อรับการปรับใช้และบริการ Kubernetes ทั้งหมดและทำงานด้วยคำสั่งเดียว skaffold dev ซึ่งใช้ไฟล์ skaffold.yaml
การทำให้โครงการนี้ทำงานบนเครื่องในพื้นที่ของคุณเป็นงาน DFFICULT ที่ฉาวโฉ่ มันต้องมีความรู้บางอย่างของระบบนิเวศนักเทียบท่าและ Kubernetes หากคุณยังคงพร้อมสำหรับความท้าทายหรือถ้าคุณไม่มีชีวิตลองใช้มัน ตรวจสอบให้แน่ใจว่าคุณติดตั้งนักเทียบท่า Kubernetes และ Skaffold ตั้งค่าตัวแปรสภาพแวดล้อมที่ต้องการและเรียกใช้คำสั่งต่อไปนี้:
skaffold dev
และแอพ Boom จะเปิดใช้งานไม่จำเป็นต้องมีการตั้งค่าเพิ่มเติมและการพึ่งพา
ในการลบทรัพยากรใด ๆ ที่ใช้โดย Skaffold และหยุดการปรับใช้บริการและคอนเทนเนอร์ทั้งหมด
skaffold delete
ลองวิ่งและทดสอบในพื้นที่เฉพาะในกรณีที่คุณไม่มีชีวิต มิฉะนั้นฉันไม่ใช่คนที่จะตำหนิคุณเกาหัว? ในขณะที่พยายามทำความเข้าใจกับไมโครเซิร์ตนี้ยุ่งกับการสื่อสารที่ขับเคลื่อนด้วยเหตุการณ์ระหว่างบริการ?