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

jchttl님의 프로필 이미지
jchttl

작성한 질문수

마이크로서비스 아키텍처 와 MSA 패턴 이해

MSA와 RAM 자원 관리 관련 문의

작성

·

216

0

강의 내용과 살짝 벗어난 질문일 수 있는데 궁금하여 문의 드립니다.

 

마이크로 서비스가 모놀리식에 비해서 여러면에서 자원을 효율적으로 사용 가능한 것으로 알고 있습니다.

 

하지만 실제 운영 하다보면 JVM 힙 설정에서 오히려 모놀리식보다 과하게 메모리가 사용될 수 밖에 없는

상황이 있을 수 있을 거 같아 좀 더 효율적으로 관리 할 수 있는 방안이 있는지 문의 드립니다.

 

 

예를 들어

모놀리식에서는 heap 최대최소 4G의 (G1 GC 정책)으로 큰 문제 없이 운용하다가

(CPU 및 기타 자원의 사용량은 충분다하고 할 경우)

 

마이크로서비스 20개로 변경을 하여 각 1개의 서비스(도커내 WAS)에 개당 1G (Palllel GC)로 적용할 경우 총 20G의 힙메모리가 필요하여 메모리로 인한 자원이 부족해 질수 있을텐데요.

(그렇다고 1G 이하로 설정하면 너무 비정상적으로 Full Gc가 발생하여 설정이 힘들다면)

 

이러한 상황인 경우 서비스가 지속적으로 늘어나는 상황에서는 오히려 많은 메모리 확장 혹은 추가의 서버(EC2) 증설이 필요한 상황이 발생할 텐데

 

힙메모리 관리 측면에서 모놀리식보다 효율적인 관리할 수 있는 방안이 있을까요?

 

답변 1

0

han jeong heon님의 프로필 이미지
han jeong heon
지식공유자

안녕하세요 ^ ^

질문 감사합니다. 다만 제 전문분야가 아니라서 정확히 답변드릴 수 없을 것 같습니다.

원론적인 답변을 드리면 모노리식 시스템에 비해 마이크로서비스 시스템의 리소스 자원은 초기에 많이 들 수 밖에 없습니다. 따라서 모든 시스템을 마이크로서비스로 무조건 개발하는 것은 바람직 하지 않다고 생각합니다.

다만 마이크로서비스가 자원 운용에 효율적이다는 말은 선택적 도메인 기능에 대해 사용량이 많을 때를 고려한 논리라 생각합니다. 따라서 말씀하신 것 조건 즉 자원이 부족한 상황에서 마이크로서비스로 시스템을 쪼개는 것은 바람직하지 않아 보이네요.

제 답변이 부족할 것 같아서 ^ ^;;; 참고 사이트 링크합니다.

원하시는 답변이 여기에 있는 것이 아닐까 조심스럽게 생각해봅니다. ^ ^

https://learn.microsoft.com/ko-kr/azure/developer/java/containers/overview

 

 

jchttl님의 프로필 이미지
jchttl

작성한 질문수

질문하기