[SPRING] Redis를 스프링에 적용해보자 (Feat. Docker)

wannabeing·2025년 5월 30일
0

SPRING

목록 보기
14/16
post-thumbnail

왜 Docker와 Redis를 같이 쓰는거죠?

도커(Docker)는 리눅스의 응용 프로그램들을 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트이다.

1. 팀워크에서의 이점

개발을 하다보면 팀원들과 언어나 프레임워크의 버전이 달라 오류가 나는 경우가 있을 수 있다. 도커를 사용하면 설치할 언어, 프레임워크, 패키지 등을 미리 코드 형태로 명시하고 어느 컴퓨터에서든 쉽게 자동으로 설치할 수 있다.

2. 서버에서의 이점

서버 또한 내 개발 환경과 같은 환경으로 만들 수 있다. 더 큰 장점은 서버를 옮기거나 늘릴 때 발휘된다.

만약 내가 서버에서 배포하고 있던 서비스의 인기가 많아져 서버를 늘리거나 더 좋은 서버로 이사를 가야한다고 가정해보자. 이 때 새로운 서버에 하나 하나 전 서버에서 쓰던 언어와 프레임워크를 설치하게 되면 매우 귀찮은 일이 될 것이다.

이 때 도커를 사용하게 되면 이미지만을 가져와 새로운 서버에 컨테이너를 만들어 쉽게 동일환 환경을 구축할 수 있다!

3. 자원적, 성능적으로 뛰어나다.

도커의 경우 다른 가상 환경 기술에 비해 가볍고 빠른 실행 속도를 가진다.

예시

건물이 있고 그 건물에 여러 회사가 입주해 있다고 생각해보자.
회사마다 물과 전기를 쓰기 위해서 건물에 있는 커다란 발전소와 물탱크를 각 회사가 나눠쓰게 된다.

각 회사마다 발전소와 물탱크를 설치하는 것이 아닌,
위와 같은 방법이 도커가 동작하는 방식이다.

기존의 가상화 방식(VM)은 각 가상 환경마다 독립된 OS가 존재하여 매우 무겁고 느릴 수 밖에 없었다.

그러나 도커의 가상화 방식은 새롭게 OS를 생성하지 않고 기존의 커널 OS 자원을 계승하여 사용한다. 또한 각 환경마다 사용할 수 있는 자원이 고정으로 정해져 있지 않아 유동적으로 변할 수 있다. 이러한 이유로 기존의 가상화 방식보다 훨씬 자원적, 성능적으로 뛰어날 수 밖에 없다.

필요한 부분만 추상화하여 가상환경으로 사용하는 것이다!


Docker 흐름 및 용어

도커 클라이언트(Docker Client)
도커 데몬에게 도커 API로 빌드, 실행, 설치를 요청하는 프로세스이다.
다수의 도커 데몬과 통신한다.

도커 데몬(Docker Daemon)
도커 클라이언트로부터 받은 요청을 처리하며 이미지, 네트워크, 볼륨, 컨테이너에 해당하는 도커 객체를 관리하는 프로세스이다.

도커 데스크톱(Docker Desktop)
도커 클라이언트-서버를 손쉽게 사용할 수 있도록 제공하는 프로그램이다.
도커 데스크톱에는 도커 클라이언트, 도커 데몬, 쿠버네티스, 도커 컴포즈 등이 포함되어 있다.

도커 레지스트리(Docker Registry)
도커에서 실행되는 이미지를 저장하는 저장소.
도커 허브(Docker Hub)가 주로 레지스트리 역할을 한다.

도커 객체(Docker Object)
도커에서 생성하고 사용하는 객체

이미지(Image)
도커 컨테이너를 생성하기 위한 읽기 전용 템플릿 명령어이다.
컨테이너 밀키트라고 할 수 있다.

컨테이너(Container)
이미지가 실행 가능한 상태에 해당하는 인스턴스
운영체제의 프로세스와 같은 개념이다.
컨테이너는 호스트 환경과 다른 컨테이너 환경과 격리되어 있다.


Docker 설치 (Mac)

https://formulae.brew.sh/formula/docker

brew install --cask docker

터미널에 homebrew로 설치하였다.


Redis 설치 (with Docker)

docker run -d --name redis -p 6379:6379 redis

터미널에 위 명령어로 Redis를 Docker에 설치하자.
DB 네임은 redis이고, 패스워드는 기본적으로 비밀번호가 없다.

DockerDesktop에 보면 설치된 레디스를 볼 수 있다!

레디스 CLI 접속

docker exec -it redis redis-cli

위 명령어로 레디스 CLI를 접속할 수 있다.

간단한 명령어를 아래와 같다.

ping           # PONG 나오면 OK
keys *         # 저장된 키 조회

Docker+Redis 연결 (인텔리제이)

프로젝트 루트 폴더에 docker-compose.yml 파일 생성을 하자.

version: '3.8'

services:
  redis:
    image: redis:latest
    container_name: redis-dev
    ports:
      - "6379:6379"
    restart: unless-stopped
  • 3.8: docker-compose 파일의 문법 버전
  • 컨테이너 이름: redis-dev
  • port는 6379
  • 재실행 전략

❓ docker-compose

💡 동기화 버튼 누르기

  • IntelliJ의 Services 탭에 redis-dev 서비스가 등록됨
  • 그 이후에는 IntelliJ 내에서 직접 Start / Stop / Logs / Exec Console 등을 클릭으로 제어할 수 있음
  • 다시 말해 터미널 없이도 Docker 컨테이너를 IntelliJ 안에서 다룰 수 있음

Seetings - Build… - Docker 에서 +로 추가하자.

이미 설치되어있으면 위와 같이 뜸!

인텔리제이 하단에 Services 탭에서 연결된 Docker 설정을 확인할 수 있다.
우리가 연결한 compose 파일의 내용대로 Docker 설정이 되어있고,
오른쪽 마우스 클릭 → Deploy 명령어로 설정한 프로그램들을 실행할 수 있다!


출처

Docker MacOS 최초설치
도커를 사용하는 이유는 뭘까

https://youtu.be/zh0OMXg2Kog?si=yDi7rY5n8FEg0gjo

profile
wannabe---ing

0개의 댓글