GCP에 Spring Boot + PostgreSQL Docker 배포하기 (포트 설정 및 구성도 포함)
·
서버
프로젝트를 시작하기에 앞서 서버 구축을 먼저 해주었다. 처음 해보는 거라 오래 걸릴 것 같다는 생각에 개발 들어가기 전에 미리 해두었다. 하지만 서버를 구축한 후에 개발을 하다 보니 이곳저곳 예상치 못한 오류 생기는 게 많았다ㅠㅠ 그래서 이건 각자의 니즈에 맞게.. 서버를 구축하면 될 것 같다. 아마 이걸 고민하는 시점부터가 프로젝트의 시작인 걸........... 아무튼, 서버는 3개월간 무료 사용할 수 있는 GCP(Google Cloud Platform)를 선택 했고 구조는 아래와 같다. 1. 클라이언트 요청 사용자의 클라이언트에서 GCP VM의 퍼블릭 IP를 통해 9091 포트로 요청을 보낸다. (ex http://000.000.000.000:/9091/api/..) 2. GCP 인스턴스 (V..
우분투 25.04 서버에 도커 설치하기 (Ubuntu 25.04 / Plucky Puffin)
·
서버
1. 기존 패키지 업데이트 sudo apt updatesudo apt upgrade -y 2. 필수 패키지 설치 sudo apt install -y ca-certificates curl gnupg 3. 도커의 공식 GCP 키 추가 APT는 보안상 서명된 패키지만 설치하게 되어 있기 때문에 패키지 서명을 검증할 수 있도록 GPG 키를 등록해야 한다. 따라서 아래의 두 가지 스텝을 모두 해줘야 한다. 3-1. 키 저장 디렉토리 생성 sudo install -m 0755 -d /etc/apt/keyrings 3-2. 도커의 GCP 키 다운로드 및 변환 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/ap..
Java 옵셔널(Optional) 이란
·
JAVA
Java에서 null로 인한 버그를 줄이는 것은 안정적인 개발을 위한 효과적인 방법이다. 회사에서 개발하다 보면 예상치 못한 곳에서 NullPointerException이 발생하는 경우가 있다. 이런 예외 상황을 모두 생각하기는 어렵기 때문에, Java에서는 Optional이라는 클래스를 통해 null 참조로 인한 오류를 방지하고, 코드의 의도를 더욱 명확하게 표현 할 수 있도록 한다. [Optional ] Java 8부터 도입된 Optional 클래스는 null 참조로 인한 오류를 방지하지만 제대로 사용하지 않으면 코드가 오히려 더 복잡해 질 수 있다. [올바른 Optional 사용법]Optional 은 "값이 없을 수 있음" 을 명확하게 표현 하기 위한 반환 타입으로 설계 되었다. 따라서 필드,..
Spring Data JPA 페이징 구현하기 (SpringBoot 적용)
·
spring 스프링
게시글이 수천 개가 있는데, 다 가져오면 서버나 사이트에 부하가 오게 된다. 이를 해결하기 위해 페이징을 사용하여 깔끔하게 가져오는 방법을 구현해 보려고 한다. [페이징이란]데이터를 페이지 단위로 잘라서 가져오는 것을 말한다. 예를 들어, 총 100개의 데이터가 있을 때 이를 10개씩 10페이지로 나누어 전달하는 방식이다. Spring Data JPA에서는 public interface Page extends Slice 형태로 정의되어 있으며, 단순 데이터 목록뿐 아니라 전체 페이지 수, 전체 항목 수, 현재 페이지 등의 정보도 함께 제공한다. [페이징 주요 구성 클래스]Page 실제 페이징 결과가 담기는 결과 객체를 말한다. List 형태의 데이터 목록뿐 아니라 아래와 같은 부가 정보도 함께..
mixed content 에러 해결 방법
·
서버
프로젝트를 하는 중 클라이언트에서 mixed content 에러가 발생했다. mixed content 에러는? 웹사이트가 https(보안)로 열렸는데 그 안에는 http(비보안)로 된 리소스를 불러오게 되면 발생한다. 현재 프로젝트의 상황을 요약 하자면 이미 http 로 고정IP로 주소를 할당 받았고, 클라이언트 배포 주소도 있는 상태였다. 구글링 해본 결과 GCP 로드 밸런스를 써서 맞추면 된다고 했지만, 클라이언트 배포 주소가 서브도메인 이라 충돌 이슈가 있을 수 있다고 해서 시도 하지 않았다. 그래서 적용한 것이 GCP VM에 Nginx 리버스 프록시 + Let's Encrypt Nginx (엔진엑스)는 고성능 오픈소스 웹 서버 이자 리버스 프록시, 로드밸런스, HTTP캐시등 다양한 역할을 할 ..
git Action으로 Spring boot CI/CD 환경 구축 - gradle.yml 작성
·
git
[git Action 이름 설정 ]name: Java CI/CD with Gradle and Docker //Action의 이름 [워크플로우 트리거 설정] backdev 브랜치에 푸시 할 때마다 발생 하게 할 것이라는 의미 on: push: branches: ["backdev"]아래는 다른 트리거들을 정리해 본 것으로 프로젝트 상황에 맞는 트리거로 적용 하면 된다. 더보기- push on: push: branches: ["main", "backdev"] //두개라면 쉼표로 이어서 작성. - pull_request PR이 생성되거나 업데이트 될 때 실행 된다. on: pull_request: branches: ["main"] - workflow_dispatch 수동 실행용 트리거로 ..
해니01_15
코딩구르르르