솔루션 아키텍트를 위한 팁: 아키텍처 다이어그램의 5가지 유형

2021.04.26

|

3453

솔루션 아키텍트를 위한 팁: 아키텍처 다이어그램의 5가지 유형

*잠깐, 이 글을 소개해드리는 위시켓은 2019년 시밀러웹 방문자 수 기준, 국내 1위 IT아웃소싱 플랫폼입니다.
현재 8만 이상의 개발업체, 개발 프리랜서들이 활동하고 있으며, 무료로 프로젝트 등록이 가능합니다. 프로젝트 등록 한 번으로 여러 개발업체의 견적, 포트폴리오, 예상기간을 한 번에 비교해보세요:)

 플로우 다이어그램, 서비스 다이어그램, 페르소나 다이어그램, 인프라 다이어그램, 개발자 다이어그램에 대한 설명

본문은 위시켓과 번역가 전리오가 함께 만든 해외 콘텐츠 기반 번역문입니다. 프로그래머를 위한 다양한 정보를 다루는 Better Programming에서 발행한 글이며, 작가는 앨런 헬튼(Allen Helton)입니다. 그는 서버리스 및 API 라이프 사이클에 중점을 두고, 클라우드에서 작업하는 프로그래머입니다. 본문은 솔루션 아키텍트를 위한 다양한 팁을 소개하는 내용으로 구체적인 솔루션을 도출하는 시스템에 대해 함께 고민해볼 수 있습니다.

 

* 솔루션 아키텍처(solution architecture, SA)는 주로 정보기술 분야에서 다양한 의미로 사용되는데, 글로벌컨설팅 그룹인 가트너(Gartner)에서는 ‘특정한 솔루션을 아키텍처(시스템 구성 체계)의 형태로 기술한 것’이라고 정의하고 있습니다. 즉, 솔루션 아키텍처는 조직 내에서 나타나는 다양한 측면을 통합해서 구체적인 솔루션을 도출하는 시스템이라고 정의할 수 있습니다. 솔루션 아키텍트(solution architect)는 이러한 작업에 특화된 전문성을 갖춘 사람들을 말하는 것입니다.

사진 출처: 켈리 시케마(Kelly Sikkema), 언스플래시(Unsplash)

여러분은 혹시 누군가가 어떤 소프트웨어의 작동 방식을 설명하는 회의에 참석해 보신 적이 있나요? 저는 비교적 신입인 솔루션 아키텍트들과 이야기를 나눈 적이 있었는데, 그들은 자신들이 새로 만든 시스템에 대해서 설명하려고 애를 썼습니다. 그 시스템에는 여덟 개의 컴포넌트가 있었고, 그것들은 모두 다양한 방식으로 서로 상호작용을 하고 있었습니다. 그들은 “이 부분이 이곳과 커뮤니케이션하는 방식” 등을 말하면서, 온갖 손짓과 제스처를 사용해서 해당 솔루션을 설명했습니다.
저는 그들의 입에서 나오는 단어들은 이해할 수 있었지만, 그 내용은 전체적으로 잘 연결되지 않았습니다. 콘셉트가 복잡한 아키텍처를 말로 설명하기는 쉽지 않습니다. 이를 위해서 저는 생각의 흐름을 따라가는 사고 모델을 만들고 싶었습니다. 그리고 그걸 시각적으로 보여줄 필요가 있었습니다. 즉, 다이어그램(diagram)이 필요했던 것입니다.
그러나 아무 다이어그램이나 쓸 수는 없었습니다. 아키텍처 다이어그램은 어디에서나 사용할 수 있는 “만능” 솔루션이 아니기 때문입니다. 훌륭한 솔루션 아키텍트가 되기 위해서는 기술을 잘 아는 사람들은 물론이고 그렇지 않은 사람들에게도 자신의 생각을 효과적으로 설명할 수 있어야 합니다. 다이어그램을 만들 때는 이런 점을 고려해야만 합니다. 자신의 생각을 다양한 배경을 가진 사람들에게 이해시키기 위해서는, 다이어그램을 여러 버전으로 만들어야 합니다.
오늘은 다섯 가지 유형의 사람들에게 사용할 수 있는 다섯 가지 유형의 다이어그램에 대해서 이야기를 해보려고 합니다. 저는 가상으로 설정한 비즈니스를 예로 들면서 설명을 할 텐데, 그래도 인터페이스는 고퍼 홀스 언리미티드(Gopher Holes Unlimited)라는 실제 API(응용 프로그램 인터페이스)를 사용하겠습니다. 참고로 고퍼 홀스 언리미티드에서는 새로운 고퍼(gopher, 주제나 종류별로 구분해서 정보를 검색할 수 있는 서비스) 정보를 시스템에 추가해서 추적할 수 있습니다.

 

1. 플로우(flow) 다이어그램

가장 일반적이면서도 좀 더 많은 사람들에게 다가가기 쉬운 것은 바로 플로우 다이어그램입니다. 이것은 워크플로우(workflow, 비즈니스의 프로세스를 처리하기 위한 업무의 흐름)의 모든 부분을 보여주는 중-고급 수준의 다이어그램입니다. 아래의 다이어그램은 (제가 앞에서 가상의 설정하겠다고 했던) 비즈니스 프로세스가 실제로 동작하는 과정을 보여주고 있습니다.
솔루션 아키텍트 플로우 다이어그램

이미지 출처: 필자인 앨런 헬튼(Allen Helton)

활용 대상

이런 유형의 다이어그램은 일반적으로 기술 직종의 사람들을 대상으로 합니다. 아키텍처를 논의하는 자리에서 아이디어를 제시하거나, 또는 개발자에게 비즈니스 프로세스의 작동 원리를 설명하는 데 사용될 수 있습니다.

고려 사항

플로우 다이어그램으로 아키텍처를 구현할 때의 중요한 점은 모든 동작 요소들을 포함시켜야 한다는 것입니다. 요즘에 많이 이용하는 아마존 웹 서비스(AWS)와 같은 서버리스(serverless)[1]환경의 경우를 예로 들어 보자면, 우리는 AWS 내에 포함된 각각의 서비스는 물론이고 서로 커뮤니케이션을 하는 모든 모듈에 라벨을 붙여서 다이어그램을 작성합니다.
각각의 모듈이 서로 상호작용하는 자세한 방식까지 설명해 놓을 필요는 없지만, 서로의 관계에 대해서는 반드시 보여줘야 합니다. 여기에서는 시스템 전체에서 데이터가 어떻게 흘러가는지를 보여주게 됩니다.

 

2. 서비스 다이어그램

서비스 다이어그램은 높은 차원에서의 관계를 보여줍니다. 워크플로우나 서비스가 어떻게 작동하는지에 대해서는 자세히 설명하지는 않지만, 그 대신에 주요한 모듈이 어떻게 실행되는지를 보여줍니다. 아래의 다이어그램은 어떤 애플리케이션에서 사용되는 내부의 서비스와 외부의 서비스가 어떤 관계를 맺고 있는지를 보여주기 위해서 작성한 것입니다.
솔루션 아키텍트 서비스 다이어그램

활용 대상

이러한 유형의 다이어그램에 대한 관심이 가장 많은 사람들은 IT 및 네트워크 엔지니어들입니다. 이들은 외부 서비스와의 관계를 어떻게 만드느냐에 대해서 관심을 많이 기울입니다. 또한 이들은 내부 모듈 사이의 관계를 모니터링해야 하는지도 알아야 합니다. 저는 회사의 경영진에게 시스템의 작동에 대해서 설명할 때 이런 다이어그램을 사용하곤 합니다. 그들은 주요한 애플리케이션 사이의 관계가 어떤지를 알고 싶어 하는 경우가 많은데, 그런 관계를 보여주는 데 있어서는 서비스 다이어그램보다 더 좋은 것은 없습니다.

고려 사항

아키텍처를 서비스 다이어그램으로 표현할 때는, 애플리케이션이나 시스템을 구성하고 있는 마이크로서비스(microservice)[2]들을 전부 나열하는 것이 중요합니다. 그리고 서로 커뮤니케이션을 하는 서비스들에는 라벨을 붙이고, 회사의 자체적인 서비스와 외부의 서비스를 확실히 구분해주는 것이 좋습니다.
이렇게 높은 차원의 다이어그램에서는 서비스가 어떻게 작동하는지에 대해서 자세히 설명할 필요가 없습니다. 여기에서는 애플리케이션을 움직이게 해주는 서비스가 무엇인지를 보여주는 것이 중요합니다.

 

3. 페르소나(persona)[3] 다이어그램

아키텍처를 설계할 때는, 그것이 비즈니스가 가진 문제를 해결해줄 수 있음을 보여주는 것이 중요합니다. 페르소나 다이어그램은 시간의 흐름에 따른 관점과 함께 특정한 워크플로우 안에서 그것을 실행하고 있는 사람에 대해서 설명해줍니다. 솔루션을 개발하면서 비즈니스에 대해서 충분히 고려하고 있다는 사실을 보여주기에도 가장 좋은 방식입니다.
솔루션 아키텍트 페르소나 다이어그램

활용 대상

이런 유형의 다이어그램은 비즈니스 오너나 제품에 대한 소유권을 가진 이들이 주요 대상입니다. 이들은 사용자들에 대해서 관심이 많으며, 그들이 시스템과 상호작용하는 방식에 초점을 맞추고 있습니다. 그들에게 그래프를 통해서 누가 언제 무엇을 하는지를 보여주면, 시스템이 작동하는 방식을 정확하게 설명할 수 있습니다.

고려 사항

페르소나 다이어그램은 비즈니스 프로세스 모델 및 표기법(BPMN)[4]과도 어느 정도 관련이 있습니다. 마치 수영장의 레인처럼 생긴 그림을 통해서, 어떤 워크플로우에서 그것을 실행하는 다양한 사람들을 보여줍니다. 이러한 유형의 다이어그램에서는 상대적으로 자세한 내용이 포함되기 때문에, 좀 더 낮은 수준의 정보까지 보여주는 경우가 많습니다. 각각의 페르소나와 워크플로우는 물론이고, 어떤 단계에서 다음 단계로 진행되는 비즈니스 프로세스에 대해서도 모두 라벨을 붙이는 것이 중요합니다. 또한 프로젝트 내에서 해당 분야에 대해서 처음 작업하는 개발자들이 있다면, 그들이 구축하는 시스템의 전체적인 맥락을 이해하는 데에도 이런 다이어그램이 도움을 줄 수 있습니다.

 

4. 인프라 다이어그램

인프라 다이어그램은 “보여지는 것을 있는 그대로 표현하는” 모델입니다. 여기에서는 시스템에서 구현하는 모든 것들을 표현하게 됩니다. 따라서 아주 낮은 수준까지 보여주는 다이어그램이기 때문에, 해당하는 서비스/애플리케이션/시스템에 존재하는 모든 것들을 포함하고 있습니다. 이 다이어그램의 목표는 구현되어 있는 모듈이 무엇이며 시스템이 어떻게 작동하는지를 보여주는 것입니다. 구축해야 하는 애플리케이션에 대한 일종의 청사진이라고 생각해도 됩니다.
솔루션 아키텍트 인프라 다이어그램

활용 대상

인프라 다이어그램의 활용 대상은 다양합니다. 개발자들이 작업해야 하는 구체적인 마이크로서비스가 무엇인지를 보여줄 수도 있습니다. 그리고 또한 여러분의 회사가 어떤 과제를 수행하기 위해서 동원할 수 있는 모든 리소스를 클라이언트에게 보여주기 위해서 사용할 수도 있습니다.
그럼에도 불구하고, 이러한 인프라 다이어그램의 대상이 되는 이들은 주로 기술과 연관된 사람들입니다. 어떤 아이디어나 비즈니스의 프로세스를 제시하는 것이 아니라, 여러분이 제공하는 모듈이 무엇인지를 보여주는 것이기 때문에, 이러한 다이어그램의 주된 용도는 핵심적인 정보를 전달하기 위한 것입니다. 따라서 “핵심적인” 세부사항을 알고 싶은 사람들에게 활용하면 좋습니다.

고려 사항

인프라 다이어그램을 만들 때는, 어떤 부분도 빠트려서는 안 됩니다. 이러한 유형의 다이어그램이 가진 목표는 애플리케이션 내부의 모듈들이 무엇이며 그것들이 서로 관계를 맺는 방식을 보여주는 것입니다. 그것의 작동 방식을 지나치게 자세히 설명하기보다는, 애플리케이션 내부의 모듈을 전부 다이어그램을 통해서 보여주는데 초점을 맞추는 것이 좋습니다.
이러한 유형의 다이어그램은 많은 정보를 포함하고 있기 때문에, 유지하고 관리하는 데에도 많은 노력이 들게 됩니다. 그러나 조직 내에 CI 파이프라인(CI pipeline)[5]이 구축되어 있다면 인프라 다이어그램을 자동적으로 생성할 수 있습니다.

 

5. 개발자 다이어그램

핵심적인 내용을 설명해야 한다면, 개발자 다이어그램이 가장 좋은 방식이 될 수 있습니다. 여기에는 개발자들이 솔루션을 구축하는 데 있어서 필요한 모든 것들이 포함되어 있습니다. 이 다이어그램의 목표는 플로우 다이어그램을 살펴보면서 머릿속에 떠오를 수 있는 어떠한 질문에도 답하는 것이며, 그에 대한 해답을 디자인 내부에 포함시키는 것입니다. 이것은 여기에서 소개하는 다이어그램들 중에서도 가장 낮은 수준까지 보여주는 것이며, 여러분이 직접 설명하지 않더라도 그 내용을 파악할 수 있게끔 만들어져 있습니다. 이 다이어그램을 접하는 사람들이라면 누구든 자신이 해야 할 일을 정확히 파악할 수 있어야 합니다.
솔루션 아키텍트 개발자 다이어그램

활용 대상

여기에서의 주된 대상은 솔루션을 구현하는 개발자들입니다. 이 다이어그램에 표현되는 아주 세세한 정보들은 조직의 외부에 있는 사람들에게는 불필요한 내용입니다. 굳이 그런 내용까지 알아야 할 필요가 없는 사람들에게까지 지나치게 자세한 내용을 전달하는 것은 좋지 않은 것입니다. 그런 식으로 개발 조직 외부의 사람들에게 자세한 정보를 전달하는 것이 바로 흔히 말하는 TMI(too much information)이라고 할 수 있습니다. 그런 지나친 정보들은 오히려 사람들의 주의를 분산시키며, 정작 중요하게 전달해야 하는 메시지를 놓치게 만들 수도 있습니다.

고려 사항

개발자 다이어그램은 기본적으로 플로우 다이어그램에 자세한 정보가 추가된 것이라고 할 수 있습니다. 각각의 모듈에 라벨을 붙이고, 거기에 더해서 구현과 관련되어 생각할 수 있는 모든 세부사항을 함께 적어 놓아야 합니다. 그리고 중요한 전환 단계가 있다면, 그곳에도 라벨을 붙여야 합니다.
이러한 유형의 다이어그램이 유저 스토리(user story)[6]를 대체하는 것은 아니지만, 유저 스토리를 더욱 충실하게 만들고 개발 조직의 전체적인 이해도를 높이는 데에는 도움이 될 수 있습니다. 이 다이어그램을 사용할 수 있는 상황에서는, 적극적으로 만드는 것이 좋습니다. 왜냐하면 일단 개발이 완료되고 나면, 나중에 이 다이어그램을 유용한 참고자료로 활용할 수 있기 때문입니다.

 

결론

아키텍처 다이어그램에는 많은 유형이 있습니다. 그러한 다이어그램들은 각각 적합한 용도가 있으며, 주로 활용하는 대상도 서로 다릅니다. 솔루션 아키텍트라면 자신의 아이디어를 전달해야 할 때, 적절한 사람에게 적절한 유형의 다이어그램을 활용해서 보여줄 수 있어야 합니다.
때로는 한 가지 버전의 다이어그램만으로는 충분하지 않을 수도 있습니다. 새로운 디자인 작업을 시작할 때면, 저는 언제나 플로우 다이어그램으로 시작을 합니다. 여기에 제 생각을 전부 적어서 다른 솔루션 아키텍트(SA)들에게 보여줍니다. 그리고 솔루션 아키텍트들 사이에서 어떤 솔루션에 대해서 동의가 이루어졌다면, 저는 그 다이어그램을 이용해서 페르소나 다이어그램을 만듭니다. 그리고 그것을 경영진에게 보여줍니다.
그리고 조직의 경영진에게서 승인을 받고 나면, 이제는 그것을 활용해서 개발자 다이어그램과 서비스 다이어그램을 만듭니다. 서비스 다이어그램은 다시 경영진에게 보여주고, 그들이 현재 개발 팀에서 하고 있는 일이 무엇인지를 높은 차원의 수준에서 이해할 수 있게 합니다. 개발자 다이어그램은 그 솔루션을 직접 구현하게 될 엔지니어들에게 전달하는 것입니다.
일단 솔루션이 구축되면, 기존의 인프라 다이어그램에 새로 추가된 작업을 포함시켜서 업데이트할 수 있습니다. 백문이 불여일견이라는 말이 있지만, 특히 아키텍처 다이어그램은 눈으로 보는 것이 매우 중요합니다. 훌륭한 솔루션 아키텍트로서 가져야 할 핵심적인 역량은 자신의 생각을 사람들이 빠르고 쉽게 이해하게 만드는 것입니다. 적합한 대상의 사람들에게 적합한 유형의 다이어그램을 만들어서 보여줄 수 있는 능력을 갖춘다면, 솔루션 아키텍트로서 성공하기 위한 기반이 마련되었다고 볼 수 있습니다.

<참고자료>
드로우(https://draw.io/): 드로우는 여러 다양한 차트나 모델, 다이어그램 등을 멋지게 그리기 위해 필요한 모든 것들을 제공하는 무료 도구입니다.

 

[1] 사용자가 호스팅 서버를 직접 구축하는 대신에, 클라우드 컴퓨팅 제공업체가 서버의 기능을 제공하고 관리해주는 서비스 방식
[2] 시스템을 구성하고 있는 요소들 가운데 독자적으로 실행 가능한 독립적인 모듈
[3] 어떤 서비스나 제품, 사이트 등을 사용하는 다양한 사용자들의 유형을 대표하는 가상의 캐릭터
[4] 비즈니스 프로세스 모델(BPM)에서 특정한 프로세스를 그래픽으로 표현하는 기법
[5] 지속적 통합(CI) 기법을 활용해서 소프트웨어를 빠르게 출시하기 위한 자동화 프로세스
[6] 어떤 제품이나 소프트웨어를 실제 사용자가 사용하는 것처럼 이야기의 형태로 쉽게 풀어서 설명하는 것

국내 1위 IT아웃소싱 플랫폼,
위시켓이 궁금하신가요?


> 이 글은 ‘Solutions Architect Tips — The 5 Types of Architecture Diagrams’을 각색하여 작성되었습니다.

앱 개발 비용 궁금하세요?
위시켓이 바로 알려드릴게요!

개발자 다이어그램서비스 다이어그램솔루션 아키텍트인프라 다이어그램페르소나 다이어그램플로우 다이어그램
다음 글

위시켓 블로그의 새로운 소식 받기