MSA의 특징, 장단점

ayboori·2024년 8월 3일

MSA

목록 보기
1/8

Microservices Architecture (MSA)

  • MSA는 하나의 애플리케이션을 여러 개의 독립적인 서비스로 분리하여 개발, 배포, 유지보수를 용이하게 하는 소프트웨어 아키텍처 스타일 (강제성 X)
  • 각 서비스는 특정 비즈니스 기능을 수행하며, 서로 독립적으로 배포되고 확장될 수 있음
  • 서비스 간의 통신은 주로 HTTP/HTTPS, 메시지 큐 등을 통해 이루어짐

특징

  • 작은 팀 구성 : 각 서비스 별로 작은 팀이 독자적으로 개발, 관리 가능
  • 기술 스택의 다양성 : 각 서비스 별로 적절한 기술 스택을 선택 가능

장점

  • 확장성: 특정 서비스만 확장하여 성능을 최적화할 수 있음
  • 독립적 배포: 개별 서비스의 변경 사항을 독립적으로 배포할 수 있음
  • 유연성: 서비스별로 적합한 기술 스택을 선택할 수 있음

단점

  • 복잡성 증가: 서비스 간 통신, 데이터 일관성 유지 등의 복잡성이 증가
  • 운영비용 증가: 각 서비스의 모니터링, 로깅 등을 개별적으로 관리해야 함
  • 데이터 관리: 분산된 데이터베이스로 인해 데이터 일관성 유지가 어려울 수 있음
  • 네트워크 지연: 서비스 간의 통신이 네트워크를 통해 이루어지므로 지연 시간이 발생할 수 있음

모놀리틱 아키텍처

모든 기능이 한 APP 내에 있다.
빠른 랜딩이 필요한 싱글 프로젝트에서는 용이할 수 있다.

특징

하나의 큰 코드베이스로 구성된 애플리케이션, 모든 기능이 하나의 애플리케이션 내에 포함

장점

  • 간단한 배포: 모든 코드가 하나의 코드베이스에 포함되어 있어 배포가 단순
  • 단일 데이터베이스: 하나의 데이터베이스를 사용하여 데이터 일관성을 쉽게 유지할 수 있음

단점

하나를 변경하면 모두 변경해야 하고, 고려해야 하는 단점

  • 확장성 부족: 특정 기능을 확장하려면 전체 애플리케이션을 확장해야함
    접근이 많아질 때 등등 code, infra의 문제가 발생할 수 있음
  • 긴 개발 주기: 작은 변경 사항도 전체 애플리케이션을 다시 배포해야함
  • 유연성 부족: 새로운 기술 도입이 어렵고, 특정 모듈에 종속적임

자원을 많이 소모하고, 관리할 것도 많다.

무조건 MSA!?

  • MSA를 도입하기 위해서는 수업의 내용처럼 많은 것들이 사용되며, 정책 설정을 해야 할 것이 많습니다. 빠르게 프로젝트의 프로토 타입을 만들어야 한다면 모놀리틱 아키텍쳐를 사용하고, 후에 부분, 부분 전환하는 것도 방법일 것입니다.

  • 우리는 이 수업을 통해 MSA를 구성하기 위해서는 어떤 기능들이 필요한지 배웠습니다. 만약 스프링 클라우드가 아닌 다른 프레임워크로 MSA를 개발 한다고 해도 우리는 지금까지 공부했던 기능들이 있어야 함을 알 수 있습니다.

  • 개발에 정답은 없습니다. 개발팀이 추구하는 방향에 따라 개발의 크기, 기능의 구성 등 정말 다양한 사항들이 결정될 것입니다. 개발된 레거시의 구조, 신규 프로젝트에서의 합의된 구조를 잘 파악하고 따라 가는것도 중요합니다. 그래야 개발이 완료되었을 때 유지보수도 수월 할 것이며, 추가 투입 인원이 있다면 보다 수월하게 프로젝트에 진입할 수 있을 것입니다.

  • 이미 개발된 프로젝트의 패턴에 따라 본인이 익숙한지 아닌지 파악 후 본인이 사용할 수 있는지 확인하는 것이 좋다. 기존 패턴을 활용해 CRUD를 만들어보고 개발할 기능을 덧붙이는 방식이 좋다.

profile
프로 개발자가 되기 위해 뚜벅뚜벅.. 뚜벅초

0개의 댓글