MSA-1.1-모놀리스의 배경과 종류

jaegeunsong97·2023년 8월 30일
0

MSA

목록 보기
1/6

모놀리스 아키텍처가 무엇인가요?

  • 모놀리스 아키텍처(Monolithic Architecture)
    • MSA가 나오기전에는 있지도 않음
    • 기본적으로 모든 종류의 서비스가 하나의 App으로 구성되어 있는 아키텍처
    • 특징
      • 1개의 주요 프로세스
      • 모든 서비스 == 1개의 DB endPoint
        • 장점 : DB가 1개(DBA 운영 good, MSA처럼 DB 여러개 X -> 관리 쉬움)
        • 단점 : 장애시, 모두 사망
      • 1줄만 코드 수정시, 모든 App 재배포 필요(=1개의 Process여서)
      • 싱글, 멀티로 구분 가능 But CI의 단위가 달라진 뿐, CD의 범위는 전체

모놀리스 아키텍처가 General한 이유

  • 쉬움
  • 서버가 1개이므로 리소스를 효율적으로 활용 가능
  • IDC(고급서버)가 일반적 -> 비싼 자원
    • 따라서 On-Premise 방식의 IDC사용(1개만! 모놀리스니까)
  • 일정한 온도, 습도 유지 필요 -> 관리하는 사람 필요

모놀리스 아키텍처에서 개발/배포의 프로세스

싱글 모듈과 멀티 모듈

  • 모놀리식 아키텍처 모듈을 구성하는 방식은 다름 : 대표적 싱글 모듈과 멀티 모듈

    • 싱글모듈과 멀티 모듈의 공통점(모놀리스)
      • Common 코드가 존재하기 때문에 결국에는 전체를 재배포 필요
    • 싱글모듈
      • 모든 소스코드 단일 모듈에 존재
      • 응집성 + 결합성 높음 -> 유연성, 확장성 낮음
      • 설계/구현 간단
      • 최상위 싱글 패키지
    • 멀티모듈
      • 역할, 서비스 별로 모듈화
      • 응집성 + 결합성 낮음 -> 유연성, 확장성 높음
      • 모듈간 인터페이스 정의 필요 -> 아키텍처와 관련
      • 최상위 멀티 패키지

배포의 과정

모놀리스의 장점

  • 쉬움
  • 배포 간단 -> 따라서 일단 배포만 하면 됨(=CI/CD가 중요하지 않음)
  • 유지보수 쉬움
  • IDC(고급서버)리소스최적화해서 사용 가능
    • 서버 DB가 1개이기 때문에
  • Common 모듈 활용 쉬움(싱글, 멀티 모두 해당)
  • 모놀리스가 장점이 될수 있는 경우
    • 창업 + 빠른 서비스
    • 소수의 팀원
    • 클라우드 환경 어려운 경우 -> 금융, 보안(안정성이 중요한 경우)
      • On-Premise방식의 IDC가 좋음
    • 개발자 역량 낮음
    • CI/CD 파이프라인 구출 어려운 경우
      • MSA : CI/CD 중요 O
      • 모놀리스 : CI/CD 중요 X

모놀리스의 단점

  • Scale Out 어려움 -> 단일 DB 의존성 높음
  • 시스템 확장시 미팅을 엄청 많이 해야함(내꺼 돌렸는데 니꺼에서 에러터짐 ㅇㅇ..)
  • 규모가 커지면 복잡성이 올라가 수정사항이 많이 생김
  • 대규모 App에서 단순한 수정 -> 전체 배포(시간 오래걸림)
  • 장애시, 전체 App 영향 가장 중요!!!!!!!!!!!!!!!!!!
  • 모놀리스가 단점이 될수 있는 경우
    • 숙련된 개발자
    • 많은 서비스 -> 동시 다발적 개발 진행
      • 빠른 배포와 커뮤니케이션
    • 빠른 기능 개발 + 배포가 중요한 서비스
    • CI/CD 파이프라인의 이해도

모놀리스의 결론

profile
블로그 이전 : https://medium.com/@jaegeunsong97

0개의 댓글

관련 채용 정보