iac_modules/docs
2023-12-29 13:56:23 +08:00
..
accessing_mgmt_tools.md add .github/workflows/pulumi-aws.yml 2023-03-17 17:07:22 +08:00
getting_started.md Pulumi.yaml: import config Pulumi.dev.yaml 2023-03-21 17:20:11 +08:00
NGINX-MARA-icon.png add .github/workflows/pulumi-aws.yml 2023-03-17 17:07:22 +08:00
README_CN.md update README.md, docs 2023-12-29 13:56:23 +08:00
README_EN.md update README.md, docs 2023-12-29 13:56:23 +08:00

Modern Container Application Reference Architecture

Introduction

Modern application architecture is characterized by four key features: scalability, portability, resilience, and agility. These fundamentals underpin many different aspects of modern architecture.

Characteristics

  • Scalability: Capable of scaling up or down quickly and seamlessly to adapt to changing global demands.
  • Portability: Easily deployable across a variety of devices and infrastructure, whether in public clouds or local environments.
  • Resilience: Able to perform failover in new clusters or virtual environments across various availability zones, clouds, or data centers.
  • Agility: Facilitates updates through automated CI/CD pipelines, enhancing code velocity and frequency of code pushes.

Reference Architecture

This repository offers a reference architecture for modern container applications, emphasizing the following principles:

PlantUML Diagram

  • Platform Agnosticism: Designed to be independent of platforms, allowing deployment on various container orchestration platforms like Kubernetes (k8s) or k3s.
  • Open Source Software Priority: Prioritizes open-source software (OSS) for robust, widely-adopted tools and technology.
  • Everything As Code: Utilizes Infrastructure as Code (IaC) for defining and configuring all necessary application resources.
  • CI/CD Automation: Implements continuous integration and deployment pipelines using GitHub CI.
  • Security-Conscious Development: Adopts security best practices at every stage, including containerized builds and secure container repositories like Harbor.
  • Distributed Storage: Includes distributed storage solutions for high availability and scalability of application data.

Toolchain

  • Pipeline: GitHub CI
  • IaC Tools: Pulumi/Terraform
  • Code Repository: GitHub
  • Container Repository: Harbor
  • Monitoring:
    • Logs: Loki
    • Tracing: Deepflow
    • Metrics: Prometheus
    • Notifications: Alertmanager
  • Data Storage: Clickhouse
  • Visualization: Grafana
  • Cluster Management: Kubernetes (k8s), Lightweight Kubernetes (k3s)
  • Ingress: Nginx
  • DNS: DNS Service SaaS

Getting Started

Follow these steps to start using this reference architecture.

Documentation

  1. Multi-cluster Operations (I): Automated delivery, building, deployment, release, and monitoring.
  2. Multi-cluster Operations (II): Progressive application release.

Issues

  • APISIX and External DNS Integration
  • Metrics Collection with FluxCD, Flagger, and APISIX Ingress
  • Monitoring of Canary Releases

To Do

  • Multi-cluster Operations (III) to (VI) covering progressive release, multidimensional monitoring, vulnerability testing, and AIOps.

Contributions

Contributions to this reference architecture are welcome. Feel free to submit pull requests for suggestions, improvements, or bug fixes.

License

Released under the GPL V3 license.