"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > تسخير الإعداد التلقائي والتكامل مع خدمات Quarkus Dev لتحقيق التطوير الفعال

تسخير الإعداد التلقائي والتكامل مع خدمات Quarkus Dev لتحقيق التطوير الفعال

تم النشر بتاريخ 2024-11-09
تصفح:528

اختتام مؤتمر JPrime 2024 بنجاح!!

بذل منظمو JPrime 2024 مرة أخرى جهودًا كبيرة لتقديم مجموعة متنوعة من المواضيع، مما يضمن وجود شيء للجميع.

ومع ذلك، فإن مقالة اليوم لم يتم تحفيزها بواسطة إحدى محاضرات مايكل سيمونز حول "تطور اختبار التكامل في Spring وQuarkus" على الرغم من أنها كانت ثاقبة للغاية. استكشف استراتيجيات اختبار التكامل، مع التركيز على الإعداد في Spring Boot.

أكد المؤلف بوضوح على أن المشكلات التي أبرزها يتم معالجتها بشكل فعال في Quarkus من خلال استخدام خدمات التطوير (الشكل 1). وهذا يسلط الضوء على سبب آخر يجعلني أنظر إلى Spring Boot بعين الشك تجاه بعض التطبيقات - حيث تتناقض تعقيداته بشكل صارخ مع الحلول المبسطة في Quarkus، لا سيما مع استخدام خدمات Dev.

Harnessing Automatic Setup and Integration with Quarkus Dev Services for Efficient Development

الشكل 1 - جي برايم 2024

لقد كان من الرائع أن نشهد الدهشة التي أثارتها خدمات التطوير بين الحاضرين الجدد. ومع ذلك، من المهم ملاحظة أن Dev Services ليست ميزة حديثة في Quarkus؛ لقد كان جزءًا لا يتجزأ من الإطار لبعض الوقت. دعونا نتعمق أكثر في خدمات Quarkus Dev ونستكشف فوائدها الدائمة.

خدمات تطوير Quarkus

في Quarkus، تعمل خدمات Dev على تسهيل التزويد التلقائي للخدمات غير المكونة في كل من وضعي التطوير والاختبار. بشكل أساسي، إذا قمت بتضمين ملحق دون تكوينه، فسيقوم Quarkus تلقائيًا ببدء الخدمة ذات الصلة - غالبًا باستخدام Testcontainers في الخلفية - وتهيئة تطبيقك لاستخدام هذه الخدمة بكفاءة.

  1. الكشف التلقائي عن الخدمة وتشغيلها

    تقوم Quarkus Dev Services بأتمتة الكشف عن الخدمات الضرورية وإطلاقها مثل قواعد البيانات ووسطاء الرسائل والخدمات الخلفية الأخرى. تستفيد هذه الوظيفة من تبعيات التطبيق المحددة في pom.xml أو build.gradle. على سبيل المثال، تؤدي إضافة برنامج تشغيل قاعدة البيانات تلقائيًا إلى تشغيل Dev Services لتدوير مثيل حاوية مماثل لقاعدة البيانات هذه إذا لم تكن قيد التشغيل بالفعل. تتضمن التكنولوجيا المستخدمة هنا في المقام الأول حاويات الاختبار، والتي تسمح بإنشاء مثيلات خفيفة الوزن وسهلة الاستخدام لقواعد البيانات الشائعة أو متصفحات الويب السيلينيوم أو أي شيء آخر يمكن تشغيله في حاوية Docker.

  2. حقن التكوين الديناميكي

    بمجرد إنشاء مثيل للخدمات المطلوبة، تقوم Quarkus Dev Services ديناميكيًا بإدخال تفاصيل اتصال الخدمة ذات الصلة في تكوين التطبيق في وقت التشغيل. ويتم ذلك دون أي تدخل يدوي، باستخدام ميزة تُعرف باسم الاختبار المستمر التي تعيد توجيه قاعدة البيانات القياسية، أو عناوين URL الأخرى للخدمة، إلى حاويات الاختبار التي يتم توفيرها تلقائيًا. يتم تعيين خصائص التكوين مثل عناوين URL وبيانات اعتماد المستخدم والمعلمات التشغيلية الأخرى بسلاسة، مما يسمح للتطبيق بالتفاعل مع هذه الخدمات كما لو تم تكوينها يدويًا.

  3. السلوكيات الخاصة بالخدمة

    تم تصميم خدمات التطوير لأنواع مختلفة من الخدمات:

    • قواعد البيانات: توفر تلقائيًا قاعدة بيانات قيد التشغيل مصممة خصيصًا لتلبية احتياجات تطبيقك، سواء كانت PostgreSQL أو MySQL أو MongoDB أو أي قاعدة بيانات أخرى مدعومة. تضمن خدمات التطوير توفر حاوية الاختبار المقابلة أثناء التطوير.
    • أنظمة المراسلة: بالنسبة للتطبيقات التي تستخدم أنظمة المراسلة مثل Kafka أو AMQP، تقوم Quarkus Dev Services بتشغيل الوسطاء اللازمين باستخدام Docker وربطهم بالتطبيق.
    • خدمات التطوير المخصصة: يمكن للمطورين توسيع الوظائف عن طريق إنشاء ملحقات Quarkus مخصصة تستفيد من إطار عمل خدمات Dev. وهذا يسمح بإعدادات مخصصة خاصة بالمشروع، مما يوفر قدرًا أكبر من المرونة والتحكم.
  4. التعامل مع الشبكة وعزل الخدمة

    تعمل كل خدمة تقدمها Quarkus Dev Services في بيئتها المعزولة. يعد هذا أمرًا بالغ الأهمية لضمان عدم وجود تعارضات في المنافذ أو بقايا بيانات أو مشكلات أمنية بين اختبارات التطوير المختلفة. على الرغم من هذا العزل، يتم ربط الخدمات بالشبكة بشكل مناسب باستخدام Docker، مما يضمن قدرتها على التواصل مع بعضها البعض حسب الحاجة، ومحاكاة بيئة النشر في العالم الحقيقي.

  5. إدارة دورة الحياة

    يدير Quarkus دورة الحياة الكاملة لهذه الخدمات المقدمة ديناميكيًا. عند بدء تشغيل التطبيق الخاص بك في وضع التطوير، يتم تشغيل الخدمات الضرورية تلقائيًا. عند إيقاف تطبيق Quarkus، يتم إنهاء هذه الخدمات أيضًا. تتضمن هذه الإدارة التعامل مع استمرارية البيانات كما هو مطلوب، مما يسمح للمطورين بالمتابعة من حيث توقفوا دون أي تأخير في الإعداد.

مثال الاستخدام

ضع في اعتبارك أنك تستخدم قاعدة بيانات PostgreSQL مع Quarkus. إذا لم يتم اكتشاف تكوين PostgreSQL موجود، فسيقوم Quarkus ببدء تشغيل حاوية PostgreSQL Docker وتوصيل تطبيقك تلقائيًا.

يتم تمكين هذه الخدمات افتراضيًا في أوضاع التطوير والاختبار ولكن يمكن تعطيلها إذا لزم الأمر عبر التطبيق.خصائص:

quarkus.datasource.devservices.enabled=false

دعنا نتوسع في السيناريو حيث يستخدم Quarkus قاعدة بيانات PostgreSQL وكيف تسهل خدمات التطوير ذلك بأقل قدر من الضجة.

إذا اكتشف Quarkus أنه لا يوجد تكوين نشط لـ PostgreSQL (لا يعمل أو لم يتم تكوينه بشكل صريح)، فسيبدأ تشغيل حاوية PostgreSQL تلقائيًا باستخدام Docker. يتم إعداد هذا خلف الكواليس من خلال خدمات التطوير.

للتفاعل مع قاعدة البيانات من خلال طبقة ORM، فكر في استخدام Quarkus Panache، الذي يبسط عمليات Hibernate ORM. إليك كيفية إعداد بيئتك:

  1. إضافة التبعيات

    أولاً، قم بتضمين التبعيات الضرورية في pom.xml الخاص بك:

    io.quarkusquarkus-hibernate-orm-panacheio.quarkusquarkus-jdbc-postgresql
  2. تعريف الكيان

    بعد ذلك، حدد الكيان الخاص بك، مثل CityEntity:

    @Entity
    @Table(name = "cities")
    public class CityEntity {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    private String name;
    
    @Column(name = "public_id")
    private String publicId;
    
    @OneToOne
    private StateEntity state;
    
    @Column(nullable = false, name = "created_at")
    private Instant createdAt;
    
    @Column(nullable = false, name = "last_modified")
    private Instant lastModified;
    
    @PrePersist
    protected void onCreate() {
     createdAt = Instant.now();
     lastModified = createdAt;
    }
    
    @PreUpdate
    protected void onUpdate() {
     lastModified = Instant.now();
    }
    }
    
  3. إنشاء المستودع

    تنفيذ المستودع الذي سيتفاعل مباشرة مع قاعدة البيانات:

    @ApplicationScoped
    public class CityRepository implements 
    PanacheRepository {
    }
    
  4. طبقة الخدمة

    تحديد طبقة الخدمة التي تستخدم المستودع:

    @ApplicationScoped
    public class CityServiceImpl implements CityService {
    
      @Inject
      CityRepository cityRepository;
    
      @Override
      public long countCities() {
       return cityRepository.count();
      }
    }
    
    public interface CityService {
     long countCities();
    }
    
  5. نقطة نهاية المورد

    @Path("/cities")
    @Tag(name = "City Resource", description = "City APIs")
    public class CityResource {
    
      @Inject
      CityService cityService;
    
      @GET
      @Path("/count")
      @Operation(summary = "Get the total number of cities", 
       description = "Returns the total count of cities in the 
       system.")
      @APIResponse(responseCode = "200", description = "Successful 
      response", content = @Content(mediaType = "application/json", 
      schema = @Schema(implementation = Long.class)))
      public long count() {
       return cityService.countCities();
      }
     }
    

عند تشغيل تطبيق Quarkus الخاص بك (mvn quarkus:dev)، لاحظ بدء التشغيل التلقائي لحاوية PostgreSQL (الشكل 2). يجسد هذا التكامل السلس قوة Quarkus Dev Services، مما يجعل التطوير والاختبار أكثر بساطة من خلال أتمتة التكوين وإعداد الاتصال بالخدمات الخارجية اللازمة لتطبيقك.

Harnessing Automatic Setup and Integration with Quarkus Dev Services for Efficient Development

الشكل 2 – سجلات التطبيق

خدمات تطوير المنصات

تعمل خدمات Quarkus Dev على تبسيط مراحل التطوير والاختبار من خلال التعامل مع تكوين وإدارة الخدمات المتنوعة، مما يسمح للمطورين بالتركيز بشكل أكبر على التطبيق الفعلي. يدعم Quarkus مجموعة واسعة من خدمات التطوير، بما في ذلك:

  • AMQP
  • سجل أبيكوريو
  • قواعد البيانات
  • كافكا
  • عباءة المفاتيح
  • كوبرنيتس
  • مونجو دي بي
  • الأرنبMQ
  • النجم النابض
  • ريديس
  • قبو
  • إنفينيسبان
  • البحث المرن
  • قابلية الملاحظة
  • Neo4j
  • وايرموك
  • ميكروكس
  • عباءة المفاتيح
  • وغيرها الكثير، تم تصميم كل منها لتحسين بيئة التطوير الخاصة بك بسلاسة

خاتمة

تمثل Quarkus Dev Services نقلة نوعية في كيفية تعامل المطورين مع إعداد الخدمات الخارجية ودمجها أثناء مرحلتي التطوير والاختبار. لا تعمل أتمتة إعداد البيئة على تسريع عملية التطوير فحسب، بل تقلل أيضًا من احتمالية حدوث أخطاء في التكوين، مما يسهل على الفرق التركيز على إنشاء تطبيقات قوية وغنية بالميزات.

إحدى المزايا البارزة لخدمات Quarkus Dev هي التركيز على إنتاجية المطورين. ومن خلال إزالة الحاجة إلى إدارة تبعيات الخدمة يدويًا، يمكن للمطورين البدء فورًا في العمل على ميزات التطبيق ومنطق الأعمال. يُعد سير العمل المبسط هذا مفيدًا بشكل خاص في تصميمات الخدمات الصغيرة حيث قد تتطلب الخدمات المتعددة التطوير والتكامل المتزامنين

في الختام، يمكن أن يؤثر تبني خدمات Quarkus Dev بشكل كبير على فعالية فريق التطوير لديك ونتائج المشروع. بساطة وقوة Quarkus تشجع على التجريب،
تكرارات أسرع، وفي النهاية دورة تطوير أسرع. هذا النوع من النفوذ التكنولوجي هو ما تحتاجه الشركات الحديثة لتزدهر في العصر الرقمي.

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/yanev/harnessing-automatic-setup-and-integration-with-quarkus-dev-services-for-efficiency-development-27m2?1 إذا كان هناك أي انتهاك، من فضلك اتصل بـ [email protected]
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3