springboot

    [Docker] SpringBoot와 PostgreSQL 이미지 docker-compose로 한 번에 관리하기

    들어가기 전에 기존에는 아래와 같이 AWS Beanstalk을 사용하여 개발용 SpringBoot(Backend)을 관리하였고, DB는 AWS RDS를 이용하였습니다. AWS 초심자다보니, 운영 어플리케이션을 AWS에 올리기 전에 미리 AWS를 사용해보자는 취지로 위와 같은 구조로 진행했었습니다. 하지만, 비용 이슈로 인해 개발용은 각자 로컬에서 띄우는 것이 맞다는 생각이 들었습니다. 이에 docker-compose를 통해 SpringBoot와 DB를 하나로 묶어서 띄워서 테스트할 수 있는 환경을 구성해 보았습니다. Front-End에서 Back-End 어플리케이션을 띄워 API 테스트가 필요했던 터라, docker-compose로 어플리케이션과 DB를 함께 묶어 손쉽게 테스트를 진행할 수 있도록 했습니..

    [SpringBoot] SpringBoot를 이용한 email 전송하기(첨부파일 포함)

    들어가기 전에 하기 포스팅은 일반적으로 많이 사용하는 Google SMTP나 Naver SMTP 서버가 아닌 따로 구성된 SMTP 서버를 통해 email을 전송하는 법에 대해 다룹니다. 사내 SMTP 서버의 경우 relay server이기 때문에, postfix의 mynetworks 변수로 관리되는 IP를 통해 email이 전송된다면 따로 username/password가 필요하지 않습니다. 이로 인해, Google SMTP 또는 Naver SMTP를 통해 email을 전송하기 위해서는 application.yml과 같은 설정 파일 내 추가 설정이 필요할 수 있습니다. 이 점 고려하시고 봐주시길 바랍니다. SpringBoot를 이용한 Email 전송하기 Dependencies 추가하기 먼저, Spring..

    [AWS] CloudFront와 S3 연결하기

    들어가기 전에 기존에 SpringBoot를 이용한 S3에 이미지 업로드 및 삭제에 대해 포스팅한 적이 있습니다. [SpringBoot] SpringBoot를 이용한 AWS S3에 여러 파일 업로드 및 삭제 구현하기 해당 포스팅을 할 때에는 프론트엔드에서 S3 이미지를 불러올 때 아래 사진과 같이 S3의 각 객체 URL을 통해 호출하면 될 것이라 생각하고 진행했습니다. 위와 같이 진행하게 되면, Client가 S3를 직접 접근하게 되어 캐싱 기능이나 보안 측면에서 아쉬운 점이 있었습니다. 이번 포스팅에는 AWS가 제공하는 Contents Delivery Network(CDN)인 CloudFront를 사용하여 S3 데이터를 좀 더 효율적으로 전송하는 방법에 대해 알아보도록 하겠습니다. CloudFront C..

    [AWS, Github Action] Elastic Beanstalk에 SpringBoot 이미지 Docker로 배포하기(3) - EB 기본 세팅(RDS 포함)

    들어가기 전에 기존에 Docker가 아닌, SpringBoot을 EC2에 직접 배포하는 Elastic Beanstalk 환경을 생성하는 과정을 포스팅한 적 있습니다. 해당 어플리케이션에 신규 환경을 만들어 세팅하였기 때문에 어플리케이션 생성이 필요하다면 해당 포스팅을 한 번 읽어보면 좋을 것 같습니다. 이번 포스팅에서는, Elastic Beanstalk 환경 세팅 및 RDS 생성을 진행해보도록 하겠습니다. [AWS, Github Action] Elastic Beanstalk에 SpringBoot 배포하기(1) - EB 기본 세팅 이번 포스팅은 하기 2가지 포스팅의 다음 순서입니다. 기존 포스팅을 보시지 않았다면 먼저 보고 오시는 것을 추천드립니다. 이전 포스팅 [AWS, Github Action] Ela..

    [Querydsl, pageable] slice를 이용한 무한 스크롤

    들어가기 전에 프로젝트를 진행하면서, 빵집의 상세 페이지에서 메뉴 더보기 클릭 시, 해당 빵집에 존재하는 모든 메뉴를 순차적으로 보여주어야 했습니다. 이때, 아래로 쭉 내렸을 때 메뉴가 더 존재한다면 화면에 더 뿌려주고자 무한 스크롤을 구현하였습니다. 참고 사항 하기 예시는 모두 page index가 1부터 시작한다고 가정하고 진행한 것이기 때문에, 만약 page를 0부터 시작하고자 한다면, 변경이 필요할 수 있습니다. 페이징 기법 종류 진행하기 앞서, 간단하게 페이징 기법 종류에 대해 알아보고자 합니다. 먼저 아래 왼쪽 사진의 경우는, 일반적인 paging 기법입니다. 각 index를 눌러 페이지를 호출하고 해당 페이지에 해당하는 데이터를 뿌려줍니다. 반면, 오른쪽 사진의 경우는 더보기 버튼을 클릭하여..

    [PostgreSQL, Spring Data JPA] earthdistance를 이용하여 주어진 위도/경도에서 근처 장소 조회하기(Native Query)

    들어가며 프로젝트를 진행하면서, 지도상의 위치(위도/경도)와 범위(range)값을 받아서 범위 안에 속하는 빵집을 검색 API를 구현해야 했습니다. 현재 사용하고 있는 database는 postgreSQL이어서 postgreSQL의 거리 계산 관련하여 구글링하였습니다. 그 결과, postgreSQL에서 공식적으로 지원하는 earthdistance 모듈을 설치하여 geolocation을 다뤄보기로 했습니다. earthdistance는 지구가 타원형이 아닌 완벽한 구의 형태라고 가정하고 사용하는 모듈이기 때문에, 정밀한 거리 계산이 필요하다면 thirdparty에서 제공하는 postGIS를 쓰는 것도 좋은 방법일 것 같습니다. 단, postGIS는 postgreSQL이 공식적으로 지원하지는 않습니다. ear..

    [AWS, Github Action] Elastic Beanstalk에 SpringBoot 배포하기(2) - IAM 인증키 Github Action에서 사용하여 배포

    들어가기 전에 해당 글은 Elastic Beanstalk의 기본 세팅이 되어 있다는 가정하에 진행합니다. 만약, Elastic Beanstalk의 어플리케이션 및 환경 구성이 되어 있지 않다면 하기 글을 클릭하여 먼저 구성하고 이 포스팅을 읽는 것을 권해드립니다. 이전 포스팅 [AWS, Github Action] Elastic Beanstalk에 SpringBoot 배포하기(1) - EB 기본 세팅 다음 포스팅 [AWS, Github Action] Elastic Beanstalk에 SpringBoot 배포하기(3) - EB에 RDS 사용하여 환경속성 통해 application.yml 주입받기 Github Action을 통해 SpringBoot 어플리케이션 EB에 배포하기 이번 포스팅에서 구현하려는 것은 ..

    [AWS, Github Action] Elastic Beanstalk에 SpringBoot 배포하기(1) - EB 기본 세팅

    들어가기 전에 Elastic Beanstalk을 통해 Springboot CI를 진행하기 위해 Elastic Beanstalk 기본 설정을 진행하였습니다. 다음 포스팅에서는 Github Action을 통해 Elastic Beanstalk에 실 어플리케이션을 배포해볼 것입니다. 다음 포스팅 [AWS, Github Action] Elastic Beanstalk에 SpringBoot 배포하기(2) - IAM 인증키 Github Action에서 사용하여 배포 [AWS, Github Action] Elastic Beanstalk에 SpringBoot 배포하기(3) - EB에 RDS 사용하여 환경속성 통해 application.yml 주입받기 Elastic Beanstalk 어플리케이션 및 환경 기본 세팅하기 먼저..