[TIL] 내일배움캠프 74일차_[SA문서] SA(Software Architecture) 문서란?
👀Today I Learn
소프트웨어 아키텍처 문서
- 소프트웨어 아키텍처(Software Architecture) 문서는 소프트웨어 시스템의 구조와 설계를 문서화한 자료
- 이는 개발팀, 운영팀, 이해관계자들이 시스템을 이해하고 유지보수하는 데 필수적인 역할
- 좋은 SA 문서는 개발 과정에서의 의사결정을 지원하고, 변경 사항을 효과적으로 관리할 수 있도록 도와줌
SA 문서의 주요 구성 요소
- SA 문서는 프로젝트의 성격에 따라 다양하게 구성될 수 있지만, 일반적으로 다음과 같은 요소를 포함
1. 소개(Introduction)
- 문서의 목적 및 범위
- 대상 독자 (개발자, 관리자, 운영팀 등)
-
시스템의 개요
-
예제
본 문서는 XYZ 프로젝트의 소프트웨어 아키텍처를 설명하기 위한 문서입니다. 주 독자는 개발팀과 운영팀이며, 시스템의 전반적인 구조 및 구성 요소를 상세히 다룹니다.
2. 아키텍처 개요(Architecture Overview)
- 시스템의 주요 구성 요소
- 상위 레벨 아키텍처 다이어그램
- 핵심 아키텍처 원칙
-
예제:
시스템은 클라이언트-서버 모델을 따르며, 웹 애플리케이션과 API 서버로 구성됩니다. 주요 구성 요소로는 웹 프론트엔드(React), 백엔드 서버(Django), 데이터베이스(PostgreSQL)가 포함됩니다.
3. 시스템 구성 요소 (System Components)
- 각 구성 요소의 역할 및 설명
- 모듈 간 관계 및 의존성
-
예제
- 웹 프론트엔드: React 기반 UI로 사용자와의 상호작용을 담당 - API 서버: Django를 기반으로 RESTful API 제공. - 데이터베이스: PostgreSQL을 사용하여 사용자 정보 및 거래 데이터를 저장
4. 데이터 흐름 (Data Flow & Interaction)
- 주요 데이터 흐름 다이어그램
- 사용자 요청 처리 과정
- 외부 시스템과의 연동
-
예제
1. 사용자가 웹 애플리케이션에서 로그인 요청을 보냄. 2. 요청이 API 서버로 전달되고, 인증 절차를 수행. 3. 인증이 완료되면, 사용자의 데이터를 데이터베이스에서 조회 후 반환.
5. 기술 스택 (Technology Stack)
- 사용된 프로그래밍 언어 및 프레임워크
- 데이터베이스 및 스토리지 시스템
- 클라우드 및 배포 환경
-
예제:
프론트엔드: React, Tailwind CSS 백엔드: Django, DRF 데이터베이스: PostgreSQL 배포 환경: AWS EC2, S3, CloudFront
6. 비기능 요구사항 (Non-functional Requirements)
- 성능 (Performance)
- 보안 (Security)
- 확장성 (Scalability)
- 유지보수성 (Maintainability)
-
예제:
- 평균 응답 시간 500ms 미만 유지 - JWT 기반 인증 및 OAuth2 지원 - 트래픽 증가 시 Kubernetes 기반 확장 가능
SA 문서 작성 방법
- 기본 구조 정의: 프로젝트에 맞는 SA 문서 템플릿을 선택
- 주요 아키텍처 결정 사항 정리: 주요 구성 요소 및 기술 스택을 선정하고 설명
- 다이어그램 포함: 시스템을 시각적으로 표현할 수 있는 다이어그램을 추가하여 이해도를 높임
- 명확하고 간결하게 작성: 누구나 쉽게 이해할 수 있도록 문서를 정리
- 팀원과 공유 및 피드백 반영: 팀원들의 의견을 반영하여 문서를 지속적으로 개선
예제와 샘플
-
기본 SA 문서 템플릿
# Software Architecture Document ## 1. 개요 - 프로젝트명: Sample Project - 작성자: 홍길동 - 버전: 1.0 ## 2. 아키텍처 개요 ### 2.1 시스템 다이어그램 (다이어그램 이미지 또는 링크) ## 3. 시스템 구성 요소 - 웹 애플리케이션 (Django, React) - 데이터베이스 (PostgreSQL) - 캐시 시스템 (Redis) ## 4. 데이터 흐름 - 사용자 요청 → 웹 서버 → 데이터베이스 → 응답 반환 ## 5. 기술 스택 - Backend: Django - Frontend: React - Database: PostgreSQL ## 6. 비기능 요구사항 - 1초 이내 응답 시간 보장 - 99.9% 가용성 유지
좋은 SA 문서 작성 팁
- 가독성을 높이기 위해 문서 구조를 명확하게 정리
- 다이어그램을 적극 활용하여 이해도를 높임
- 기술적 의사결정을 기록하여 변경 관리 용이
- 팀원들과 공유하고 지속적으로 업데이트
SA 문서 자동화 도구
- SA 문서를 작성하는 데 유용한 도구들은 다음과 같음
- PlantUML: UML 다이어그램을 코드로 작성 가능
- Draw.io (diagrams.net): 간편한 다이어그램 제작 도구
- Lucidchart: 협업 기능이 뛰어난 다이어그램 도구
- C4 Model: 소프트웨어 아키텍처 다이어그램을 구조적으로 표현하는 모델
💡Today I Thought
오늘의 체크리스트
- 알고리즘 코드카타 324
- SQL 코드카타 108
- 자격증 시험 공부
- TIL 작성
회고
스탠다드반에서 SA문서에 대한 내용을 듣고 동생한테 물어봐서 내용을 조금 정리해봤다(Feat. ChatGPT)🤖 내일 자격증 시험인데, LLM이 너무 재미있어서 LLM 하느라 공부를 너무 소홀히 해서 잘 볼 수 있을지는 모르겠다.
댓글남기기