모놀리식 아키텍처

황승현·2023년 12월 20일
0

모놀리식 아키텍처(Monolithic Architecture)

모놀리식 아키텍처는 단일 코드 베이스의 애플리케이션이다.

예를 들어 Java로 작업할 때, 전체 애플리케이션은 단일 코드로 작성되어 단일 데이터베이스에 연결된다.

이것은 매우 일반적인 접근 방식으로, 거의 모든 개발자가 코딩을 시작할 때 이런 종류의 아키텍처에서 작업하게 된다.
그래서 모놀리식으로 개발한 애플리케이션은 마이크로서비스 아키텍처보다 구현이 쉽고, 덜 복잡하다는 장점이 있다.

1) 모놀리식 아키텍처의 장점

(1) 단순하다

  • 모든 코드가 단일 코드 베이스에 있다.

    • 변경 사항이 발생할 경우 필요한 모든 코드가 한곳에 존재한다.
  • 애플리케이션을 로컬에서 실행해야 할 경우 단일 애플리케이션만 실행하면 된다.

(2) 배포가 쉽다

  • 단일 프로젝트로 배포하면 되기 때문에 간편하다.

  • 새로운 기능이 추가되거나 버그가 수정될 때마다 단일 애플리케이션을 배포하면 된다.

(3) 많은 개발자들이 모놀리식으로 개발해본 경험이 있다

  • 대부분의 개발자가 모놀리식 아키텍처에서 작업한 경험이 있어, 프로젝트를 쉽게 시작할 수 있다.

(4) 디버깅이 쉽다

  • 모든 코드가 단일 애플리케이션에 있기 때문에 디버깅하기 쉽다.

  • 추가 구성을 수행하지 않고 코드를 실행하여 디버깅하면 된다.

(5) 테스트하기 쉽다

  • 디버깅과 마찬가지로 모든 코드가 단일 애플리케이션에 있어, 테스트 수행이 쉽다.

(6) 모니터링하기 쉽다

  • 코드가 모두 단일 프로젝트에 존재하여, 오류 시 문제가 발생한 위치를 식별하기 쉽다.

2) 모놀리식 아키텍처의 단점

(1) 규모가 커지면 유지 보수하기 어렵다

  • 시간이 지남에 따라 애플리케이션이 커지면 관리가 어려울 수 있다.

  • 모놀리식 애플리케이션은 중소형 애플리케이션에선 잘 작동하지만, 애플리케이션이 크고 복잡해지면 문제가 발생할 수 있다.

(2) 유연하게 확장할 수 없다

  • 전체 애플리케이션의 확장만 가능하다.

  • 예를 들어 애플리케이션의 특정 부분에 대해 요청을 받으면, 이 부분만 확장할 수는 없고 전체 애플리케이션을 확장해야 한다.

(3) 대규모 팀 작업이 어렵다

  • 모든 팀이 동일한 코드, 동일한 프로젝트에서 작업하기 때문에 코드 병합에 대한 충돌 가능성이 높고, 기능 변경 시 다른 팀이 작업에 영향을 줄 수 있다.

(4) 다른 기술로 변경하기 어렵다.

  • 모놀리식 애플리케이션을 다른 기술로 변경하는 것은 어렵기 때문에, 일반적으로 모놀리식 애플리케이션을 만들면 오랜 기간 동일한 기술을 사용해야 한다.

3) 모놀리식 아키텍처는 언제 사용하면 좋을까?

  • 규모가 작은 애플리케이션인 경우

  • 현 비즈니스를 통해 성장할 계획이 없거나, 복잡한 시스템 설계 및 관리가 필요하지 않은 경우

  • 아직 아이디어를 구상 중인 단계

  • 팀의 규모가 작거나 신생 팀인 경우, 또는 새로운 도메인일 경우

  • 아직 제품이 MVP 상태일 경우

    • 사용자로부터 피드백을 빠르게 수집할 수 있다.
  • 주된 작업이 CRUD일 경우

참고자료

https://yozm.wishket.com/magazine/detail/1813/
https://aws.amazon.com/ko/compare/the-difference-between-monolithic-and-microservices-architecture/

0개의 댓글