공부하고 기록하는, 경제학과 출신 개발자의 노트

학습일지/네트워크 15

KubeCon 2019 - The story of Why we migrate to gRPC and How we go about it (Spoti

https://youtu.be/fMq3IpPE3TUThe story of Why we migrate to gRPC and How we go about itMatthias Grüter. Engineering Manager in the infrastructure group. gRPC based infrastructure로 전환한 이유gRPC based infrastructure로 전환한 방법2500여 개의 내부 serviceingress로 들어오는 request 가 초당 8백만 (Query for Second서비스 간 통신에는 자체 개발한 protocol을 사용하고 있었음. (이름은 Hermes) RPC 프레임워크가 아니라 통신 프로토콜이었음. gRPC보다는 http와 비교대상.동작에는 문제 없음그런데 왜 ..

KubeCon 2018 - Using gRPC for long-lived and Streaming RPCs

Using gPRC for long-lived and Streaming RPCs 발표자: Eric Anderson - gRPC Java 팀 tech lead. Google에서 근무 발표자료: https://kccna18.sched.com/event/GrWo 발표영상: https://youtu.be/Naonb2XD_2Q Long-Lived gRPC란? RPCs that last minutes / hours/ days. Long polling (Hanging Get). 예컨대 서버에서 특정 이벤트가 발생할 때까지 대기하는 로직. 강연에서는 Notification / Watches를 예시로 들었음. Hanging Get : 서버에서 요청에 응답할 데이터가 없는 경우, 해당 데이터를 사용할 수 있게 될 때까지 ..

Deview 2021 - NAVER 암호화 트래픽을 책임지는 HTTPS 플랫폼 기술 - 2. 활용

L7 based Load balancing 기본적으로 L4 로드밸런서 method 제공. L7에서 받을 수 있는 데이터 기반으로 많은 기능을 추가로 제공함. 네이버에서는 각 서비스 단위별로 운영하며, host header 기반 Route 아키텍처. Path based Route L7 로드밸런서의 특징. 클라이언토 요청을 url path 기준으로 정의된 패턴에 부합하는 origin으로 라우팅. 하나의 도메인에서도 static / dynamic 콘텐츠의 origin 분리해서 활용할 수 있음. Circuit Breaker 모든 origin에서 정상 응답이 불가능한 상황이 되면, 정상 연결될 때까지 다른 origin 군으로 연결해주거나 직접 응답하는 기능. nfront가 redirect / static erro..

Deview 2021 - NAVER 암호화 트래픽을 책임지는 HTTPS 플랫폼 기술 - 1. 기술

https://tv.naver.com/v/23651836 NAVER 암호화 트래픽을 책임지는 HTTPS 플랫폼 기술 NAVER Engineering | 공진호/김해랑 - NAVER 암호화 트래픽을 책임지는 HTTPS 플랫폼 기술 tv.naver.com Naver 암호화 트래픽을 책임지는 https 플랫폼 기술 SSL Termination / PassThrough termination : 암호화 트래픽의 연산작업을 대행해주는 기능. back에 있는 서버는 복호화되어 있는 데이터만 처리함. 리소스 효율화 / 백엔드의 외부 노출이 방지되어 보안에 유리한 솔루션. nFront 플랫폼이 오픈하던 시기는 2018년. 브라우저가 https를 디폴트 통신으로 설정하는 추세, https 아닐 경우 경고메시지 표시... ..

gRPC (4) - Client Streaming 개념 및 예제코드

Client Streaming 클라이언트가 여러 번 서버에 데이터 전송, 클라이언트가 응답을 언제 받을 수 있는지는 전적으로 서버에게 달려있다. 실습환경은 아래와 같은 디렉토리에서 이루어졌다. go를 설치하고 환경변수로 GOPATH를 등록한 상태로, 모든 명령어는 ~/go/src/ch4 에서 이루어졌다. 1. proto 파일 생성 greetpb 디렉토리에 greetpb.proto 파일을 생성하고 아래와 같이 입력해준다. syntax = "proto3"; package greet; option go_package="greet/greetpb"; message Greeting { string first_name = 1; string last_name = 2; } message LongGreetRequest {..

gRPC (3) - Server Streaming 개념 및 예제코드

Server Streaming cf. 예제코드는 go 개발환경과 protoc-gen-go 디펜던시가 갖추어졌다는 전제로 작성되었다. Http2의 특징을 활용한, 새로운 형태의 RPC API. 클라이언트의 요청 한 번으로, 서버가 데이터를 여러 번 전송할 수 있는 형태. 실습환경은 아래와 같은 디렉토리에서 이루어졌다. go를 설치하고 환경변수로 GOPATH를 등록한 상태로, 모든 명령어는 ~/go/src/ch4 에서 이루어졌다. 1. proto 파일 생성 greetpb 디렉토리에 greetpb.proto 파일을 생성하고 아래와 같이 입력해준다. syntax = "proto3"; package greet; option go_package="greet/greetpb"; message Greeting { str..

gRPC (2) - Unary 개념 및 예제코드

cf. 예제코드는 go 개발환경과 protoc-gen-go 디펜던시가 갖추어졌다는 전제로 작성되었다. Unary 일반적으로 생각하는 Client - Server간 일대일 메시지 통신. Hands on 실습환경은 아래와 같은 디렉토리에서 이루어졌다. go를 설치하고 환경변수로 GOPATH를 등록한 상태로, 모든 명령어는 ~/go/src/ch4 에서 이루어졌다. 1. proto 파일 생성 greetpb 디렉토리에 greetpb.proto 파일을 생성하고 아래와 같이 입력해준다. syntax = "proto3"; package greet; option go_package="greet/greetpb"; message Greeting { string first_name = 1; string last_name = ..

gRPC (1) - gRPC의 특징 및 성능확인

Problem statement 논리적으로는 분리되어 있지만 Monolitic하게 설계된 애플리케이션이 있다고 가정하자. 내부 모듈 간 통신 속도가 빠르다는 장점 하나의 모듈에 문제가 생길 경우 애플리케이션 전체가 영향을 받음 (특정 모듈이 메모리를 과도하게 점유할 경우 시스템 전체가 죽는다던가) 그렇다보니 애플리케이션의 구조를 MicroService로 변경하려는 추세. 따라서 각각의 business / subdomain별로 별도의 시스템을 생성한 뒤 Http, Json으로 통신하는 형태의 아키텍처. Http + Json 기반 MicroService의 단점으로 생각할 수 있는 점 요청 / 응답에 걸리는 시간. 오른쪽 그림처럼, TCP 커넥션을 맺은 후에야 Request / Response를 받아올 수 있..

WebRTC - 개념과 통신방식, 프로토콜

WebRTC Real time Communication on Web Browsers / Mobile App을 가능하게 하는 Framework. 즉 text 형태로도, video 형태로도 가능하다는 뜻. P2P만을 말하는 건 아니다. 단순한 P2P보다 훨씬 복잡함. 크게 네 가지 step을 거쳐 동작한다. Signalling Connecting Securing Communicationing. 보통 WebRTC를 사용한 통신의 대부분이 P2P인 것뿐이다. 왜 등장했는가? WebRTC 이전에는 Server가 MiddleMan 역할을 했다. 즉, 사용자 간 통신의 모든 부하를 서버가 떠맡는 구조였다. Scalable에 한계가 있는 구조 / 유지하기 비싸다. 그럼 아예 이렇게 통신하게 하면 어떨까? 중간에 서버가..

HTTP

목차 HTTP 특징 구조 메소드 URL과 URI HTTP 버전별 특징 nginx와 apache HTTP 서버와 클라이언트가 텍스트, 이미지, 동영상 등의 데이터를 주고받을 때 사용하는 프로토콜. 기본적으로 텍스트를 전송한다. 특징 TCP/IP 기반으로 한 지점에서 다른 지점으로 요청을 보내고 받음. 무상태성 (Stateless) 클라이언트와 서버가 각각 HTTP로 통신할 때, 상대방의 State를 기억하거나 저장하지 않는다. 비연결성 (Connectionless) 요청을 받은 서버가 응답을 마치면, 소켓을 유지하지 않고 연결을 끊는다. 요청에는 반드시 응답이 일대일로 대응된다. 서버가 응답을 보내더라도, 클라이언트가 받지 못할 수 있으므로 클라이언트가 각 상황별 대응을 결정해야 함 클라이언트는 일정 시간..