인프런 커뮤니티 질문&답변

b0i4s님의 프로필 이미지

작성한 질문수

쥬쥬와 함께 하루만에 시작하는 백엔드 - 스프링, 도커, AWS

5-2 AWS 배포하기

docker에 관하여 질문 드립니다.

해결된 질문

23.11.27 15:59 작성

·

208

1

안녕하세요 우선 끝까지 강의 잘들었습니다!!! docker 부분이 아직 익숙하지 않아 질문드립니다

  1. docker를 따라 설치하니 저장소 같은 곳에 이미지가 저장되는 것을 확인하였습니다.

  2. 해당 이미지를 aws 인스턴스에서 받아서 바로 사용할 순 없는건가요? -> 굳이 git clone으로 프로젝트를 받아와야 하는지 궁금합니다 / docker 저장소에 이미지를 올리고 바로 받아서 실행하면 되는게 아닌가 싶어서 질문드립니다...

  3. 2.가 만약 틀린거라면 build/libs에 있는 파일이 직접적으로 실행을 시키면서 애플리케이션이 실행되는 것 같은데 이 이미지를 굳이 docker 저장소에 올리는 이유가 궁금합니다.

답변 1

0

쥬쥬님의 프로필 이미지
쥬쥬
지식공유자

2023. 11. 27. 22:10

안녕하세요. 지식공유자 쥬쥬입니다 !

 

말씀하신대로, 일반적인 컨테이너 서비스를 배포하는 것은 다음과 같은 Flow를 따릅니다.

  1. CI 과정에서 애플리케이션을 빌드하고 Contianer Image Registry(ECR, Docker Hub등)에 저장합니다

  2. 배포되어있는 컨테이너 오케스트레이션 서비스(k8s)등의 이미지 태그를 [1]번에서 사용한 것으로 바꾸어줍니다 (k8s deploy, default : rolling update)

     

     

EC2와 같이 컴퓨팅 인스턴스에서 사용하는 배포 Flow는 다음과 같습니다.

  1. Java가 설치된 EC2 인스턴스를 템플릿을 준비합니다.

  2. CI/CD 배포도구 (CodePipline 등)을 이용해 애플리케이션을 빌드하고 새로운 EC2 인스턴스를 띄우며 새로운 버전의 jar파일을 실행하도록 합니다.

  3. 기존 EC2 인스턴스를 지우며 새 버전의 애플리케이션이 띄워져 있는 EC2로 교체해줍니다

 

위와 같은 Flow를 현재 입문용 강의에서는 구현이 어렵다고 판단해, 소스가 원격 저장소에서 새로운 애플리케이션을 가져와 손쉽게 배포하기 위해서는 원격 인스턴스에서 git pull & docker build를 이용해 서버를 띄우는 것이 가장 간단하다고 판단해 강의를 이렇게 제작하게 되었습니다.

 

현업에서 사용하는 배포 도구와 과정이 궁금하신다면, 여러가지 유용하신 링크를 공유드립니다.

 

 

배포 파이프라인을 캡슐화한 서비스인 AWS Elastic Beanstalk도 입문과정에서 많이 사용하시는 것 같습니다.

 

감사합니다 !

b0i4s님의 프로필 이미지
b0i4s
질문자

2023. 12. 02. 23:49

답변 감사합니다! 두리뭉술하게 질문드렸는데 자세하고 많은 자료까지 답변해주셔서 감사합니다!

b0i4s님의 프로필 이미지

작성한 질문수

질문하기