문서 작성 스타일 가이드

기본 원칙

목적

  • 실무에 즉시 적용 가능한 문서
  • 명확하고 간결한 설명
  • 체계적인 정보 구조화
  • 지속적인 업데이트 가능

언어 사용

  • 주 언어: 한국어
  • 기술 용어: 영어 그대로 사용
  • 코드 및 주석: 영어

문서 구조

표준 템플릿

# [문서 제목]
 
## 개요
[주제에 대한 간단한 설명]
 
## 목차
- [섹션 1]
- [섹션 2]
- [섹션 3]
 
## 상세 내용
### [섹션 1]
[내용]
 
### [섹션 2]
[내용]
 
## 예제
[실제 사용 예제]
 
## 참고 자료
- [링크 1]
- [링크 2]
 
---
*최종 업데이트: YYYY-MM-DD*

체크박스 활용

## 구현 단계
- [ ] 요구사항 분석
- [ ] 설계 문서 작성
- [ ] 개발 환경 설정
- [x] 기본 구조 구현
- [ ] 테스트 작성
- [ ] 배포

코드 블록 작성

기본 형식

```kotlin
// 설명이 필요한 부분에 주석 추가
class UserService(
    private val userRepository: UserRepository
) {
    suspend fun findUser(id: Long): User? {
        return userRepository.findById(id)
    }
}
```

여러 파일 표시

### UserController.kt
```kotlin
// Controller 코드

UserService.kt

// Service 코드

## 다이어그램 활용

### Mermaid 다이어그램
```markdown
```mermaid
graph TD
    A[클라이언트] -->|요청| B[API Gateway]
    B --> C[인증 서비스]
    B --> D[비즈니스 서비스]
    D --> E[데이터베이스]

### 플로우 차트
```markdown
```mermaid
flowchart LR
    Start([시작]) --> Input[/입력 받기/]
    Input --> Process[처리]
    Process --> Decision{검증}
    Decision -->|성공| Success[완료]
    Decision -->|실패| Error[에러 처리]
    Error --> Input

## API 문서화

### 엔드포인트 설명
```markdown
### 사용자 조회 API

**Endpoint**: `GET /api/v1/users/{userId}`

**Request**:
- Path Parameter:
  - `userId` (Long): 사용자 ID

**Response**:
```json
{
  "success": true,
  "data": {
    "id": 1,
    "name": "홍길동",
    "email": "user@example.com"
  }
}

Error Response:

{
  "success": false,
  "error": {
    "code": "USER_NOT_FOUND",
    "message": "사용자를 찾을 수 없습니다"
  }
}

## 표 활용

### 비교 표
```markdown
| 기능 | Spring MVC | Spring WebFlux |
|------|-----------|----------------|
| 프로그래밍 모델 | 동기/블로킹 | 비동기/논블로킹 |
| 스레드 모델 | Thread per Request | Event Loop |
| 적합한 경우 | 일반적인 웹 애플리케이션 | 고성능, 대용량 처리 |

설정 값 표

| 속성 | 기본값 | 권장값 | 설명 |
|-----|-------|-------|-----|
| connection.timeout | 30s | 10s | 연결 타임아웃 |
| pool.size | 10 | 20-50 | 커넥션 풀 크기 |

링크 및 참조

내부 링크

자세한 내용은 [개발 가이드라인](./development-guidelines.md)을 참조하세요.

외부 링크

## 참고 자료
- [Spring 공식 문서](https://spring.io/guides)
- [Kotlin 코루틴 가이드](https://kotlinlang.org/docs/coroutines-guide.html)
- [AWS Best Practices](https://aws.amazon.com/architecture/best-practices/)

주의사항 표시

중요 정보

> **참고**: 이 기능은 Spring Boot 3.0 이상에서만 사용 가능합니다.
 
> **주의**: 프로덕션 환경에서는 반드시 SSL을 활성화하세요.
 
> **경고**: 이 설정을 변경하면 기존 데이터가 손실될 수 있습니다.

팁과 트릭

💡 **Tip**: IntelliJ IDEA에서 `Ctrl+Shift+F`로 전체 검색이 가능합니다.
 
🔧 **트러블슈팅**: 연결 오류가 발생하면 방화벽 설정을 확인하세요.

버전 관리

변경 이력

## 변경 이력
- 2024-12-01: 초기 버전 작성
- 2024-12-15: Spring Boot 3.x 내용 추가
- 2024-12-20: 성능 최적화 섹션 보강

버전별 차이점

### Spring Boot 버전별 차이
#### 2.x
- Java 8+ 지원
- Spring Framework 5.x
 
#### 3.x
- Java 17+ 필수
- Spring Framework 6.x
- Jakarta EE 9+

실제 적용 예시

프로젝트 설정 문서

# 프로젝트 설정 가이드
 
## 개발 환경
- JDK 17
- Kotlin 1.9+
- Spring Boot 3.2
- Gradle 8.0
 
## 설정 단계
- [ ] JDK 17 설치
- [ ] IDE 설정 (IntelliJ IDEA 권장)
- [ ] 프로젝트 클론
- [ ] 의존성 설치: `./gradlew build`
- [ ] 로컬 DB 설정
- [ ] 애플리케이션 실행: `./gradlew bootRun`
 
## 트러블슈팅
### 빌드 실패 시
1. JDK 버전 확인: `java -version`
2. Gradle 캐시 정리: `./gradlew clean`
3. IDE 캐시 무효화
 
---
*최종 업데이트: 2024-12-20*