전체 글

경험 정리용 연습장
프로젝트

서지간 유사도 측정 API 배포

프로젝트 목표: 입력 받은 서지(도서) 정보와 검색 엔진을 이용해 나온 서지들과의 유사도를 반환하는 API 개발 및 수요 업체 온프레미스에 배포 기간: 2022년 10월 ~ 2022년 12월 구성원: 모델 파인튜닝 및 추론 모듈 개발 (1명), API 개발 및 배포 (본인) API 개발 1. FastAPI 사용: 빠른 속도, 사용하기 쉬움 2. 검색 엔진은 수요 업체에서 제공해준 자바 패키지를 사용: - 딥러닝 모델로 추론이 필요한 상황이라 파이썬을 사용해야하므로 자바 패키지를 파이썬에서 사용이 가능하도록 도와주는 JPype 모듈 사용 3. 3개의 엔드포인트 구현: - /health (GET): API 상태 체크 - /rank (POST): 검색 엔진 이용을 사용하지 않고 서지 정보와 검색 엔진 결과 N..

도커

[도커] 컨테이너 타임존 설정

1. Dockerfile에 다음을 추가하여 tzdata 설치 apt-get install -y tzdata 2. 컨테이너 실행 시 환경변수 TZ 추가 - Docker를 이용해 실행 시 docker run --env TZ=Asia/Seoul {image_name} {command} - Docker Compose를 이용해 실행 시 environment: - TZ=Asia/Seoul

프로젝트

음원 분리 API 클라우드 배포

프로젝트 목표: 오디오 및 비디오 파일(32MB 미만)을 입력 받아 음원 분리 후 결과 파일의 경로를 반환하는 API 개발 및 클라우드(GCP)에 배포 기간: 2022년 6월 ~ 2022년 7월 지연 시간이 가장 짧도록 단일 리전 (서울) 설정 외부에서 오디오 파일을 다운로드 가능해야 하므로 세분화된 엑세스 제어 설정 컬렉션은 미리 명시적으로 만들 필요 없음, 문서에 데이터를 추가할 때 암시적으로 생성됨 키 파일을 key.json으로 변경하는 이유는 Dockerfile 중 환경변수를 다음와 같이 작성했기 때문 (GOOGLE_APPLICATION_CREDENTIALS=key.json) Separate API를 먼저 띄우는 이유는 Main API가 Separate API의 주소를 환경변수로 받아야하기 때문 ..

도커

[도커] 컴포즈 로그 출력 타임 아웃

도커 컴포즈로 로그를 출력하다보면 일정 시간 동안 출력할 로그가 없는 경우 이후부터 로그 출력이 동작하지 않을 때가 있는데, 아래와 같이 환경 변수를 넘겨주어 타임아웃을 늘려주면 됨 COMPOSE_HTTP_TIMEOUT={int} docker-compose logs {service_name} ex. 타임 아웃 = 하루, 로그 추적 (-f), 타임스탬프 출력 (-t), 대상 서비스 = service_1, service_2 COMPOSE_HTTP_TIMEOUT=86400 docker-compose logs -ft service_1 service_2

GCP

[GCP] Firestore 연동

공식 문서를 참고하여 Firestore에 접근하여 데이터를 추가 및 업데이트하는 파이썬 코드 추가 Dockerfile에 ENV key(GOOGLE_APPLICATION_CREDENTIALS)=value(생성한 비공개 키 경로) 추가 트리거는 미러링한 저장소의 소스를 기반으로 빌드하기 때문에 (깃에는 key.json을 푸시하지 않았으므로 빌드 오류 발생) 트리거는 사용하지 않고 클라우드 쉘에 gcloud builds submit 입력하여 빌드 및 배포함 이 과정에서 권한 오류가 발생하여 269351677998-compute@developer.gserviceaccount.com의 269351677998@cloudbuild.gserviceaccount.com에게 '서비스 계정 사용자'라는 권한을 추가해줌 배포..

IntegerString
코딩 연습장