
우리는 기능별로 코드를 개발해서 로그인, 게시판, 이미지업로드 등등.. 기능별로 개발을 한 후 하나로 묶어서 배포를 해왔다. 이런 개발방식을 Monolithic Architecture라고 부른다. Monolithic 는 formed of a single large block of stone.라는 의미로 하나의 커다란 구조를 일컫는 말이다. 구조가 단순하고 각각의 기능들을 하나로 묶어서 배포하기 때문에 배포도 간편하고 개발환경의 통일성을 지킬 수 있다는 장점이 있지만 서비스가 커지게 되면 각각의 기능을 묶어서 배포하였기때문에 서비스를 추가 할때마다 재빌드를 해야하고, 서비스가 커짐으로써 빌드 시간도 오래걸리고, 하나의 기능이 오류가 발생하면 전체의 서버 자체를 멈추고 수정해야 된다. 로그인 서비스가 오류가 발생했다고 하더라고 서버 전체를 내리고 수정 후 다시 올려야 할 것이다. 이러한 Monolithic Architecure의 단점을 보완하고 나온 구조가 MicroService Architecure이다. 이는 단어 그대로 작은서비스 구조이다. 작은 서비스 여러개가 모여서 하나의 시스템을 제공하는 구조이다. 여러 모듈로 분리했기 때문에 팀별로 독집적으로 개발 할 수 있고, 로그인서비스에서 오류가 발생하면 로그인서비스에만 영향을 끼칠 뿐 다른 서비스에서는 영향을 끼치지 않는다. 그리고 Monolithic Architecture 에서는 하나로 통합해서 빌드하기 때문에 동일한 언어를 사용 할 줄 아는 개발자들 끼리만 모여서 서비스를 개발하여야 했지만 MicroService Architecture 구조에서는 서로다른 언어를 가진 개발자들이 모여서 서비스를 만들 수도 있게 되었다. 이러한 Architecture가 나온데에는 현대에 Cloud, Container 환경에서의 개발이 주를 이루면서 대두되었다고 볼 수 있다. 사용량 단위로 과금을 하는 Cloud 환경에서는 Monolithic 구조는 비용적인 측면에서 매우 비효율 적이다. 각각의 기능모두를 하나의 묶어서 빌드하기 때문이다. 기업이라면 필연적으로 비용적인 부분을 고려하지 않을 수 없다. MicoService 에도 장점만 존재하는 아니다. 이 또한 서비스의 규모가 커지게 되면 각각 관리해야할 Service들이 늘어나게 된다. 하지만 여전히 Monolithic 구조보다는 비용적으로 관리면으로 더 우위에 있기 때문에 많이 사용되고 있는 Architecure 인거 같다.