Skip to content

Conversation

@davidpro08
Copy link
Collaborator

✅ 작업 내용

  • WidgetModule에 WIDGET_SERVICE로 내보내는 부분이 빠져있어서 원격 백엔드 도커가 계속 재시작되고 있었습니다. 추가해서 잘 동작하도록 했습니다.
@Module({
  imports: [WorkspaceModule],
  providers: [
    WidgetGateway,
    {
      provide: WIDGET_SERVICE,
      useClass: WidgetMemoryService, // 나중에 WidgetRedisService로 교체 가능
    },
  ],
  exports: [WIDGET_SERVICE],
})
export class WidgetModule {}

📸 스크린샷 / 데모 (옵션)

image

💬 참고 사항

NestJS 서버 시 발생하는 버그는 ci 스크립트로 못 발견하는 것 같아서, 서버 시작 시 발생하는 버그도 잡을 수 있도록 수정하는 것도 좋아보여요.

@auto-assign auto-assign bot requested review from Grit03, SnailW and as-zini January 8, 2026 14:58
@davidpro08 davidpro08 self-assigned this Jan 8, 2026
@davidpro08 davidpro08 added the 🐛 fix 버그 수정 label Jan 8, 2026
@Grit03
Copy link
Member

Grit03 commented Jan 8, 2026

해당 부분은 deploy(cd) 스크립트에서도 에러로 발견이 되지 않았던 거죠?! 서버에서 직접 확인한 부분인가요?

@davidpro08
Copy link
Collaborator Author

해당 부분은 deploy(cd) 스크립트에서도 에러로 발견이 되지 않았던 거죠?! 서버에서 직접 확인한 부분인가요?

서버 들어가보니 백엔드 서버가 계속 재시작하더라고요. 병합 오류를 해결하다가 발생한 거 같은데, 정확히는 빌드 후에 모듈을 찾지 못해서 발생한 오류에요. 이 경우는 빌드는 잘 되었지만 실질적으로 작동하지는 않아서 문제가 있는 것 같습니다.
... 라고 생각했는데, 오류 내용을 보니까 애초에 빌드가 안 될 것 같다는 생각도 드네요. 태호님이 제 브랜치 병합 오류 해결해주시다가 발생한 것 같아서, 나중에 태호님 오시면 물어보겠습니다
image

@davidpro08
Copy link
Collaborator Author

해당 부분은 deploy(cd) 스크립트에서도 에러로 발견이 되지 않았던 거죠?! 서버에서 직접 확인한 부분인가요?

방금 시도해봤는데 빌드는 잘 되도 정상적인 서버 실행이 다른 이유로 안 되는 경우는 오류가 일어나는 것 같네요. 순환 참조, 모듈 내보내기 등의 문제가 발생한다는게, 실질적으로 린트 오류나 코드 오류가 아니어서 빌드만 잘 되는 것 같습니다.

Copy link
Member

@Grit03 Grit03 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

도커 띄우기에 성공했다고 해서, 이미지가 제대로 실행되고 있다는 건 추가적인 로직으로 판단해야하는 것 같습니다.

도커 컴포즈에서 health check 속성도 넣을 수 있는 것 같은데, 이런 속성과 스크립트를 사용해서 cd 스크립트에 서버가 제대로 시작되었을 때만 CD를 통과하도록 스크립트를 작성할 수 있을 것 같네요!

# docker-compose.prod.yml
backend:
  healthcheck:
    test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"]
    interval: 10s
    timeout: 5s
    retries: 3
    start_period: 30s
# 기존 방식 (그냥 켜고 끝냄, 서버 상태 모름)
docker compose up -d

# 추천 방식 (healthcheck가 'healthy'가 될 때까지 터미널을 잡고 대기함)
docker compose up -d --wait

다만, 이렇게 되면 서버 실행 실패 시 서버가 꺼진 상태로 CD가 끝나버린다는 단점이 있어요. 따라서 제대로 활용하려면, 실패시 이전 이미지를 다시 띄우도록 하는 로직도 필요해보이긴 합니다..!!

@davidpro08
Copy link
Collaborator Author

도커 띄우기에 성공했다고 해서, 이미지가 제대로 실행되고 있다는 건 추가적인 로직으로 판단해야하는 것 같습니다.

도커 컴포즈에서 health check 속성도 넣을 수 있는 것 같은데, 이런 속성과 스크립트를 사용해서 cd 스크립트에 서버가 제대로 시작되었을 때만 CD를 통과하도록 스크립트를 작성할 수 있을 것 같네요!

# docker-compose.prod.yml
backend:
  healthcheck:
    test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"]
    interval: 10s
    timeout: 5s
    retries: 3
    start_period: 30s
# 기존 방식 (그냥 켜고 끝냄, 서버 상태 모름)
docker compose up -d

# 추천 방식 (healthcheck가 'healthy'가 될 때까지 터미널을 잡고 대기함)
docker compose up -d --wait

다만, 이렇게 되면 서버 실행 실패 시 서버가 꺼진 상태로 CD가 끝나버린다는 단점이 있어요. 따라서 제대로 활용하려면, 실패시 이전 이미지를 다시 띄우도록 하는 로직도 필요해보이긴 합니다..!!

아... 그러면 이미지를 다 지우지 말고, 이전 버전을 남겨 놓는 방법도 좋을 것 같네요. 알겠습니다!

@davidpro08 davidpro08 closed this Jan 9, 2026
@Grit03
Copy link
Member

Grit03 commented Jan 9, 2026

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🐛 fix 버그 수정

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants