Stack architecture
Options
Layer | Framework | 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 | 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. | 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 Lots of libraries | Free |
Server/ API | Flask | 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 | 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.