Project 13

Elasticsearch 필터와 스코어링 전략: 매칭 로직 개선하기

최근 매칭관련 매칭이 가능한 유저를 조회하는 로직에서 es를 사용하게 되었는데 이때 filter를 사용해서 충족되어야하는 조건, 그리고 조건에 포함되면안되는 조건, 선택 조건 등 검색시 조건을 추가하여 검색하는 로직을 만들었는데. 이를 정리하고자한다.Elasticsearch 쿼리 조건 타입ES에서 검색 조건을 설정할 때 주로 사용하는 세 가지 주요 쿼리 타입이 있다.must - 반드시 충족해야 하는 조건이 조건에 맞지 않는 문서는 결과에서 완전히 제외됨필수 조건으로 작동하며 AND 연산자와 유사함should - 충족하면 좋은 조건이 조건을 만족하면 문서의 관련성 점수가 높아짐가중치를 부여하는 방식으로 작동함필수는 아니지만 만족할수록 검색 결과 상위에 노출됨must_not - 포함되면 안 되는 조건이 조건..

포트포워딩 문제

yml 에 내부 포트를 8081로 한상태로 docker 에서 8081:8080으로 포워딩함 -> 접근불가 내부 포트 포워딩 포트가 yml로 지정한 포트와 다름으로 문제가 생김  yml 에 내부 포트를 8081로 한상태로 docker 에서 8081:8080으로 포워딩함 -> 접근불가 내부 포트 포워딩 포트가 yml로 지정한 포트와 다름으로 문제가 생김     -현재 문제 2025-04-01T09:29:50.882+09:00  INFO 1 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...2025-04-01T09:29:50.891+09:00 ERROR 1 --- [           main] j..

항상 마주하는 CORS 에러: 여기 고치면 저기 문제, 저기 고치면 여기 문제

프로젝트를 진행하면서 정말 자주 마주하는 문제 중 하나는 403 Forbidden 에러 그만 만나고싶은 403....특히 CORS 정책으로 인해 발생하는 문제는 개발 환경과 배포 환경에서 다르게 동작할 때 더 힘들다. 이번 프로젝트에서는 Google API 통신과 JWT 기반 인증 시스템을 사용하면서도 CORS와 관련된 많은 문제를 해결했는데 이를 좀 정리해볼까 한다프로젝트 배경백엔드: Java Spring Boot프론트엔드: React Native (Expo)데이터베이스: MySQL, MongoDB배포 환경: GCP VM 인스턴스 3대 (프론트엔드, 백엔드, 모니터링)모니터링 툴: Grafana, Prometheus인증 방식: JWT (Role 기반 접근 제어)403 Forbidden 에러 발생 상황 ..

U2Net 직접 사용 vs. rembg 활용: 어느 쪽이 더 나을까?

1. 직접 모델 사용 (save_models 방식)U2Net의 .pth 파일을 다운로드하여 직접 관리PyTorch를 사용해 모델을 로드하고 추론을 구현2. 라이브러리 활용 (rembg 방식)rembg가 모델 다운로드 및 로드를 자동으로 처리함수 호출만으로 간단히 배경 제거를 수행3. 두 방식의 주요 차이점 비교 구분 직접 모델 사용 (save_models) rembg 활용 모델 관리 직접 .pth 파일 다운로드rembg가 .onnx 파일을 관리 구현 난이도 모델 로드, 추론 코드 작성 필요함수 호출로 간단히 사용 가능 커스터마이징 모델 교체 및 수정 가능제한적 (rembg 내부 구조 변경 어려움) 배포 용이성 의존성 많고 배포 복잡간단히 배포 가능 속도 PyTorch로 실행 (GPU 지원 가능)onn..

AWS 과금

7-8월 최종프로젝트를 진행하면서 AWS를 사용하여 배포를 진행하였다 이때 EC2, 탄력적 IP, router 53, RDS, S3, I AM등을 사용하였고 당연히 과금이 나올 것을 알고있었기 때문에 비용을 지불하는것에 의문이없었다. 프로젝트가 끝난뒤 과금이 될 것을 우려하여 사용한 AWS의 모든 기능을 정지 및 삭제 처리하였고, 이후 비용이 청부되지는 않겠구나 하고 있엇지만 9월 어느날 메일이 날라왔다... 프리티어의 용량이 다 찼다는 메일이였다 분명 나는 삭제했는데 ... 9월달 요금이 발생된건가?? 하고 aws consol에 들어갔다. 아니나 다를까 청부되었다.나름.. 관리했다고 생각했는데 뭐지..... 다급하게 구글에 VPC를 검색했다.Virtual Private Cloud (가상 네트워크) 이부..

프로토콜 문제

백엔드와 프론트서버를 지금 localhost로 바꾸어 서버를 실행시켰더니 데이터를 받아오지 못하는 문제가 확인되어 개발자 도구를 열어 확인했더니 프로토콜 문제가 발생했다라는것을 확인했다.갑자기 왜 프로토콜 문제가 생겼을까....생각을해보니 http를 https로 보안을 올리면서 ssl인증서를 발급받았는데 이때 발급받은 주소와 현재 localhost와 달라서 생긴 문제이지 않을까??? 라는 생각이 들어 ssl인증서를 재발급받아보았다. ssl 인증서 만드는법OpenSSL에서 다운받아서 설치(ligt버전말고 설치하기 바람 openssl.cfg 제외되어 설치가 되 csr인증서를 만들때 오류가 발생)OpenSSL 환경변수 설정하기- 시스템 변수에 OPENSSL_CONF 를 생성 후 C:\Program Files\..

KPT -Challengers.B.O.D(24.07.17 - 08.21)

KPT 회고SummaryKeep 약속된 시간보다 빠르게 개발을 완료하여 추가적으로 개발시간을 확보한점맡은일을 끝낸 뒤에도 서로 도와가며 개발하여 프로젝트를 끝까지 완수한일정 계획 및 조율을 잘하여 일정에 쫒겨 작업하는일이 없었음.스테이징 서버를 구축하여 배포전 실제 환경과 비슷하게 테스트를 진행할 수 있었음백엔드와 프론트엔드의 레포지토리를 분리하여 개발하여 편했Problem기존 챌린저스 서비스를 참고하여 개발을 진행하였지만 챌린지 서비스에 대해 탄탄하게 설계하지 못해 서비스 측면에서 부족한 기능들이 있었음.프론트엔드 작업이 예상보다 많은 시간이 소요 되었다.Try서비스 측면에서 사용자가 필요한 기능들을 차후에 추가하고싶다.배포 측면에서 프론트와 백엔드서버의 ec2를 분리하여 배포를 진행하고싶다.스테이징 ..

Project/KPT 2024.08.22

스테이징 서버 구축하기

구축한 이유최종 프로젝트를 진행하면서 중간발표이후 서버를 배포하였고 이후 배포된 서버에 성능테스트를 위해 더미데이터를 넣는거나 기능 테스트하는 등 운영 환경에 테스트를 했다보니 잘되던 기능이 안되는 등의 불편함이 생겨서 운영서버에 영향이 없는 스테이징 환경을 구축하여 기능 테스트 및 성능테스트를 하기로 하였다.주의할 점운영 환경과의 유사성:스테이징서버 즉 QA 서버는 가능한 한 운영 환경(배포 환경)과 유사하게 구성해야함하드웨어 스펙, 운영체제, 데이터베이스 버전 등을 일치 시켜야함.(우리는 동일한 ec2를 구축하였음)데이터 관리:테스트용 데이터를 주기적으로 갱신하고 관리민감한 실제 데이터를 사용할 경우, 반드시 마스킹 처리를 해야됨보안:QA 서버도 보안에 취약할 수 있으므로, 적절한 보안 조치가 필요불..

KPT - TenTrillion (24.06.26 - 06.17)

KTP회고SummaryKeep 맡은 기능에 대해 적극적으로 개발하려고 해서 좋았습니다.API명세서, ERD다이어그램, 코드컨벤션, 깃허브룰 등 상세하게 적고 명세한 그대로 프로젝트를 진행해서 변경점이 많이 생기지 않아 프로젝트를 큰 이슈 없이 진행할 수 있었던 것 같습니다.git hub 에서 issue 에 따라 각각 브랜치를 생성해서 작업을 해서 좋았습니다.각 파트 Entity 부분을 같이 정하고 연관관계도 미리 작성 후 개발을 시작해서 코드 짜는데 있어 큰 문제 없이 진행되었던 것 같습니다.깃허브와 코드 컨벤션이 상세해서 좋았습니다.Problem더 많은 대화와 소통을 하지 못해 아쉽습니다.요구사항 마다 정확한 기한을 정해놓고 프로젝트를 진행했으면 좀 더 프로젝트 요구사항을 구현 가능했을 것 같습니다. ..

Project/KPT 2024.07.16

KTP - 곧 7월 이조?? (24.06.12 - 06.25)

KTP회고SummaryKeep소통을 잘했음코드 커버리지를 시각적으로 표현진행상황을 확인하여 일정조절ProblemDB Table 예약어 오류일부분의 Test Code 작성Pull Request 후 Comment 작성 부족Try코드리뷰 시간 확보시간분배를 통해 테스트코드 작성시간 확보예약어를 피해 복수형으로 테이블 네이밍 맞춤소감팀프로젝트를 진행하기전 이해하지 못한 부분이 팀프로젝트를 진행하면서 팀원들과 소통을 통해 이해되는 과정을 통해 한층 더 성장해나가는 느낌을 많이 받았다. 팀프로젝트를 할때마다 항상 좋은 결과와 실력이 성장하는 느낌을 받아서 다음 팀프로젝트도 기대가 된다.팀 GitHubhttps://github.com/JulySoon/Ottoon GitHub - JulySoon/OttoonContri..

Project/KPT 2024.06.26