본문 바로가기

우아한테크코스/레벨 3 - 프로젝트5

[JPA] QueryDSL로 리스트 여러개 있는 데이터 가져오기 글을 시작하기에 앞서, 이번 글은 QueryDSL 적용에 관한 내용만 정리하였다. 자세한 원리에 대한 내용은 다루고 있지 않으니 해당 부분은 다른 글을 참조하기를 바란다. (학습중인 내용이라 일부 잘못된 내용이 있을 수 있습니다! 혹시 있다면 말씀 부탁드립니다.) 프로젝트를 하면서 데이터베이스에서 필요한 데이터를 찾아오는 로직을 작성하게 되었다.(현재 만들고 있는 애플리케이션은 간단히 말하면 레시피 SNS이다.) 레시피를 조회하면 해당 레시피가 어떤 카테고리에 속해있는지, 어떤 재료들이 필요한지 관련 데이터도 조회해야한다.우리 팀의 ERD를 살펴보면 다음과 같다.레시피 하나를 찾아오기 위해서는 회원테이블, 카테고리(중간테이블:카테고리 레시피), 재료(중간테이블: 재료 레시피) 총 6개 테이블의 데이터가 .. 2024. 8. 18.
[트러블슈팅] TLS/SSL Handshake Failed (안드로이드-서버) 프로젝트를 진행하다보면 예상치 못한 오류들을 많이 마주하게 된다.이번에 발생한 에러와 그 해결방안을 정리했다. 1. 문제상황클라이언트 이미지를 저장하기 위해 백엔드 서버로 presignedURL을 요청하고, 서버는 요청을 확인한 후 presignedURL를 응답한다. 클라이언트는 전달받은 URL에 사진 첨부하여 PUT하면 사진 저장이 완료된다.이 때, 안드로이드 높은 버전의 SDK(34)에서는 요청이 정상적으로 처리되는데, 낮은 버전의 SDK(26)에서는 handshake 오류가 발생했다.  2. 관련 이론1) 안드로이드 SDK(Software Development Kit)안드로이드 소프트웨어를 개발하기 위한 툴킷을 의미한다. 크게 세 가지로 구분할 수 있다.targetSDK: 앱이 기기에서 실행 시 .. 2024. 8. 11.
[AWS] Spring Boot, S3를 활용한 이미지 업로드 + 7.29 추가 )S3 버킷 보안 설정을 하던 중, S3 사용을 위한 클라이언트로 AmazonS3 대신 S3Client를 사용할 수 있다는 것을 알게 되었다. S3Client가 더 최신 버전이고 태깅 등 추가 기능을 제공하는 것도 있어서 S3Client 사용 방식으로 변경했다. 변경 코드는 맨 아래에 기재해두었다.  프로젝트를 진행하면서 이미지 저장 기능이 필요해졌다.AWS의 S3를 사용해 이미지를 저장하고 조회할 수 있다고만 알고 있었는데, 이번 기회를 통해 어떻게 이미지를 처리할 수 있을지 정리해보기로 했다. 우아한테크코스에서 제공되는 AWS 계정은 보안 정책 상 여러 제약이 걸려있고, 테스트용으로 쓰기에는 적절하지 않다고 생각해서 개인 계정을 만들고 테스트를 진행했다. 구현하고자 하는 기능은 다음.. 2024. 7. 28.
[Git] Git branch 전략 (부제: branch 병합 방법 merge, rebase, squash) git을 사용해 버전을 관리하고, 여러 팀원들이 함께 작업을 하려면 branch 관리를 잘 하는 것이 중요하다.개인 repositoy라면 커밋에 문제가 생기거나 브랜치가 잘못됐을 때 도저히 안되면 마음대로 삭제하거나 수정할 수 있지만,함께 작업하던 repository는 마음대로 수정하기가 어렵다. 그래서 처음부터 명확한 git branch 전략을 세우고, 다 같이 잘 지켜나가는 것이 중요하다.오늘은 git-flow를 활용한 우리 팀의 전략과, 그 전략이 실제로 어떻게 적용되는지를 기록해보고자 한다. git flow를 검색해보면 가장 많이 나오는 이미지가 다음 이미지가 아닐까 싶다.우리는 이를 활용해 main(master), production, release, develop, feature 브랜치를 사용.. 2024. 7. 24.
[CI/CD] Github Actions와 Docker를 활용한 CI/CD 구축, Self-Hosted Runner 적용 프로젝트를 하면서 CI/CD를 먼저 구축하고 프로젝트를 진행하기로 했다.(이 기능을 구현하면서 여러 에러들이 발생했었는데, 해결했던 과정은 기회가 되면 별도로 기록할 예정이다.)CI(Continuous Integration): 자동화된 빌드 및 테스트 수행 후, 코드 변경 사항을 중앙 레포지토리에 정기적으로 병합하는 개발방식CD(Continuous Deployment): CI 에서 빌드, 테스트가 완료된 코드를 자동으로 배포하는 방식 Github Actions, docker 선택 이유CI/CD 도구로는 대표적인 Jenkins, Github Actions 외에도 다양한 도구가 있었는데, 그 중 Github Actions를 선택했다.Jenkins와 달리  별도 서버 없이 사용 가능했다. 또한 public r.. 2024. 7. 15.