최근 모노리스 방식의 소프트웨어 개발에서 마이크로 서비스 방식의 소프트웨어 개발로 전환되고 있다.
마이크로 서비스의 장점은 확장성(scale out)을 들 수 있다. 엄청 실력이 뛰어난 쉐프 1명이 있는 식당과, 조금 고만고만 하지만 요리학원을 졸업한 요리사 10000명이 있는 식당, 어느 것이 더 많은 사람을 수용할 수 있는지는 후자임이 명백하다. 더불어 네트워크 기술의 발전으로 식당을 전세계에 분포시킬 수도 있다. 그렇기 때문에 우리가 접하는 대부분의 global scale 웹 서비스는 마이크로 서비스라 보면 된다.
단점은 문제가 복잡해진다. 간단한 문제로, 프로그램의 규모가 커질 수록 서비스 간의 호출이 빈번하게 일어나게 되는데, 호출을 하는 것 조차 쉽지 않다. 모노리스 방식의 프로그램은 단순히 함수를 call하면 될 것이다. 하지만 마이크로 서비스의 경우 동일한 노드에 할당된 서비스조차 서로 다른 프로세스로 동작하기 때문에 코드 영역을 직접 호출 할 수 없다.
즉, 마이크로 서비스를 구현하기 위해서는 프로세스간 통신( IPC)을 이해해야 한다.
이상이 기본적인 IPC이다. 현재 많이 사용되는 방식은 위에 기술하지는 않았지만, message passing이다. 즉, 네트워크상에 메시지를 통해 process간 통신을 하는 방식이다. 그 외에 hadoop과 같이 distributed file system을 만들어 이를 이용하는 방식도 있다. apache tajo는 파이프라이닝을 적극적으로 사용해 속도를 향상시켰으며, spark의 경우 가상의 memory map을 만들어 성능과 편의성을 확보하려 하였다. 이렇듯 IPC 단위의 개선은 새로운 분산 처리 프레임워크를 만드는 단초가 될 수 있을 것이다.
https://www.joinc.co.kr/w/Site/system_programing/Book_LSP/ch08_IPC
https://en.wikipedia.org/wiki/Inter-process_communication
무슨 일이 생겼는지 링크 코인이 요즘 잘 올라서 링크 코인 소개를 좀 해볼까 키보드를 두드립니...