ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Cloud Architecture Diagram
    Cloud 2022. 2. 6. 17:33

    Cloud Architecutre 설계할 때, draw.io를 활용했다.
    내 주위에는 lucidchart(https://www.lucidchart.com/pages/)를 활용하거나, CSP에서 제공하는 PPT 아이콘을 다운받아 활용하기도 한다.

    한 땀, 한 땀 아이콘 찾아 배치하고,
    트래픽 flow을 표현하기 위해 선 연결하여,
    edge마다 메시지들을 써주고,
    그러다가 인스턴스 추가/삭제가 발생하면, 이쁘게 다시 배치하고, 선을 다시 연결하고..
    (무한반복)

    실 설계보다 그림 그리는 일에 에너지와 시간을 많이 쏟고 있었다.

    코드로 UML 다이어그램을 그릴 수 있는 tool들을 검색하다가, diagrams(https://diagrams.mingrammer.com) 발견하여 잠깐 사용해봤다. 이제는 draw.io를 떠나야 할 정도로 만족스럽다.

     

    Diagrams · Diagram as Code

    Diagram as Code

    diagrams.mingrammer.com

    설치, 사용법은 docs/guide에 잘 나와 있는데 간략히 정리해본다.

    1. 설치
      • pre-requirement : python 3.6+, graphviz 
      • (개인 환경 : OSX, python은 conda로 관리한다.) 
      • $conda install -c anaconda graphviz ##https://anaconda.org/anaconda/graphviz
        $conda install -c conda-forge diagrams ##https://anaconda.org/conda-forge/diagrams
    2. sample
      • code
      • 
        from diagrams import Cluster, Diagram
        from diagrams.aws.compute import EC2
        from diagrams.aws.database import RDS, RDSMariadbInstance
        from diagrams.aws.network import ELB
        from diagrams.aws.analytics import EMRCluster
        
        with Diagram("Web Service", show=False) as diag:
        
            elb = ELB("elb")
        
            with Cluster("web"):
                webs = [EC2("web01"),
                        EC2("web02"),
                        EC2("web03")]
            
            with Cluster("was"):
                wases = [EC2("was01"),
                         EC2("was02"),
                         EC2("was03")]
            
            elb2 = ELB("elb")
            
            with Cluster("db"):
                db_primary = RDSMariadbInstance("primary")
                db_primary - [RDSMariadbInstance("replica1"), 
                              RDSMariadbInstance("replica2")]
        
            elb >> webs >> elb2 >> wases >> db_primary << EMRCluster("datalake")
            
        diag
      • output
    3. 기타
      • diagram output은 "show=True, show=False"와 상관없이 기본적으로 작업 폴더에 이미지 파일로 wrtie 한다.
      • vscode jupyter에서 작업 파일이 임시저장 상태일 때, run 시키면 write 권한 오류가 나온다. mac에서 vscode temp file 위치가 "~/Library/Application\ Support/Code" 로 알고 있는데, 해당 디렉토리의 권한은 owner rwx 이다. 계정은 같은데.. @@ 
      • OSError: [Errno 30] Read-only file system:
      • 작업 파일을 일단 저장한 상태에서 실행하면 해당 오류는 해결된다. 

    댓글

Written by Skymaker.