Spring Boot 프로젝트를 만들다 보면 application.yml이라는 파일을 자주 보게 된다.
처음에는 단순한 설정 파일처럼 보이지만, 실제로 프로젝트를 개발하고 배포하다 보면 이 파일이 애플리케이션 전체 동작에 꽤 큰 영향을 준다는 것을 알게 된다.
서버 포트, 데이터베이스 연결, 파일 업로드 제한, JPA 설정, Redis 설정, 배포 환경 설정 등 여러 중요한 값들이 YAML 파일에서 관리될 수 있다.
이번 글에서는 Spring Boot에서 YAML 파일이 어떤 역할을 하는지 정리해보려고 한다.
YAML 파일이란 무엇일까?YAML은 설정값을 사람이 읽기 쉽게 작성할 수 있는 데이터 표현 방식이다.
Spring Boot에서는 보통 application.yml 파일을 사용해서 프로젝트의 설정값을 관리한다.
YAML의 가장 큰 특징은 들여쓰기를 통해 설정의 계층 구조를 표현한다는 점이다.
예를 들어 Spring과 관련된 설정, 서버와 관련된 설정, 데이터베이스와 관련된 설정을 각각 나누어 정리할 수 있다.
이런 구조 덕분에 설정이 많아져도 비교적 읽기 쉽고, 어떤 설정이 어느 영역에 속하는지 파악하기 쉽다.
Spring Boot에서 YAML 파일이 필요한 이유Spring Boot 애플리케이션은 실행될 때 다양한 설정값이 필요하다.
예를 들어 서버를 몇 번 포트로 실행할지, 어떤 데이터베이스에 연결할지, 파일 업로드 크기는 어디까지 허용할지, JPA는 어떤 방식으로 동작하게 할지 같은 설정들이 필요하다.
이런 값을 Java 코드 안에 직접 작성하면 관리가 불편해진다.
나중에 서버 포트를 바꾸거나 데이터베이스 주소를 변경해야 할 때마다 코드를 수정해야 하기 때문이다.
반면 YAML 파일에 설정을 분리해두면, 애플리케이션 코드와 실행 환경 설정을 분리해서 관리할 수 있다.
즉, Java 코드는 기능 구현에 집중하고, YAML 파일은 실행 환경과 설정값을 담당하는 구조가 된다.
application.yml은 프로젝트의 환경 설정 파일이다Spring Boot에서 application.yml은 애플리케이션의 기본 설정 파일이라고 볼 수 있다.
게시판이나 커뮤니티 프로젝트를 예로 들면, 이미지 업로드 기능을 사용할 때 업로드 가능한 파일 크기를 제한해야 한다.
이런 제한값도 YAML 파일에서 관리할 수 있다.
또한 JPA를 사용한다면 데이터베이스 연결 정보나 Hibernate 관련 설정도 YAML 파일에서 관리할 수 있다.
Redis를 사용하는 경우에는 Redis 서버 주소나 포트 같은 설정도 필요하다.
즉, YAML 파일은 단순히 보조 파일이 아니라 애플리케이션이 어떤 환경에서 어떻게 실행될지를 정하는 중요한 설정 파일이다.
환경별 설정을 나눌 수 있다실제 프로젝트에서는 개발 환경과 운영 환경의 설정이 다르다.
로컬 개발 환경에서는 내 컴퓨터에 설치된 데이터베이스를 사용할 수 있고, 운영 서버에서는 AWS나 별도의 서버에 있는 데이터베이스를 사용할 수 있다.
이때 같은 설정을 하나의 파일에만 관리하면 헷갈릴 수 있다.
Spring Boot에서는 프로필이라는 기능을 사용해서 환경별 설정을 나눌 수 있다.
예를 들어 로컬 개발 환경, 테스트 환경, 운영 환경을 구분해서 각각 다른 설정을 적용할 수 있다.
이렇게 하면 개발할 때는 로컬 설정을 사용하고, 실제 배포할 때는 운영 설정을 사용하는 식으로 관리할 수 있다.
프로젝트가 커질수록 이런 환경 분리는 매우 중요해진다.
민감한 정보는 조심해야 한다YAML 파일에서 가장 주의해야 할 부분은 보안 정보다.
데이터베이스 비밀번호, JWT 시크릿 키, AWS 접근 키, 외부 API 키 같은 값은 절대 공개되어서는 안 된다.
특히 GitHub 같은 공개 저장소에 이런 정보가 들어간 YAML 파일을 올리면 매우 위험하다.
누군가 그 값을 확인하면 데이터베이스나 서버, 외부 서비스에 접근할 수 있기 때문이다.
그래서 실제 운영 환경에서는 민감한 값들을 YAML 파일에 직접 적기보다 환경변수로 분리해서 관리하는 것이 좋다.
YAML 파일에는 어떤 값을 사용할지에 대한 구조만 두고, 실제 비밀번호나 키 값은 서버 환경에서 주입받는 방식이 더 안전하다.
설정 파일은 편리하지만, 보안 정보가 들어갈 수 있다는 점 때문에 항상 조심해서 관리해야 한다.
YAML과 properties의 차이Spring Boot에서는 application.yml 대신 application.properties 파일을 사용할 수도 있다.
둘 다 설정 파일이라는 점은 같다.
차이는 작성 방식이다.
properties 파일은 설정을 한 줄씩 나열하는 방식에 가깝다.
반면 YAML은 들여쓰기를 사용해서 계층 구조로 표현한다.
설정이 적을 때는 둘 중 어느 것을 사용해도 큰 차이가 없다.
하지만 설정이 많아질수록 YAML 방식이 더 읽기 편하게 느껴질 수 있다.
예를 들어 데이터베이스 설정, JPA 설정, 파일 업로드 설정, Redis 설정처럼 여러 설정이 많아지면 YAML은 구조가 한눈에 들어오는 장점이 있다.
다만 YAML은 들여쓰기가 매우 중요하다.
들여쓰기가 잘못되면 Spring Boot가 설정을 의도한 대로 읽지 못할 수 있다.
들여쓰기가 중요한 이유YAML은 중괄호나 세미콜론이 아니라 들여쓰기로 구조를 표현한다.
그래서 한 칸만 잘못 들어가도 설정의 의미가 달라질 수 있다.
예를 들어 어떤 설정이 Spring 아래에 있어야 하는데 들여쓰기가 맞지 않으면, Spring Boot가 해당 설정을 제대로 인식하지 못할 수 있다.
이런 문제는 처음에는 찾기 어렵다.
코드에는 문제가 없어 보이는데 설정이 적용되지 않는다면, YAML 파일의 들여쓰기나 프로필 설정을 먼저 확인해보는 것이 좋다.
YAML을 작성할 때는 탭보다 스페이스를 사용하는 것이 안전하고, 프로젝트 안에서 들여쓰기 규칙을 통일하는 것이 좋다.
실제 프로젝트에서 YAML이 하는 일게시판이나 커뮤니티 프로젝트를 기준으로 보면 YAML 파일은 여러 기능과 연결된다.
이미지 업로드 기능이 있다면 업로드 가능한 파일 크기를 제한하는 설정이 필요하다.
JPA를 사용한다면 데이터베이스 연결과 Hibernate 동작 방식을 정하는 설정이 필요하다.
Redis를 사용한다면 Redis 서버와 연결하기 위한 설정이 필요하다.
Nginx나 프록시 서버 뒤에서 Spring Boot를 실행한다면, 요청 헤더를 올바르게 처리하기 위한 설정도 필요할 수 있다.
이처럼 YAML 파일은 프로젝트의 여러 기술 설정을 한 곳에서 관리하는 역할을 한다.
처음에는 눈에 잘 띄지 않지만, 실제 배포 과정에서는 YAML 설정 하나 때문에 서버가 정상 실행되지 않거나, 데이터베이스 연결이 실패하거나, 파일 업로드가 막히는 일이 생길 수 있다.
그래서 Spring Boot 프로젝트를 제대로 운영하려면 YAML 파일의 역할을 이해하는 것이 중요하다.
YAML 파일을 잘 관리하면 좋은 점YAML 파일을 잘 관리하면 프로젝트 운영이 편해진다.
가장 먼저 설정값을 한 곳에서 확인할 수 있다.
서버 포트, 데이터베이스 설정, 파일 업로드 제한, Redis 설정 등을 코드 곳곳에서 찾을 필요 없이 설정 파일에서 확인할 수 있다.
또한 환경별 설정을 분리할 수 있다.
로컬 개발 환경과 운영 서버 환경은 다르기 때문에, 각 환경에 맞는 설정을 따로 관리하면 실수를 줄일 수 있다.
코드와 설정을 분리할 수 있다는 점도 장점이다.
애플리케이션의 핵심 기능은 Java 코드에 두고, 바뀔 가능성이 있는 값은 YAML 파일에서 관리하면 유지보수가 쉬워진다.
배포할 때도 설정 파일의 역할은 중요하다.
운영 서버에서 데이터베이스 주소나 외부 서비스 연결 정보가 바뀌더라도, 코드 전체를 수정하기보다 설정을 조정하는 방식으로 대응할 수 있다.
운영 환경에서는 더 신중해야 한다로컬 개발 환경에서는 설정을 조금 잘못해도 큰 문제가 되지 않을 수 있다.
하지만 운영 환경에서는 작은 설정 실수도 서비스 장애로 이어질 수 있다.
예를 들어 데이터베이스 연결 정보가 잘못되면 서버가 실행되지 않을 수 있다.
파일 업로드 제한이 너무 낮으면 사용자가 이미지를 올리지 못할 수 있다.
반대로 제한이 너무 높으면 서버 부담이 커질 수 있다.
JPA 설정도 운영 환경에서는 신중해야 한다.
개발 중에는 편의를 위해 사용하는 설정이 운영 환경에서는 위험할 수 있다.
특히 데이터베이스 테이블 구조와 관련된 설정은 실제 데이터에 영향을 줄 수 있기 때문에 조심해야 한다.
운영 서버에서는 설정을 변경한 뒤 반드시 정상적으로 적용되었는지 확인하는 습관이 필요하다.
정리YAML 파일은 Spring Boot 프로젝트에서 애플리케이션 설정을 관리하는 중요한 파일이다.
특히 application.yml은 서버 실행 환경, 데이터베이스 연결, JPA 설정, 업로드 제한, Redis 설정 등을 관리하는 역할을 한다.
핵심을 정리하면 다음과 같다.
YAML은 사람이 읽기 쉽게 설정값을 표현하는 파일 형식이다.
application.yml은 Spring Boot 애플리케이션의 주요 설정 파일이다.
프로필을 사용하면 로컬 환경과 운영 환경을 구분할 수 있다.
데이터베이스, JPA, Redis, 파일 업로드 같은 설정을 한 곳에서 관리할 수 있다.
민감한 정보는 YAML 파일에 직접 적지 않고 환경변수로 분리하는 것이 안전하다.
아래는 내가 직접 설정한 yaml 파일이다

댓글 0개
실시간 인기글






