Skip to content

A repository containing work for the course Software As A Service in ECE NTUA.

Notifications You must be signed in to change notification settings

thanoskaravangelis/askmeanything

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

askmeanything

A repository containing the project's work for the course Software as a Service in the 8th semester of the department of Electronical and Computer Engineering NTUA.

askmeanything logo

askmeanything

The aim of the project was to create a question-answer management application, named askmeanything, with minimal functionality that implements some Software as a Service (SaaS) architectures.

You can find our app deployed on heroku here: https://ask-soa-frontend.herokuapp.com/


Architectures

Service Oriented Architecture or SOA

In SOA, we created a service-bus which uses REDIS and acts as a middleware between the 4 services but also between our frontend and our services. The services, listed below, are all REDIS clients.

  1. Authenticator

    Uses JWT tokens to provide authentication for our users.

  2. Question manager

    Manages questions and their keywords.

  3. Question run

    Manages answers and votes, a more secondary service.

  4. Profile,stats and analytics

    Provides stats and analytics for the above and the user's profile.

Finally, we created a separate app named data-layer which provides an interface between our Postgres database and the four services.

Microservices

In the Microservices architecture we created 6 microservices and a choreographer using REDIS again which synchronizes their databases.

The microservices created are:

  1. authenticator-ms

    Uses JWT tokens to provide authentication for our users.

  2. question-man ms

    Supports CRUD operations for questions and keywords.

  3. question-run ms

    Similar to question run service in SOA.

  4. questions-disp ms

    Used to display one or more questions with all their information(answers, keywords, votes).

  5. profile-ms

    Supports user's CRUD operations.

  6. stats-ms

    Provides all the statistics and analytics endpoints.


Languages,Tools and Frameworks

nest-js icon ts icon node-js icon express icon typeorm icon postgres icon react icon bootsrap icon redis icon heroku icon

and also... axios,pg and canvas-js.


Deployment

For the deployment of our application we used Heroku which is very "postgres-friendly" for our databases.

In total we deployed 14 apps, 6 for the SOA architecture, 7 for the microservices and 1 for our frontend.

We attached heroku-postgres in all the apps that needed a database and heroku-redis in all the apps that implemented redis as a server or as a client.


Developers

Karavangelis Athanasios email

Mantzoutas Andreas email

About

A repository containing work for the course Software As A Service in ECE NTUA.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published