PlantUML로 코드 기반으로 AWS 아키텍처 다이어그램을 만드는 방법

4709 단어 plantumlAWS
AWS에 서비스를 구축할 때 아키텍처 다이어그램을 만들 기회가 남아있을 것이라고 생각합니다.
그 때, draw.io나 Cacoo등의 웹 서비스로 만들고 있는 사람도 많은 것이 아닐까요.
이번에는 또 다른 접근법으로 PlantUML이 코드 기반으로 AWS 아키텍처 다이어그램을 만드는 방법을 소개합니다.

PlantUML 실행 환경 준비


먼저 PlantUML 실행 환경을 준비합니다.
로컬 환경에 설치하는 것이 좋지만 신속하게 시도하려면 PlantUML Web Server을 사용하는 것이 편리합니다.

AWS 아이콘 세트 준비


PlantUML에서는 파일 경로와 URL을 지정하여 리소스를 가져올 수 있습니다.
이를 통해 자작 이미지를 통합할 수 있지만 고맙게도 AWS는 공식적으로 PlantUML을 위한 아이콘 세트를 배포합니다.
  • awslabs/aws-icons-for-plantuml

  • 기사 집필 시점에서 스타 수가 57로 아직 세상에는 별로 알려지지 않은 것 같습니다.

    PlantUML 코드 작성


    곧, 다음과 같은 코드를 작성해 보겠습니다.
    @startuml Two Modes - Technical View
    
    !define AWSPuml https://raw.githubusercontent.com/awslabs/aws-icons-for-plantuml/master/dist
    !include AWSPuml/AWSCommon.puml
    !include AWSPuml/General/Users.puml
    !include AWSPuml/Mobile/APIGateway.puml
    !include AWSPuml/SecurityIdentityAndCompliance/Cognito.puml
    !include AWSPuml/Compute/Lambda.puml
    !include AWSPuml/Database/DynamoDB.puml
    
    left to right direction
    
    Users(sources, "Events", "millions of users")
    APIGateway(votingAPI, "Voting API", "user votes")
    Cognito(userAuth, "User Authentication", "jwt to submit votes")
    Lambda(generateToken, "User Credentials", "return jwt")
    Lambda(recordVote, "Record Vote", "enter or update vote per user")
    DynamoDB(voteDb, "Vote Database", "one entry per user")
    
    sources --> userAuth
    sources --> votingAPI
    userAuth <--> generateToken
    votingAPI --> recordVote
    recordVote --> voteDb
    
    @enduml
    
    출처 : htps : // 기주 b. 이 m/아wsぁbs/아ws-이콘s-후우 rpぁつつml/bぉb/마s r/레아 D메. md
    그러면 이러한 다이어그램이 생성됩니다.

    각 코드의 의미를 풀어 갑니다.

    AWS 아이콘 가져오기

    !define AWSPuml https://raw.githubusercontent.com/awslabs/aws-icons-for-plantuml/master/dist
    !include AWSPuml/AWSCommon.puml
    !include AWSPuml/General/Users.puml
    !include AWSPuml/Mobile/APIGateway.puml
    !include AWSPuml/SecurityIdentityAndCompliance/Cognito.puml
    !include AWSPuml/Compute/Lambda.puml
    !include AWSPuml/Database/DynamoDB.puml
    
    사용할 AWS 아이콘을 가져오는 중입니다.
    여기에서는 GitHub의 URL을 지정하지만 다음과 같이 로컬 파일 경로를 지정할 수 있습니다.
    !define AWSPuml path/to/AWSPuml
    

    그리기 방향 지정

    left to right direction
    
    그림의 그리기 방향을 왼쪽에서 오른쪽으로 지정합니다.
    디폴트에서는 위에서 아래이므로, 이 행을 쓰지 않으면 다음과 같이 됩니다.

    AWS 리소스 정의

    Users(sources, "Events", "millions of users")
    APIGateway(votingAPI, "Voting API", "user votes")
    Cognito(userAuth, "User Authentication", "jwt to submit votes")
    Lambda(generateToken, "User Credentials", "return jwt")
    Lambda(recordVote, "Record Vote", "enter or update vote per user")
    DynamoDB(voteDb, "Vote Database", "one entry per user")
    
    배포할 AWS 리소스를 정의합니다.
    이름의 부분은, 실제의 자원명으로 하면(자) 알기 쉬울 것입니다.

    각 리소스의 관계 정의

    sources --> userAuth
    sources --> votingAPI
    userAuth <--> generateToken
    votingAPI --> recordVote
    recordVote --> voteDb
    
    각 리소스의 관계를 정의합니다.
    자원 사이를 --> 또는 <--로 연결하면 단방향, <-->로 연결하면 양방향 화살표가 그려집니다.

    생성된 다이어그램 포함


    Qiita 및 Qiita Team은 PlantUML의 임베디드를 지원하므로 코드 블록 언어에 plantuml를 지정하여 다이어그램을 생성합니다.
    PlantUML 포함을 지원하지 않는 서비스의 경우 UML anywhere 이라는 Chrome 확장 프로그램을 사용하면 유용합니다. 1

    결론


    CloudFormation 템플릿을 로드하고 PlantUML용 코드를 출력해 주는 툴이 있으면 최고군요. 2

    Qiita (또는 블로그 등)에 PlantUML로 작성한 UML 그림을 붙일 수 있도록 Chrome 확장 프로그램을 만들었습니다 - Qiita

    말하는 법칙 라고 말하지 말아 주세요.

    좋은 웹페이지 즐겨찾기