# RPC
분산 시스템의 이해
1. 전통적인 서버 아키텍처 RPC(Remote Procedure Call) > 컴퓨터 프로그램을 원격에서 호출할 수 있도록 하자는 아이디어가 RPC(remote procedure call) 이다. 1980년대에 RPC의 구현으로 Server-Client model(request-response protocol)이 가능하게 되었다. RPC Database > Database 의 등장으로 대량의 데이터를 빠르게 처리할 수 있게 되었다. Database 시스템의 처리량 개선은 Scale-Up을 통해 HW의 사이즈를 키우는 식으로 진행되었다. 3-Tier Architecture > RPC(Remote Procedure Call)가 가능해지고 데이터의

[HTB] Resolute
이번에도 Windows 관련 머신을 계속해서 진행하면서 모자란 지식을 채워간다. 이번에 마주친 머신은 LDAP에서 익명 열거를 시작해서, description 필드에 존재하는 신규 계정 패스워드를 통해 확인된 계정을 무차별대입하여 기본 패스워드를 사용중인 계정을 열거하고 해당 계정을 통해 내부 시스템에 존재하는 히스토리 파일에서 다른 계정을 찾아 해당 계정의 AD 그룹 권한을 악용하여 DNS 서비스가 실행될때 악성 dll을 로드하는 트릭을 이용하여 시스템을 장악할 수 있었던 머신이였다. Windows 관련 머신들을 접할 수록 다양한 그룹과 권한에 대해서 익혀나가고 있는것같다. Recon Port Scan HTB 머신 스폰 이후 국룰 포트스캔을 진행 시 Windows 머신에서 주로 보이는 서비스들이 식별되는것을 확인할 수 있으며, 도메인은 megabank.local로 확인된다. DNS DNS에서는 항상 크게 건지는건 없는것같다. SMB

CometBFT
Intro 지난 Cosmos 글을 작성하면서 아쉽다는 생각이 들어 찾아본 결과 Cosmos Developer Portal을 찾게 되어 알게된 내용을 이전 글을 기준으로 보충하여 포스팅하려고 합니다 ! 자세한 정보를 원하신다면 해당 링크를 통해 알아보시는 것을 추천드립니다 ☻ CometBFT Desc. CometBFT는 PBFT를 갖춘 DPoS를 기반으로 작동하는 합의 모듈입니다. 네트워크의 참여자들은 신뢰할 수 있는 서비스를 제공할 확률에 높은 노드에 ATOM을 스테이킹하며 지원을 받은 노드들 중 상위 175개의 노드들만 Validator로 참여합니다. Validator들의 Voting Power는 해당 Validator와 대리인들이 스테이킹한 ATOM의 총 합으로 계산되며 블록을 생성할 수 있는 확률은 Voting Power에 비례되어 부여가 됩니다.

[66해빗 페이백 챌린지] 12일차
RPC RPC란? Remote Procedure Communication. 별도의 원격 통신 제어에 대한 코딩 없이 다른 주소 공간에 존재하는 프로시저를 실행할 수 있는 프로세스 간 통신 기술(IPC, Inter-Process Communication) 원칙적으로 프로세스는 자신의 주소 공간 내에 존재하는 프로시저만 호출 가능하다. RPC를 사용하면 다른 주소 공간(같은 로컬 시스템의 다른 메모리 주소 공간 또는 원격 시스템에 존재하는 주소 공간)에 있는 프로시저를 호출할 수 있다. 마치 자신의 주소 공간에 존재하는 프로시저를 호출하는 것처럼 다른 주소 공간의 프로시저를 호출할 수 있다. 함수 vs 프로시저 함수 input에 따른 output을 가짐. 리턴값이 필수적으로 요구됨. 프로시저 명령 단위의 수행에 집중. 리턴값은 있을 수도 없을 수도 있다. 목표 클라이언트,
프로시저와 원격 프로시저 이해하기
Remote Procedure 원격 프로시저(Remote Procedure)는 한 컴퓨터에서 다른 컴퓨터에 위치한 프로시저나 함수를 호출하는 프로그래밍 패러다임입니다. 원격 프로시저는 분산 시스템에서 중요한 역할을 하며, 클라이언트와 서버가 서로 다른 작업을 처리하면서 협력하는 데 사용됩니다. 원격 프로시저 호출(RPC, Remote Procedure Call)은 원격 프로시저를 호출하는 메커니즘이며, 네트워크를 통해 프로시저를 실행하는 것을 가능하게 합니다. 이를 통해 프로그래머는 원격 호스트의 프로시저를 마치 로컬 시스템에서 호출하는 것처럼 사용할 수 있습니다. 원격 프로시저 호출은 클라이언트-서버 모델을 따르며, 클라이언트는 원격 서버에 프로시저를 요청하고, 서버는 요청을 처리한 결과를 클라이언트에 반환합니다. 원격 프로시저 호출은 다음과 같은 단계로 진행됩니다: 클라이언트가 원격 프로시저를 호출합니다. 매개변수와 함께 클라이언트 측 stub이 호출됩니
이해하기 쉬운 RPC와 Stub 설명
3.8.2 Remote Procedure Calls RPC(Remote Procedure Call)는 원격 프로시저 호출을 가능하게 해주는 프로토콜입니다. 이를 통해 클라이언트는 원격 호스트에 있는 프로시저를 마치 로컬에서 호출하는 것처럼 사용할 수 있습니다. 이러한 프로세스를 이해하기 쉽게 설명해 드리겠습니다. 먼저, stub이란 프로시저 호출을 추상화하는 작은 코드 조각입니다. RPC에서 stub은 클라이언트와 서버 사이에 원격 프로시저 호출을 처리하기 위해 사용됩니다. RPC의 작동 과정은 다음과 같습니다: 클라이언트에서 원격 프로시저를 호출하려면, 클라이언트 측에 stub이 필요합니다. 이 stub은 각각의 원격 프로시저에 대해 별도로 존재합니다. 클라이언트가 원격 프로시저를 호출하면, RPC 시스템은 해당 stub을 호출하고 원격 프로시저에 제공된 매개변수를 전달합니다. 클라이언트 측 stub은 서버의 포트를 찾아 매개변수를 정리(marshal
Windows에서 동일 시스템 프로세스 간의 효율적인 통신: RPC와 ALPC의 협업
Windows에서 RPC(Remote Procedure Call)는 원격 프로시저 호출을 가능하게 해주는 기술로, 프로세스 간에 데이터 및 함수 호출을 공유할 수 있게 해줍니다. 일반적으로 RPC는 네트워크 상에서 두 개 이상의 컴퓨터 간에 프로시저 호출을 수행합니다. 그러나 동일한 시스템의 프로세스에서 호출될 때에는, Windows는 ALPC(Advanced Local Procedure Call)를 사용하여 간접적으로 처리하게 됩니다. ALPC는 높은 성능의 로컬 프로시저 호출을 위한 Windows 커널 모드 메커니즘이며, 다음과 같은 이유로 RPC에 의해 사용됩니다. 성능 향상: ALPC는 로컬 시스템에서 통신하는 프로세스 간에 매우 효율적인 방법입니다. 동일한 시스템에서의 프로세스 간 통신에는 별도의 네트워크 스택이 필요하지 않으므로, ALPC를 사용하면 오버헤드가 줄어들고 성능이 향상됩니다. 보안: 동일한 시스템에서 프로세스 간 통신을 수행할 때, ALPC는
[Unity] Photon Fusion RPC 관련
삽질 잔뜩 하다가 알아낸 정보들 (공식 문서에도 적혀 있긴 할텐데 스스로 하기 전까진 이해가 잘 안 갔음) Simulation Behaviour static RPC만 존재 가능 일반 RPC를 작성하면 Weaving Error 발생 Network Behaviour 일반 RPC, static RPC 존재 가능 해당 스크립트가 부착된 오브젝트에 Network Object 컴포넌트 필요 > 이때, Network Object는 런타임 전에 씬에 이미 존재하고 있거나, 런타임 중 Spawn()해야만 valid함. 따라서, 일반 RPC는 Spawn한 오브젝트의 Network Behaviour 스크립트에서만 작성 가능함. 특히, RPC를 호출하는 스크립트가 런타임에서 어떤 오브젝트에 붙어있지 않으면 호출이 되지 않음 > (예시 : Test.cs 스크립트의 RPC_ABC()를 호출하려는데, Test.cs 스크립트가 씬 내 어떤 게임 오브젝트의

[Unity] Photon Fusion Rpc Dictionary 사용 유의점
Rpc에서 Dictionary를 그냥 사용하면 오류가 난다. 찾아보니 Dictionary가 아니라 NetworkDictionary로 변경해서 써야한다. 그리고 문서 읽어보니 dic["어쩌구저쩌구"] 로 Set 할 수 없는 것 같다. 대신, dic.set(key, value); 이런 식인가 보다 근데 차피 난 Add로 쓸 거니까 상관 없다 그리고 Dictionary의 Key나 Value로 GameObject를 쓰면 오류가 난다. NetworkObject로 써야한다. 이 외에도, LinkedList 등등을 모두 Photon에서 제공하는 형태를 갖다 써야한다~ 출처 : https://doc.photonengine.com/fusion/current/manual/network-collections#networkd

RPC에 대해
RPC란 RPC 탄생 배경 MSA(Micro Service Architecture) 구조로 서비스를 만들다보면, 다양한 언어와 프레임워크로 개발되는 경우가 잦다. 이런 Polyglot 한 구조에서는 프로토콜을 맞춰서 통신해야 하는 비용이 발생한다. 이 경우에 RPC를 이용하여 언어에 구애받지 않고, 원격에 있는 프로시저를 호출하여 조금 더 비즈니스 로직에 집중하는 개발을 할 수 있다. RPC 개념 RPC(Remote Procedure Call)란 프로세스간 통신을 위해 사용하는 IPC(Inter Process Communication) 방법의 한 종류이다. 원격지의 프로세스에 접근하여 프로시저 또는 함수를 호출하여 사용한다. 말 그대로 원격지의 프로시저를 호출하는 것이다. 일반적으로는 프로세스는 자신의 주소 공간 안에 존재하는 함수만 호출하여 실행 가능하다. 하지만, RPC를 이용하면 다른 주소 공간에서 동작하는 프로세스의 함수를 실행할 수

gRPC 란 무엇일까?
gRPC 정리 gRPC는 구글에서 개발한 RPC(RPC, Remote Procedure Call) 시스템이며 모든 환경에서 실행할 수 있는 오픈 소스 고성능 RPC 프레임워크이다. HTTP/2기반, 다양한 언어 Java, C ++, Python, Java Lite, Ruby, JavaScript, Objective-C 및 C#에서 사용이 가능하며 스텁, 프로토콜버퍼 등의 특징이 있으며 서비스들을 효율적으로 연결할 수 있는 강점을 가진다. RPC란 무엇이인가? RPC(Remote Procedure Call)는 프로세스 간 통신 (IPC)의 한 형태로 떨어져 있거나 분산되어 있는 컴퓨터간의 통신을 위한 기술이다. 클라이언트가 스텁을 거처 RPC의 런타임을 거처 다

RPC ( Remote Procedure Controller )
RPC의 정의 > 원격 프로시저 호출(영어: remote procedure call, 리모트 프로시저 콜, RPC)은 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 함수)나 프로시저를 실행할 수 있게하는 프로세스 간 통신 기술이다. 다시 말해, 원격 프로시저 호출을 이용하면 프로그래머는 함수가 실행 프로그램에 로컬 위치에 있든 원격 위치에 있든 동일한 코드를 이용할 수 있다. > > > [객체 지향](https://ko.wikipedia.org/wiki/%EA%B0%9

Blockchain node Structure
기존 WEB2.0 새로운 WEB3.0 Blockchain은 block으로 이루어져있고, block에 데이터를 쓰려면 blockchain에 연결되어야한다. Node는 blockchian에 연결되어있는 검증자들이다. Node는 연결강도에 따라 4종류로 나뉜다. Node를 직접 운영할 수 없는 일반인은 provider를 통해 node와 연결된다. provider과는 JSON RPC(repote procedure call)방식으로 communicate 한다. block에 직접적인 write를 위해선 provider과 연결

RPC란 무엇인가..?
RPC란 무엇일까? > 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 리모트의 함수나 프로시저를 실행 할 수 있게 해주는 프로세스간 통신 기존에는 프로세스간 통신을 위해 소켓통신, RPC 같은 방식이나 RPC를 활용한 CORBA, RMI 같은 방식을 많이 사용했다면 현재는 웹기술의 발달로 인한 SOAP, REST 등과 같은 방식들이 대세를 이루고 있다고 합니다. 2015년 구글에서는 RPC와 웹기술을 혼합한 gRPC를 처음 발표하기도 했고 많은 사람들의 관심을 받기도 했었죠 RPC 모델은 분산컴퓨팅 환경에서 많이 사용되어왔으며, 현재에는 MSA에서 마이크로 서비스간에도 많이 사용되는 방식입니다. 서로 다른 환경이지만 서비스간의 프로시저 호출을 가능하게 해줌에 따라 언어에 구애받지 않고 환경에 대한 확장이 가능하며, 좀 더 비지니스 로직에 집중하여 생산성을 증가시킬 수 있습니다. 프로시저와 함수 "프로시저 또는 함수를 호출한다" 라는 내용을 보면

gRPC(1)
gRPC 이전의 기술들 > gRPC 이전, 통신기술들은 과연 어떻게 발전하였을까? > Server - Client 모델 PC 나 워크스테이션같은 소형 컴퓨터에대한 개념이 없던시절, 프로그램은 하나의 메인프레임에서 동작하는 모놀리식 구조로 설계되었다. 즉, 모든기능이 한 단말에서 구동되었기에, 네트워크 통신이 그리 중요하지 않았다 하지만, PC나 워크스테이션 같은 소형컴퓨터가 등장하자, 이러한 메인 프레임에서 구동되던 모놀리식 구조의 프로그램을 워크스테이션 서버로 이전하고자 하였다. 하지만 기존의 거대한 모놀리식 구조의 프로그램을 비교적 저사양인 워크스테이션 서버가 감당하긴 힘들었고, 이에 프로그램을 여러 모듈로 분할하여 여러 워크스테이션 서버에 분산시켜 동작하도록 하였다. 또한, 분산된 각 서버를 네트워크 연결로 서비스하였는데, 이것이 바로 Server-Client 모델이다. 이처럼, Server to S
하루일지 - 6
신문 '도심 속 폐가' 느는데…지자체는 발만 동동 > 농촌보다도 도심 속에 빈집이 더 많다고 한다. 사유재산이라 강제 철거도 불가능하고 뚜렷한 대안이 없는 것도 문제다. 어차피 사유재산인데 꼭 미관 때문에 바꿔야 하나 싶다. 도심속 재개발? 지난해 '2030 영끌족' 아파트 매매 최대치 찍었다…서울 40% 넘어 > 다른 지역은 아파트가 남는다 그러더니 역시 서울은 다시 시작이다. 대출 or 전세를 끼고 주택을 구입한다고 한다. 대출 금리가 가파르게 올랐다. 사람들이 대출을 많이 한다는 의미고 투자 목적이 클 것 같다. 이거 상환은 될까? [역대급 실적 증권사, 자사주 소각·배당 잇따라](https://www.mk.co.kr/news/stock/view
여섯 번째 작심일일, API 아키텍처 스타일 (5) GraphQL 및 정리
GraphQL: 필요한 데이터만 쿼리 REST API에서는 필요한 데이터만 얻기 위해서 몇 번의 요청을 보내야 한다. 그래서 GraphQL은 이 상황을 바꾸기 위해 탄생했다. GraphQL은 정확하게 데이터를 요청하는 방법을 설명하는 구문이다. 서로를 참조하는 복잡한 엔티티를 사용하는 애플리케이션의 데이터 모델을 GraphQL으로 구현해 볼 만한 가치가 있다. 최근 GraphQL 생태계는 Apollo, GraphiQL 그리고 GraphQL Explorer와 같은 강력한 도구와 라이브러리로 확장되고 있다. GraphQL 동작 방식 GraphQL은 GraphQL API에서 만들 수 있는 모든 쿼리와 반환하는 모든 타입에 대해 설명하는 스키마를 정의하는 것으로 시작한다. 스키마 정의 언어(SDL)
다섯 번째 작심일일, API 아키텍처 스타일 (4) REST
Representational state transfer (REST): 데이터를 리소스로 제공 REST는 설계적 제약 조건으로 API 스스로에 대한 설명이 가능하여 수 많은 API 소비자에게 채택될 수 있도록 정의된 API 아키텍처 스타일이다. 오늘날 가장 대중적인 REST API 아키텍처 스타일은 2000년 Roy Fielding의 박사 학위 논문에 처음 소개되었다. REST API는 서버 측에서 JSON 및 XML과 같은 간단한 형식의 데이터로 표현 가능하게 한다. REST 동작 방식 REST는 SOAP만큼 엄격하게 정의되어 있지 않다. RESTful한 아키텍처는 6개의 설계 제약 조건을 준수해야 한다. 일관성 있는 인터페이스: 장비 또는 애플리케이션 타입과 무관하게 목표 서버와 통신하도록 일관성 있는 통신 방법을 허용한다. 무상태: 요청 자체가 요청을 처리하는 데 필요한 상태이고 서버와 세션에 대한 내용을 저장하지 않는다. 캐싱
네 번째 작심일일, API 아키텍처 스타일 비교 - (3) SOAP
Simple Object Access Protocol (SOAP): 데이터를 서비스로 제공 SOAP는 XML 형식의 고도로 표준화된 웹 통신 프로토콜이다. XML-RPC 출시 1년 후에 SOAP가 출시되었기 때문에 SOAP는 XML-RPC로부터 상당 부분을 물려받았다. 이후 REST가 출시되었을 때, SOAP와 REST는 같이 사용되었지만, 곧 REST만 사용하는 추세가 시작되었다. SOAP의 동작 방식 XML 데이터 형식을 많은 형식적인 요소를 포함하고 있다. 이는 거대한 메시지 구조와 결합하여 SOAP를 가장 번거로운 API 스타일로 만든다. SOAP 메시지는 다음과 같이 구성된다. 메시지의 시작과 끝을 표시하는 envelop tag를 포함한다. 요청 또는 응답을 body에 포함한다. 메시지가 특정 사항이나 추가 요구 사항을 결정해야되는 경우 헤더를 포함한다. 요청을 처리하는 도중 발생할 수 있는 오류에 대한 안내를 포함한다.  RPC
Remote Procedure Call (RPC): 다른 시스템의 함수 호출 원격 프로시저 호출(RPC) 이란 다른 컨텍스트에서 함수의 원격 실행을 허용하는 사양이다. RPC는 로컬 프로시저 호출 개념을 확장하지만 이는 HTTP API 컨텍스트에 포함되는 개념이다. 초기 XML-RPC는 XML 페이로드 데이터의 타입을 보장하기 어렵다는 문제를 내포하고 있었다. 그래서 차후의 RPC API는 보다 정형화된 JSON-RPC를 사용하여 SOAP보다 단순한 구조를 지닌 SOAP의 대안으로 인식되었다. gRPC는 2015년 Google에서 개발한 최신 버전의 RPC이다. gRPC는 로드 밸런싱, 추적, 상태 확인, 그리고 인증을 위한 플로그인을 지원하기 때문에 때문에 마이크로 서비스 연결에 매우 적합하다. RPC 동작 방식 클라이언트는 원격 프로시저를 호출하고 매개 변수와 추가 정보를 직렬화하여 생성한 메시지를 서버로 보낸다. 서버에서는 받은 메시지를 역직렬화하여 요청