Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Options

Layer

Framework

Constraints

Additional notes

Deployment Method/Application

Heroku

Notes

Current team member knowledge of frameworks

Difficulty of frameworks to learn

How well the framework is documented

Availability / pricing of platforms

Deployment

Heroku

Not customizable

Slow

Joshua has published an flask server to it before.

Easy to setup and link to github for continuous deployment

  • Not customizable

  • Slow

    • Free

    Deployment Method

    AWS

    MONEY! $$$$

    Some documentation and more intuitive

    Free option without use of credit card.

    Deployment

    AWS

    Scales better and faster

    Joshua has attempted to use and failed…

    More complicated to setup

    Well documented though some can be fragmented.

    Can be free however credit card required and can’t stop charge if API overused.

    Deployment

    Azure

    Scales better and faster

    API

    .

    No experience.

    More complicated to setup

    Has documentation though often aimed at more experienced uses.

    No free option for needed services.

    Deployment

    AlwaysData

    Small scale server operator similar to AWS, Azure

    Used in comp1531 however no other use.

    Fairly simple however large learning curve.

    Lacking documentation as less used service and documentation that does exist is often hard to understand.

    Free option without credit card that we can use.

    Deployment

    Personal Host

    Space!

    Honestly just. No

    Joshua and Edward have basic understanding

    For simple server relatively easy

    Lots of guides for setup.

    Power and wear on equipment.

    Application

    Python

    Slow

    Lots of libraries

    Flexible

    Group members have used before

    Easy language to pickup and use

    Very well documented

    Can connect to many things

    High level

    Lots of libraries

  • Group members have used before

  • Free

    Server/ API

    Flask

    • Group familiar

    Runs on top of python. Well supported with deployment methods

    Group familiar

    Easy to pickup for simple solutions. Can get more complicated for harder tasks.

    Well documents. Lots of use so many common issues have solutions.

    Free

    Server/ API

    Django

    Runs on top of python. Well supported with deployment methods

    Group unfamiliar

    • More lightweight

    Deployment

    Azure

    • Pay $$$

    Deployment

    Personal Host

    • Who is going to host

    • Space!

    Honestly just. No

    Easy to pickup. Similar to flask though considered slightly easier to understand basics of.

    Commonly used in industry with lots of formal and informal documentation

    Free

    Persistance layer

    SQLite + sqlalchemy

    Runs local SQL sever

    Joshua has used before. Runs on python which group is familiar with.

    Some learning curve however after initial setup is very easy to use.

    Well documented however often have alternate use cases.

    Free

    Final choices

    Deployment method

    We have decided to use Heroku as it should give a simple and stable server to deploy our project to. We will also be able to set it up to continuously deploy from our project GitHub main branch. Joshua also has experience in it so there should hopefully be fewer/no surprises in the setup for it.

    Application layer

    We will be using Python as it is a quick language to develop using which also has a large collection of useful libraries that will allow us to progress quickly. The whole group is also familiar with it and is lots of formal and informal documentation we can access as well.

    Server/API Layer

    We will be using Flask for our API layer. This is because it’s a fairly simple library to use on top of python. The whole group also has experience with it so we should be able to very quickly get into it instead of having to learn and make mistakes with a new system.

    Persistence layer

    We will be using a SQLite database to store data and using the sqlalchemy python library to access this. We have chosen this as it’s a reliable system that scales well and also is quite easy to use once the initial setup is done.