2  Architecture

AI, ML & Data Workloads are non-latency dependent workloads that can be processed asynchronously.

We build AI Workloads that can be moved between AWS, Azure, Google Cloud and Private Clouds.

Code
%%capture --no-display

from diagrams import Diagram, Cluster
from diagrams.onprem.vcs import Github
from diagrams.aws.compute import EKS, EC2
from diagrams.azure.compute import AKS, VMLinux
from diagrams.gcp.compute import GKE
from diagrams.custom import Custom
from diagrams.oci.compute import VM
from diagrams.gcp.ml import TPU
from diagrams.generic.place import Datacenter
from diagrams.k8s.ecosystem import Helm

with Diagram("", show=False) as diag:
    with Cluster("Customer App"):
        github = Github("CI/CD")
        app = Helm("Container")
        Github("Code") >> github >> app

    with Cluster("Datacenter"):
        app >> Datacenter("Datacenter\nSidero") >> [
            VM("x86"),
            VM("Ampere"),
            VM("NVidia"),
        ]
    with Cluster("AWS"):
        app >> EKS("AWS EKS") >> [
            EC2("Nvidia GPU"),
            EC2("AWS Graviton"),
        ]
    with Cluster("Azure"):
        app >> AKS("Azure AKS") >> VMLinux("AMD GPU"),
    with Cluster("GCP"):
        app >> GKE("Google GKE") >> TPU("Google TPU"),

diag

Code
%%capture --no-display

from diagrams import Diagram, Cluster
from diagrams.onprem.vcs import Github
from diagrams.aws.compute import EKS, EC2
from diagrams.azure.compute import AKS, VMLinux
from diagrams.gcp.compute import GKE
from diagrams.custom import Custom
from diagrams.oci.compute import VM
from diagrams.gcp.ml import TPU
from diagrams.generic.place import Datacenter
from diagrams.k8s.ecosystem import Helm

with Diagram("", show=False, direction="LR") as diag:
    with Cluster("Customer"):
        github = Github("Github")
        app = Helm("Customer App")
        github >> app

    with Cluster("Your Datacenter"):
        app >> Datacenter("opsZero + Sidero Labs\nManaged Kubernetes")
    with Cluster("AWS"):
        app >> EKS("AWS EKS")
    with Cluster("Azure"):
        app >> AKS("Azure AKS")
    with Cluster("GCP"):
        app >> GKE("Google GKE")

diag

Code
%%capture --no-display

from diagrams import Cluster, Diagram
from diagrams.aws.compute import EC2, ElasticKubernetesService
from diagrams.aws.database import RDS, ElastiCache
from diagrams.aws.general import OfficeBuilding, Users, User
from diagrams.aws.network import ELB, Route53
from diagrams.aws.security import IAM
from diagrams.aws.storage import S3
from diagrams.gcp.security import Iam
from diagrams.generic.device import Mobile
from diagrams.onprem.ci import GithubActions
from diagrams.onprem.monitoring import Datadog
from diagrams.onprem.vcs import Github
from diagrams.saas.cdn import Cloudflare
from diagrams.saas.analytics import Snowflake
from diagrams.azure.network import FrontDoors, LoadBalancers
from diagrams.azure.compute import AKS
from diagrams.onprem.compute import Server
from diagrams.aws.analytics import Kinesis
from diagrams.aws.integration import SNS

with Diagram("Infrastructure", show=False) as diag:
    user = Users("Users")
    employee = User("Employees")

    with Cluster("Azure"):
        sso = Iam("Azure Entra (Active Directory)")
        dns = FrontDoors("Front Doors")

        with Cluster("Private Subnet"):
            aks = AKS("Azure AKS")
            load_balancer = LoadBalancers("Azure Load Balancer")
            load_balancer >> aks
            dns >> load_balancer

    with Cluster("Github"):
        github = Github("Code")
        github_actions = GithubActions("Github Actions (CI/CD)")

    with Cluster("AWS Account"):
        iam = IAM("IAM")

        with Cluster("VPC"):
            with Cluster("Public Subnet"):
                lb = ELB("Load Balancer")

            with Cluster("Private Subnet"):
                eks = ElasticKubernetesService("EKS")

    with Cluster("Alpha3 Cloud"):
        with Cluster("Alpha3Kube"):
            sidero = Server("Sidero Talos Cluster")
            github >> sidero

    with Cluster("AWS Account / Data & Queues"):
        s3 = S3("S3")
        sns = SNS("SNS")
        kafka = Kinesis("Kafka/Kinesis")

        eks >> [s3, sns, kafka]
        aks >> [s3, sns, kafka]
        sidero >> [s3, sns, kafka]

    dns >> lb >> eks

    eks >> iam >> eks
    iam >> sso >> iam

    sso >> aks >> sso

    employee >> github
    employee >> sso

    github >> github_actions >> [iam, eks]

    user >> dns

diag