Deployment/ Updated Stack Architecture
Deployment link:
https://fudge2021.herokuapp.com/
Final choices
Deployment method
We are using Heroku:
Simple and Stable server to deploy our project to
We have set it up to continually deploy from our main branch on GitHub, meaning all updates to it are automatically served.
All secrets needed to run the application were added to Heroku as part of the environment when the server is started.
Persistence layer
We are using a Postgres DB:
To store data and then using the sqlalchemy ORM python library to access it.
We were able to quickly set this up as we have hosted the DB through Heroku.
Using the same service allows them to integrate easily, with Heroku automatically adding the URI to our DB to the server environment.
Application layer
We are using Python:
Quick language to develop using which also has a large collection of useful libraries that allowed us to progress quickly.
Familiar language for each member
We used the pytest library heavily to test the application along with the email and defusedXML to email and interact with XML.
Server/API Layer
We are using Flask:
It is a python library that provides a quick way to create the API.
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 | Javascript | Suited well for websites Basic for frontend.
| Group unfamiliar | Easy to pick up | Powerful and efficient. A lot of guides , lots of libraries | Free |
Application | PHP | Suited well for websites Basic for frontend. Can include Javascript | Group unfamiliar | Easy language to pickup and use. Simple syntax relative to others | Efficient. A lot of guides , lots of libraries | Free |
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 |
Server/ API | Nodejs | Works with javascript | Group unfamiliar | Easy to pick up | Efficient. A lot of guides , lots of libraries | Free |
Persistatnce layer | txt doc | Store logs in txt file. Is very slow and hard to search. | Group unfamiliar | Some learning curve due to everyone in group being unfamiliar, however after initial setup is very easy to use. | Very well documented as use is ubiquitous. | Free |
Persistance layer | MongoDB | Stores data in JSON Different style of database | Group unfamiliar | Longer learning curve due to group being unfamiliar. Don’t have the time learn this throughout sprints. Easy to set up Easy to break | Diverse. A lot of flexibility | Free |
Persistance layer | Postgres/ Sqlalchemy | SQL style database plus ORM for SQL databases in python | 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 |