Monolithic Architecture란, 모든 것이 하나의 piece로 구성되어 있는 것을 의미하는데, 초기에 이러한 architecture가 이용되었습니다.
Code 또한 Monolithic code base, 즉 하나의 코드를 기반으로 하였기 때문에 매우 비싼 동시에 문제가 발생할 경우 어디서 발생했는지를 진단하는데 어려움이 있었습니다.
뿐만 아니라, DB(Database)또한 Monolithic이였는데, 이는 코드보다 더 심각한 문제점을 가지고 있었습니다. 하나의 하드웨어가 하나의 큰 Oracle DB를 실행하는 구조인데, 만일 이 DB의 작동이 멈추게 되면 모든 것이 멈추게 되는 현상이 직면했던 가장 큰 난관이였습니다.
이 단점으로 인해 Monolithic Architeuctre는 1990년대 후반에서 2000년대 초반까지만 사용됐고, 그 이후 이 단점들을 보완한 Microservice Architecture를 사용하게 됩니다.
Microservices는 소프트웨어 개발 기술로, ‘loosely coupled services’의 집합으로서 어플리케이션을 구성한 Service Oriented Architecture의 변형입니다.
Microservice의 주요 특징으로는 Services들이 잘게 쪼개져 있고 lightweight protocol을 가지는 것입니다.
이와 같이 어플리케이션을 smaller services로 분해함으로써 발생하는 장점은 modularity(모듈성 – 컴퓨터 시스템에서 하드웨어 및 소프트웨어의 각 구성 요소의 일부를 변경하고 증설할 때 그 변경이 전체에 영향을 미치지 않도록 어떤 부분만을 바꿀 수 있도록 설계되어 있는 것)가 증가한다는 것입니다.
이렇게 되면 어플리케이션의 이해, 개발, 테스트가 용이해지며 architectural erosion(계획과 실행에서 관찰되는 소프트웨어 시스템의 실제 아키텍처 사이에서의 간극)에 보다 더 자유로워 집니다.
아래 그림은 Monolithic Architecture 그리고 Microservice Architecture의 특징을 보다 직관적으로 보여줍니다.