inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

해결된 질문

175

송재근

작성한 질문수 6

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 실행으로 배포 완료

java mysql spring-boot kafka redis

답변 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도 독립된 서버에 설치할 수 있고요.

 

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

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

잘 해내시길 바랍니다!

1

송재근

사랑합니다

@Version 어노테이션이 붙은 필드는 낙관적 락이든 비관적 락이든 업데이트가 됩니다.

0

32

1

consumer에서 에러가 발생할 경우 데이터 유실 문의

0

49

2

게시글 테스트 데이터 삽입

0

51

2

정렬, 필터, 검색 등의 조건이 붙을 경우 최적화할 수 있는 방법이 무엇이 있을까요?

0

104

2

좋아요 기능 정합성 보장 방법

0

98

2

좋아요 동시성처리 최적의 선택?

1

138

2

프론트엔드 msa 환경 api 주소 통합? 과 서버끼리 통신 방식에대해

0

92

2

안녕하세요 무한스크롤 강의듣다가 질문이 있습니다.

0

61

1

조회수 조회 로직 질문

1

67

2

비로그인 유저도 어뷰징 방지 정책

1

73

2

CommentServiceTest의 테스트 로직 질문

0

54

2

무한 스크롤 방식에서 페이지 번호 방식 쿼리의 문제점 의문

1

74

2

path 쿼리 관련 질문드립니다!

0

60

2

antigravity 에디터를 쓰신다면 종료해주세요

1

123

0

프로젝트 구조

0

88

2

article_like_count api test

0

79

2

이벤트 페이로드 객체의 생성 방식이 팩토리 메서드 패턴이 아닌 빌더 패턴인 이유가 궁금합니다!.

0

104

2

[33. 좋아요 수 구현] 에서 테스트 하는 화면 동시성 문제

0

92

2

findByPath에서 articleId로도 검색을 해야 할 것 같아요.

0

94

3

jpa ddl-auto none을 하는 이유와 join 방법

0

98

2

팩터리 메소드와 response 객체 사용 이유가 궁금합니다!

0

91

2

커서 기반 페이지네이션 과 무한 스크롤링

0

112

2

게시글 생성 로직에서 오류 발생시 redis 게시글 수 되돌리기

0

97

2

멀티 모듈이 아닌 MSA 환경에서 common

0

158

2