그림은 코드로, 인프라 시설은 코드로


그림 한 장은 천 줄의 기록 불량 코드에 해당한다
만약 당신이 인프라 시설을 사용하고 있다면, 의심할 여지없이 당신이 이용하고 있는 것infrastructure as code이 맞습니까?당연히 그랬으면 좋겠지.그렇지 않으면 지금부터 시작합니다.기다릴게요.
자연 변천은 인프라 시설을 만드는 도형 표현일 수 있다.원한다면 도표를 코드로 삼으십시오.이것은 새로운 생각이 아니다.이 기술은 2015년tech radar에 등장했다.너는 그 시기로 돌아갈 수 있다. 사람들은 코드 생성from UML diagrams을 현명한 생각이라고 생각한다.
우리로 하여금 일찍이 발생한 일을 잊게 해라!반대로 복잡한 구조를 시각적으로 이해하는 것을 고려해 보자.그리고 우리가 일하는 동시에 이 부품들의 최신 상태를 유지한다.나는 Graphviz 위에 세워진 도구를 토론할 것이다.

도표 도표는 무엇입니까?


물론 이것은 매우 통용되는 명칭을 가진 도구이다.웹 사이트를 보는 경우 다음과 같이 설명합니다.

Diagrams lets you draw the cloud system architecture in Python code.


매우 직접적이다.그것을 설치하는 것은 안감이다.
pip3 install diagrams
Python으로 인프라 맵을 작성합니다.팀의 모든 사람이 변경할 수 있도록 이미지를 제출하고 코드를 생성할 것입니다.인코딩을 시작합시다, err 그림.내가 너희들에게 두 가지 예를 들겠다.

경고 워크플로우


워크플로가 있는 경우 경고를 에 게시합니다.이 테마는 lambda 함수로 처리되며, 이 함수는 데이터를 변환하여 Cloudwatch로 다시 씁니다.이벤트 규칙을 통해 정확한 경보가 우리의 이벤트 버스에 도착합니다.
이렇게 작은 물건에 이렇게 많은 글자가 있다.나는 네가 아직도 관심을 가지고 있다는 것이 매우 놀랍다.내가 너에게 특이한 도표를 한 장 줄게.
SNS Topic
만약 네가 코드를 검사한다면, 너는 그것이 얼마나 간단한지 발견할 수 있을 것이다.세 가지 요소가 있다.
  • 노드, 단일 구성 요소입니다.그것은 식별할 수 있는 아이콘과 이름을 가지고 있다.
  • 가장자리, 즉 부품 간의 연결.그것들은 방향을 정할 수도 있고, 방향이 없을 수도 있다.
  • 집단으로 노드를 논리적으로 그룹화한다.
  • 그 외에는 아무것도 없다.이 그림은 이 부분으로 구축된 것이다.
    from diagrams import Diagram, Cluster
    
    from diagrams.aws.compute import Lambda
    from diagrams.aws.integration import SNS, Eventbridge
    from diagrams.aws.management import Cloudwatch
    from diagrams.onprem.queue import ActiveMQ
    
    with Diagram("Alerting Workflow", show=True):
        with Cluster('main account'):
            topic = SNS('SNS Topic')
    
            with Cluster('Lambda'):
                l = Lambda('processor')
                topic >> l
                S3('lambda source') - l
    
            cl = Cloudwatch('Cloudwatch')
            l >> cl
    
            event = Eventbridge('Cloudwatch\nevent rule')
            cl >> event
    
        with Cluster('Event Bus'):
            event_bus = ActiveMQ('bus')
            event >> event_bus
    
    Python 조금만 있으면 시스템의 전체 개요를 빠르게 얻을 수 있습니다.

    네트워크 맵


    인터넷은 이런 방법에 특히 적합한 것 같다.연구 를 하는 과정에서 나는 뚜렷한 그림이 이해에 도움이 된다는 것을 깨달았다.
    만약 우리가 VPC endpoints 집단을 연결하고 있다고 가정한다면, 이것은 우리가 요 며칠 동안 하고 있는 일이기 때문이다.여러 도메인을 VPC 포트로 라우팅하고 있습니다.집단은 서로 다른 계정에 주재하기 때문에 우리는 단점 서비스를 사용하여 사용할 수 있도록 한다.게다가 몇 개의 선로를 더하면 모든 일이 엉망이 될 것이다. 마치 네 책상 뒤의 케이블 더미처럼.이 도표를 볼 때까지.
    Kubernetes
    더 좋지 않습니까?그것을 생성하는 데 사용되는 코드는 무엇입니까?
    from diagrams import Cluster, Diagram
    from diagrams.aws.network import VPC, PublicSubnet, PrivateSubnet, Endpoint, ELB, Route53
    from diagrams.aws.compute import EKS
    
    with Diagram("Connecting two accounts", show=True):
        with Cluster("Account 1"):
            with Cluster("Hosted Zone\nmain.io"):
                star = Route53("*.test.main.io")
                subdomain = Route53("test.main.io")
    
            with Cluster("Hosted Zone\nalt.dev"):
                alt = Route53("other.alt.dev")
    
            with Cluster("VPC"):
                VPC()
    
                with Cluster(""):
                    PrivateSubnet()
    
                    endpoint = Endpoint("VPC Endpoint")
                    [star, subdomain, alt] >> endpoint
    
        with Cluster("Account 2"):
            with Cluster("VPC"):
                VPC()
    
                with Cluster(""):
                    PrivateSubnet()
    
                    service = ELB("VPC\nEndpoint Service")
                    cluster = EKS("Kubernetes\nCluster")
    
                    endpoint >> service >> cluster
    
    이전 예시와 비교하면 코드의 양이 증가했음을 나타낸다.다행히도 파이썬을 사용하면 함수, 이해, 기타 도구에 접근해서 이런 복잡성을 관리할 수 있다.

    업데이트할 수 없는 도표의 이상한 상황


    이것이 바로 네가 도표를 사용하는 방식이다.그것은 정말 가치가 있습니까?나는 당연히 이런 예쁜 아이콘들을 좋아한다.이 밖에도 시각화된 문서를 발전시킬 수 있다.
    나는 이전에 기술도를 디지털화하려고 시도한 적이 있다.나 진짜 해봤어. , Sketch, 심지어 손으로 그린 도표만 촬영한다.업데이트가 필요할 때까지 원본 코드가 없을 때까지 유효합니다.다른 사람들이 만들었을지도 모르지만, 그들은 완전히 다른 도구를 더 좋아한다.나는 빌어먹을 도표를 업데이트할 수 있는 사람이 없기 때문에 프로젝트의 문서가 갈수록 시대에 뒤떨어지는 것을 자주 본다.만약 원본 코드일 뿐이라면, 너의 기회는 훨씬 클 것이다.

    초도판 결론


    도표는 간결하지만 유한한 도구이다.너는 내가 보여준 것보다 더 많은 내용을 추가할 수 없다.비록 이것은 일종의 구속이지만, 그것은 너를 자신의 상처로부터 보호할 수 있다.지나치게 복잡한 도표의 폐단은 이익보다 크다.시스템을 완전하게 표시하려면 왜 코드를 직접 검사하지 않습니까?추상적인 목적은 세부 사항을 생략함으로써 그것을 더욱 이해하기 쉽게 하는 것이다.
    요컨대, 이것은 당신의 이해하기 어려운 자술을 더욱 명확하게 할 수 있고, 코드의 발전에 따라 이미지를 업데이트할 수 있는 편리한 방식이다.

    좋은 웹페이지 즐겨찾기