본문 바로가기

CS14

RPC와 gRPC RPC 프로토콜의 탄생 이유rpc는 같은 프로세스 내부의 기능이 아닌, 다른 프로세스 혹은 다른 서버의 프로세스에 있는 기능을 같은 프로세스 내부의 기능처럼 사용하기 위한 프로토콜이다. 여기서 '같은 프로세스 내부의 기능처럼 사용'의 의미는 다른 프로세스와 통신하기 위한 IPC 작업이나 외부 통신을 위한 네트워크 I/O에 대한 작업(네트워크 프로토콜, 메시지 직렬화 등)을 추상화 하여 개발자가 같은 프로세스에 있는 로컬 함수를 호출하듯이 사용하기 편함을 의미한다.gRPCgRPC는 Google에서 개발한 RPC 프레임워크이다. gRPC는 기본적으로 네트워크 통신을 통해 다른 서버에 있는 기능을 사용하기 위해 탄생했다.(내부의 다른 프로세스와의 통신도 가능하다.)gRPC가 추상화 해준 핵심 기능은 다음과 같.. 2024. 8. 21.
[CS] HikariCP 설정으로 쿼리 성능 개선하기 0. 이 글을 쓰게된 이유 이번 프로젝트에서 HicariCP 설정을 통한 쿼리 성능 최적화를 담당하게 되었다. 이 과정에서 배운 점을 기록하고자 이 글을 쓰게되었다. 1. Connection pool size 일단 제일 중요한 Connection pool size로 성능 개선을 해보자. HikariCP 공식 문서에서 Connection pool size 설정 관련한 WIKI를 보면 오히려 크기를 늘리지말고 줄이는 것이 성능 개선에 유리하다고 되어있다. 그렇다면 왜 그럴까? 1.1 제한된 서버 자원 데이터베이스의 병목 현상은 주로 CPU, 하드디스크, 네트워크 이 세가지로 인해 발생한다고 한다. 메모리도 물론 영향을 미치지만, 이들에 비해 굉장히 미미한 수준이다. 우리의 서버는 이러한 자원들이 제한되어있으.. 2023. 10. 7.
[보안] JWT 토큰에 대해서 알아보자 0. 이 글을 쓰게된 이유 이번 프로젝트를 진행하면서 토큰을 이용한 인증/인가를 담당하게 되면서 jwt를 사용하게 되었다. 그 과정에서 알게된 jwt의 특성과 경험을 기록하기 위해 이 글을 쓰게 되었다. 1. JWT란? JWT는 JSON Web Token의 줄임말로, 두 개체(ex -> 서버와 서버) 사이에 정보를 안전하게 전송하기 위한 토큰 인증 방법이다. 이는 RFC 7519에 정의 되어있고 토큰 인증 방식에서 많이 사용되는 방법이라고 볼 수 있다. jwt가 안전한 이유는 jwt토큰 자체가 디지털 서명이 되어있기 때문이다. 비밀키를 알고있어야 jwt가 유효한지 알 수 있기 때문에 중간에 토큰이 오염이 되지 않았음을 보장할 수 있다. 2. JWT 토큰 구조 JWT는 Header, Payload, Sig.. 2023. 7. 21.
[CS] SHA-256 + Salt 0. 이 글을 쓰게 된 이유 프로젝트를 진행하며 SHA-256 단방향 암호화를 진행하면서 발생하는 문제점을 인식하고 해결한 과정에 대해 기록하고자 이 글을 쓰게되었다. 1. SHA-256이란? SHA-256은 SHA-2(Secure Hash Algorithm 2)의 한 형태로, 암호학적 해시 함수의 집합 중 하나이다. 여기서 256은 이 알고리즘이 생성하는 해시 값의 비트 길이이다. 암호학적 해시 함수란 임의의 크기를 입력 받아 그 길이의 고유한 문자열로 변환하는 함수이다. 암호학적 해시 함수는 다음과 같은 특징을 가지고 있다. Preimage resistance (원상 저항성): 해시 결과(해시 값)로부터 원래의 입력 값을 찾아내는 것이 불가능하다. 즉, 해시 값만 가지고는 원래 데이터를 알아낼 수 없.. 2023. 7. 13.
[Network] 프로토콜 스택이 서버와 통신하는 방법 훑어보기 0. 이 글을 쓰게 된 이유 지난 글에서는 브라우저가 요청을 주고 받을 때, 어떻게 동작하는지에 대해 알아보았다. 지금까지는 TCP/IP 계층 구조에서 어플리케이션 계층에 해당하는 내용을 알아봤다고 생각하면 된다. 지난번에 말했듯이 브라우저는 네트워크 기능을 가지고 있지않아서, OS의 프로토콜 스택에게 네트워킹을 의뢰한다. 오늘은 OS의 프로토콜 스택이 어떻게 네트워킹을 하는지 내부 동작에 대해서 순서대로 알아보자. TCP/IP 계층으로 따지면 Transport, Network 기능이다. 들어가기 전에 일단 프로토콜 스택의 내부 구성에 대해서 알아보자. 출처 : https://github.com/Road-of-CODEr/one-percent-network/blob/master/20201014/Chapte.. 2023. 5. 28.
[Network] 브라우저는 어떻게 웹 서버로 요청을 보내는걸까? 0. 이 글을 쓰게 된 이유 아주 예전부터 기술 부채에 "요청 버튼을 누르면 구체적으로 어떤 방식으로 요청이 서버에 닿을까"가 있었다. 만약 면접에서 이 질문이 들어오면 대답할 자신이 없었기 때문에 언젠간 해야지 하다가 드디어 브라우저부터 찔끔 정리해보려고 한다. 1%의 네트워크 원리를 토대로 정리를 하는 것이라서 거의 비슷한 순서로 글을 작성한다. 브라우저는 여러 개의 클라이언트 기능을 제공하는 복합적인 클라이언트 소프트웨어이다. 브라우저가 어떤 기능을 제공하고, 어떤 과정을 통해 웹서버로 요청을 보내는지 알아보자. 1. HTTP Request 메시지 작성 일단 요청을 보내려면 요청 메시지를 작성해야한다. HTTP 말고도 다양한 프로토콜이 있지만 주제가 웹 서버로 요청을 하는 것이니 HTTP를 기준으로.. 2023. 5. 17.