AI에게 아키텍처를 질문할 때 프롬프트를 얼마나 구체적으로 작성해야 하는가? — Spring Batch EKS CronJob 사례로 보는 제약 조건의 중요성

AI에게 아키텍처를 질문할 때 프롬프트를 얼마나 구체적으로 작성해야 하는가

AI에게 시스템 아키텍처를 질문할 때 자주 발생하는 문제가 있다.

처음에는 단순히:

“현재 구조가 비효율적인 것 같다”

라는 정도의 정보만 전달한다.

그러면 AI는 대부분 다음 기준으로 답변하게 된다.

  • 일반적인 Best Practice
  • 평균적인 클라우드 아키텍처
  • 범용적인 확장 구조
  • 일반적인 SaaS/MSA 패턴

대표적으로 아래와 같은 구조를 추천하게 된다.

CronJob
    ↓
Queue
    ↓
Always-On Worker Pool

즉:

  • Queue 기반 처리
  • Worker 재사용
  • JVM 재사용
  • Pod 수 감소
  • Startup 비용 감소

를 중심으로 접근한다.

그리고 대부분의 일반적인 시스템에서는 실제로 이 방향이 맞다.


그런데 실제 운영 환경의 제약 조건이 추가되면 결과가 완전히 달라진다

예를 들어 아래 조건들이 뒤늦게 추가되었다고 가정해보자.

- 외부 연계가 매우 많음
- Job별 dependency 차이가 큼
- Job별 배포 주기가 다름
- 긴급 배포 빈도가 높음
- Job 장애 격리가 중요함
- 최신 Docker Image 자동 반영 필요
- Job 완료 후 JVM 종료 필요
- 오래 살아있는 Worker가 오히려 장애 유발 가능

이 조건들이 추가되는 순간 AI의 결론은 완전히 바뀐다.

기존에는:

“Always-On Worker 구조가 정답”

이라고 판단했지만,

제약 조건이 추가되면:

“현재 Job per Pod 구조가 오히려 타당”

이라는 결론으로 변경된다.


왜 이런 일이 발생하는가

AI는 기본적으로:

“주어진 정보”

를 기반으로 최적화를 수행한다.

즉 처음 질문이:

“Spring Batch startup 이 느린데 어떻게 개선할까요?”

정도 수준이면 AI는 일반적으로 다음을 우선 고려한다.

  • startup 비용 감소
  • pod 수 감소
  • worker 재사용
  • queue 기반 확장
  • JVM warm 상태 유지

왜냐하면 대부분의 일반적인 시스템에서는 이것이 맞기 때문이다.


하지만 실제 시스템은 “제약 조건”이 훨씬 중요한 경우가 많다

실제 운영 환경에서는 종종:

“범용적인 베스트 프랙티스”

보다

“운영 제약 조건”

이 더 중요하다.

예를 들어 어떤 시스템은:

  • 성능 최적화
  • 리소스 효율

보다도,

  • 독립성
  • 장애 격리
  • 배포 안정성
  • 외부 연계 안정성

이 훨씬 중요할 수 있다.


프롬프트가 모호하면 발생하는 현상

예를 들어 아래 질문은 매우 흔하다.

Spring Batch를 EKS CronJob으로 돌리는데 startup이 느립니다.
어떻게 개선할까요?

이 질문만 보면 AI는 거의 반드시 다음을 추천하게 된다.

Always-On Worker 구조
Queue 기반 처리

왜냐하면:

  • 일반적인 클라우드 환경
  • 일반적인 Batch 시스템
  • 일반적인 Microservice 구조

에서는 그게 맞기 때문이다.


하지만 실제 운영 환경에 이런 조건이 있었다면?

- Job 완료 후 Pod 종료 필요
- 다음 실행 시 최신 Docker Image 자동 반영 필요
- Job별 외부 연계 SDK 충돌 가능
- Job별 dependency 차이 큼
- 오래 살아있는 Worker가 오히려 장애 유발 가능
- 긴급 배포가 매우 빈번
- 특정 Job 장애가 다른 Job에 영향 주면 안 됨

이 조건이 추가되는 순간 AI의 판단은 완전히 달라진다.

즉:

“현재 구조를 유지하면서 startup만 최적화”

가 더 현실적인 방향이 된다.


결국 AI의 답변 품질은 “프롬프트의 구체성”에 비례한다

즉 AI가 틀린 것이 아니라:

입력된 제약 조건이 부족했던 것

이다.

AI는 기본적으로:

“평균적인 시스템”

을 가정해서 답변한다.

따라서 실제 시스템이:

  • 대규모 외부연계형
  • Enterprise SI 구조
  • 독립 배포형 Batch Runtime
  • 강한 장애 격리 요구

같은 특수성을 가진다면 반드시 그것을 프롬프트에 포함해야 한다.


좋은 프롬프트는 “현재 구조”보다 “제약 조건”을 설명한다

많은 사람들이:

현재 구조 설명

만 한다.

하지만 실제로 더 중요한 것은:

왜 그렇게 설계할 수밖에 없는가

이다.

아래 두 질문은 비슷해 보이지만 결과는 완전히 달라진다.


모호한 질문

Spring Batch를 EKS CronJob으로 돌리는데 startup이 느립니다.
개선 방안을 알려주세요.

→ 일반적인 Worker Pool 구조 추천 가능성 높음.


제약 조건까지 포함한 질문

Spring Batch를 EKS CronJob으로 운영 중입니다.

다만:
- Job별 독립 배포가 필요합니다.
- Job 완료 시 Pod 종료를 유지해야 합니다.
- 다음 실행 시 최신 Docker Image 자동 반영이 중요합니다.
- 외부 연계가 많아 오래 살아있는 Worker가 오히려 장애 원인이 됩니다.
- Job별 dependency 및 SDK 차이가 큽니다.
- 특정 Job 장애가 다른 Job에 영향을 주면 안 됩니다.

이 조건을 유지한 상태에서 startup 최적화 방안을 고민하고 있습니다.

→ 이 경우 AI는:

  • 구조 변경보다
  • Cold Start 최적화
  • Spring Boot Startup 최적화
  • JVM 최적화
  • ClassPath 최소화

방향으로 접근하게 된다.


핵심 정리

AI에게 아키텍처를 질문할 때 중요한 것은:

“현재 구조”

보다

“현재 구조를 유지해야 하는 이유”

를 설명하는 것이다.

즉:

베스트 프랙티스는 항상 존재하지만,
실제 운영에서는 제약 조건이 베스트 프랙티스를 바꾼다.

그리고 AI는 그 제약 조건이 프롬프트에 포함되어야만 올바른 방향으로 추론할 수 있다.

관련 글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다