본문 바로가기
반응형
내가 두고두고 쓰는 Docker 설정들 총 정리 (EC2 & NginX & SpringBoot & MySQL) Kotlin SpringBoot 백엔드를 개발하고 있습니다. 이제 EC2에 배포하기 위해서 프리티어 계정을 생성하였고, EC2를 생성했습니다. EC2 생성 시 Amazon Linux 2 를 사용했고, 프리티어는 30GB 볼륨까지 사용할 수 있으므로 그렇게 지정해줍니다. Nginx가 80 포트로 다뤄질 것이므로, 인바운드 규칙으로 80포트도 열어줍니다. 원래는 Docker를 활용함에 있어서, SpringBoot 서버 jar 파일을 image 화 시킨 뒤에, Docker Hub에 올려주고 EC2에서 이 Docker Hub에 접속해야 하는데, Docker Hub는 Private 저장소를 사용하려면 유료 요금을 지불해야 합니다. 또한 git 역시 저는 private repository로 진행하고 있기 때문에, .. 2024. 4. 10.
게시글 읽어올 때, 좋아요 수랑 댓글 수를 어떻게 처리할 것인가? 서비스를 처음 운영할 때에는, 프론트와 백을 모두 개발해야 하기 때문에,, 보통 비용 감소를 위해 서버리스를 많이 도입하고 있지만 (고정 비용도 나가지 않아서 좋음) 최근에 개발중인 서비스는 백엔드까지 개발하고 있습니다. 한정된 AWS 프리티어로 초반을 유지해야 하기 때문에, 쿼리 최적화도 당연히 필수적으로 생각해보게 되었습니다. Post - Comment 는 1 : N 관계이고 Post - UserLike 또한 1 : N 관계이며 Post - UserDownload 또한 1 : N 관계입니다. JPQL을 이용한 Fetch Join 쿼리를 작성하던, EntityGraph를 이용하던, QueryDSL을 이용하던 OneToMany 여러개의 Fetch Join은 메모리와 성능상 이슈가 존재합니다. Fetch .. 2024. 4. 10.
[Kotlin + Spring] QueryDSL 사용해보기 이전 글을 통한 세팅에 이어서 QueryDSL을 활용해보겠습니다. Post 테이블과 1: N 관계로, UserLiked와 Comment가 있습니다. 저는 Post를 가져올 때 UserLiked의 갯수와 Comment의 갯수를 함께 가져오는 작업을 QueryDSL로 진행해보겠습니다. data class PostWithCountsDTO( val id: Long, val title: String, val type: String, val subType: String, val content: String, val time: Long, val hasImage: Boolean, val commentCount: Long, val likedUsersCount: Long ) DTO Projection을 위해서 DTO를 정.. 2024. 4. 8.
[Kotlin + Spring] Spring 3.X 버전 QueryDSL 세팅하기 이전 글에서 소개했듯이, 저는 이번 제 1인 프로젝트에 QueryDSL을 적용하기로 했습니다. Spring 2.6 이상 버전이냐 Spring 3.X 버전이냐에 따라 세팅에 차이가 조금씩 있는 것 같습니다. 저도 그랬지만 아마 많은 분들이 QueryDSL 초반 세팅에서부터 좀 힘들어 하셨을 것 같아요. 이 글에서는 Spring 3.X 버전을 기준으로 세팅 방법을 기록하겠습니다. // 중략 plugins { kotlin("kapt") version "1.9.21" } // 중략 val queryDslVersion: String by extra // 중략 dependencies { implementation("com.querydsl:querydsl-jpa:5.0.0:jakarta") kapt("com.quer.. 2024. 4. 8.
반응형