/
Deployment/ Updated Stack Architecture

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

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

 

Related content

Interface - Revision2
Interface - Revision2
Read with this
Software Architecture & API Design
Software Architecture & API Design
Read with this
Requirements
Requirements
Read with this