Cursor Rules를 활용한 더 나은 .NET Worker Services 구축
Source: Dev.to

Overview
🚀 최근에 .NET Core 백그라운드 워커 프로젝트를 만들기 위한 나만의 Cursor 규칙 집합을 구축하기 시작했습니다.
Goal: AI가 단순히 “작동하는 코드”를 생성하는 것이 아니라 처음부터 프로덕션‑레디 아키텍처를 만들도록 가르치는 것입니다.
이제 모든 새로운 Worker Service는 자동으로 다음을 포함합니다:
- ✅ Clean Architecture
- ✅ BackgroundService 패턴
- ✅ Serilog 로깅
- ✅ Docker 지원
- ✅ HealthChecks
- ✅ IOptions 패턴
- ✅ Graceful shutdown
- ✅ Polly를 이용한 재시도 정책
One rule that made a huge difference
Do not consider the project complete unless
Dockerfileand.dockerignoreare created.
이 작은 관례가 출력물을 다음과 같이 바꿔줍니다:
- ❌ “AI‑generated demo project”
to
- ✅ Deployable backend infrastructure.
AI 코딩의 진정한 힘은 프롬프트 엔지니어링에만 있는 것이 아니라 — AI에게 엔지니어링 관례를 가르치는 데 있습니다. Cursor Rules와 ChatGPT Skills는 소프트웨어 개발 워크플로우를 표준화하는 데 점점 더 강력해지고 있습니다.
Rule Definition
---
description: "Use this rule when creating or modifying .NET 8 Background Worker / Worker Service projects."
globs:
- "**/*.cs"
- "**/*.csproj"
alwaysApply: false
---
.NET 8 Background Worker Standards
Architecture
- Clean Architecture
- SOLID 원칙
- Dependency Injection
- Options Pattern
- Async/Await 모범 사례
Project structure
src/
Worker/
Application/
Domain/
Infrastructure/
tests/
Worker.Tests/
Worker Rules
BackgroundService사용- 비즈니스 로직은
Worker.cs밖에 두기 - 외부 서비스는 인터페이스로 추상화
- 모든 곳에서
CancellationToken지원 - 구조화된 로깅 추가
- Graceful shutdown을 올바르게 처리
- 외부 호출에 Polly를 이용한 재시도 정책 추가
IConfiguration+IOptions사용
Logging
- Serilog
- 콘솔 로깅
- 필요 시 Enrichers
Add logs for
- 시작 시점
- 종료 시점
- 오류
- 재시도 시도
- 성공적인 작업
Docker
생성되는 모든 프로젝트는 반드시 다음을 포함해야 합니다:
Dockerfile.dockerignore- 다단계 Docker 빌드
- .NET 8 공식 이미지
- 프로덕션‑레디 컨테이너 설정
Example requirements
- 빌드용 SDK 이미지 사용
- 최종 단계에서는 런타임 이미지 사용
- 이미지 크기 최소화
- 필요한 파일만 복사
Do not consider the project complete unless
Dockerfileand.dockerignoreare created.
Configuration
appsettings.jsonappsettings.Development.json- 환경 변수 지원
README
다음 내용을 포함하는 README 생성:
- 프로젝트 개요
- 실행 방법
- Docker 빌드/실행 명령
- 환경 변수
- 아키텍처 개요
Code Quality
Prefer
- 프로덕션‑레디 예제
- 최소하지만 확장 가능한 구조
- 가독성 좋은 네이밍
- 작고 집중된 클래스
Avoid
- 과도한 엔지니어링
- 인프라스트럭처에 비즈니스 로직 포함
- 정적 헬퍼 남용
- 블로킹 호출