Skip to content
@ArquisoftUNAL

Habitus

Hi!👋

Welcome to Habitus Project

  • Habitus is a project for encouraging the power of habits among users 💪
  • It is developed using microservices architecture 🌈

Component and Connector Diagram

alt

Check out all the other diagrams (e.g Deployment view diagram and Data View Model) in the Diagram and Documentation repository.

Quality attributes

Security

  • User Authentication
  • User Authorization
  • Zero trust
  • Limit exposure: Using private networks for the microservices, message queue and LDAP.
  • Data Encryption
  • Actions statistics: Using GCP one can have a registry of the actions users perform.

Interoperability

  • Interoperability between microservices using API Gateway orchestration and reverse proxies.
  • REST is used for communication between API Gateway and microservices. GraphQL is used between frontend and Gateway.
  • There's also a SOAP service for communication between the system and others that know the IP of the reverse proxy connected to that service.
  • Each microservice uses a specific communication tool for communicating with their asociated database.

Scalability

  • Microservices architecture
  • Implementation automation using Kubernetes.
  • Horizontal Scalability: Load balancing services.

Error handling

  • Event based async communication between microservices.
  • Testing: Load and stress testing done with Jmeter.

Testing

Testing was done with Jmeter. An example of a test case is creating a large number of logins (which thus needs to access the users_ms microservice and the LDAP server).

Scenario 1

Only one computing instance

# Users Response time (ms) Throughput (trans/min)
1 632 36.8
50 890 1587.3
100 1403 2496.9
105 1564 2457.1
110 4930 1113.0
114 16700 383.1
115 58959 115.1
125 - -

The knee-point is obtained at 115 concurrent logins when the first error is identified.

Scenario 1

Scaled to 3 replicas.

# Users Response time (ms) Throughput (trans/min)
1 541 38.9
50 889 1588.1
100 1280 2631.6
120 1523 2853.7
130 1730 2857.1
135 18470 416.0
136 104940 77.0
Here the knee-point is obtained at 136 concurrent logins where an error is identified. This replication technique improved the response time in 18.42%.

Popular repositories Loading

  1. habits_ms habits_ms Public

    Rust 1

  2. users_ms users_ms Public

    JavaScript

  3. notifications_ms notifications_ms Public

    Ruby

  4. statistics_ms statistics_ms Public

    Statistics microservice for Habitus

    Python

  5. achievement_ms achievement_ms Public

    Java

  6. habitus_gw habitus_gw Public

    API Gateway for Habitus

    JavaScript

Repositories

Showing 10 of 13 repositories
  • .github Public
    ArquisoftUNAL/.github’s past year of commit activity
    0 0 0 0 Updated Apr 17, 2024
  • readmeFiles Public
    ArquisoftUNAL/readmeFiles’s past year of commit activity
    0 0 0 0 Updated Apr 17, 2024
  • ArquisoftUNAL/habitus_frontend_web’s past year of commit activity
    TypeScript 0 0 0 1 Updated Feb 2, 2024
  • habitus_frontend_mb Public

    Mobile React Native application for Habitus!!

    ArquisoftUNAL/habitus_frontend_mb’s past year of commit activity
    TypeScript 0 0 0 0 Updated Nov 29, 2023
  • habits_ms Public
    ArquisoftUNAL/habits_ms’s past year of commit activity
    Rust 1 0 0 0 Updated Nov 29, 2023
  • ArquisoftUNAL/habitus_proxies’s past year of commit activity
    Makefile 0 0 0 0 Updated Nov 28, 2023
  • habitus_gw Public

    API Gateway for Habitus

    ArquisoftUNAL/habitus_gw’s past year of commit activity
    JavaScript 0 0 0 0 Updated Nov 14, 2023
  • statistics_ms Public

    Statistics microservice for Habitus

    ArquisoftUNAL/statistics_ms’s past year of commit activity
    Python 0 0 0 0 Updated Nov 13, 2023
  • habitus_int Public
    ArquisoftUNAL/habitus_int’s past year of commit activity
    JavaScript 0 0 0 0 Updated Nov 12, 2023
  • users_ms Public
    ArquisoftUNAL/users_ms’s past year of commit activity
    JavaScript 0 0 0 0 Updated Nov 11, 2023

Top languages

Loading…

Most used topics

Loading…