[IT용어] IPC (Inter-processing communication)

in #kr-dev5 years ago (edited)

최근 모노리스 방식의 소프트웨어 개발에서 마이크로 서비스 방식의 소프트웨어 개발로 전환되고 있다.

  • 모노리스(monolith) 방식은 하나의 커다란 프로그램이 모든 기능을 담당하는 것이다. 예를 들자면 로컬 머신에서 실행되는 오프라인 게임을 예로 들 수 있겠다.
  • 마이크로 서비스(micro service)는 서비스 단위로 분산시킨 시스템이다. 즉, 분산 시스템(distributed system) 상에서 동작하는 프로그램이다.

마이크로 서비스의 장점은 확장성(scale out)을 들 수 있다. 엄청 실력이 뛰어난 쉐프 1명이 있는 식당과, 조금 고만고만 하지만 요리학원을 졸업한 요리사 10000명이 있는 식당, 어느 것이 더 많은 사람을 수용할 수 있는지는 후자임이 명백하다. 더불어 네트워크 기술의 발전으로 식당을 전세계에 분포시킬 수도 있다. 그렇기 때문에 우리가 접하는 대부분의 global scale 웹 서비스는 마이크로 서비스라 보면 된다.

단점은 문제가 복잡해진다. 간단한 문제로, 프로그램의 규모가 커질 수록 서비스 간의 호출이 빈번하게 일어나게 되는데, 호출을 하는 것 조차 쉽지 않다. 모노리스 방식의 프로그램은 단순히 함수를 call하면 될 것이다. 하지만 마이크로 서비스의 경우 동일한 노드에 할당된 서비스조차 서로 다른 프로세스로 동작하기 때문에 코드 영역을 직접 호출 할 수 없다.

즉, 마이크로 서비스를 구현하기 위해서는 프로세스간 통신( IPC)을 이해해야 한다.

IPC의 종류

  • Pipe
    • Stdout과 Stdin을 연결
    • Read-only & Write-only
    • 듀플렉스는 안된다.
    • 스트림 기반으로 동작
  • Named Pipe
    • 중간에 파일을 만들고 파일로 통신
    • mkpipe 함수로 만든다.
    • write가 되어야 read된다.
  • Message Queue
    • 파이프와 유사
    • 패킷 기반으로 동작
  • Shared Memory
    • 공유 메모리 공간을 만들어 통신
    • 가장 빠르다.
  • Memory map
    • 파일을 만들고 메모리 공간에 매핑하여 통신
  • Socket
    • 네트워크로 통신
    • internet 통신이 가능

이상이 기본적인 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


Sponsored ( Powered by dclick )
링크코인(KN) 요즘 잘 나간다?

무슨 일이 생겼는지 링크 코인이 요즘 잘 올라서 링크 코인 소개를 좀 해볼까 키보드를 두드립니...

Sort:  

Congratulations @tmkor! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You got more than 1250 replies. Your next target is to reach 1500 replies.

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

Vote for @Steemitboard as a witness to get one more award and increased upvotes!