ADR-0006 Use an Application Development Platform

Date2021-02-09
StatusAccepted

Context

Mobile and web application development are increasingly achieved by using high level services provided by cloud service providers like Google Cloud Platform (GCP) or Amazon Web Services (AWS). This has led to the development of SDKs and tooling that make it easier to compose these services into working applications through simple provisioning and client-side support libraries. Essentially they provide a path of least resistance for many concerns in application development for functions from object storage to application deployment, analytics to authentication.

The two application development platforms we considered are AWS Amplify and Google Firebase. Both of these make application development easier and are backed by rich service offerings in their respective cloud platforms.

Unity game engine will be the main development platform for the eTryOn project so we created two minimal Unity applications using the aforementioned toolkits to compare the two solutions in terms of ease of use, support, and capabilities. The demo applications use simple operations, namely an authentication process and communication with cloud storage for upload and download operations.

  • Firebase was easy to set up, and has an up-to-date supported SDK for Unity.

  • The aws.net SDK has support for Unity but requires a tedious and error-prone set-up process.

  • The Firebase platform is easier to use with a much shorter learning curve when it comes to typical backend services such as authentication, analytics, cloud storage and databases.

  • The AWS SDK offers more functionality, which at the moment do not seem to be of any particular use for our case.

  • There are more resources (such as documentation and community guides) available for the Firebase than for Amplify.

Note: Amazon’s Unity mobile SDK has not been mentioned so far since it has not been updated for 5 years and is now considered deprecated. The suggested Unity SDK from Amazon is the aws.net SDK considered above.

Decision

We will use Firebase for the eTryOn project.

Consequences

The documentation and community resources for Firebase will allow developers to get up and running quickly.

We will be able to use up-to-date and supported SDKs to consume cloud services in our Unity and Javascript applications.

The tooling and documentation available for Firebase will free up developers to focus on core facets of the applications.

Use of Firebase implies that we will use GCP-backed services for authentication (Firebase Auth), object storage (Cloud Storage), and NoSQL database (Cloud Firestore).

Consuming cloud services directly (via the provided SDK) means we do not need to write dedicated APIs for simple things like object and metadata storage.