inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

AI 시대에도 살아남는 엔지니어의 조건, 미국 빅테크 시스템 디자인, 알고리즘 사고, 오픈소스 실무 완성

Monolithic vs Microservice 아키텍처 + Docker와 Kubernetes로 설계 (Feat, AWS, 리트코드) [업데이트]

Monolith 아키텍쳐 질문

해결된 질문

49

R J

작성한 질문수 8

0

안녕하세요 수업 내용중에 포함된 Slide와 설명이 맞지 않는 부분이 있는거 같아서 문의 드립니다. 영상에서는 단점으로 Vertical scaling만 가능하다고 언급하셨는데, 슬라이드에서는 수평적으로만 확장이 가능하다고 하셔서요. 제가 생각하기에도 하나의 코드 베이스에서 모든 기능이 작동해야하다 보니 Vertical scaling이 맞는거 같고 Slide내용이 잘못된거 같은데, 제가 잘못이해하고 있는것인지 확인부탁드리겠습니다.

이제 막 시작했지만 열심히 완주해보겠습니다. 감사합니다.

dbms/rdbms 소프트웨어-설계 시스템-디자인 인공지능(ai) ood

답변 1

0

미국달팽이

안녕하세요. RJ 님

좋은 질문입니다.

정확히 말씀드리면, Monolith 아키텍처도 Vertical Scaling과 Horizontal Scaling 모두 가능합니다.

예를 들어 하나의 Monolith 애플리케이션이 있다고 해보겠습니다.

[Client]

   |

   v

[Load Balancer]

   |

   +--> [Monolith Instance 1]

   +--> [Monolith Instance 2]

   +--> [Monolith Instance 3]

              |

              v

         [Shared DB]

이렇게 동일한 Monolith 애플리케이션 인스턴스를 여러 대 실행하고 Load Balancer 뒤에 배치하면 Horizontal Scaling이 가능합니다. 실제 운영 환경에서도 충분히 사용할 수 있는 방식입니다.

다만 Monolith의 제약은 Horizontal Scaling 자체가 불가능하다는 것이 아니라, 기능별로 독립적인 Scaling이 어렵다는 점에 있습니다.

이번에는 하나의 Monolith 안에 아래 기능이 같이 있다고 가정해보겠습니다.

Monolith Application

  - User

  - Payment

  - Search

  - Notification

트래픽이 Search 기능에만 몰려도 Search 부분만 따로 늘리기 어렵기 때문에 전체 Monolith 인스턴스를 복제하게 됩니다.

[Monolith 1]

  User

  Payment

  Search

  Notification


[Monolith 2]

  User

  Payment

  Search

  Notification


[Monolith 3]

  User

  Payment

  Search

  Notification

실제로는 Search만 더 많은 CPU가 필요한데 User, Payment, Notification까지 함께 복제되는 구조가 될 수 있습니다. 그래서 자원 사용이 비효율적일 수 있습니다.

반대로 Microservice라면 다음처럼 필요한 서비스만 독립적으로 확장할 수 있습니다.

User Service          x 2

Payment Service       x 2

Search Service        x 10

Notification Service  x 2

따라서 두 아키텍처의 차이는 이렇게 이해하시면 가장 정확합니다.

  • Monolith

    • Vertical Scaling 가능

    • Horizontal Scaling 가능

    • 다만 전체 애플리케이션 단위로 확장되는 경우가 많음

    • 기능별 독립 Scaling이 어려움

  • Microservice

    • Vertical Scaling 가능

    • Horizontal Scaling 가능

    • 서비스별 독립 Scaling 가능

    • 대신 네트워크 통신, 분산 트랜잭션, 배포 및 운영 복잡도가 증가함

그리고 말씀해주신 “하나의 코드베이스에서 모든 기능이 동작하니 Vertical Scaling이 더 자연스럽지 않나?”라는 생각도 충분히 이해할 수 있습니다. 초기 단계에서는 실제로 더 큰 CPU와 메모리를 가진 서버로 올리는 Vertical Scaling이 가장 단순한 선택이 될 수 있습니다.

하지만 트래픽이 더 증가하면 동일한 Monolith 인스턴스를 여러 대 배치하는 Horizontal Scaling도 사용할 수 있습니다.

Monolith의 단점은 Horizontal Scaling이 불가능한 것이 아니라, 특정 기능만 독립적으로 Scaling하기 어렵고 전체 애플리케이션을 함께 확장해야 할 수 있다는 점입니다.

질문해주신 부분이 맞고, 영상과 슬라이드의 표현이 혼동을 줄 수 있게 되어 있었습니다. 해당 부분은 수정하겠습니다. 꼼꼼하게 확인해주셔서 감사합니다.

수강해주셔서 감사드리며

좋은 하루 되시길 바랍니다

0

R J

설명이 명확합니다. 감사드립니다.

Substack 신청 문의

0

16

2

Substack 1년 제공 문의

0

43

2

차단 등 검증 로직의 위치

0

85

2

Substack 1년 제공

1

87

3

특별 학습 자료 프로모션 1년 멤버십 무료 제공 문의드립니다

0

74

2

특별 학습 자료 프로모션 1년 멤버십 제공 관련 문의 드립니다.

0

118

2

simcached를 검색을 했을때 해당 자료가 나오지 않는데 혹시 MemcachedGPU 라고 불리는 기술을 말씀하시는건가요?

0

93

1

유튜브 예제에서 흐름 관련 질문있습니다

0

75

2

Spotify 서비스 설계에서 transcoder service에 대해 문의 드립니다.

0

90

1

특별 학습 자료 프로모션 1년 멤버십 무료 제공 지원 확인 방법

0

151

2

[위치 이름 기반으로 호텔을 조회하는 메서드] 코드 질문 드립니다.

0

75

2

14강. 영화 DVD 대여 시스템 데이터베이스 스키마 설계에서 Inventory 테이블 질문있습니다.

0

97

2

Matching Service의 MQ 필요성, Cassandra의 필요성, Cassandara - RDB 동기화

0

115

2

Imgur 이미지 호스팅 서비스 질문

0

124

2

쿠폰 문의

0

119

1

Redis 랜덤 값 추가 시 메타데이터 저장

0

116

1

Blob Storage에서 파일 업로드에 대한 동시성을 어떻게 제어할 수 있을까요?

0

141

2

채팅을 영속할 DB로 RDB를 선택한 이유도 궁금합니다

0

337

2

URL 단축 서비스에서 redis counter를 사용하는 이유가 무엇인지 궁금합니다.

0

235

2

long url을 파티션키로 지정했을때 장점이 생각 안나네요 ㅎㅎ;;

0

162

2

실제 인터뷰에서도 Object Oriented Design 을 이런 과정으로 하는걸까요?

0

193

1

able to get all students who got a "d+" grade or lower 요구사항

0

130

1

number of copies 컬럼은 Inventory Table에 들어가야하지않을까요?

0

198

3

Spotify 서비스 시스템 디자인 및 스케일링에서 백업 클러스터 사용에 대한 문의

0

109

2