006_Backend Technology - ZHAW-PM4-Compass/compass GitHub Wiki

Backend Technology

Status

Decided

Context

In the development of the project's backend, we need to select an appropriate technology stack considering various options available, including Java, Kotlin, Java with Spring Boot, Node.js/Nest, Node.js/Express or Koa, PHP, and Polyglot (multiple languages). The decision should be based on factors such as team experience, project requirements, and ecosystem support.

Decision

We have decided to use Java with Spring Boot for developing the backend of the ZHAW project. This decision is based on the team's expertise with Java and Spring Boot, as well as the robust ecosystem and features provided by Spring Boot for building scalable and maintainable applications.

  • The team has significant experience with Java and Spring Boot, making it the most familiar and efficient choice for development. Leveraging existing expertise reduces the learning curve and accelerates development timelines.

  • Spring Boot provides a comprehensive ecosystem with libraries, tools, and best practices for building enterprise-grade applications. It offers features such as dependency injection, ORM support, security, and microservices architecture, aligning well with the project's requirements.

  • Spring Boot has a large and active community of developers and contributors, ensuring continuous support, updates, and enhancements. This community-driven approach fosters innovation and provides access to a wealth of resources and knowledge.

  • Spring Boot's architecture and features enable the development of scalable and high-performance applications. It offers built-in support for caching, asynchronous processing, and distributed systems, allowing for efficient handling of increased workloads.

  • Spring Boot seamlessly integrates with other Java frameworks and technologies, as well as with third-party services and APIs. This integration capability simplifies interoperability and enables easy adoption of external services as needed for the project.

Consequences

  • Leveraging Java with Spring Boot allows for rapid development and deployment of backend services, thanks to the team's familiarity with the technology stack and the streamlined development process provided by Spring Boot.

  • The use of Spring Boot ensures the creation of robust and reliable backend services, leveraging features such as dependency injection, aspect-oriented programming, and built-in support for testing.

  • By choosing a technology stack based on Java and Spring Boot, we ensure long-term maintainability and extensibility of the backend codebase. The modular and well-structured nature of Spring Boot applications facilitates future enhancements and updates.

⚠️ **GitHub.com Fallback** ⚠️