gctools-outilsgc / gcconnex

A social network based on Elgg
Other
49 stars 44 forks source link

Technical Research and Options Analysis of Backend Solution #2422

Closed piet0024 closed 1 year ago

piet0024 commented 2 years ago

Do research and options analysis on how to upgrade or improve the core backend solution for the GCcollab app. Options can include:

LecCory commented 2 years ago

I Deployed a small SPA project that I contributed infrastructure as code for to my personal Azure portaL. The project is a simple questionnaire but it has both the front end and back end decoupled from one another and can serve as a demonstration on how we can leverage Azure's serverless features to break away from containerization.

Front End

The front-end was built in Vue due to the simplicity of this particular app. This demo doesn't mean we have to use Vue, any of the major frameworks will work since they output a build with an index file that points to a bundle with all your styles and JS.

Break away from Containers and Webservers

How?

Why?

Back End

The back is comprised of multiple Azure functions written in Typescript, however much like the front end framework support for multiple languages is made available by Microsoft.

Break away from Containers and Webservers

Function apps are stored in an Azure App service plan not a web server or container There are a number of trigger types that can execute the function HTTP Triggers will likely be the only ones we'll use

How?

Why?

LecCory commented 2 years ago

A visual diagram of a simple serverless solution.

URL to demo: https://devdssastacctc43609bb.z9.web.core.windows.net/ 3 API calls are made on load, and the response from the CosmosDB is stored in local storage to limit the number of requests.

Image

nschonni commented 2 years ago

I don't think considering custom dev for this is a good idea. I think an Elgg uplift would be the better option, and deal with IMTD roadblocks if the hosting with them is a problem

vid commented 2 years ago

Can we look at this from a descriptive point of view? There are probably a mix of features from elgg, some from mediawiki, others we can layer on from other services using widgets or other approaches. Separating identity and data from these services and views will give the clearest idea. Happy to participate in an exercise along these lines.