Go to file
2023-03-24 13:01:53 +08:00
.github/workflows openldap: add role and ci pipeline 2023-03-24 13:01:53 +08:00
docs Pulumi.yaml: import config Pulumi.dev.yaml 2023-03-21 17:20:11 +08:00
infrastructure set default disk size, type 2023-03-24 12:00:10 +08:00
playbook openldap: add role and ci pipeline 2023-03-24 13:01:53 +08:00
.gitignore Fixed SyntaxError: invalid syntax. Perhaps you forgot a comma 2023-03-23 14:52:52 +08:00
LICENSE add .github/workflows/pulumi-aws.yml 2023-03-17 17:07:22 +08:00
README.md 更新 README.md 2023-03-19 10:58:49 +08:00

Modern Container Application Reference Architectures

Current Test Status

MARA Project

This repository has the basics for a common way to deploy and manage modern apps. Over time, we'll build more example architectures using different deployment models and options including other clouds and youll be able to find those here.

Nomenclature

Internally, we refer to this project as MARA for Modern Application Reference Architecture. The current repository name reflects the humble origins of this project, as it was started with the purpose of allowing users to build custom versions of the NGINX Ingress Controller in Kubernetes. This went so well that we expanded it to the project you're currently viewing.

Modern App Architectures

We define modern app architectures as those driven by four characteristics: scalability, portability, resiliency, and agility. While many different aspects of a modern architecture exist, these are fundamental.

  • Scalability Quickly and seamlessly scale up or down to accommodate spikes or reductions in demand, anywhere in the world.

  • Portability Easy to deploy on multiple types of devices and infrastructures, on public clouds, and on premises.

  • Resiliency Can fail over to newly spunup clusters or virtual environments in different availability regions, clouds, or data centers.

  • Agility Ability to update through automated CI/CD pipelines with higher code velocity and more frequent code pushes.

This diagram is an example of what we mean by a modern app architecture: Modern Apps Architecture Example Diagram

To satisfy the four key characteristics, many modern app architectures employ:

  • Platform agnosticism
  • Prioritization of OSS
  • Everything defined by code
  • CI/CD automation
  • Security-minded development
  • Containerized builds
  • Distributed storage

What's Being Built

For details on the current state of this project, please see the readme in the pulumi/python subdirectory. This project is under active development, and the current work is using Pulumi with Python. Additionally, please see Status and Issues for the project's up-to-date build status and known issues.

Subdirectories contained within the root directory separate reference architectures by infrastructure deployment tooling with additional subdirectories as needed. For example, Pulumi allows the use of multiple languages for deployment. As we decided to use Python in our first build, there is a python subdirectory under the pulumi directory.

This project was started to provide a complete, stealable, easy to deploy, and standalone example of how a modern app architecture can be built. It was driven by the necessity to be flexible and not require a long list of dependencies to get started. It needs to provide examples of tooling used to build this sort of architecture in the real world. Most importantly, it needs to work. Hopefully this provides a jumping off point for someone to build their own infrastructure.

Tools Chains

  1. Pipeline: Github ci
  2. IAC Tool: Pulumi
  3. CodeRepo: Github
  4. Registry: Harbor
  5. Monitor
  • logs: Loki
  • tracing: Deepflow
  • mectic: Prometheus
  • notify: Alertmanger
  • datastore: Clickhouse
  • visualizationGrafana
  1. cluster management:
  • k3s
  • k8s
  1. Ingress: nginx
  2. DNS

Contribution

License