-
-
Notifications
You must be signed in to change notification settings - Fork 4
/
system_diagram.puml
56 lines (42 loc) · 2.54 KB
/
system_diagram.puml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
@startuml system_diagram
!includeurl https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml
title Clojars System Diagram
Person(admin, "Admin", "A Clojars admin.")
Person(user, "User", "A Clojars user.")
System_Boundary(terraform, "Terraform managed") {
Container(lb, "Load Balancer", "AWS ALB", "clojars.org")
System_Boundary(asg, "Auto-scaling Group") {
Container(instance, "Clojars Server", "EC2 instance in ASG", "The Clojars server.")
}
ContainerDb(database, "Database", "PostgreSQL on RDS", "Stores users, artifact metadata.")
ContainerDb(repo_bucket, "Artifact S3 Bucket", "clojars-repo-production", "Stores all artifacts.")
ContainerDb(stats_bucket, "Stats S3 Bucket", "clojars-stats-production", "Stores download stat files.")
ContainerDb(artifact_index_bucket, "Artifact Index S3 Bucket", "clojars-artifact-index", "Stores a cache of the artifact index.")
ContainerDb(deployments_bucket, "Deployments S3 Bucket", "clojars-deployment-artifacts", "Stores deployments of the Clojars app.")
ContainerQueue(sqs, "Events queue (SQS)", "A queue for asynchronous tasks.")
System_Ext(ses, "Outgoing E-Mail System (SES)", "Sends system notification emails.")
}
Container(fastly, "Repo/stats CDN", "Fastly", "repo.clojars.org")
Rel(admin, deployments_bucket, "Uploads Clojars app release zips to", "s3")
Rel(admin, instance, "Triggers deployment on", "ssh")
Rel(admin, instance, "Connects to an administrative REPL on", "ssh")
Rel(user, lb, "Loads web-ui from", "https")
Rel(user, lb, "Deploys artifacts to", "https")
Rel(user, fastly, "Reads artifacts from", "https")
Rel(user, fastly, "Deploys artifacts to", "https")
Rel(lb, asg, "Routes to", "https")
Rel(instance, database, "Uses", "sql")
Rel(instance, repo_bucket, "Writes artifacts to", "s3")
Rel(instance, repo_bucket, "Reads artifact pom files from", "s3")
Rel(instance, stats_bucket, "Writes download stat files to", "s3")
Rel(instance, fastly, "Redirects artifact GETs to & Purges paths from", "https")
Rel(instance, ses, "Sends emails via", "https")
Rel(instance, sqs, "Emits events via", "sqs")
Rel(instance, artifact_index_bucket, "Reads/writes artifact index on index update", "s3")
Rel(instance, deployments_bucket, "Reads Clojars app zip on boot/deploy", "s3")
Rel(ses, user, "Delivers system notification emails to", "smtp")
Rel(sqs, instance, "Delivers events to", "sqs")
Rel(fastly, repo_bucket, "Serves artifacts from", "https")
Rel(fastly, stats_bucket, "Serves download stats from", "https")
Rel(fastly, lb, "Proxies artifact deploys to", "https")
@enduml