GithubHelp home page GithubHelp logo

497s-project-phase-4-final's Introduction

Team Vision: Project Phase 4 Final

Overview

Our project is a web application for organizing communities. Our vision is to combine the features of a home webpage with those of a shared online calendar. The goal is to allow groups of people - whether they be friend groups, clubs, or organizations - to have an easy-to-use tool for organizing events.

This project was developed for CS 497S: Scalable Web Systems, taught by Professor Tim Richards at UMass Amherst in Fall 2020.

Team Members

  • Hichem Bennia
  • Sam Dziewietin
  • Achintya Kumar
  • Angela Nayiga
  • Zenry Padua

System Design

The system is divided into four microservices:

  • Web UI: A web app for displaying a group's homepage and calendar.
  • Homepages: Manages information displayed on a group's homepage (e.g group name, welcome message).
  • Events: Manages the events displayed on each group's calendar.
  • Images: Manages images used by the system, especially group icons.

The Web UI service consists of a frontend and a backend, while the other services consist of a database and RESTful API. The Web UI frontend requests data from the backend, which in turn makes API calls over HTTP to the other services to obtain the necessary data.

Each service is built into a Docker image (or several with docker-compose). These images are then deployed to AWS Elastic Beanstalk (EB).

Scalability

Most of our scalability considerations are taken from recommendations given in Sam Newman's Building Microservices.

Our first major step towards addressing scalability concerns is by establishing service boundaries such that each team member develops, tests, and deploys their own microservice. This allows each team member to select the technology that best fits their needs and also allows each service to be scaled independently of the others (e.g. by deploying more instances).

Our method of deployment is to build Docker images and deploy them on Elastic Beanstalk. This approach significantly reduces the time and effort required for deployment and allows us to rapidly expand the number of server instances, if necessary.

As demonstrated in the Web UI service, we are developing the ability to employ continuous integration (CI) and continuous delivery (CD) to significantly speed up the development and release processes. GitHub Actions allows us to run a CI workflow on each push, using pytest to run unit and service tests. GitHub Actions also permits us to automatically deploy our services to Elastic Beanstalk when a new release is created.

Repositories

Demo Videos

Monitoring

A system monitoring service can be accessed here.

497s-project-phase-4-final's People

Contributors

samdzie avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.