انضم إلى عائلة Talkhouse؟ | بناء نظير مقره WEBRTC لصوت الأقران ومكالمات الفيديو وتطبيق ويب المراسلة مع Mern Stack
تطبيق Microservices غير المتزامن غير المتزامن الذي يعتمد على الحدث ، وهو تطبيق للتجارة الإلكترونية المعمارية التي تم إنشاؤها باستخدام Express و TypeScript و NATS-Treaming و Next.js
إنه تطبيق ويب يعتمد على التجارة الإلكترونية لشراء وبيع تذاكر من الأحداث المباشرة والممتعة المختلفة التي تحدث في جميع أنحاء المدينة بناءً على بنية الخدمات الصغيرة. يتم تقسيم التطبيق إلى خدمات فردية متعددة تتحدث مع بعضها البعض من خلال أحداث النشر عبر حافلة حدث. كل خدمة مسؤولة عن التعامل مع وتنفيذ ميزة محددة من التطبيق مثل Auth Service معامل المصادقة ، وتتناول الطلبات أوامر الطلبات ، وخدمة المدفوعات المدفوعات مدفوعات المستخدم وجميع هذه الخدمات تعمل والتواصل بشكل غير متزامن من خلال حافلة الأحداث (NATS-Treaming) لتشغيل التطبيق بأكمله
إن استخدام بنية الخدمات الصغيرة وعدم الاعتماد على نمط أحادي النمو يجعل التطبيق أكثر متانة ومتسامحًا مع الأخطاء ومتاح للغاية ويزيد من وقت التطبيق. لذلك إذا تعطلت إحدى الخدمات ، فستظل أجزاء أخرى من التطبيق وظيفية ومتاحة للمستخدمين. الخدمات المجهرية والأنظمة الموزعة هي قلب البرمجيات الحديثة والهندسة الخلفية.
Next.js لتقديم جانب الخادم وبناء الواجهة الأماميةExpress.js لبناء الواجهة الخلفيةMongodb كقاعدة بياناتMongoose باعتباره ormTypescript ، يتم كتابة الواجهة الخلفية بالكامل في TypeScript لمنع الصداع الذي تحصل عليه عندما يتدفق عدد الأحداث في Infinte بدون تلميحاتStripe للتعامل مع المدفوعاتJest and Supertest للاختبارDocker للحاوياتKubernetes لتنسيق conatinerSkaffold التي تسهل التطوير المستمر للتطبيقات غير الأصلية Kubernetes. يجعل العمل مع وإدارة Kubernetes وخدمات Kubernetes المختلفة ونشرها أسهل بكثير.NATS Streaming كحافلة حدث أو قائمة انتظار رسائل من أجل publisihing والتعامل مع الأحداث المنبعثة من خدمات مختلفة.Bull.js هو نظام قائمة انتظار سريع وقوي. يتم استخدامه لتنفيذ مؤقت انتهاء صلاحية الدفع.ينقسم التطبيق إلى 7 خدمات تتعامل مع وتنفيذ ميزة ووظيفة محددة للتطبيق:
auth مصادقة التطبيق بالكامل والترخيص. يتم استخدام المصادقة القائمة على ملفات تعريف الارتباط JWT.expiration مؤقت انتهاء صلاحية الدفع للتأكد من يدفع المستخدم ضمن إطار زمني محدد.orders للتعامل مع أوامر المستخدمpayments للتعامل مع مدفوعات الشريطtickets التعامل مع التذاكر (إنشاء ، تحديث ، جلب). بدلاً من بيع المنتجات ، يبيع تطبيق التجارة الإلكترونية تذاكر الأحداث المباشرة المختلفة التي تحدث في جميع أنحاء المدينة.common جميع الوظائف الشائعة مثل المتطلبات ، والتعامل مع الأخطاء ، وغيرها من الأوساط والوظائف التي تتقاسمها خدمات مختلفة معًا. يتم نشر هذه الخدمة كحزمة NPM وتثبيتها في خدمات أخرى لاستخدامها.client ويطبق الواجهة الأمامية للتطبيق.infra جميع ملفات نشر وخدمة Kubernetes (.yaml) التي تعمل على تشغيل التطبيق يتم قيادة كل خدمة ، وقاعدة بيانات MOGONGODB وخادم الإثارة NATS كحاوية Docker. تتم إدارة Conatiners Docker وتنظيمها من خلال ملفات Kubernetes الخاصة بهم. يخضع التواصل بين عمليات نشر Kuberentes المختلفة لكائن الخدمة. أخيرًا ، فإن الخدمات الخاضعة للدخول ، والتي تستخدم Ingress-Nginx (وحدة تحكم Ingress لـ Kubernetes باستخدام Nginx) كبديل عكسي وموازن تحميل للوكلاء أو الطلبات الواردة المباشرة إلى خدماتها الخاصة تحت اسم مضيف ticketing.dev . يتم استخدام Skaffold للحصول على جميع عمليات نشر Kubernetes وتشغيلها مع أمر واحد skaffold dev الذي يستخدم ملف skaffold.yaml.
يعد الحصول على هذا المشروع وتشغيله على جهازك المحلي مهمة dfficult سيئة السمعة. يتطلب بعض المعرفة من Docker و Kubernetes النظام البيئي. إذا كنت لا تزال على استعداد للتحدي ، أو إذا لم يكن لديك حياة ، فحاول الحصول عليها. تأكد من تثبيت Docker و Kubernetes و Skaffold. قم بتعيين المتغيرات المطلوبة envirenmental وقم بتشغيل الأمر التالي:
skaffold dev
وسيتم تشغيل تطبيق Boom ، ولا يوجد إعداد إضافي وتبعيات مطلوبة.
لحذف أي موارد تنشرها Skaffold ووقف جميع عمليات النشر والخدمات والحاويات تعمل
skaffold delete
حاول تشغيله واختباره محليًا فقط إذا لم يكن لديك حياة. وإلا فأنا لست من اللوم على خدش رأسك؟ أثناء محاولة فهم فوضى الخدمات المجهرية هذه للاتصالات التي تعتمد على الحدث ، تربط الخدمات؟