Technologies - Ga-3tan/AMT_Project GitHub Wiki

Web Application

JetBrains IntelliJ has been chosen as the IDE for the project because it was free and known to all the team members. It also allows easy management of the git repository, configuration of the environment and the possibility of customizing the IDE style.

Since the project required the use of the Java language, Spring Boot framework seemed more appropriate.

It's a framework for Java that allows us to easily make our web-app. It's "easy" to learn and is useful to make production grade web-app. It is widely used and has a really good documentation. Other frameworks of the same family are also used, such as Spring Cloud and Spring Security.

We are using Maven for dependency management, we will use this over Gradle because every team member has already used this technology in the past.

For the serving of our application we have chosen to use Tomcat, this technology is integrated by default into the intellij IDE and makes it possible to have a Web Server very easily and with very few changes to the configuration. It's also the most popular and fits all the needs.

As our project is an e-commerce website, NoSQL databases offers better data flexibility, scalability, and slightly better performance (to manage large catalogs and unstructured data like user data and images).

With a document database, data is simpler and easier to access as an entire product can be stored in a single document instead of storing across multiple tables. We chose MongoDB as it offers great performances, reliability, availability and scalability, which are all essentials to an e-commerce website.

For our images management system, we used Amazon Simple Storage Service (Amazon S3). It is an object storage service offering industry-leading scalability, data availability, security, and performance. We used this service as it suits our needs perfectly and is simple to set up and use.

Template Engine

As for the template engine we have chosen to use Thymeleaf, this technology is fast and easy to use, moreover it has already been used in the past by some members of the group. In terms of performance it equals its competitors in the market (FreeMarker, Mustache, ...) and is easily adaptable to any Maven project with a rich support for syntax highlighting in various IDEs. Moreover Thymeleaft comes out directly integrated with the spring boot framework thus having an extreme compatibility together.

Testing

Spring Boot provides a number of utilities and annotations to help when testing your application.

Most developers use the spring-boot-starter-test “Starter”.

The spring-boot-starter-test “Starter” contains the following provided libraries:

  • JUnit 4: The de-facto standard for unit testing Java applications.
  • Spring Test & Spring Boot Test: Utilities and integration test support for Spring Boot applications.

Unit and TestNG are the most popular testing frameworks out there. JUnit ranked first with a presence in 62% of the projects, and TestNG was in at #20 with 6%. The Maven repository shows similar results with JUnit rocking the popularity charts at #1 with 42,484 uses.

In terms of differences the dependency tests are missing in JUnit, but we decided that it wasn't too relevant to our project, so we opted for the technology that best fit our Spring boot development environment and with more documentation, so as to have as few problems as possible in the future.