inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

비전공자도 이해할 수 있는 Docker 입문/실전

docker AWS EC2 Redis,Mysql를 통한 배포

132

KMC

작성한 질문수 42

0

안녕하세요 강사님 제가 강사님 강의를 즐겨듣는 수강생입니다.

질문1)제가 채팅과 로그인 에 관해서 서버 배포를 하고 싶은데 채팅내용이나 이런거는 Redis를 이용해 배포하고 로그인 회원가입등은 Mysql 을 이용한다고 가정했을 때 Redis는 RDS를 이용하는 게 나을까요?

-- 이 부분이 아예 감이 안 잡혀서 구조 한번만 설명좀 해 주시면 감사하겠습니다.

 

질문2) 만약 협업 프로젝트를 한다고 가정하면 EC2에 직접 들어가서 compose.yml을 작성하는 거 외에는 답이 없을까요? (제가 만약 채팅을 담당한다고 가정했을때 질문1)과 연관지어서 설명좀 해 주시면 감사하겠습니다. 현업에서는 어떻게 하는 건가요? 일단 CI/CD를 들어볼 예정입니다.)

docker docker-compose docker-volume docker-image container ecr

답변 2

0

JSCODE 박재성

안녕하세요 한준님 ! 질문 너무 잘 해주셨습니다 !

궁금증을 해소해드리기 위해 핵심 포인트를 기준으로 차근차근 설명드려볼게요 ~

 

"Redis는 RDS를 이용하는 게 나을까요?"

-> 우선 RDS(Relational Database Service)는 관계형 DB 전용 서비스로서,
Redis는 RDS로 제공이 되지 않아요 ! Redis는 사용 및 운영 방법이 다양해요 !
크게 EC2 내부 Redis 혹은 AWS ElasticCache 와 같은 클라우스 서비스로
Redis를 사용해볼수 있어요 ~

도커 강의를 완주한 현 시점에서 로그인과 회원가입 및 채팅 서비스 프로젝트의 구조를 아래 처럼 가져가보시길 추천드려요 ~

Spring Boot 서버 (EC2)

└──로그인/회원가입 → MySQL (Amazon RDS) : 유저 정보, 로그인, 회원가입 등 영구적인 데이터 저장.

└── 채팅 메시지 송수신 → Redis (EC2 내부 Docker) : 실시간 채팅 메시지 저장, 채팅방 목록 관리.

 

"만약 협업 프로젝트를 한다고 가정하면 EC2에 직접 들어가서 compose.yml을 작성하는 거 외에는 답이 없을까요?"
-> EC2에 직접 들어가서 작성하는 방식은 장기적으로 비효율적이에요 ~
현업에서는 코드 기반으로 모든 인프라와 배포 과정을 자동화해요 !!
채팅을 담당하는 백엔드 개발자일 경우 크게 아래와 같은 플로우를 가지게 됩니다 :)

1. Spring Boot 프로젝트 생성

2. application.yml에서 Redis 연결 주소 지정 → redis.host = redis (← docker-compose 기준)

3. docker-compose.yml 작성 후 Git에 포함 → Spring Boot + Redis 컨테이너 구성

4. CI/CD 파이프라인 구성 (ex. GitHub Actions + CodeDeploy 등등)

5. EC2 인스턴스에서 docker compose up으로 Redis 포함 배포

이해하기 쉽게 설명드리자면 EC2로 직접 접속하지 않고,
compose.yml은 보통 Git에 포함시켜두고, CI/CD 실행 중에 compose.yml을 사용해요 ~~

 

혹시라도 추가로 궁금한 점이 있으시면 언제든 편하게 질문 주세요 ~~😊

아래 링크는 전체적인 큰 그림을 그리시는데 도움이 되실것 같아 같이 첨부드려요 ~

다양한 사례의 프로젝트 구조들을 참고하시면, 한준님의 프로젝트에 맞는 구조에 대한 감을 찾으시는데 도움이 될거요 :)

https://develop-706.tistory.com/40

https://catalina.tistory.com/entry/CICD-%EC%84%B1%EA%B3%B5%EA%B8%B0-SpringBoot-AWS-EC2-RDS-ALB-S3-Github-Actions

https://blossom6729.tistory.com/16

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 전한준님.

Docker와 AWS EC2를 활용한 배포에 대해 두 가지 질문을 주셨습니다. 아래에서 각 질문에 대한 답변을 드리겠습니다.

질문 1: Redis와 MySQL의 구조적 사용

채팅과 로그인 기능을 구현할 때의 데이터 저장 전략:

  1. Redis 사용 이유:

    • Redis는 인메모리 데이터 스토어로, 주로 높은 속도와 성능을 요구하는 서비스(예: 채팅 메시지)에 적합합니다.
    • 메시지 큐 또는 캐시 역할로 매우 효율적이며, 실시간 데이터를 다루는 서비스에 유리합니다.
  2. MySQL 사용 이유:

    • 로그인 및 회원가입 정보는 영구 저장이 필요하므로, 데이터베이스는 관계형 DB인 MySQL이 적합합니다.
    • 데이터의 중복을 방지하고 강력한 트랜잭션 지원을 제공합니다.

Redis RDS 사용 여부:
AWS RDS는 관계형 데이터베이스 서비스이기 때문에 Redis와는 조금 다릅니다. Redis는 ElastiCache와 같은 서비스에서 관리형으로 제공되며, 채팅 관련 데이터를 처리하기 위해 ElastiCache를 사용하는 것이 적절합니다.

질문 2: 협업 프로젝트에서의 구성 파일 관리

EC2에서 docker-compose.yml 파일 작성:

  1. 직접 작성:

    • 가장 기본적인 방법으로, EC2에 SSH로 접속하여 docker-compose.yml 파일을 직접 작성하거나 스크립트를 사용해 자동화할 수 있습니다.
  2. GitHub 및 CI/CD 활용:

    • 협업 시에는 보통 GitHub과 같은 버전 관리 도구를 사용하여 소스 코드를 관리하고, CI/CD 도구(예: GitHub Actions)로 자동 배포 파이프라인을 구축합니다.
    • 이렇게 하면 코드 변경 시 자동으로 docker-compose.yml 파일의 변경도 반영되며, 인스턴스에서 자동으로 파일이 배포됩니다.

현업에서의 접근 방법:
- 대부분의 현업에서는 Git을 통한 소스 코드 관리와 CI/CD 파이프라인을 통해 자동 배포를 설정합니다. 개발 환경에서의 변경 사항이 자동으로 프로덕션 환경에 배포되기 때문에 협업과 유지 보수가 용이합니다.

관련된 유사한 질문 및 답변 참조:
- docker compose 를 이용하는 방법? - Docker Compose 설정 및 실행에 대한 기본적인 방법을 설명합니다.
- AWS 환경에서 Docker Compose 파일 관리 - AWS에서의 Docker Compose 파일 활용 방법을 다루고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

EC2 터미널에서 docker pull

0

60

2

AWS ECR

0

56

2

FROM openjdk:17-jdk 현재 기준 dockerhub에 없습니다

1

98

2

Redis 볼륨 설정?

0

112

2

컨테이너의 IP

0

78

2

도커 이미지를 만들 때 application.yml

0

100

2

compose.yml 관리

0

86

2

ECR 리포지토리에 이미지가 3개가 보입니다.

0

76

2

액세스 키 등록하는 시점 관련 질문이 있습니다.

0

81

1

depends_on에 따른 컨테이너 실행 순서

0

74

2

실제 웹 서비스 배포 시 질문

0

80

2

도커 volume 질문

0

65

3

HTTPS로도 받고 싶으면 docker compose에 443도 쓰면 될까요?

0

71

2

sql 볼륨 폴더 지우면 데이터베이스 데이터 날라가는거 아닌가요?

0

70

2

39강 도커파일 빌드 경로 질문이 있습니다.

0

67

2

도커파일 copy

0

69

2

실무에서 docker compose up --build를 할 때

0

182

2

mysql_data 폴더 내부에 다른 파일이 있는데도 잘 되는 경우

0

83

2

도커 허브에서 postgres 버전 확인하는 법

0

126

2

보충 자료와도 관련된 추가 내용

1

81

1

현업에서 MySQL은 RDS와 도커 볼륨 중 어떤 걸 사용하나요?

0

105

2

노션 자료에 안 보이는 이미지가 있습니다

0

98

1

도커 허브에서의 latest가 가장 최신인 게 맞나요?

0

114

2

docker image ls 실행 시 나오는 내용이 다릅니다

0

84

2