Job description
Senior Backend Engineer (Java)
Job Description
We are looking for a Senior Backend Engineer (Java) with strong experience in building scalable, high-performance backend services and REST APIs using Java and Spring Boot. The ideal candidate will have hands-on experience developing microservices, event-driven systems, and distributed applications that operate reliably under heavy load.
The role involves designing and developing backend services, working with relational databases and caching technologies, implementing event-driven architectures, and optimizing application performance. You will also contribute to CI/CD pipelines, automated testing, code reviews, and software design practices.
Key Responsibilities
- Design, develop, and maintain high-performance backend services and REST APIs using Java and Spring Boot.
- Build and maintain scalable microservices with a focus on reliability, maintainability, and performance.
- Develop event-driven architectures and asynchronous processing flows using Kafka or similar streaming platforms.
- Design and optimize relational database solutions, including PostgreSQL, with a strong focus on query performance and efficient data handling.
- Implement and optimize caching solutions using Redis, Ignite, or similar technologies.
- Develop and integrate gRPC services for efficient communication between distributed services.
- Design and implement multi-tenant backend services, ensuring appropriate tenant isolation, scalability, and security.
- Containerize and deploy services using Docker and Kubernetes.
- Contribute to CI/CD pipelines and automated deployment processes.
- Write unit, integration, and performance tests to ensure application reliability and quality.
- Apply appropriate design patterns, clean code principles, and software engineering best practices.
- Participate in code reviews, technical discussions, and architectural decisions.
- Perform performance profiling, troubleshooting, and tuning to optimize services under heavy workloads.
- Monitor and analyze application performance, database queries, resource utilization, and system bottlenecks.
- Collaborate with other engineers and teams to design and deliver reliable distributed systems.
Requirements
- 5+ years of professional software development experience, with strong hands-on experience in Java.
- Strong production experience with Java and Spring Boot.
- Proven experience building microservices and REST APIs at scale.
- Hands-on experience with Kafka or similar event-streaming platforms.
- Strong knowledge of PostgreSQL or other relational databases, including query optimization and database performance.
- Experience with Redis, Apache Ignite, or similar caching technologies.
- Experience with gRPC and distributed service-to-service communication.
- Experience designing multi-tenant applications and services.
- Experience with Docker and Kubernetes.
- Good understanding of CI/CD practices and deployment automation.
- Strong knowledge of unit testing, integration testing, and automated testing practices.
- Good understanding of software design patterns, clean code, and SOLID principles.
- Experience participating in code reviews and collaborative software development.
- Practical experience with performance profiling, load testing, troubleshooting, and application tuning.
- Strong understanding of scalable, reliable, and distributed backend architectures.
Technical Stack
Java | Spring Boot | Microservices | REST APIs | Kafka | PostgreSQL | Redis / Apache Ignite | gRPC | Docker | Kubernetes | CI/CD
الوصف الوظيفي
مهندس تطوير خلفي أول (Java)
الوصف الوظيفي
نحن نبحث عن مهندس تطوير خلفي أول (Java) يتمتع بخبرة قوية في بناء خدمات خلفية وواجهات برمجة التطبيقات (REST APIs) عالية الأداء وقابلة للتوسع باستخدام Java وSpring Boot. يجب أن يمتلك المرشح المثالي خبرة عملية في تطوير الخدمات المصغرة (microservices)، والأنظمة القائمة على الأحداث (event-driven systems)، والتطبيقات الموزعة التي تعمل بموثوقية تحت أحمال العمل العالية.
تتضمن هذه الوظيفة تصميم وتطوير الخدمات الخلفية، والعمل مع قواعد البيانات العلاقاتية وتقنيات التخزين المؤقت، وتنفيذ البنيات القائمة على الأحداث، وتحسين أداء التطبيقات. ستساهم أيضًا في أنابيب CI/CD، والاختبار الآلي، ومراجعات الكود، وممارسات تصميم البرمجيات.
المسؤوليات الرئيسية
- تصميم وتطوير وصيانة خدمات خلفية وواجهات REST APIs عالية الأداء باستخدام Java وSpring Boot.
- بناء وصيانة خدمات مصغرة قابلة للتوسع مع التركيز على الموثوقية، وإمكانية الصيانة، والأداء.
- تطوير بنيات قائمة على الأحداث وتدفقات معالجة غير متزامنة باستخدام Kafka أو منصات البث المشابهة.
- تصميم وتحسين حلول قواعد البيانات العلاقاتية، بما في ذلك PostgreSQL، مع التركيز الشديد على أداء الاستعلامات والتعامل الكفء مع البيانات.
- تنفيذ وتحسين حلول التخزين المؤقت باستخدام Redis أو Ignite أو التقنيات المشابهة.
- تطوير ودمج خدمات gRPC لتحقيق اتصال فعال بين الخدمات الموزعة.
- تصميم وتنفيذ خدمات خلفية متعددة المستأجرين (multi-tenant)، مع ضمان العزل المناسب بين المستأجرين، والقابلية للتوسع، والأمان.
- تجميع الخدمات في حاويات ونشرها باستخدام Docker وKubernetes.
- المساهمة في أنابيب CI/CD وعمليات النشر الآلي.
- كتابة اختبارات الوحدة، والتكامل، والأداء لضمان موثوقية التطبيق وجودته.
- تطبيق أنماط التصميم المناسبة، ومبادئ الكود النظيف، وأفضل ممارسات هندسة البرمجيات.
- المشاركة في مراجعات الكود، والمناقشات التقنية، والقرارات المعمارية.
- إجراء تحليل الأداء، واستكشاف الأخطاء وإصلاحها، والضبط الدقيق لضمان تحسين الخدمات تحت أحمال العمل الثقيلة.
- مراقبة وتحليل أداء التطبيق، واستعلامات قواعد البيانات، واستغلال الموارد، واختناقات النظام.
- التعاون مع المهندسين والفرق الأخرى لتصميم وتسليم أنظمة موزعة موثوقة.
المتطلبات
- خبرة أكثر من 5 سنوات في تطوير البرمجيات احترافيًا، مع خبرة عملية قوية في Java.
- خبرة إنتاجية قوية في Java وSpring Boot.
- خبرة مثبتة في بناء الخدمات المصغرة وواجهات REST APIs على نطاق واسع.
- خبرة عملية في Kafka أو منصات بث الأحداث المشابهة.
- معرفة قوية بـ PostgreSQL أو قواعد البيانات العلاقاتية الأخرى، بما في ذلك تحسين الاستعلامات وأداء قواعد البيانات.
- خبرة في Redis أو Apache Ignite أو تقنيات التخزين المؤقت المشابهة.
- خبرة في gRPC والاتصال بين الخدمات الموزعة.
- خبرة في تصميم التطبيقات والخدمات متعددة المستأجرين (multi-tenant).
- خبرة في Docker وKubernetes.
- فهم جيد لـ ممارسات CI/CD وأتمتة النشر.
- معرفة قوية بـ اختبارات الوحدة، واختبارات التكامل، وممارسات الاختبار الآلي.
- فهم جيد لـ أنماط تصميم البرمجيات، والكود النظيف، ومبادئ SOLID.
- خبرة في المشاركة في مراجعات الكود وتطوير البرمجيات التعاوني.
- خبرة عملية في تحليل الأداء، واختبار الحمل، واستكشاف الأخطاء وإصلاحها، وضبط التطبيقات.
- فهم قوي لبنيات الأنظمة الخلفية الموزعة والموثوقة والقابلة للتوسع.
المكدس التقني (Technical Stack)
Java | Spring Boot | Microservices | REST APIs | Kafka | PostgreSQL | Redis / Apache Ignite | gRPC | Docker | Kubernetes | CI/CD