infra/network8 [Network] HTTP Keep-Alive VS TCP Keep-Alive 제대로 알기 안녕하세요. 지난 시간에 Apache HttpClient 코드를 분석하면서 Network에 대해서 훑어보는 시간을 가져보았었습니다. 그러면서 Keep-Alive에 대해서 간단히 짚고 넘어갔었는데요. 오늘은 이 Keep-Alive에 대해서 헷갈릴 수 있는 부분들을 정리해보도록 하겠습니다.개요Keep-Alive는 Connection을 유지하기 위한 메커니즘입니다. TCP와 Http 모두 Keep-Alive로 Connection을 유지합니다. 둘을 햇갈릴 수 있습니다. 하지만 이 두 Keep-Alive는 완전 다르기 때문에 구분해서 알아둘 필요가 있습니다.Connection은 너무 오래유지하는 것도 너무 짧게 유지하는것도 모두 리소스적인 낭비로 이어질 수 있습니다. 너무 오래 유지하게 되면 더 이상 사용하지 .. 2024. 6. 2. [Network] Apache HttpClient의 설정으로 알아보는 클라이언트 관점의 네트워크 속성들 개요네트워크에 대해서 꼼꼼하게 이해하고 사용하면 좋겠다라는 생각을 했습니다. 어디서부터 시작할까를 생각했을 때 가장 쉽게 접근하고 사용할 수 있는 영역부터 시작한다면 좋겠다라는 생각으로 정리하며 이글을 써보게 되었습니다. 다른 서버를 호출하는 HttpClient의 설정을 하나하나 알아보며 이 설정들은 어떤것을 뜻하는지 이해해보도록 하겠습니다.Apache httpClient오늘 예제로 사용할 코드는 Apache HttpClient 코드입니다. Apache HttpClient는 현재도 관리되고 있는 몇 안되는 java 기반의 http client 중 하나입니다. 저는 해당 라이브러리를 아래의 이유로 사용하고 있습니다.현재도 메인테이닝되는 중non-blocking IO 지원코루틴을 명확하게 지원feign과 연.. 2024. 5. 17. [gRPC + java or kotlin] gRPC를 직접 구현재보자 - 공통 모델편 안녕하세요. 오늘부터는 gRPC를 직접 구현해보는 시간을 가져보도록 하겠습니다.총 3개의 챕터로 진행될 예정이며 이번 포스팅은 공통 모델, 서버, 클라이언트 편으로 나누어서 진행하려고 합니다.오늘은 protocol buffer를 이용해서 java에서 공통된 모델을 만드는 과정을 보도록 하겠습니다.IDL(Interface Defintion Language)gRPC는 Interface를 먼저 정의해야한는 언어라고 말씀드렸습니다. 이부분에 대해서는 이전 시간에 [gRPC] protocol buffer3를 실제로 사용해보자 포스팅을 참고하시면 좀 더 자세한 내용을 알 수 있습니다. 오늘 사용할 protocol buffer 파일은 아래와 같습니다. 각 라인의 설명은 코드에 달아두었습니다. 위 링크에서 proto .. 2021. 7. 31. [gRPC] protocol buffer3를 실제로 사용해보자 안녕하세요. 오늘은 gRPC의 2번째 시간입니다. 오늘은 gRPC에서 사용하는 IDL(Interface Defintion Language)인 protocol buffer을 실제로 사용해보도록 하겠습니다. 기본프로토콜 버퍼(protocol buffer)는 .proto의 확장자를 파일명으로 가집니다. 그리고 내부의 기본적인 구성은 아래와 같습니다.syntax = "proto3";message SearchRequest { string query = 1; int32 page_number = 2; int32 result_per_page = 3;}위의 구성을 통해 알 수 있는 내용을 보면 아래와 같습니다.첫 라인에는 syntax로 proto3를 사용한다고 명시해줍니다. 명시하지않으면 기본 값으로 proto2의.. 2021. 7. 25. [gRPC] gRPC에 대해서 알아보자 - 기본 컨셉편 안녕하세요. 오늘은 gRPC에 대해서 알아보는 시간을 가져보도록 하겠습니다.gRPC 개요gRPC는 HTTP/2를 기반으로 Protocol Buffers로 정의하며 통신시 바이트 스트림으로 통신하게 됩니다. 따라서 Json 기반으로 통신하는 Rest API 보다 더 가볍습니다. 또한 gRPC는 HTTP/2 기반이기 때문에 하나의 채널 커넥션을 맺고 그 커넥션을 통해서 동시에 메시지를 보내고 처리할 수 있습니다. 이런 이유로 전체적인 통신 속도의 향상 또한 크게 기대할 수 있습니다. ( 바이트 스트림 통신으로 인한 latency 상승은 그렇게 크지 않다고 합니다. Link 참조)개요gRPC는 Google Remote Procedure Calls의 약자입니다. 이름에서 알 수 있듯이 RPC의 한 종류입니다. .. 2021. 7. 24. [HTTP] HTTP Cache - 프로세스와 기본 헤더 안녕하세요. 오늘 여러분들에게 소개해드릴 내용는 HTTP의 Cache 프로세스와 관련된 기본 헤더들입니다. 웹사이트를 통해 이미지 , js, html 파일 등의 데이터를 가지고 올 때 해당 데이터의 크기만큼의 통신 데이터 처리가 필요합니다. 동일한 이미지를 접속할 때 마다 받아온다면 클라이언트 입장에서도 부담이며 여러 클라이언트를 동시에 상대하는 서버에는 더더욱 부담이 될 것입니다. 이렇게 때문에 HTTP에서는 캐싱(caching)를 지원하고 있습니다.오늘은 HTTP Cache의 종류와 그 과정에 대해서 알아보는 시간을 가져보도록 하겠습니다.HTTP 캐싱캐싱은 크게 두가지의 종류가 있습니다. 사설(private) 캐시와 공유(shared) 캐시입니다. 사설 캐시는 각 Client의 로컬 캐시에 데이터를 .. 2021. 2. 4. [HTTP] HTTP 메시지 분석 하기 안녕하세요. HTTP는 현대 개발에서 가장많이 사용하는 프로토콜 중에 하나입니다. 주로 이 프로토콜을 기본으로하여 유저와 서버간 서버와 서버간의 데이터를 주고 받습니다. 오늘은 이런 HTTP의 구조에 대해서 개괄적으로 분석해보는 시간을 가져보도록 하겠습니다.http 통신의 구성http 통신은 요청과 응답이 하나의 세트로 이루어집니다. 즉, 요청(Request)에 대해서 응답(Resonse)이 오는 구조인데요. 이때 http의 프로토콜 구조는 세부 내용은 다르지만 요청(Request), 응답(Resonse) 모두 동일한 구성을 가집니다. 바로 시작줄(Start Line)과 헤더(Headers)와 바디(Body)로 구성된다는 것입니다.아래 이미지는 제 블로그(sabarada.tistory.com)을 접속했을.. 2021. 1. 28. [REST API]REST를 사용할 때 주의해야할 점 REST를 만든사람 : 로이필딩, 박사학위 논문 (https://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm)REST API : REST 아키텍처를 따르는 시스템구성요소Client-Serverstatelesscacheuniform interfacelayered systemcode-on-demand (optional)—> 대부분의 요소는 잘 지켜지고 있다. ( 브라우저 같은 곳에서 지원하기 때문 )—> Uniform interface가 잘 지켜지는지는 되돌아볼 필요가 있다.Uniform interface 제약조건identification of resourcesmanipulation of resources thorough representationsself-d.. 2019. 8. 4. 이전 1 다음