gemini

Gemini 클린 아키텍처 프롬프트 - SOLID, DDD, 헥사고날

클린 아키텍처 원칙을 적용한 소프트웨어 설계. SOLID, DDD, 의존성 역전, 레이어 분리.

수정
💡

프롬프트 사용 방법

  1. 1단계: 아래 입력 칸에 각 항목에 맞는 정보를 적어주세요
  2. 2단계: 입력하면 아래 프롬프트가 자동으로 업데이트됩니다
  3. 3단계: '프롬프트 복사' 버튼을 눌러 ChatGPT/Claude에 붙여넣으세요

💡 입력 칸의 회색 글씨는 예시입니다. 참고해서 작성해보세요!

📝 필요한 정보를 입력해주세요 (총 4개)

project type에 대한 값을 입력하세요

domains에 대한 값을 입력하세요

tech stack에 대한 값을 입력하세요

반드시 포함되어야 할 사항

📋 완성된 프롬프트 (복사해서 사용하세요)

클린 아키텍처 설계를 제공하세요.


## 프로젝트 정보
- 유형: {{project_type}}
- 주요 도메인: {{domains}}
- 기술 스택: {{tech_stack}}
- 특별 요구사항: {{requirements}}

## 설계 가이드
1. 레이어 구조 설계 (Domain → Application → Infrastructure → Presentation)
2. 의존성 규칙 적용 (외부 → 내부)
3. SOLID 원칙 준수
4. 테스트 가능한 구조

입력하지 않은 항목은 원래 표시를 유지합니다.

간단 버전

클린 아키텍처로 설계해주세요.
프로젝트: {{project_type}}, 도메인: {{domains}}, 스택: {{tech_stack}}
폴더 구조와 핵심 코드 패턴을 보여주세요.

입력값 가이드

입력 항목 한국어 설명 placeholder 예시
project_type 어떤 서비스인가요? 예: 이커머스 API, SaaS 플랫폼 이커머스 API, SaaS 플랫폼
domains 핵심 비즈니스 영역을 입력하세요 예: 주문, 결제, 재고 주문, 결제, 재고
tech_stack 사용할 기술을 입력하세요 예: TypeScript, NestJS, PostgreSQL TypeScript, NestJS, PostgreSQL
requirements 고려할 점을 입력하세요 예: 높은 트래픽, 실시간 결제 높은 트래픽, 실시간 결제

인풋 필드

[프로젝트 유형]
▼ 텍스트 입력
placeholder: "예: 이커머스 API, SaaS 플랫폼"
설명: 어떤 서비스인가요?

[핵심 도메인]
▼ 텍스트 영역 입력
placeholder: "예: 주문, 결제, 재고"
설명: 핵심 비즈니스 영역을 입력하세요

[기술 스택]
▼ 텍스트 영역 입력
placeholder: "예: TypeScript, NestJS, PostgreSQL"
설명: 사용할 기술을 입력하세요

[특별 요구사항]
▼ 텍스트 영역 입력
placeholder: "예: 높은 트래픽, 실시간 결제"
설명: 고려할 점을 입력하세요

아키텍처 레이어

┌─────────────────────────────────────┐
│      Presentation (Controllers)     │  ← 외부
├─────────────────────────────────────┤
│      Application (Use Cases)        │
├─────────────────────────────────────┤
│      Domain (Entities)              │  ← 내부 (핵심)
├─────────────────────────────────────┤
│      Infrastructure (DB, APIs)      │  ← 외부
└─────────────────────────────────────┘
의존성 방향: 외부 → 내부

폴더 구조

src/
├── domain/           # 핵심 비즈니스 로직
├── application/      # 유스케이스
├── infrastructure/   # 외부 연동
└── presentation/     # 컨트롤러

SOLID 원칙

원칙 설명 적용
SRP 단일 책임 클래스/함수 분리
OCP 개방-폐쇄 인터페이스로 확장
LSP 리스코프 치환 계층 재설계
ISP 인터페이스 분리 작은 인터페이스
DIP 의존성 역전 추상화에 의존

의존성 역전 (DIP)

// ❌ Bad: 고수준이 저수준에 직접 의존
class UserService {
  private repo = new MySQLUserRepository();
}

// ✅ Good: 인터페이스에 의존
class UserService {
  constructor(private repo: IUserRepository) {}
}

DDD 개념

개념 설명
Entity 고유 식별자, 상태 변경 가능
Value Object 불변, 식별자 없음
Aggregate 관련 객체 그룹
Repository 영속성 추상화

체크리스트

  • 의존성이 내부로 향하는가?
  • Domain이 외부 의존성이 없는가?
  • 인터페이스로 추상화했는가?
  • 유스케이스가 테스트 가능한가?

🚀 AI 바로 열기

🔗 관련 프롬프트