데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      MSA의 Trade-Off 분석: 모듈러 모놀리스와 마이크로커널 아키텍처

      해리쓴 23.11.27
      3,724 33 1
      DEVOTEE 요약
      데보션 전문가로써 고객의 요구사항에 따라 마이크로서비스 아키텍처를 적용하는 프로젝트를 지원하고 있습니다. 이는 시스템의 확장성과 유연성을 증가시키며, 고객의 needs에 빠르게 대응하고자 하는 민첩성 및 경쟁 우위를 위함입니다. 그러나, 비즈니스 목표에 따라 마이크로서비스 아키텍처 뿐만 아니라 모듈러 모놀리스 아키텍처와 마이크로커널 아키텍처도 함께 고려해야 한다는 점을 강조하고 싶습니다.

      저는 SK(주) C&C에서 마이크로서비스 아키텍처를 적용하는 프로젝트의 개발방법론 적용과 기술지원 업무를 담당하고 있습니다.

      프로젝트를 지원하다보면, 고객이 시스템의 요구사항에 마이크로서비스 아키텍처를 적용해 달라고 하는 경우가 꽤 있습니다.

      아마도 시스템이 확장성이 있고, 장애에 유연해서 갑작스런 부하에도 끄떡없이 운영되고, 또 고객의 needs에 맞춰 빠른 개선을 위해 필요하다고 생각한 것 같습니다.


      맞습니다.

      애플리케이션을 나누는, 즉 마이크로서비스 아키텍처를 적용하는 비즈니스의 동인은 ① speed-to-market과 ② 타 사 대비 경쟁 우위확보라 할 수 있습니다.

      speed-to-market, 제품을 빠르게 출시하려면, 변화에 신속하게 대응하는 능력이 필요합니다.

      이것을 우리는 "민첩성"이라고 하고요. 민첩성은 유지보수성, 시험성, 배포성 등 많은 아키텍처의 특성을 포함하고 있습니다.


      경쟁 우위는 우리의 애플리케이션이 높은 가용성과 확장성을 갖고 있어서, 변경사항이나 개선사항을 빠르게 반영해서 신속한 출시가 가능합니다.

      회사의 규모나 사용자가 늘어나도 그만큼 더 큰 확장을 할 수 있습니다.


      우리도 이런 경쟁 우위와 민첩성을 위해 분산 아키텍처, 마이크로서비스 아키텍처를 선택하는 경우가 많았습니다.


      마이크로서비스 아키텍처를 경험해보신 분들은 아실겁니다.

      마이크로서비스 아키텍처의 많은 장점을 누리기 위해, 애플리케이션과 데이터베이스의 분할에 따른 많은 외부 아키텍처 기술 요소를 추가해야 하고,

      데이터의 정함성 같은 문제를 해결하기 위해 다양한 패턴을 적용해야 하는데, 이 일이 어렵고 많다는 걸 말이죠.

      (Service Registry, Service Discovery, External Config. Server, Loggin, Messaging 등)

      image.png

      그러나, 꼭 마이크로서비스가 아니더라도 모놀리스 아키텍처에서 애플리케이션의 내부를 잘 모듈화해서도 달성할 수 있습니다.

      이렇게 모놀리스 애플리케이션을 기반으로 그 내부를 모듈화한 것을 모듈러 모놀리스(Modular Monolith) 아키텍처라고 합니다.

      image.png


      또한 마이크로커널 (Micro-Kernel) 아키텍처로도 달성할 수 있습니다.

      image.png

      이름에서 알 수 있듯이, 마이크로한 커널이 있는 아키텍처로, Core System을 중심으로 플러그인을 붙여 나가는 방식으로 Plugin 아키텍처라고도 합니다.

      Core System은 시스템 실행에 필요한 최소한의 기능만 구현하고, 다양한 기능을 별도 Plugin으로 구현해서 필요에 따라 붙여서 사용하는 방식입니다.

      이 아키텍처는 개별 Plugin 컴포넌트들로 분리되어 있어서 테스트와 배포 시간을 엄청나게 줄일 수 있습니다.


      "아키텍트는 뚜렷한 비즈니스 동인 없이 시스템을 잘게 나누어서는 안된다."


      "우리 시스템은 마이크로서비스로 가야한다"보다는 우리 시스템의 명확한 목표를 정하고 그에 맞는 합리적인 아키텍처를 선택해야 한다는 걸 말씀드리고 싶습니다.


      "자동차는 무조건 넓고 배기량 큰게 좋지" 보다는, 사용 목적에 맞춰 적합한 사양의 차를 사는게 필요합니다.

      자동차 구매를 예로들면 출퇴근이 목적이라면 작은 승용차를, 주말 캠핑이 목적이라면 짐을 많이 실을 수 있는 SUV가 적합하다는 것입니다.


      무조건 마이크로서비스 아키텍처보다는, 목적에 맞춰 위에 소개한 모듈러 모놀리스 아키텍처와 마이크로커널 아키텍처도 검토했으면 하는 생각에 글을 작성해 보았습니다.

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      해리쓴 님의 최신 블로그

      더보기
      동영상 기고하기