TIL

👀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 하느라 공부를 너무 소홀히 해서 잘 볼 수 있을지는 모르겠다.

댓글남기기