프로젝트를 진행하다보면 실행하는 환경이 다양해진다. 본인의 PC에 Application 을 실행하던가, 테스트를 실행하던가, 혹은 개발 서버와 운영 서버를 분리하여 배포할 수도 있다. 다양하게 나누어지는 환경에서 각 환경마다 사용하는 설정이 다른 경우가 발생한다. 동일한 프로젝트에서 다른 설정을 이용하여 실행하도록 각 환경을 정의하는 것을 profile
이라고 부르며, Spring Boot 를 사용하면 profile 을 매우 간단하게 설정할 수 있다.
profile 을 분리하기 위해서는 서비스에서 어떤 환경이 필요한지 정리가 필요하다. 욜로가 서비스에서는 DB 설정에 따른 환경 분리가 필요했으므로, DB 별로 어느 환경에서 어느 설정을 셋팅해두어야 하는지 정리해보았다.
MySQL 은 보통 MySQL 그대로 사용하거나 테스트 시 H2 를 사용하기도 한다. H2 는 관계형 데이터베이스를 빠르게 사용하기 위한 임베디드 데이터베이스이다. 속도의 이점 때문에 보통 테스트 시에 사용하며 메모리에 저장되기 때문에 운영 환경에는 적절하지 않다.
서비스 운영 중 발생할 수 있는 모든 환경에서 접근해야 하는 MySQL 설정을 정리했다. 개발 서버에서 운영되는 데이터는 개발 MySQL 서버에 저장되도록 하고, 로컬 서버에서는 개발 서버로 배포하기 전에 개발의 편의성을 위해 로컬 MySQL 서버에 접근해야 한다.
그 외의 환경에서는 구현한 기능이 올바르게 동작하는 것을 확인하면 될 뿐, 데이터가 저장되는 위치가 MySQL 인지 H2 인지는 중요하지 않다. 단, 깃허브 서버에서 동작하는 빌드는 개발자가 제어할 수 없는 영역이다. MySQL 은 데이터베이스 특성 상 미리 적절한 데이터베이스와 테이블을 생성해두어야 하는데 깃허브 서버에서는 불가능하다. 따라서 H2 데이터베이스를 선택하였다.
Redis 는 MySQL 과는 달리 미리 데이터베이스 및 테이블을 정의하지 않아도 되어 데이터 저장이 유연하다. 그래서 깃허브 액션 모듈에서는 Redis 환경을 제공하는 곳도 있다. MySQL 과 마찬가지로 Redis 가 사용되는 환경을 정리해보았다.