ميكروسيرفيسات جافا: خارطة طريق للمبتدئين

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ميكروسيرفيسات جافا: لا تخف، إنها أسهل مما تبدو

\n\n

هل سبق لك أن نظرت إلى تطبيق متجانس (Monolithic) وفكرت: "ليتني أستطيع تقسيم هذا إلى أجزاء، حتى لا أخاف من أن تغييرًا واحدًا سيكسر كل شيء"؟ تهانينا — لقد نضجت للميكروسيرفيسات. في عالم جافا، أصبح هذا الموضوع محاطًا بأساطير حول التعقيد الهائل وكومة من التقنيات. في الحقيقة، يمكنك البدء بفئتين وملف واحد application.yml.

\n\n

في هذه المقالة، لن نبني سفينة فضائية. سنكتب ميكروسيرفيسين بسيطين يتحدثان مع بعضهما عبر HTTP، وسنفهم من أين نبدأ حقًا. لا سحر — فقط جافا وSpring Boot والمنطق السليم.

\n\n

ما هو الميكروسيرفيس (ببساطة)

\n\n

تخيل مطعمًا. التطبيق المتجانس (Monolith) هو عندما يقوم طباخ واحد بكل شيء: يطبخ الحساء، ويشوي الستيك، ويغسل الأطباق. الميكروسيرفيسات هي فريق: طباخ واحد مسؤول فقط عن الحساء، والثاني عن اللحوم، والثالث عن الحلويات. كل منهم يعمل بشكل مستقل، لكنهم معًا يصنعون قائمة طعام مشتركة.

\n\n

في جافا، الميكروسيرفيس هو تطبيق مستقل مسؤول عن وظيفة عمل واحدة (مثل "إدارة المستخدمين" أو "معالجة الطلبات"). لديه قاعدة بيانات خاصة به، وكود خاص به، ويتواصل مع الخدمات الأخرى عبر الشبكة (عادةً عبر HTTP/REST أو عبر وسطاء الرسائل).

\n\n

من أين تبدأ: أدوات المحترف

\n\n

للمشروع الأول، ستحتاج فقط إلى ثلاثة أشياء:

\n\n
    \n
  • Java 17+ — إصدار حديث مع ميزات مفيدة (records, sealed classes).
  • \n
  • Spring Boot 3.x — الإطار الأكثر شيوعًا للميكروسيرفيسات بلغة جافا. يتولى 80% من المهام الروتينية.
  • \n
  • Maven أو Gradle — للبناء. Maven أسهل للبدء، Gradle أسرع.
  • \n
\n\n

بالإضافة، عندما تريد التعقيد:

\n
    \n
  • Docker — لتغليف الخدمة في حاوية.
  • \n
  • Spring Cloud — لاكتشاف الخدمات (Service Discovery) وتوزيع الأحمال.
  • \n
  • PostgreSQL/H2 — قاعدة بيانات حسب الاختيار.
  • \n
\n\n

نصيحة: لا تحاول تعلم Kubernetes وKafka فورًا. ابدأ بالتواصل البسيط عبر REST.

\n\n

نكتب أول ميكروسيرفيس: خدمة المستخدمين

\n\n

لننشئ ميكروسيرفيسًا بسيطًا يمكنه إرجاع معلومات عن المستخدمين. استخدم Spring Initializr (start.spring.io) أو أنشئ المشروع يدويًا.

\n\n

أضف التبعيات في pom.xml:

\n\n
<dependency>\n    <groupId>org.springframework.boot</groupId>\n    <artifactId>spring-boot-starter-web</artifactId>\n</dependency>\n\n<dependency>\n    <groupId>org.springframework.boot</groupId>\n    <artifactId>spring-boot-starter-data-jpa</artifactId>\n</dependency>\n\n<dependency>\n    <groupId>com.h2database</groupId>\n    <artifactId>h2</artifactId>\n    <scope>runtime</scope>\n</dependency>
\n\n

الآن لنكتب نموذج المستخدم:

\n\n
import jakarta.persistence.*;\n\n@Entity\n@Table(name = "users")\npublic class User {\n    @Id\n    @GeneratedValue(strategy = GenerationType.IDENTITY)\n    private Long id;\n    private String name;\n    private String email;\n\n    // المنشئات، والدوال الجالبة، والدوال الضابطة (يمكن استخدام Lombok)\n    public User() {}\n\n    public User(String name, String email) {\n        this.name = name;\n        this.email = email;\n    }\n\n    // الدوال الجالبة والدوال الضابطة\n}
\n\n

المستودع (وصول مبسط للبيانات):

\n\n
import org.springframework.data.jpa.repository.JpaRepository;\n\npublic interface UserRepository extends JpaRepository<User, Long> {\n}
\n\n

ووحدة التحكم — نقطة نهاية REST:

\n\n
import org.springframework.web.bind.annotation.*;\n\nimport java.util.List;\n\n@RestController\n@RequestMapping("/api/users")\npublic class UserController {\n\n    private                

المدونات

توصيات الكتب