Alternative to NGINX That Makes Your Life Easier: Apache APISIX
September 15, 2022
API هي جزء أساسي من العالم الرقمي، وتتحمل بوابة API المسؤولية الكبيرة لحماية أمانها واستقرارها كبوابة أولى لـ API. استخدم العديد من المهندسين والفرق البرمجية NGINX من قبل ولكنهم كانوا منزعجين من الاختناقات والقيود التي يفرضها NGINX. هل هناك بديل أفضل؟
بديل رائع لـ NGINX هو Apache APISIX، إذن ما هو Apache APISIX؟
ما هو Apache APISIX
Apache APISIX هي بوابة API عالية الأداء، ديناميكية، وشاملة لجميع أنواع الحركة. تتميز Apache APISIX بأربع ميزات بارزة:
- خاصية Apache: APISIX مفتوحة المصدر وهي أيضًا مشروع رئيسي في مؤسسة Apache Software Foundation. من المستحيل تعديل ترخيص المصدر المفتوح في منتصف الطريق، كما فعلت ElasticSearch وMongoDB. لأن APISIX تنتمي إلى مؤسسة Apache Software Foundation (ASF)، فهي لم تعد مشروعًا تابعًا لشركة أو فرد.
- الأداء العالي: تم تطوير APISIX بناءً على OpenResty (توزيعة NGINX)، لذا فإن APISIX ترث أيضًا قوة NGINX نفسها.
- الديناميكية: إذا كان NGINX يوفر بنية أساسية قوية، فإن OpenResty يضيف المزيد من الإمكانيات إلى NGINX من خلال السماح باستخدام Lua للتحكم في سلوك NGINX. وبفضل مرونتها وارتباطها القوي بأنظمة أخرى، تصبح APISIX بوابة API ديناميكية بالكامل.
- الوقت الحقيقي: تخزن APISIX التكوين في etcd. هذه الميزة تعني أنه يمكن مراقبة التغييرات في التكوين والحصول عليها في الوقت الفعلي من خلال واجهة برمجة تطبيقات RESTful الخاصة بـ etcd، لأن etcd نفسه هو قاعدة بيانات KV موزعة، والتي يستخدمها أيضًا Kubernetes لتخزين التكوين. يستخدم NGINX ملفات ثابتة لتخزين التكوين، وإذا تم تحديث التكوين، فإن الوقت المطلوب لإعادة تحميل NGINX سيكون طويلًا.
Apache APISIX مقابل NGINX
بما أننا ذكرنا أن APISIX تم تطويرها بناءً على NGINX، قد تتساءل: ما الفرق بين APISIX وNGINX؟
أول شيء يجب ملاحظته هو أن المقارنة بين APISIX وNGINX ليست مقارنة مباشرة. بعد كل شيء، NGINX هو وكيل خفيف الوزن، بينما تركز APISIX على جعل وظائف المنتج أكثر نضجًا. أيضًا، لديها ميزات أكثر لأن APISIX تم إعادة تطويرها بناءً على NGINX.
إذا كنت تستخدم NGINX كبوابة، فإن الميزتين التاليتين لـ APISIX ستعطيك شعورًا أعمق.
تكوين أكثر مرونة
مقارنة بملفات تكوين NGINX، توفر APISIX طرقًا مختلفة للتكوين. على سبيل المثال:
- يمكنك تكوين APISIX عبر واجهة برمجة تطبيقات HTTP. سيتم كتابة التكوين إلى etcd، ثم يتم مزامنته مع كل عقدة بواسطة etcd؛
- يمكنك القيام بذلك باستخدام لوحة تحكم APISIX. في لوحة تحكم APISIX، ستساعدك التصورات الرسومية على التكوين بشكل أكثر وضوحًا؛
- إذا كنت لا ترغب في استخدام طرق التخزين ذات الحالة مثل etcd، يمكنك استخدام ملفات ثابتة مثل K8s. تدعم APISIX أيضًا الحصول على تكوينات فردية من ملفات YAML المحلية؛
- إذا قمت بنشر APISIX في K8s، يمكنك استخدام APISIX Ingress Controller للحصول على التكوين الصادر من CRD؛
- إذا قمت بنشر APISIX كطائرة بيانات لـ Istio، يمكنك أيضًا الحصول على التكوين الصادر من Istio من خلال التعرف على xDS.
قابلية التوسع الأفضل
على الرغم من أن NGINX قدم أيضًا NJS لتحقيق التحكم الديناميكي، إلا أنه ليس مثاليًا مثل قابلية التوسع في APISIX.
نظرًا لأنه يمكن توسيع APISIX باستخدام LuaJIT، فهي تدعم أيضًا Plugin Runner خارج العملية لتشغيل الإضافات الخارجية المكتوبة بلغات مثل Go وJava وPython وNode.js وغيرها.
بالإضافة إلى ذلك، بدءًا من APISIX 2.11، يمكنك تشغيل إضافة Wasm. مع هذه الوظيفة، يمكنك كتابة إضافات في APISIX بلغات مثل Rust وTinyGo ثم تحويلها إلى كود Wasm لتشغيلها على APISIX.
تكوين إضافات Wasm وإضافات Lua في APISIX يظهر تقريبًا لا فرق في الوظائف. نتيجة لذلك، يمكن تحقيق أداء مشابه للتطبيق الأصلي لـ Lua وتحقيق كفاءة تطوير لغات عالية المستوى.
ما هي الفوائد الرئيسية لـ Apache APISIX
المزايا المذكورة أعلاه جيدة جدًا، لكنها ليست المزايا الأكثر أهمية في APISIX. الميزة الأكبر لـ APISIX هي شبكتها البيئية المترابطة مع العديد من المشاريع.
- على مستوى المصادقة، تدعم APISIX بروتوكولات مثل OIDC وLDAP. في نفس الوقت، يمكن دمجها مع خدمات أو أطر عمل متعددة للمصادقة، مثل Keycloak وCasdoor وCasbin وOPA وغيرها.
- على مستوى المراقبة، تدعم APISIX الاتصال بأدوات تسجيل متعددة، مثل Clickhouse وDatadog وSplunk وApache Kafka وApache RocketMQ وغيرها. يمكنها أيضًا الكشف عن مقاييس غنية من خلال Prometheus لدعم أنظمة التتبع المتعددة، مثل OpenTracing وOpenTelemetry وApache Skywalking.
- على مستوى اكتشاف الخدمة، لا تدعم APISIX فقط الحصول على عناوين المصادر من Nacos وEureka وConsul وZookeeper، ولكن أيضًا من DNS (سواء من خلال سجلات A/AAAA أو SRV). علاوة على ذلك، إذا كنت تستخدم APISIX كوحدة تحكم دخول لـ K8s، يمكنك الحصول على التكوين المقابل من مورد Ingress (تدعم APISIX مواصفات واجهة برمجة تطبيقات Gateway لـ K8s).
APISIX الحالية لا تزال في مرحلة التطوير السريع. مع مرور الوقت، سيتم دمج APISIX مع المزيد والمزيد من المشاريع، مما يفتح المزيد من إمكانيات التعاون ويبسط بشكل كبير العمل المطلوب للدمج مع الأنظمة الحالية.
إذا كانت الخدمة التي تريد الاتصال بها غير موجودة في النظام البيئي لإضافات APISIX، فيمكنك استخدام الإضافات الحالية مباشرة للتطوير المخصص، لتحقيق وظائف أكثر تحديدًا لعملك.
أي بوابة API يجب أن تختار
بالطبع، لاختيار بوابة مناسبة، تحتاج أيضًا إلى النظر في وضع عملك الفعلي.
إذا كنت تستخدم بالفعل NGINX كوسيط أمام تطبيقات الأعمال، ويتم وضع بعض المنطق على NGINX، فإن APISIX ستكون خيارك الأفضل. نظرًا لأن APISIX تم تطويرها بناءً على NGINX، يمكنك الهجرة بسلاسة من NGINX إلى APISIX بناءً على احتياجاتك.
إذا لم تكن قد استخدمت بوابة من قبل وتريد اختيار مشروع بوابة API مفتوحة المصدر بناءً على وضع فريقك، فأنت بحاجة إلى التركيز على الجوانب التالية:
- ما إذا كان معدل التحديثات جيدًا بما فيه الكفاية. يمكنك اختيار مشروع بوابة API يتم صيانته جيدًا من خلال مراقبة نشاط كل مشروع، لأن لا أحد يريد اختيار مشروع يتدهور. يمكنك الحصول على فكرة عن نشاط المشروع من خلال رسم بياني للمساهمين بمرور الوقت.
- ما إذا كانت وظائف المشروع كاملة. إذا كانت البوابة المختارة لا تستطيع تلبية احتياجات الأعمال الحالية والمستقبلية للفريق، ولأن المشروع يضيف إلى عمل التطوير (مثل إدارة التكوين، والتوصيل مع الخدمات الداخلية)، يرجى النظر بعناية.
- ما إذا كانت بعض المقاييس الفنية المعقدة للمشروع تؤدي بشكل جيد، على سبيل المثال، ما إذا كانت QPS وزمن الوصول واستخدام الذاكرة تلبي متطلبات الأعمال. بشكل عام، من الصعب إجراء تحسينات ثورية على بوابة. لذلك، إذا كانت البوابة لا تستطيع تلبية هذه المقاييس المعقدة، فسيكون من الصعب تحقيق اختراقات بغض النظر عن كيفية التكرار لاحقًا.
- ما إذا كان هناك ما يكفي من القوى العاملة والوقت في الفريق لتعلم وصيانة بوابة API. بعد كل شيء، اتخاذ القرارات الفنية ليس نشاطًا فنيًا بحتًا.
بالطبع، إذا كنت قد استخدمت بوابات API أخرى، ولكن البوابة لا تستطيع تلبية سيناريو الأعمال الحالي، فيمكنك استخدام Apache APISIX كواحد من خياراتك.
كيفية الهجرة من NGINX إلى Apache APISIX
أنت حكيم إذا قررت استبدال NGINX الحالي بـ APISIX بعد قراءة هذا!
ولكن قبل الهجرة، تحتاج إلى مراجعة بعض ميزات المنتج التي لديك أو تستخدمها. عادةً ما يمكن تقسيم هذه الميزات إلى ثلاث فئات:
- قابلة للاستبدال مباشرة. تسمح APISIX للمستخدمين باستخدام تكوين NGINX مباشرة، لذا يمكن إعادة استخدام معظم تكوينات NGINX العالمية بواسطة APISIX. أما تكوينات مستوى التطبيق، فيمكن استبدالها بمسارات APISIX؛
- تتطلب تعديلات، مثل التغييرات في المقاييس؛
- تتطلب تطويرًا إضافيًا
بعد إكمال التطوير المطلوب، ستقوم تدريجيًا باستبدال NGINX بـ APISIX في سيناريوهات الأعمال الفعلية. خلال عملية الهجرة السلسة، تحتاج إلى النظر في الأسئلة الثلاثة التالية:
- كيف يتم توجيه طلبات العميل إلى APISIX؟
- كيف يتم وضع التكوين المكافئ في APISIX وNGINX؟
- كيف يتم التعامل مع المقاييس التي تتعرض لها كل من APISIX وNGINX؟
يجب أن تفكر في الأسئلة الثلاثة أعلاه وبيئة التطبيق الفعلية الخاصة بك. أخيرًا، لا تنسَ إعداد "خطة التراجع عن الأخطاء" مسبقًا.
من خلال هذه المقالة، أعتقد أنك قد فهمت قوة Apache APISIX. لنجرب استخدام Apache APISIX كبوابة API لك!