Skip to main content

Integrates

Integrates is the Product responsible for the Attacks Resistance Management platform (ARM) and its API.

Public Oath

  1. The ARM is accessible at app.fluidattacks.com.
  2. Changes to the user interface of the ARM that are "significant" will be announced via the appropriate communication mechanism.
  3. The API is accessible at app.fluidattacks.com/api.
  4. The API is backward compatible, meaning that no changes made to it by the Developers should break the End Users code that depends on it.
  5. A six-month notice period will be given should backward incompatible changes need to be made in the API, for example, but not limited to: deprecating attributes and entities, making optional arguments mandatory, changes in the authentication or authorization system, and so on.

Architecture

  1. Integrates is a standard client-server application divided into a front-end, a back-end, and out-of-band computing tasks.

  2. Integrates has three environments:

    • The productive environment (prod_integrates) is used by the End Users and is deployed by the CI from the trunk branch on GitLab.

    • The development environment (dev) is used by developers and is deployed by the CI from each developer's branch on GitLab with a name equal to the branch it was deployed from.

    • The local environment is deployed by each developer on their personal computers. However, this environment is not represented or further explained in this architecture, but instructions can be found below.

  3. The front-end is deployed into AWS S3 buckets, using the corresponding bucket for the environment (development, or production).

  4. Static DNS entries point to the corresponding S3 buckets on Amazon Web Services (AWS), allowing Cloudflare to cache their content for a while.

  5. The back-end is deployed into the Kubernetes cluster provided by the Cluster component of Common, into the corresponding namespace for the environment (dev or prod_integrates).

  6. Dynamic DNS entries are generated automatically for each back-end deployment using the Kubernetes ingress controller for AWS, which essentially binds the corresponding domain to an AWS Elastic Load Balancer (ELB) that routes traffic from the internet into the corresponding cluster nodes, allowing Cloudflare to act as a firewall between the internet and the web application, and providing rate-limiting.

  7. The backend uses:

  8. The Database is backed up using Backup Vaults by Amazon Web Services (AWS) as promised in 1 and 2.

  9. The Compute component of Common provides us with out-of-band processing power that we use for things like periodic tasks (schedules), or tasks that can be computed outside of the request/response lifecycle and/or that require more beefy machines (like generating PDF reports).

tip

You can right-click on the image below to open it in a new tab, or save it to your computer.

Architecture of Integrates

Contributing

Please read the contributing page first.

Development Environment

Follow the steps in the Development Environment section of our documentation.

When prompted for an AWS role, choose dev, and when prompted for a Development Environment, pick integratesBack.

Local Environment

Run each of the following commands in different terminals:

universe $ m . /integrates/back
universe $ m . /integrates/db
universe $ m . /integrates/front
universe $ m . /integrates/storage

This will launch a replica of app.fluidattacks.com and app.fluidattacks.com/api on your localhost:8001.