<aside> 💡 Redis 서버 구축

SpringBoot에서 H2 Database를 메모리에서 돌리듯 Redis도 비슷한 의존성이 있을 것이라 생각했었습니다. 그럼 별다른 설치를 하지 않고도 로컬 환경에서 테스트를 해볼 수 있을거고 큰 리소스가 들어가지 않을 것 입니다. 하지만 그런 의존성이 없기 때문에 로컬 환경에서 시도해볼 수 있는 방법으로는 테스트 컨테이너, 로컬 환경에서 Redis를 직접 띄우는 방법입니다. 앞선 글인 MySQL에서도 나왔지만 로컬 환경에서 직접 띄울 경우 각 개발자 모두가 Redis를 매번 개발할 때마다 띄운상태여야해서 불필요한 리소스를 사용하게되는 셈입니다. 이러한 문제를 해결하기 위해 이번에도 NAS서버의 Docker기능을 이용하여 Redis를 구축해보겠습니다.

아! AWS의 Elastic Cache를 프리티어로 이용해볼 수도 있지만 AWS의 Elastic Cache는 외부에서 접속이 불가하기 때문에 사용할 수 없습니다. 제 생각으로는 다른 RDS나 NoSQL DB보다 보안에 취약해서 접근하지 못하게 막는 것이 아닌가 싶습니다! (예전에 사용해볼 때 우선 접근 후 아이디와 패스워드를 치는 방식으로 되어있더라구요!)

</aside>

SynologyNAS의 Docker Redis 서버 구축

  1. SynologyNAS의 Container Manager에 접속하여 레지스트리 탭을 클릭 후 redis를 검색하여 이미지를 불러옵니다.

    Untitled

  2. 이미지 탭을 확인해보면 redis 이미지가 생성되있는 것을 볼 수 있습니다.

    Untitled

  3. 컨테이너 탭으로 넘어가서 생성 클릭 후 redis 이미지를 선택하고, 컨테이너 이름을 지정합니다.

    Untitled

  4. redis의 기본 포트는 6379입니다. 외부 포트도 동일하게 사용하는 것이 없으니 6379로 설정했습니다.

    Untitled

  5. redis는 앞선 MySQL 컨테이너를 올릴 때와는 다르게 컨테이너에 볼륨을 NAS서버의 파일(redis.conf)과 맵핑해서 이어줍니다.

    5.1. 파일 추가를 눌러 NAS 서버의 폴더에 미리 작성해둔 redis.conf를 선택합니다.

    5.2. 그리고 오른쪽 빈칸에는 NAS 서버의 redis.conf를 Redis Container의 어디로 옮길건지 경로를 적어줍니다.

    Untitled

    5.3 redis.conf 파일

    Untitled

<aside> ❓ 왜 이런 작업을 해야하는걸까요?

우선 redis는 redis.conf 파일을 이용하지 않아도 내장된 기본 구성을 사용하여 파일 없이 시작할 수 있습니다. 하지만 redis 공식 홈페이지에서도 이런 방법은 권고하지 않고 있으며 테스트 및 개발 목적으로만 사용하라고 나와있습니다.

사실 위와 같이 별 다른 설정을 하지 않아도 되긴합니다만, NAS 서버의 경우 제 개인 서버이기도 하기에 외부에서 아무나 접속할 수 있게끔 설정해두는 것은 좀 보안적인 측면에서 위험할 것이라고 판단되어 비밀번호 설정이 필요했었습니다. 이 비밀번호 설정을 하기 위해 redis.conf 파일을 사용해야했기 때문에 redis.conf 파일을 직접 작성하기보다 쉽게 이동시키고 수정하기 위해 NAS 서버의 폴더와 컨테이너 볼륨을 마운트 시켜서 사용했습니다.

</aside>

  1. 위 작업을 모두 완료하면 정상적으로 redis를 띄울 수 있게됩니다.

트러블 슈팅

Untitled

redis를 접속하여 AUTH 명령어를 입력시 인증 실패 현상이 발생되었습니다. 설정 파일인 redis.conf 파일을 불러오지 못해서 그런 것 같은데 생각해보니 redis가 시작될 때 어느 설정 파일을 읽어오라고 명시해줘야하는데 명시하지 않아서 발생했던 문제였습니다.