강의

멘토링

로드맵

Inflearn brand logo image

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

김규혁님의 프로필 이미지
김규혁

작성한 질문수

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

Transactional Outbox 모듈 구현

샤드 할당 관련 질문 드립니다.

해결된 질문

작성

·

37

0

  • 학습 관련 질문을 최대한 상세히 남겨주세요!

  • 고민 과정도 같이 나열해주셔도 좋습니다.

  • 먼저 유사한 질문이 있었는지 검색해보세요.

  • 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

AssignedShard 클래스의 목적이 샤드를 균등하게 분배하는 것이라고 보이는데요

 

저는 처음에 스레드가 처리할 일을 분할해주는 거라고 생각했는데 찾아보니까 앱 인스턴스를 기준으로 샤드를 나누는 것이라고 하더라고요.

 

근데 앱 인스턴스는 말하자면 각각의 서버? 예를 들어서 포트 9000번을 A,B,C 서버에서 실행하면 그 각각을 앱 인스턴스라고 부른다고 봤습니다.

 

그리고 이렇게 각각 다른 서버에서 하나의 포트를 실행하려면 운영 환경에서 서버의 부담이 커질때 서버를 늘려주는 로드밸런싱?같은 기법을 쓸때 필요한 샤드 분배 기능같은데

 

나중에 운영환경에서 이런때를 대비해서 미리 구현하신건가요? 아니면 이런 지금 강의 환경 안에서도 이렇게 앱 인스턴스가 늘어나는? 상황이 있는건가요..

 

아직 공부중이고 모르는 부분도 좀 있다보니 설명이 두서없었습니다 ㅠ

답변 2

0

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

규혁님, 안녕하세요!

 

강의 로컬 환경에서는 단일 인스턴스만 띄우지만, 실제 운영에서의 스케일 아웃 환경을 고려하여 구성한 것이 맞습니다.

로컬에서도 포트 다르게 여러 대 띄워보면, 적절히 샤드가 분배되는 것을 확인해보실 수 있습니다!

0

안녕하세요, 인프런 AI 인턴입니다. 김규혁님.

질문 주신 내용에 대한 이해를 돕고자 설명드리겠습니다. 샤딩(sharding)은 대규모 시스템 설계에서 중요한 개념으로, 데이터베이스의 성능을 높이고 부하를 분산하기 위한 방법입니다. 아래에서 질문에 대한 부분별로 답변을 드리겠습니다:

AssignedShard 클래스의 역할

AssignedShard 클래스는 각 앱 인스턴스에 샤드를 균등하게 분배하는 역할을 합니다. 즉, 데이터나 작업을 여러 서버에 고르게 분산하여 처리하도록 돕는 것입니다. 이는 대규모 시스템에서 서버 부하를 줄이고 성능을 향상시키는 핵심입니다.

앱 인스턴스와 서버

맞습니다. 각 앱 인스턴스는 여러 서버에서 각각의 포트(예: 9000번)를 사용하여 실행할 수 있으며, 이러한 개념은 서버가 늘어날 때 사용됩니다. 예를 들어, 로드밸런싱을 통해 서버 부담이 커질 때 각 앱 인스턴스가 적절히 샤드를 할당받아 처리하는 구조가 될 수 있습니다.

강의 내 구현 및 실제 운영 환경

강의에서는 이러한 샤드 분배 기법을 학습하고, 실제로 어떻게 작동하는지 이해하는 것이 목표일 수 있습니다. 운영 환경에서는 서버의 부하에 따라 인스턴스를 확장하고자 할 때 샤드 할당을 통해 확장성을 가질 수 있게끔 미리 설계되어 있는 경우가 많습니다.

실제 운영 환경에서는 서버의 부하에 따라서 즉각적으로 인스턴스를 추가하거나 줄이며, 이를 효과적으로 관리하기 위해 샤드 분배 메커니즘이 활용됩니다. 강의 환경에서도 이러한 개념을 익히고, 서버 확장 시 어떻게 샤드가 분배될 것인지를 미리 이해시키는 목적으로 구현되었을 가능성이 큽니다.

이미 유사한 질문과 답변에서 샤드와 라우팅의 개념, 구현에 대한 여러 가지 예시와 설명을 포함한 게시물이 있습니다. 참고하시면 이해에 도움이 되시리라 생각됩니다:

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

김규혁님의 프로필 이미지
김규혁

작성한 질문수

질문하기