Blog

[NestJS] 20. Architecture Diagram 그리기와 README.md 프로젝트 소개 꾸미기

Category
Author
citeFred
citeFred
PinOnMain
1 more property
NestJS, TypeORM, Angular 프로젝트의 소개 방법 이해하기
Table of Content

1. 시스템 아키텍쳐(System Architecture)

1.1 System Architecture란?

시스템 아키텍쳐(System Architecture)란?
시스템 또는 서비스의 구조를 정의하고 구성 요소 간의 관계를 정의, 설계하는 것을 말함
시스템 구성 및 동작 원리를 나타냄
시스템 구성요소에 대해 설계 및 구현을 지원하는 수준으로 자세히 기술
구성요소 간의 관계 및 시스템 외부 환경과 관계가 나타남
요구사항 및 시스템 전체 수명 주기를 고려
시스템 전체에 대한 논리적인 기능 체계와 실현을 위한 구성방식, 최적화를 목표
소프트웨어, 하드웨어, 네트워크, 데이터베이스 등 다양한 요소를 포함
시스템 아키텍쳐의 핵심 요소
구성 요소 (Components)
시스템을 구성하는 주요 요소들 (예: 서버, 데이터베이스, 클라이언트 애플리케이션 등)
상호작용 (Interactions)
구성 요소 간의 데이터 흐름 및 통신 방식
데이터 흐름 (Data Flow)
데이터가 시스템 내에서 어떻게 흐르며 처리되는지에 대한 내용
배포 (Deployment)
구성 요소가 물리적으로 어떻게 배포되는지에 대한 내용
보안 (Security)
시스템을 보호하기 위한 방법과 정책 (예: 인증, 권한 부여)
비용 (Cost)
시스템 운영 및 유지에 드는 비용
확장성 (Scalability)
시스템이 증가하는 트래픽이나 데이터 양을 처리할 수 있는 능력
유지보수성 (Maintainability)
시스템을 쉽게 업데이트하고 관리할 수 있는 능력
성능 (Performance)
시스템의 반응 속도 및 처리 능력

1.2 문서화(Documentation)

실무 시스템, 서비스 설계 산출물
설계 과정의 문서화 산출물
개발 과정의 문서화 산출물

2. 아키텍쳐 다이어그램(Architecture Diagram)

2.1 아키텍쳐 다이어그램(Architecture Diagram)이란?

아키텍처 설계서 부분을 시각적으로 도식화하여 표현한 그림
다이어그램 하나로 시스템의 구조와 구성 요소 간의 관계를 명확하게 나타낼 수 있음
전체적인 시스템, 서비스의 구조를 한눈에 파악 할 수 있도록 구성
설계서의 주요 내용을 효과적으로 전달하는데 사용 됨

2.2 Architecture Diagram 예시

아키텍쳐 다이어그램의 예시

2.3 Architecture Diagram 그리기

다이어그램 그리는 팁
기본적으로 정해진 구체적인 양식은 없다.
결과적으로 아래 집약된 요청과 응답의 그림을 얼마나 상세하게 풀어내는가에 대한 문제
그림을 통해서 본인이 프로젝트 구조와 흐름, 사용된 기술 스택에 대해서 충분히 설명 할 수 있을 수준으로 나타내는 것이 핵심
각 기술 스택 로고 또는 문자를 통해서 직관적으로 어떤 기술들이 어느 부분에서 사용되는지 알 수 있도록 구성하는 것이 중요하다.
다이어그램 그리기 툴
사용하는 툴도 정해진것이 없다.
PPT, Figma, Keynote, PhotoShop 등 사용 할 수 있는 그래픽 툴이면 모두 구성 할 수 있다.
본인에게 익숙하고 수정이 편리한 툴을 사용하는 것이 좋다.
각 엘리먼트가 별도로 이동되며 테두리에 스냅을 통해서 화살표, 연결선 등을 자동 연결해주는 툴을 추천하는 편이다.
엘리먼트간의 연결을 자주 하기 때문에 빠르게 처리할 수 있다.
PPT만해도 아래와 같은 스냅기능은 자동으로 지원된다.
각 기술 스택 로고 등을 기본적으로 제공해주는 툴들을 소개해주려고 한다.
부족한 로고 및 아이콘은 외부 이미지를 활용해야 하지만 기본적으로 다양한 아이콘을 자체 라이브러리를 어느정도 제공해준다.
스냅 뿐만 아니라 연결+아이콘 생성 등 편리한 기능을 포함하고 있다.

3. README.md?

Github 원격 저장소의 얼굴
README.md는 프로젝트의 설명과 사용 방법을 제공하는 문서
GitHub와 같은 코드 저장소에서 프로젝트의 첫인상을 결정짓는 중요한 파일
다른 개발자나 사용자에게 프로젝트에 대한 이해를 돕고, 사용 및 기여 방법을 안내
프로젝트 포트폴리오의 README.md는 매우 중요한 요소로 작용
README.md는 개발자로서의 기술적 내용을 명확하게 전달하는 커뮤니케이션 스킬을 평가할 수 있는 객관적 지표 중 하나
프로젝트의 목적, 사용 방법, 설치 절차 등을 명확히 설명함으로써, 해당 개발자가 프로젝트에 대해 얼마나 깊이 이해하고 있는지를 알 수 있음
README.md에 기여 방법이나 협업 프로세스에 대한 안내가 포함되어 있다면, 지원자가 팀 작업에 대한 경험과 협업 능력을 파악 할 수 있음
어떠한 첨부 파일보다도 개발자로써 실제 본인의 기술적 능력, 문서화 능력, 커뮤니케이션 능력 등을 보여줄 수 있는 부분

3.1 README.md 파일 생성 및 위치

README.md 파일 저장 위치
Github의 프로젝트 원격 저장소를 만들면 루트 폴더에 README.md 파일을 생성 할 수 있다. 아래와 같이 해당 파일이 없는 경우에 Github 웹에서 안내가 나타나기도 한다.
직접 웹에서 파일을 생성하거나, 로컬에서 파일을 작성하여 푸시해도 결과적으로 해당 경로에 README.md가 위치하면 인식된다.
Github 원격 저장소는 자동으로 해당 파일의 내용을 정적 뷰 페이지로 반환해준다.
실제 파일의 내용은 아래와 같이 HTML 태그MARKDOWN 문법을 뷰로 변환하여 제공한다

3.2 README.md에 포함하면 좋은 내용

정해진 양식은 없지만 다음과 같은 내용이 포함되면 프로젝트를 이해하기 편리하다.
프로젝트 제목
프로젝트의 이름과 간단한 설명
팀 소개
팀의 구성원 및 각자의 역할
팀의 목표와 비전
프로젝트 개요
프로젝트의 목적, 기능 및 배경 정보
프로젝트의 핵심 내용
사용 기술 스택
주요 기능 설명
핵심 기능별 시연 영상 또는 사진 자료
플로우 차트 및 유즈케이스 다이어그램
시스템 아키텍처 다이어그램
데이터베이스 ERD
설치 방법(필요시)
프로젝트를 설치하고 실행하는 방법에 대한 단계별 안내
필요한 의존성 및 환경 설정 정보 포함
기여 방법(필요시)
다른 개발자가 프로젝트에 기여하는 방법에 대한 안내
코드 기여 규칙 및 절차 등
라이센스(필요시)
프로젝트의 라이센스 정보
연락처 정보(필요시)
프로젝트에 대한 질문이나 피드백을 보낼 수 있는 연락처
추가 정보:
회의록, 트러블 슈팅 등 관련 문서나 링크, FAQ 등 추가적인 리소스

3.3 README.md 예시

팀 프로젝트 등 최근 README.md 작성 트렌드
Wiki 활용 형식

4. Markdown 문법

README.md는 markdown 문법을 인식한다.
응용 사례를 적절히 참고하여 README.md를 꾸미는 것이 가장 효율적인 방법이다.
하지만 결국 내가 원하는 구성으로 커스텀하기 위해서 직접 작성하는 경우가 발생한다.
이럴 때 Markdown 문법을 활용해서 작성 할 수 있다.
Markdown 문법은 Github 외에도 다양한 서비스에서 활용되므로 기본적인 것들을 알아두면 유용하게 사용 할 수 있다.
대표적인 Markdown 문법 소개
제목
# 제목 1 (최대 6개 레벨)
###### 등으로 제목의 레벨을 설정합니다.
강조
굵게: *텍스트** 또는 __텍스트__
기울임텍스트* 또는 _텍스트_
목록
순서 없는 목록: 항목1항목2+ 항목3
순서 있는 목록: 1. 첫 번째 항목2. 두 번째 항목
링크
[링크 텍스트](URL)
예: [Google](https://www.google.com)
이미지
![대체 텍스트](이미지_URL)
예: ![이미지](https://example.com/image.png)
코드 블록
인라인 코드: `코드`
블록 코드:
```언어 코드 내용 ```
Markdown
복사
인용
> 인용문
이것은 인용문 예시 입니다.
수평선
-- 또는 **
수평선을 생성
Search
 | Main Page | Category |  Tags | About Me | Contact | Portfolio