마이크로 서비스 아키텍처는 개발자들이 필요에 의해서 움직인다.
기능을 서비스로 분산시키고, 나누어서 개발하고, 나누어서 관리하는 구성에 대해서는 과거에도 요란하게 논의가 된 적이 있었다.
SOA라고 불리는 개념이 그러했다. 하지만, 당시 SOA는 ESB라는 벤더나 제품의 도움이 있어야만 가능하던 시기였고, '기능을 서비스로 분산'시키는 개념은 생각보다 비용적인 측면, 솔루션 종속적인 측면들과 동시에 이해가 되면서 주류로 사용되지 않았다.
물론, SOA로 디자인, 설계, 개발, 배포, 유지보수 단계의 전 과정이 생각보다 복잡했으며, 제약사항들도 많았다. 그뿐만 아니라, 당시의 서비들은 모바일과 웹서비스가 활성화된 현재 상황과 비교한다면, 제약적인 시장과 제한적인 사용자들이 사용하던 상황이어서, 기능 분산에 대한 욕구가 매우 적었다.
시스템이 복잡해지고, 각 기능별 비즈니스의 변화와 속도가 다를 경우에는 이러한 '기능 분산'형태가 의미가 있지만, 동일한 비즈니스 환경과 속도로 구성되어있는 정보시스템의 경우에는 '의미가 매우 적다'.
심한 경우에는 1 VM에 1 Web-Service를 가동하는 극단적인 형태도 볼 수 있다. 물론, 이 구성은 리소스의 낭비는 좀 있지만, 확실한 '구분'으로 유지보수나 신뢰도를 높이는 영업적인 이슈의 경우에 간혹 발생한다.
물론, 기술적으로 하나의 VM( 서버 ) 위에 동작되는 여러 웹-프로세스들의 추적이 어렵기 때문이기도 하다.
고객의 숫자가 가변적이고, 모바일을 대비하고 있다면 이제 어떤 IT조직이라고 하더라도, MSA구조를 택할 수밖에 없다. 웹서비스를 효과적으로 개발할 수 있는 Tomcat과 DBMS를 대체하는 다양한 리파지토리 서비스들을 조합할 수 있는 상황이 된 것도 분명한 시대의 흐름이다.
클라우드, MSA는 이런 기술적인 진화와 다양한 오픈소스의 발달, 모바일의 급성장. 사용자들에게 커넥티드 되는 마케팅과 홍보. 비즈니스가 고속화되고 있기 때문이다.