차단 로직을 Querydsl로 리팩토링한 과정
기존 코드 구현해내고자 했던 기능 포착은 소셜 네트워킹 서비스로 앱스토어와 플레이스토어의 규정상 “차단” 기능이 필수적으로 필요하였습니다. 팀원들과 상의하며 규정한 차단 로직은 다음과 같습니다. 사용자A가 사용자B를 차단한다. 사용자A는 사용자B를 조회할수도, 사용자B가 포함된 게시물을 확인할 수 없다. 여기서 사용...
기존 코드 구현해내고자 했던 기능 포착은 소셜 네트워킹 서비스로 앱스토어와 플레이스토어의 규정상 “차단” 기능이 필수적으로 필요하였습니다. 팀원들과 상의하며 규정한 차단 로직은 다음과 같습니다. 사용자A가 사용자B를 차단한다. 사용자A는 사용자B를 조회할수도, 사용자B가 포함된 게시물을 확인할 수 없다. 여기서 사용...
새로 도메인을 설정한 이유 POCHAK의 기존 도메인이 만료됨에 따라 기존 도메인 연장 혹은 새로운 도메인으로의 변경이 필요한 상태였습니다. 팀원들과의 논의 결과, 무엇보다도 기존 도메인의 연장비용이.. 굉장히 부담스러웠기에 비교적으로 저렴한 pochak.app 이라는 새로운 도메인을 구매하게 됩니다. 창업지원단의 지원금을 받고 있기에 대부분...
에러 상황 발생 위치 Jenkins에서 배포 과정을 실행하며 다음과 같은 오류가 발생하였습니다. 에러 발생!! 에러가 발생한 파이프라인의 명렁어 $ docker build -f Dockerfile -t pochakgreen/pochak-dev . 원인 확인 아래의 로그로 확인해봤을때, docker.sock 실행 과정에서 perm...
Cloud SQL로 데이터베이스를 변경한 이유 창업지원단의 지원금을 받고 있기에 대부분의 서비스를 AWS에서 GCP로 옮기고 있는 상황입니다. 따라서 기존에 사용하던 AWS의 RDS에서 GCP의 Cloud SQL로 마이그레이션을 하기로 결정하였습니다. 작업 과정 GCP Database Migration API 활성화하기 GCP에서 제공해주는 D...
Dirty Checking과 관련된 내용을 복습하며 영속화 순서에 대해 궁금했던 것들, 그리고 실험했던 기록을 작성합니다. 강의 내용 Parent Entity와 Child Entity가 1:N으로 연관관계가 맺어져 있음. (따라서 연관관계의 주인은 Child Entity.) 이 상태에서 아래 코드를 실행시킬 경우, Child child1 =...
Power Automate를 사용한 핸즈온 내용을 정리합니다!
GDSC Solution Challenge에 도전하면서, 처음 GCP를 사용하게 되었다! 기존 스프링부트 앱을 개발할 때 보통 AWS의 CodeDeploy (+ S3, EC2)를 활용하여 CI/CD를 구축하였는데, 이번엔 GCP도 사용해볼겸, 새로운 툴인 Jenkins를 통하여 CI/CD를 구축하는 방법에 대해 알아본 내용을 정리해보았다. 과정 정...
DDB에서 페이징이 필요한 이유 공식 문서에도 언급되어 있지만, DynamoDB의 단일 쿼리 작업은 최대 1MB의 데이터만 가져올 수 있습니다. 그렇기에 우리 어플리케이션에서 프로필 탭에서 자신이 찍힌 게시글과 찍은 게시글을 조회할 때 다음과 같은 페이징이 필요하다고 판단하여 리팩토링을 진행하게 되었습니다! 물론 성능 측면도 고려해보았을 때,...
‘POCHAK’을 개발하며 Spring Data DynamoDB를 사용해보았고, 그 과정에서 새롭게 알게 된 점을 정리한 글입니다. ※ 이후 포착은 서비스 특성상 데이터베이스를 DynamoDB에서 MySQL로 변경 후 다시 개발하였습니다. Spirng Data DynamoDB 라이브러리 POCHAK GitHub Reposit...
문제 상황 POCHAK은 원테이블 설계로, Partition Key와 Sort Key를 모두 사용하여 설계하였습니다. 하지만 Spring Data DynamoDB와 연결하는 과정에서 BeanCreationException이 발생하였습니다. 이를 해결하기 위해 알아보는 과정에서 Partition Key와 Sort Key를 같이 사용하는 경우, Cr...