강의

멘토링

로드맵

Inflearn brand logo image

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

송재근님의 프로필 이미지
송재근

작성한 질문수

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

강의 완강 후 다시 듣는 중, 배포 도전...?

해결된 질문

작성

·

152

0

만들어진 게시판을 간단하게 배포를 하려면 어떤 순서로 하는 것이 좋을까요? 직접 배포를 해보고 데이터의 이동 흐름을 보고 싶어서요.

 

GPT 선생님은 아래와 같이 하라고 하는데, 선생님께서 생각하는 간단한 방법이 있는지 궁금합니더...

 

🚀 간단한 배포 방법

  1. Docker Compose 파일 작성 (docker-compose.yml)

  2. 애플리케이션 컨테이너화 (Dockerfile)

  3. 서버(배포 환경)에서 실행

1⃣ docker-compose.yml을 작성해서 모든 서비스(MySQL, Redis, Kafka, App)를 한 번에 실행
2⃣ Dockerfile을 작성해서 애플리케이션을 컨테이너화
3⃣ 서버에서 docker-compose up -d --build 실행으로 배포 완료

답변 1

1

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

재근님, 안녕하세요!

강의 완강하시고 배포까지 연습해보고 계시군요! 대단하십니다! 👍

 

일단 배포 전략은 너무 다양할 수 있어서, 너무 강의에 국한해서 진행할 필요는 없을 것 같습니다!

개인적으로는 단일 애플리케이션 배포 전략에 대해 따로 경험해보고 진행해보는걸 추천드립니다.

본 강의는 MSA 방향성 때문에 애플리케이션도 많아서, 아마 제대로 띄우려면 복잡성도 크고 서버 비용이 들어갈 수도 있을 것 같네요.

 

정말 단순하게 서버 1대에 모든걸 배포하는 상황에서는 다음과 같이 할 수 있을 것 같습니다.(사용하시는 서버 스펙에서 다 실행이 될진 모르겠지만)

MySQL/Redis/Kafka를 서버 로컬에 띄워주고, 각 애플리케이션도 포트를 모두 달리 해서 띄워줍니다.

Nginx 서버를 설치하고, api path에 따라서 특정 포트로 실행되고 있는 애플리케이션으로 라우팅해주도록 합니다.

예를 들어, 서버에 80포트(http)로 /article url path로 접근하면,

nginx가 그 요청을 받아서 9000포트에 실행된 게시글 서비스로 라우팅해주는 구성입니다.

 

위 과정에서는 Docker는 쓰셔도 좋고, 안 쓰시고 직접 설치해보셔도 좋습니다.

Docker가 분명 편리함은 있지만, 직접 설치하면서 이슈 해결해 나가는 것도 좋은 경험이 됩니다.

https로 통신해보셔도 좋고요!

무중단 배포 또는 배포 자동화를 추가로 고민해보셔도 좋습니다.

 

조금 더 심화한다면,

각 마이크로서비스별로 개별 서버 군에 배포한 뒤, 

각 서버 군 간에는 로드밸런서를 이용하여 통신을 해볼 수도 있습니다. (개별 서비스별로 scale-out 가능하도록)

MySQL, Redis, Kafka도 독립된 서버에 설치할 수 있고요.

 

일단 간단한 방법으로 해보시는걸 추천드리네요.

배포는 간단해보여도 인프라 개념이 잡혀있지 않으면 구성이 어떻게 되어있는건지 이해가 어려울 수 있습니다.

잘 해내시길 바랍니다!

송재근님의 프로필 이미지
송재근
질문자

사랑합니다

송재근님의 프로필 이미지
송재근

작성한 질문수

질문하기