하나의 프로그램을 작은 서비스단위로 만들어서 통합하자는 아이디어고

사실 기존에도 soa라고 존재하던 개념.


작은 서비스단위로 만들어야 재사용성도 높고 정합성도 높으니깐..


내가봤을때 이전 soa랑 두개 차이는 기존에는 이 통합지점을 백엔드에서 했다면

지금 마이크로서비스는 프론트엔드쪽으로 옮겨서 하고있음..


어떻게 프론트로 옮길수있었느냐와 왜 옮겼느냐를 말해야되는데.


어떻게 옮길수있었느냐면 프론트엔드, 

즉 js 스펙이 비약적으로 올라가고 그에 파생된것들.. json, restful등장하고 

종국에는 oauth가 나오면서 충분히 프론트에서 서비스들을 통합할수 잇는 환경이 만들어짐.


왜 옮겼냐면 요즘 데브옵스란 말이 나오는데

내가 볼때 데브옵스는 이러쿵저러쿵 다 곁가지 없애면 

개발자가 배포하자란 말로 들리거든.


기존에는 배포는 개발자 역량만으론 부족하고 서버,네트워크,db각각의 전문가들이 필요했는데

지금은 인프라적으론 클라우드서비스, saas, paas, baas 등등 나오고 개발환경적으로 git, 도커, 각종 가상화서비스등이 나오면서

개발자가 좀만 공부하면 배포를 할수 있게됨.


왜 개발자가 배포까지 해야되냐면

기존에는 프로덕션과 개발환경간의 갭 때문에 발생하는 문제가 있었음.

그것의 연장선상으로 또 통합테스트를 혼자서 할수 없었고 배포전문가들 도움도 받아야하니깐 시간이 들었음.


현재의 각종 서비스,툴을 이용하면 통합테스트를 개발자가 진행할수 있고

특히 개발과 프로덕션 갭을 크게 줄일수도 있음.

정합성 높은 서비스를 빨리 개발해서 배포할수 있음.


결론적으로 말해 

기존 soa에서는 백엔드에서 통합되는 개념이라 서버,네트워크등의 배포환경은 

거대할수 밖에 없어서 전문가들을 따 둘수 밖에 없음.


마이크로서비스는 통합지점을 클라이언트로 옮기면서 

각 서비스 배포 책임을 따로 둘수있게됨으로 이러한 이점을 취함.




마이크로서비스에 대한 내용들을 여기저기 주워듣고 통합해서 결론내린 내 생각임.