Skip to content

Instantly share code, notes, and snippets.

@jbutz
Created January 10, 2023 18:27
Show Gist options
  • Save jbutz/c84ce2a1b61c4e3af3a9f9417aabc64d to your computer and use it in GitHub Desktop.
Save jbutz/c84ce2a1b61c4e3af3a9f9417aabc64d to your computer and use it in GitHub Desktop.
jasonbutz.info C4 DSL Model
workspace {
model {
user = person "User"
mainSite = softwareSystem "jasonbutz.info" {
webapp = container "Web Site" {
user -> this "Uses"
}
}
analyticsApp = softwareSystem "plausible.io" "Privacy-focused analytics" {
api = container "API" {
webapp -> this "Uses"
}
}
dnsApp = softwareSystem "cloudflare.com" "DNS Provider" {
dns = container "DNS Server" {
-> mainSite "Resolves DNS"
user -> this "Queries"
}
}
live = deploymentEnvironment "Production" {
aws = deploymentNode "AWS" {
tags "Amazon Web Services - Cloud"
deploymentNode "us-east-1" {
tags "Amazon Web Services - Region"
cdn = infrastructureNode CDN "CloudFront Distribution" {
tags "Amazon Web Services - CloudFront"
}
}
deploymentNode "us-east-2" {
tags "Amazon Web Services - Region"
primaryS3 = infrastructureNode "Primary Bucket" "S3 Bucket" {
tags "Amazon Web Services - Simple Storage Service S3 Bucket"
}
}
deploymentNode "us-west-2" {
tags "Amazon Web Services - Region"
secondaryS3 = infrastructureNode "Secondary Bucket" "S3 Bucket" {
tags "Amazon Web Services - Simple Storage Service S3 Bucket"
}
}
cdn -> primaryS3 "Retrieves objects from S3 origin" "HTTP"
cdn -> secondaryS3 "Retrieves objects from S3 origin" "HTTP"
primaryS3 -> secondaryS3 "Replicates objects"
}
plausible = deploymentNode "Plausible.io" {
analyticsApi = deploymentNode API "Plausible.io API" {
containerInstance api
cdn -> this "Forwards calls to origin"
}
}
cloudflare = deploymentNode "CloudFlare" {
infrastructureNode DNS "CloudFlare DNS" {
-> cdn "Resolves DNS"
}
}
}
}
views {
systemContext mainSite {
include *
autolayout lr
}
container mainSite {
include *
autolayout lr
}
deployment mainSite live {
include aws
autolayout lr
description "Production AWS Resource Diagram"
}
themes default https://static.structurizr.com/themes/amazon-web-services-2020.04.30/theme.json
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment