Skip to content
/ arc Public

Software system architecture authoring and inspecting made easy

License

Notifications You must be signed in to change notification settings

koderizer/arc

Repository files navigation

arc

Software architecture made simple

arc is a simple utility to author, visualize, inspect and update software architecture design easily through simple YAML files.

It is the utility to adopt the C4model architecture design approach that is promoted by Simon Brown. Arc allow the practice of architecture as code, allow easy integration to CiCd workflows such that archictecture information is accumulated and kept up to date as the system complexity grows, easily and free of any additional manual effort.

The objective is to design and deliver software product with clear architecture and clean working code, with the least amount of effort and duplicating cognitive workload.

The workflow using arc utilities is:

  • Start note down architecture model of your app on a yaml file named arc.yaml.
  • Use arcli to inspect and arcviz service to visualize the architecture in different views such as Landscape, Context, Containers or Component.
  • Share the visualization through a centrally hosted arcviz server if your team fancy.

Install

  • Install and run arcviz on your machine. You need Docker as it is the only option now.
    docker run -d -p 10000:10000 -p 8080:8080 koderizer/arcviz:latest
  • Install arcli utility, via Homebrew on Mac as it is the only convenient option now:
brew tap koderizer/arc

brew install arcli

Build from source or download from release package and put to your bin path is another option

Usage

arcli help

Example

One simple application

app: arcs
desc: "Arc is a simple utility to author, view, inspect and update software architecture design"
users:
  - name: dev
    role: "one who create software service"

internal-systems:
  - name: arc
    desc: "Enable deloper to author, inspect and version control software systems design and code."
  
    containers:
    - name: cli
      runtime: arcli-binary
      technology: golang
      desc: "local utility to parse and build arc data to and from visualizations"
  
    - name: viz
      runtime: docker-jetty
      technology: "gRPC golang, plantuml"
      desc: "render visualization of archtecture design given a arc data blob specifications"
      components:
      - name: arcviz
        desc: grpc server to structure the layout into markup for renderer
      - name: plantuml-renderer
        desc: vizualize server using plantuml

external-systems:
  - name: dev-ide
    desc: software developement editor and integrated environment

relations:
  - { s: dev, p: design and develop software, o: arc}
  - { s: arc.arcli, p: send render request (gRPC), o: arc.arcviz}
  - { s: dev-ide, p: integrate, o: arc.arcli}

to visualize this, simply run from the same directory this file is in:

arcli inspect 

This project is underconstruction

Utilizing and base on works done from: