Train My Brain

적당한 프로젝트명을 찾다가 문득 생각나는 것으로 지었다. 가장 기본적인 뼈대를 갖춰볼텐데, 아마 이거 하면서 gRPC에 대해 더 공부할 듯 싶다. 물론 이론까지 빠삭하게 알면 좋겠지만 그냥 희망사항이라고 생각하고 일단 사용법부터 익숙해지는게 목표다. 그러다보면 실제로 어떻게 Serialize, Deserialize가 되는지 등에 대한 이론적인 것들을 익히게 되지 않을까..?

이건 서버와 클라이언트가 통신하는 구조를 갖출 것이다. 굳이 PySyft나 TF-Federated 가 있는데도 왜 이걸 하느냐 물어보면 할 말 없다. 그냥 하고 싶어서 하는 거고, 사실 저 두개는 아직 내가 원하는 Flow로 Train하도록 짜는게 좀 제약이 있다. 그래도 Openmined와 Google이니… 빠른 시일내로 되겠지.. ?

각설하고, chat example과 마찬가지로 여러 프로젝트로 나눠볼 예정이다. 1차적으로 core, server, client, proto 로 나누기로 했다.

  • core - 공통적으로 꼭 필요한 것들 따위를 넣어둘 건데, 당장 떠오르는건 conifg 정도 ?
  • proto - 서버와 클라이언트를 gRPC로 이어줄 것이기 때문에 이들이 주고 받을 메세지에 대한 protobuf를 정의.
  • server - 서버 ( gRPC Client/Stub )
  • client - 클라이언트 ( gRPC Server )

서버가 왜 gRPC의 클라이언트가 되고 클라이언트는 왜 gRPC 서버가 되는지는.. 사실 꽤 오래 고민한 결과다. gRPC의 특성에서 기인한 것이기 때문에 일반적인 프로세스 커뮤니케이션을 생각하고 있다면 조금 헷갈릴 수도 있다.

이건 프로젝트별로 포스팅을 나누어 하려고 한다. 그만큼 좀 집중해서 해보고 싶은 프로젝트이기 때문이다. 뭘 하려고 하는지는 앞으로 git에 md파일로 쓰도록 하겠다.