메뉴 건너뛰기

Monolith (1. 단일 암체;(특히 고대의)거대한 돌기둥 2. (변화가 느리고 개개인에게 무관심한)거대한 단일 조직

모노리스(Monolith)에 대해 알아봅시다. 모노리스는 가장 기본적인 소프트웨어 아키텍처입니다. 만일 여러분이 특별한 계획 없이 코딩을 시작했다면 아마도 모노리스 형태일 가능성이 높습니다. 이름에서 알 수 있듯이 이 스타일의 어플리케이션은 하나의 커다란 코드베이스를 기반으로 합니다. 어플리케이션의 모든 기능은 서로 엮여 있고 종종 의존성도 보이며 수 십 또는 수 백개의 파일로 구성됩니다. 가장 오래된 아키텍처이기는 하지만 모노리스에도 분명히 장점이 있습니다. 그래서 지금까지도 많이 사용되는 방식이자 성공적인 조직에서 고수하고 있는 방법이기도 합니다. 그렇지만 단점도 많이 있습니다.


장점

초기 개발이 빠릅니다.

어디에서 무엇을 가져와야 하는지에 대한 제약사항이 없기 때문에 새로운 기능을 추가하는 것이 상대적으로 쉽습니다.

크로스커팅에 대한 고민이 상대적으로 덜 복잡합니다.

만일 사용자의 신용카드사용 청구와 배송추적과 같은 서로 다른 워크플로우가 있다면 모노리스에서는 매우 간단하게 구현됩니다. 필요한 데이터가 함께 있기 때문에 즉시 구현 가능합니다. 복잡 다단한 메시징과 큐, 적절한 소스를 찾기 위한 별도의 단계를 거치지 않고서도 접근 가능하다는 점 만을 두고 볼 때 모노리스는 충분히 매력적입니다.

모든 문제가 단 한번에 해결됩니다.

어플리케이션 로깅과 속도 제한, 보안 기능을 설정하는 데에 있어서 만일 여러분이 모노리스 아키텍처를 취하고 계시다면 다행히도 한번에 모든 것이 해결될 것입니다. 그것은 좋은 일이죠.


단점

변경이 너무 어렵습니다.

단일체로서 모노리스가 너무 커지면 변경이 매우 어려우며 일반적으로 복잡성은 어플리케이션의 크기에 기하 급수적인 난이도 증가를 보입니다. 시스템에서 너무 많은 코드와 복잡도 높은 경로로 인해 해당 변경이 가져올 영향도를 추론하는 것이 매우 어려울 수 있으며 심지어 아무리 작은 변경이라 하더라도 예상치 않은 커다란 문제를 가져올 수 있습니다. 따라서 엔지니어에게 있어 이러한 시스템에 대한 유지 보수는 매우 중요한 작업이며 조직 전체에 대한 문제가 될 수 있다는 리스크가 존재합니다.

확장성 확보가 어렵습니다.

모노리스가 너무 비대해지면 일부분만을 확장한다는 것이 불가능해집니다. 때문에 전체를 확장해야합니다. 만일 여러분의 모노리스가 충분한 컴퓨팅 파워가 있는 서버 상에서 운영되어야 한다면 어플리케이션의 극히 일부분을 추가하는 데에 엄청나게 많은 비용을 지불해야할 수 있습니다. 이렇게 되면 운영 예산이 매우 빨리 소진될 뿐만 아니라 지불해야할 내역의 대부분이 효과적이라고 볼 수 없습니다.


Take Away

대부분의 개발자들은 모노리스가 과거의 방식이라고 생각합니다. 물론 어떤 사람들은 여전히 사용하기도 합니다. 그렇지만 앞으로는 마이크로서비스의 가치를 더 높이 사는 팀을 만나게 될 것입니다.

Who's NeO

ALM, SW 모델링, SW 정적분석, Devops 특히 CI/CD, APM을 통한 Shiftleft에 관심이 많습니다. 

차세대 APM Cisco AppDynamics와 모바일 앱 모니터링 VMware Apteligent를 소개합니다.

http://www.solulink.co.kr

?

 


  1. No Image

    Microservices, Monoliths and Self-Contained Systems (1) Monoliths

    Monolith (1. 단일 암체;(특히 고대의)거대한 돌기둥 2. (변화가 느리고 개개인에게 무관심한)거대한 단일 조직 모노리스(Monolith)에 대해 알아봅시다. 모노리스는 가장 기본적인 소프트웨어 아키텍처입니다. 만일 여러분이 특별한 계획 없이 코딩을 시...
    Date2017.12.13 ByNeO Reply0 Views319
    Read More
  2. Microservices, Monoliths and Self-Contained Systems (0) 서문과 인포그래픽

    이 문서는 다음 링크의 글을 번역했습니다. https://blog.appdynamics.com/engineering/microservices-monoliths-and-self-contained-systems-time-to-break-it-down/ 문서가 길어서 분할하여 게시합니다. (0) 서문과 인포그래픽 (1) Monoliths (2) M...
    Date2017.12.13 ByNeO Reply1 Views363
    Read More
  3. No Image

    개발자관점에서 APM의 중요성

    이 문서는 다음 링크의 글을 번역했습니다. https://blog.appdynamics.com/product/the-importance-of-apm-for-developers/ The Importance of APM for Developers   소프트웨어 개발자를 중세시대의 장인과 비교해봅시다. 과거에는 나무를 가구로 만드는 ...
    Date2017.12.04 ByNeO Reply2 Views814
    Read More
  4. Release Automation의 분류

    이 문서는 Release Automation의 분류에 대해 설명합니다. 본 문서는 다음링크의 글에 영향을 받아 2014년 5월에 작성한 문서의 일부입니다. https://devops.com/approaches-to-application-release-automation/ 지금은 익숙한 개념인 Hudson/Jenki...
    Date2017.12.01 ByNeO Reply1 Views605
    Read More
Board Pagination Prev 1 2 3 Next
/ 3