[배포] 데이터베이스 연결, CORS, 외부 API 보안 연결 문제 (6)

2026. 3. 26. 12:08·3. 자습 & 메모(실전, 실습, 프로젝트)/3-3 배포 실전 공부

AWS 버지니아 북부 리전으로 서비스를 이전하면서 진행한 인프라 구축 및 트러블슈팅 과정을 정리했습니다. 처음 배포를 시도하는 환경에서 발생할 수 있는 데이터베이스 연결, CORS, 외부 API 보안 연결 문제를 중심으로 기록했습니다.


1. 인프라 환경 구성

AWS 버지니아 북부(us-east-1) 리전에 새로운 환경을 구축했습니다.

  • EC2: Ubuntu 기반, Docker 및 Docker Compose 설치 완료.
  • RDS: MySQL 8.4 버전.
  • 보안 그룹: 22(SSH), 80(HTTP), 8000(API), 3306(MySQL) 인바운드 허용.

2. 데이터베이스 초기화

RDS 인스턴스를 새로 생성했기 때문에 테이블이 없는 빈 상태였습니다. 제공된 통합 SQL 스크립트를 사용하여 11개의 테이블을 생성하고 기초 데이터를 삽입했습니다.

 

RDS 접속 및 초기화 명령어:

# RDS 접속
mysql -h [RDS_엔드포인트] -u [사용자명] -p

# 데이터베이스 선택 및 테이블 생성 (MySQL 접속 후)
USE `meat-a-eye-db`;
# (제공된 SQL 스크립트 내용 복사 후 붙여넣기)

# 생성 확인
SHOW TABLES;
SELECT COUNT(*) FROM meat_info;

3. 도커 기반 서비스 실행

프로젝트 루트 디렉토리에서 Docker Compose를 사용하여 백엔드와 프런트엔드 컨테이너를 실행했습니다.

 

컨테이너 실행 및 로그 확인 명령어:

# 기존 컨테이너 중지 및 제거
docker compose down

# 컨테이너 빌드 및 백그라운드 실행
docker compose up --build -d

# 백엔드 로그 실시간 확인 (문제 발생 시 확인 필수)
docker logs -f meat-api-container

4. 주요 트러블슈팅 사례

4.1 CORS(Cross-Origin Resource Sharing) 문제

프런트엔드에서 API를 호출할 때 브라우저 보안 정책으로 인해 통신이 차단되는 현상이 발생했습니다. 백엔드 설정에서 와일드카드(*) 대신 실제 서버 IP를 명시하여 해결했습니다.

  • 해결 방법: 서버 내 .env 파일의 CORS_ORIGINS 값을 http://3.95.213.147로 수정 후 재시작했습니다.

4.2 DB 스키마 불일치 (Unknown column 에러)

백엔드 코드는 업데이트되었으나 초기 SQL 스크립트에 일부 컬럼이 누락되어 500 Internal Server Error가 발생했습니다. 로그 확인 후 수동으로 컬럼을 추가했습니다.

 

컬럼 추가 명령어:

# members 테이블에 비밀번호 재설정 여부 컬럼 추가
ALTER TABLE members ADD COLUMN must_reset_password TINYINT(1) NOT NULL DEFAULT 0 AFTER guest_id;

# fridge_items 테이블에 희망 소비일 컬럼 추가
ALTER TABLE fridge_items ADD COLUMN desired_consumption_date DATE NULL COMMENT '희망 소비일' AFTER custom_name;

 

4.3 SSL 핸드쉐이크 실패 (KAMIS API 연결 문제)

실시간 시세 데이터를 가져오는 외부 API(KAMIS) 서버가 구형 보안 설정을 사용하여, 최신 도커 환경의 백엔드 컨테이너와 연결이 끊어지는 문제가 발생했습니다.

  • 증상: 로그에 SSLV3_ALERT_HANDSHAKE_FAILURE 에러 발생.
  • 현재 진행: 호스트(EC2)에서는 통신이 가능하지만 컨테이너 내부 파이썬 환경에서 차단됨. 시스템 설정(openssl.cnf)을 변경했으나 파이썬 라이브러리가 이를 무시하는 상태입니다. 이 부분은 코드 레벨에서 SSL 보안 수준을 낮추는 커스텀 어댑터를 적용하는 방식으로 내일 수정을 진행할 예정입니다.

5. 현재 상태 요약

  • 인프라 구축 및 컨테이너 배포 완료했습니다.
  • 회원가입 및 기본적인 데이터베이스 연동 확인했습니다.
  • DB 스키마 불일치 문제 해결하여 냉장고 목록 기능 정상화했습니다.
  • 외부 API 연동을 위한 SSL 보안 설정 수정 작업이 마지막 과제로 남아있습니다.

'3. 자습 & 메모(실전, 실습, 프로젝트) > 3-3 배포 실전 공부' 카테고리의 다른 글

[배포] Meat-A-Eye 배포 마무리 정리 - AWS 서버 활용법 (마무리!)  (0) 2026.03.28
[배포] Meat-A-Eye 배포 및 트러블슈팅 진행 기록 (마지막)  (0) 2026.03.27
[배포] AWS EC2 재가동 및 도커 배포 (4)  (2) 2026.03.24
[Meat-A-Eye 배포] AWS EC2 서버 구축 및 AI 환경 세팅(3)  (0) 2026.03.13
[배포] AWS RDS 활용 - MySQL DB 구축 및 초기화(2)  (0) 2026.03.11
'3. 자습 & 메모(실전, 실습, 프로젝트)/3-3 배포 실전 공부' 카테고리의 다른 글
  • [배포] Meat-A-Eye 배포 마무리 정리 - AWS 서버 활용법 (마무리!)
  • [배포] Meat-A-Eye 배포 및 트러블슈팅 진행 기록 (마지막)
  • [배포] AWS EC2 재가동 및 도커 배포 (4)
  • [Meat-A-Eye 배포] AWS EC2 서버 구축 및 AI 환경 세팅(3)
고니3000원
고니3000원
공부 내용 정리, 자기발전 블로그 입니다. 기존 네이버 블로그에서 티스토리로 이전했습니다. https://blog.naver.com/pak1010pak
  • 고니3000원
    곤이의 공부 블로그
    고니3000원
  • 전체
    오늘
    어제
    • 분류 전체보기 (176)
      • 1. AI 논문 + 모델 분석 (19)
        • AI 논문 분석 (13)
        • AI 모델 분석 (6)
      • 2. 자료구조와 알고리즘 (16)
        • 2-1 자료구조와 알고리즘 (13)
        • 2-2 강화학습 알고리즘 (3)
      • 3. 자습 & 메모(실전, 실습, 프로젝트) (25)
        • 3-1 문제 해석 (4)
        • 3-2 메모(실전, 프로젝트) (14)
        • 3-3 배포 실전 공부 (7)
      • 4. [팀] 프로젝트 및 공모전 (14)
        • 4-1 팀 프로젝트(메모, 공부) (1)
        • 4-2 Meat-A-Eye (6)
        • 4-3 RL-Tycoon-Agent (3)
        • 4-4 구조물 안정성 물리 추론 AI 경진대회(D.. (4)
      • 5. [개인] 프로젝트 및 공모전 (0)
        • 4-1 귀멸의칼날디펜스(자바스크립트 활용) (5)
        • 4-2 바탕화면 AI 펫 프로그램 (4)
        • 4-3 개인 프로젝트(기타) (3)
      • 개념 정리 step1 (32)
        • Python 기초 (7)
        • DBMS (1)
        • HTML | CSS (3)
        • Git | GitHub (1)
        • JavaScript (5)
        • Node.js (5)
        • React (1)
        • 데이터 분석 (6)
        • Python Engineering (3)
      • 개념 정리 step2 (56)
        • Machine | Deep Learning (15)
        • 멀티모달(Multi-modal) (23)
        • 강화 학습 (10)
        • AI Agent (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 네이버 곤이의 블로그(Naver->Tistory)
    • Github
  • 공지사항

  • 인기 글

  • 태그

    학습
    Vision
    Grad-CAM
    Attention Is All You Need
    강화학습
    EfficientNet
    OCR
    파인튜닝
    데이터분석
    github
    구현
    파이썬
    Python
    Ai
    OCR학습
    javascript
    귀칼
    transformer
    자바스크립트
    bottleneck
    ViT
    paddleocr
    자료구조
    강화 학습
    프로젝트
    pandas
    알고리즘
    html
    논문 리뷰
    공모전
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
고니3000원
[배포] 데이터베이스 연결, CORS, 외부 API 보안 연결 문제 (6)
상단으로

티스토리툴바