프로시저와 원격 프로시저 이해하기

목화·2023년 5월 7일
0

Remote Procedure

원격 프로시저(Remote Procedure)는 한 컴퓨터에서 다른 컴퓨터에 위치한 프로시저나 함수를 호출하는 프로그래밍 패러다임입니다. 원격 프로시저는 분산 시스템에서 중요한 역할을 하며, 클라이언트와 서버가 서로 다른 작업을 처리하면서 협력하는 데 사용됩니다.

원격 프로시저 호출(RPC, Remote Procedure Call)은 원격 프로시저를 호출하는 메커니즘이며, 네트워크를 통해 프로시저를 실행하는 것을 가능하게 합니다. 이를 통해 프로그래머는 원격 호스트의 프로시저를 마치 로컬 시스템에서 호출하는 것처럼 사용할 수 있습니다. 원격 프로시저 호출은 클라이언트-서버 모델을 따르며, 클라이언트는 원격 서버에 프로시저를 요청하고, 서버는 요청을 처리한 결과를 클라이언트에 반환합니다.

원격 프로시저 호출은 다음과 같은 단계로 진행됩니다:

  1. 클라이언트가 원격 프로시저를 호출합니다.
  2. 매개변수와 함께 클라이언트 측 stub이 호출됩니다.
  3. 클라이언트 측 stub은 매개변수를 정리(marshal)하여 서버에 전송하기 적합한 형태로 변환합니다.
  4. 클라이언트 측 stub은 네트워크를 통해 서버에 데이터를 전송합니다.
  5. 서버 측 stub은 클라이언트로부터 전송된 데이터를 받아 원래 형태로 복원(unmarshal)합니다.
  6. 서버 측 stub은 원격 프로시저를 호출하고 결과를 반환합니다.
  7. 반환값이 다시 클라이언트에 전송되며, 클라이언트에서 원래 형태로 복원됩니다.

원격 프로시저 호출을 사용하면 개발자는 원격 호스트에서 실행되는 함수를 쉽게 호출할 수 있으며, 복잡한 네트워크 통신 및 데이터 변환 과정을 거치지 않아도 됩니다. 이로 인해 분산 시스템 개발이 단순화되고 효율적으로 이루어질 수 있습니다.


Procedure

프로시저(Procedure)는 프로그래밍에서 사용되는 용어로, 일련의 명령어 또는 코드 블록을 의미합니다. 프로시저는 특정 작업을 수행하기 위해 정의된 코드로, 함수와 비슷한 개념입니다. 프로시저는 프로그램의 코드를 재사용할 수 있게 하여 코드의 중복을 줄이고, 모듈화와 구조화를 향상시킵니다.

프로시저는 다음과 같은 특징을 가지고 있습니다:

  1. 이름: 프로시저는 고유한 이름을 가지고 있어, 프로그램 내에서 쉽게 참조할 수 있습니다.
  2. 매개변수: 프로시저는 입력으로 매개변수를 받을 수 있습니다. 이를 통해 프로시저는 다양한 상황에 유연하게 대응할 수 있습니다.
  3. 재사용성: 프로시저는 여러 번 호출될 수 있어, 같은 코드를 반복 작성할 필요 없이 여러 위치에서 사용할 수 있습니다.

프로시저와 함수의 차이점은 다음과 같습니다:

  1. 반환 값: 일반적으로 함수는 반환 값이 있어, 호출한 곳에 결과를 전달하며, 프로시저는 반환 값이 없습니다. 프로시저는 주로 부작용(side effect)을 이용하여 결과를 전달합니다. 예를 들어, 전역 변수를 변경하거나 출력을 수행하는 등의 작업을 수행할 수 있습니다.
  2. 호출 방식: 함수는 값이 필요한 곳에 직접 호출되어 사용되는 반면, 프로시저는 일반적으로 명령문(statement)의 형태로 호출됩니다.

프로그래밍 언어에 따라 프로시저와 함수의 구분이 모호할 수 있으며, 언어마다 이러한 용어를 다르게 사용하기도 합니다. 예를 들어, 파이썬에서는 반환 값이 없는 함수를 프로시저라고 부르기도 합니다. 반면에, C 언어와 같은 언어에서는 반환 값이 없는 함수를 프로시저로 간주하고, 반환 값이 있는 함수를 일반 함수로 분류하기도 합니다.


다양한 프로그래밍 언어에서의 프로시저 예시를 들어 설명하겠습니다.

  1. C 언어에서의 프로시저 예시:
#include <stdio.h>

// 'print_hello_world' 프로시저는 반환 값이 없으며, "Hello, World!"를 출력합니다.
void print_hello_world() {
    printf("Hello, World!\n");
}

int main() {
    // 'print_hello_world' 프로시저를 호출합니다.
    print_hello_world();
    return 0;
}
  1. 파이썬에서의 프로시저 예시:
# 'print_hello_world' 프로시저는 반환 값이 없으며, "Hello, World!"를 출력합니다.
def print_hello_world():
    print("Hello, World!")

# 'print_hello_world' 프로시저를 호출합니다.
print_hello_world()

위의 예시에서, print_hello_world는 각각 C 언어와 파이썬에서 프로시저를 정의한 것입니다. 이 프로시저는 반환 값이 없고, "Hello, World!"라는 문구를 출력하는 작업을 수행합니다. 프로시저를 호출하면 해당 작업이 실행되며, 프로그램의 다른 부분에서 이 프로시저를 호출할 수도 있습니다. 이를 통해 코드의 재사용성을 높이고, 모듈화와 구조화를 도모할 수 있습니다.


References

  • GPT4
profile
🧑‍💻 SOFTWARE ENGINEER. 무해를 지향합니다. 편견을 지양합니다.

0개의 댓글