الاستفادة من Amazon لنظام Apache APISIX البيئي ونموه
October 26, 2022
المؤلف تشاو تشانغ هو عضو في لجنة إدارة مشروع Apache APISIX وخبير تقني في API7.ai. وهو قائد منتج API7 Cloud ومتحمس للبرمجيات مفتوحة المصدر. تم تجميع هذه المقالة من المحتويات التي شاركها تشاو في "قمة AWS الصين الكبرى 2022".
Apache APISIX
في عام 2019، استأجر مهندسان برمجيات مكتبًا صغيرًا، وأنشأوا مشروع بوابة API من الصفر إلى الواحد، وقاموا بفتح مصدره وتبرعوا به لمؤسسة Apache Software Foundation. أصبح هذا المشروع، APISIX، لاحقًا مشروعًا رئيسيًا في Apache وأكثر مشاريع بوابات API مفتوحة المصدر شعبية مع مجتمع نشط ونمو سريع. المهندسان اللذان أسسا API7.ai انضم إليهما الآن العديد من الأشخاص الذين يتشاركون نفس الرؤية من جميع أنحاء العالم، مستمرين في المساهمة في Apache APISIX، مما جعله نجمة لامعة في مجال إدارة API.
الأداء الفائق والإضافات الغنية
كان لـ APISIX منذ ولادته متطلبات عالية الأداء كبوابة API سحابية. لذلك، عند استخدام Apache APISIX، تكون التعبيرات المباشرة للمستخدمين هي الأداء العالي والكمون المنخفض. في الوقت نفسه، من حيث الميزات، يتمتع APISIX بقدرة واسعة على التعامل مع حركة المرور. لذلك، غالبًا ما يتم استخدام APISIX للإصدار التدريجي والنشر الأزرق-الأخضر. بالإضافة إلى ذلك، يتمتع APISIX أيضًا بوظيفة مصادقة الهوية فيما يتعلق بأمان API، وهو يدعم طرق مصادقة مختلفة مثل JWT Auth وHMAC Auth وبروتوكول Open ID Connect، إلخ.
كما أن APISIX ودود للمطورين الذين يعملون على التوسعات والتطوير المخصص. باستثناء أن APISIX نفسه يدعم Lua، يمكنك أيضًا الاستفادة من APISIX Plugin Runner لاستخدام لغات عالية المستوى لتوسيع APISIX، مثل Java وGo وPython وWebAssembly. مع دعم الإضافات متعددة اللغات، يمكنك إجراء تطوير مخصص دون أي تكلفة تعليمية إضافية.
نظام بيئي متنوع ومجتمع مفتوح المصدر نشط
لدى APISIX العديد من الإجراءات المتعلقة بالنظام البيئي وقام بتطويرات متكاملة بناءً على العديد من أنواع المشاريع المختلفة. يحتوي المستودع الرئيسي لـ APISIX على أكثر من 70 إضافة مختلفة.
يمكنك تحقيق تكامل ونشر سريع مع منصات مثل AWS باستخدام هذه الإضافات، ويمكنها أيضًا المساعدة في تقليل التكاليف الإضافية للمستخدمين أثناء الاستخدام.
في الوقت نفسه، يظل عدد المساهمين الشهريين في مجتمع APISIX عادةً حوالي 30، وهو عدد نشط جدًا. في مستودعات Github الخاصة بـ APISIX، يمكنك أيضًا رؤية العديد من مستخدمي المجتمع يساعدون في الإجابة على الأسئلة وحل المشكلات والطلبات والمناقشات. تساعد البيئة المجتمعية الإيجابية أيضًا في تسريع ترقيات المنتجات وإثراء النظام البيئي.
لذلك، بدأ APISIX في الحصول على عملاء من الشركات في جميع أنحاء العالم، مثل Airwallex وSina Weibo ومنصة European Factory Platform وNASA وNayuki، إلخ. علاوة على ذلك، بفضل استخدامات ومساهمات المزيد من الشركات، أصبح APISIX أكثر شهرة لدى الجمهور. حاليًا، تجاوز عدد المساهمين في APISIX 300، وعدد المساهمين في جميع المشاريع المفتوحة المصدر المتعلقة بـ APISIX مع مرور الوقت تجاوز 500.
ترقية الهندسة المعمارية
بالعودة إلى مستوى هندسة المنتج، تستخدم هندسة APISIX نمط مستوى البيانات + مستوى التحكم كما في الصورة التالية.
الجانب الأيسر هو APISIX نفسه، وهو أيضًا مستوى البيانات في بوابة API بأكملها، وهو يعالج بشكل أساسي حركة مرور أعمال المستخدمين. بالإضافة إلى ذلك، يوفر APISIX وظائف إدارة الخدمات مثل الحد من المعدل، موازنة الحمل، إلخ. الجانب الأيمن هو مستوى التحكم في بوابة API، الذي يتحكم في مكونات تشغيل APISIX، بما في ذلك مكونات التسجيل المتعلقة بالمراقبة لجمع بيانات حالة التشغيل. في الوقت نفسه، مع etcd وAdmin API، يمكن لـ APISIX مساعدة المستخدمين في تكوين القواعد ذات الصلة بحيث يمكن لـ APISIX العمل كما هو مقصود.
كما ذكرنا سابقًا، يمكن تضمين الإضافات متعددة اللغات في هندسة مستوى البيانات على الجانب الأيسر. على سبيل المثال، يسمح للمستخدمين باستخدام لغات برمجة مثل C++ أو Rust لتوسيع APISIX من خلال وحدة wasm plugin
داخل APISIX. في الوقت نفسه، يوضح الجانب الأيمن كيفية توسيع APISIX بناءً على Plugin Runner باستخدام لغات متعددة. سيقوم باستدعاء Plugin Runner الخاص باللغة (مثل Java Plugin Runner) لاستقبال الطلبات من APISIX من خلال مقبس Unix التقليدي بطريقة RPC ويساعد APISIX في التعامل مع هذه الحركة.
استكشاف APISIX على Amazon
حاليًا، لدى APISIX بعض الاستكشافات المتعلقة بالمنتجات والأداء بناءً على Amazon.
سوق Amazon
ملاحظة: API7.ai تُعرف أيضًا باسم Zhiliu Technology
إذا بحثت عن APISIX في سوق Amazon، فسترى النتائج أعلاه. تم إدراجه على المنصة منذ عام 2021. باستخدام البرنامج أعلاه، يمكنك نشر APISIX بسرعة على جميع مثيلات Amazon EC2. أيضًا، هذا البرنامج مجاني، لذلك تحتاج فقط إلى دفع رسوم مثيلات EC2.
سيقوم هذا البرنامج بتشغيل مثيل APISIX ومثيل etcd في مثيل EC2. لذلك، فهو أكثر ملاءمة للمستخدمين الحاليين لـ Amazon عندما تريد استخدام APISIX مباشرة، أو استخدام POC (إثبات المفهوم) لتبرير ما إذا كان APISIX يلبي متطلبات سيناريوهاتك المستهدفة.
CDK APISIX
CDK هو إطار عمل تطوير برمجيات مفتوح المصدر توفره Amazon يهدف إلى مساعدة المستخدمين على التحكم في البنية التحتية السحابية من خلال الترميز.
قام المساهم في مجتمع APISIX، Pahud Hsieh بتطوير cdk-apisix بناءً على CDK. يسمح هذا المشروع للمستخدمين بإنشاء مثيلات APISIX من خلال طرق الترميز والأتمتة. على عكس ما ذكرناه أعلاه، يمكنه نشر APISIX مباشرة على AWS Fargate. لذلك، يمكننا تحقيق النشر والتدمير التلقائي في بعض السيناريوهات التي تحتاج إلى محفزات الأحداث. العملية بأكملها لا تحتاج إلى أي عملية يدوية وتصبح أكثر استجابة أيضًا.
بناءً على الهندسة المعمارية أعلاه، سيتم توجيه حركة مرور العميل إلى APISIX من خلال ELB السحابي، وسيقوم APISIX ببعض المعالجة الأساسية بعد ذلك، مثل المصادقة، الحد من المعدل، إلخ. ثم، أخيرًا، سيتم إرسال الحركة إلى مثيلات التطبيق الفعلية في الخلفية.
باستخدام طريقة CDK، يمكن للمستخدمين نشر Apache APISIX باستخدام لغات الترميز المألوفة لديهم، ويمكنها الاستفادة من سمات هذه اللغات عالية المستوى لنشر APISIX على Amazon بشكل أكثر ملاءمة. في الوقت نفسه، من حيث الاستخدام، عند إكمال تكوين قالب للنشر، يمكن نسخه وتخصيصه. لذلك، يمكنك استخدام هذا التكوين مباشرة كلما احتجت إليه في المستقبل لتسهيل عملية النشر.
إضافة Amazon-Lambda
عند استخدام Lambda أو Serverless لنشر التطبيقات، هناك طريقة رخيصة للغاية لتشغيل المشاريع ذات الصلة، ويمكنها تحقيق التوسع الفوري بالإضافة إلى بعض السيناريوهات التجارية الأخرى. باستخدام هذه الطريقة لنشر التطبيقات، نحتاج عادةً إلى محفز حدث بحيث يمكن أن تتحول بوابة API إلى مسار لمحفز الحدث.
عندما يقوم المستخدم بتكوين إضافة amazon-lambda
في التوجيه، يمكنه إعادة توجيه حركة المرور بأكملها إلى عناوين وظائف Lambda التي تم تكوينها من قبل المستخدم. ستقوم وظيفة Lambda بمعالجة هذه الطلبات وإرسال النتائج مرة أخرى إلى العميل عبر APISIX.
تدعم هذه الإضافة أيضًا تحديد هوية Amazon IAM وKey AUth. في هذه الحالة، يمكن لوظيفة Lambda الموزعة في الخلفية التكامل بشكل أفضل مع APISIX دون التضحية بالأمان.
الاختبارات ذات الصلة بالأداء
في مايو 2022، تم إصدار معالجات AWS Graviton 3 رسميًا. بفضل ذاكرة DDR5، توفر معالجات Graviton3 أداءً حسابيًا أفضل بنسبة تصل إلى 25%، وأداءً عائمًا أفضل بمرتين، وعرض نطاق ذاكرة أكبر بنسبة 50% مقارنة بمعالجات AWS Graviton2؛ تستخدم مثيلات Graviton3 طاقة أقل بنسبة تصل إلى 60% لنفس الأداء مقارنة بمثيلات EC2 المماثلة.
بعد وقت قصير من إصدار معالجات AWS Graviton3، أجرى APISIX اختبارًا كاملاً للانحدار بناءً على معالجات AWS Graviton3، مما يعني أن المستخدمين يمكنهم استخدام APISIX بثقة على مثيلات EC2 Graviton3. لن تكون هناك أي مشكلات توافق. في الوقت نفسه، قمنا أيضًا بإجراء اختبارات أداء على عائلة معالجات AWS Graviton. بالإشارة إلى السيناريوهين التاليين، أجرينا اختبارات الأداء على معالجات AWS Graviton2 وAWS Graviton3.
- مصدر واحد: نستخدم مصدرًا واحدًا فقط في هذا السيناريو (بدون أي إضافات)، ونختبر بشكل أساسي أداء APISIX في وضع الوكيل العكسي الخالص.
- مصدر واحد + إضافات متعددة: نستخدم مصدرًا واحدًا وإضافتين في هذا السيناريو، ونختبر بشكل أساسي أداء APISIX عند تمكين
limit-count
وprometheus
، وهما إضافتان أساسيتان تستهلكان الأداء.
من الصور أعلاه، يمكننا أن نجد أن APISIX يتمتع بأداء قاتل بغض النظر عن الاستقرار أو قدرة التعامل مع حركة المرور. توفر معالجات AWS Graviton3 أداءً أفضل بنسبة تصل إلى 76% في سيناريوهات الحساب المكثفة للإدخال/الإخراج مثل بوابة API وتقلل الكمون بنسبة تصل إلى 38%. هذه البيانات لها أداء أفضل حتى من البيانات الرسمية المذكورة أعلاه التي قدمتها AWS (زيادة الأداء بنسبة 25%).
بشكل عام، أداءه مذهل بشكل ملحوظ عند استخدام APISIX على Grafana 3. بناءً على معالجات عالية الأداء مثل AWS Graviton3، يمكن لـ APISIX المساعدة في تعزيز الكفاءة وتقليل الموارد والتكاليف في الأعمال الفعلية.
كيف تستفيد API7 Cloud من Amazon لتحقيق نمو سريع للمنتج؟
مع النمو السريع للسحابة الأصلية، قامت المزيد والمزيد من الشركات بنقل أعمالها إلى السحابة (عادةً ما يختارون منصات سحابية عامة متعددة). لذلك، أصبحت كيفية إدارة ونشر واجهات برمجة التطبيقات السحابية بكفاءة مشكلة ملحة.
API7 Cloud هي خدمة SaaS تعتمد على APISIX وتساعد المستخدمين على توصيل جميع منتجات SaaS الموزعة على أي منصة سحابية. تم إصدار API7 Cloud لأول مرة في مارس 2022 وتوفر للمستخدمين وظيفة إدارة API سهلة الاستخدام، ومرونة وغنية في مقاييس المراقبة، وأمان API، مما يجعل اتصال API أكثر كفاءة وأمانًا وموثوقية.
يتقاضى هذا المنتج المستخدمين على عدد استدعاءات API، وحاليًا، يدعم طريقتين لنشر مستوى البيانات. الأولى هي الاستضافة الذاتية، مما يعني أن المستخدمين يجهزون بنيتهم التحتية وينشرون APISIX على البنية التحتية بحيث يمكن لـ APISIX التواصل مع API7 Cloud. الطريقة الأخرى تسمى شبه مُدارة، وتسمى أيضًا شبه مستضافة. أولاً، يجب على المستخدمين تفويض API7 Cloud لإدارة حساباتهم السحابية (مثل حساب Amazon). ثم يمكنهم نشر APISIX على جميع بنيتهم التحتية تحت حساباتهم بنقرة واحدة على لوحة تكوين API7 Cloud.
حاليًا، يتم استضافة جميع مكونات API7 Cloud على AWS واستخدام خدمات AWS؛ يتم عرض هندسة المنتج أدناه:
من الصورة أعلاه، يمكن نشر مستوى البيانات مع APISIX على منصات سحابية مختلفة، ويمكن حتى نشره على بنية المستخدم التحتية أو مركز البيانات. على جانب API7 Cloud، يوفر بشكل أساسي سمات حيوية مثل المراقبة، إدارة API الأساسية، والأمان.
من خلال الاستفادة من خدمات Amazon، يتمتع API7 Cloud بأداء منتج أفضل.
أولاً، يعتمد APISIX على خدمة Amazon EKS. كمنتج SaaS جديد، تم نشر API7 Cloud على K8s منذ البداية. لذلك، نقوم بنشر جميع المكونات على مجموعات EKS؛ وبالتالي، يمكننا استخدام بعض القدرات التي توفرها السحابة. في الوقت نفسه، سيكون لكل مستخدم مكونات مختلفة، ويمكن تشغيل أي مكون فردي داخل المجموعة. لذلك، قمنا ببعض العزل الشبكي باستخدام طريقة عزل المستأجرين المطورة على NetworkPolicy، لضمان عدم قدرة مساحات أسماء هذه المستأجرين على الوصول إلى بعضها البعض. في هذه الخدمة، نستخدم أيضًا APISIX Ingress Controller كبوابة لتشغيل العملية بأكملها بسلاسة.
APISIX Ingress Controller هو تنفيذ لـ Ingress controller، الذي يسمح للمستخدمين بتحويل القواعد المكونة إلى قواعد APISIX بحيث يمكن لـ APISIX التعامل مع حركة المرور الفعلية.
ثانيًا، كأهم مكون في المنتج، تختار API7 Cloud Amazon RDS (Postgre SQL) كقاعدة البيانات. نقوم بتخزين بيانات وصفية للمستخدمين في RDS، مثل بيانات مصدر API وإجراءات المستخدم. كمنتج SaaS، نحتاج إلى معرفة كيفية استخدام المستخدم لمنتجنا وتحديد ما إذا كانت لدينا مشكلات في التخطيط وتجربة المستخدمين للمطورين لتحديد اتجاه منتجنا المستقبلي.
نستخدم أيضًا مكون Amazon ElasticCache في API7 Cloud ونختار Redis مع وضع السيد-العبد. يتم استخدام Redis بشكل أساسي لتخزين حالة مثيلات مستوى البيانات، وهي البيانات التي يتم إرسالها بشكل دوري إلى السحابة عندما يتصل APISIX مع API7 Cloud. نظرًا لأن البيانات ليست حساسة ولا حيوية، ويحتاج مستوى البيانات إلى التواصل بشكل متكرر مع مستوى التحكم، لذلك لم نختار قاعدة بيانات علائقية هنا.
بالإضافة إلى ذلك، لهذا المكون استخدام مهم آخر: يمكن اعتباره قائمة انتظار رسائل. يقدم Redis 5.0 بنية بيانات Stream، لذلك يمكننا استخدامه كقائمة انتظار خفيفة الوزن لمساعدة المستخدمين على إنشاء البيانات ومعالجتها وتدميرها بشكل أسرع.
الخلاصة
تشارك هذه المقالة تجارب المستخدمين من منظور المشاريع المتعلقة بـ APISIX. بدعم من خدمات Amazon والنظام البيئي، استكشف APISIX نظامه البيئي بشكل أكبر. نتمنى أن يكون لـ APISIX وAmazon تكاملات أكثر إثارة للاهتمام معًا لتطوير نظام بيئي أفضل.