2020-11-09(Mon)

  1. 학습 날짜 // 2020-11-09(월)

  2. 학습시간 // 9:00~22:00

  3. 학습 범위 및 주제 // chunked encoding

  4. 동료 학습 방법 // sanam, yohai님과 협업, eunhkim님과 토의함.

  5. 학습 목표 // chunked encoding 구현에 필요한 고민/판단을 마무리한다.

  6. 상세 학습 내용

이번에도 task를 두 가지로 나눠서 진행하였다.

  1. CGI와 서버간의 통신을 파이프 두 개로 통신할 수 있도록 개선

  2. 저장한 body를 chunked body로 가공하여 client에 송신하도록 개선

1번은 CGI를 맡아주신 sanam, yohai 님이 헤드 잡고 구현하도록 했고 2번은 내가 헤드잡고 구현하도록 했다.

chunked body를 만들기 위해서는 아래 두 가지에 대해 기준을 정해야했다.

1) 청크드 인코딩 하는 기준 2) 청크드 인코딩할 때 청크사이즈의 베스트플랙티스

열심히 찾아본 결과

1) 청크드 인코딩 하는 기준은 바디사이즈가 서버기준에서 넘 크거나 특정이 안될 때 하는 것으로 정했다. 결과적으로 1. 버퍼사이즈 넘는 파일크기를 응답할 때 2. Cgi 출력값을 응답할 때 청크드 인코딩할 예정.

2) 청크드 인코딩할 때 청크사이즈의 베스트플렉틱스도 너무 잘게 자르지말라는 조언은 있는데 적정크기에 대한 내용은 딱히 없었다. 그래서 body를 8kb 단위로 잘라서 청크인코딩하려고 한다. 8kb인 이유는 브라우저들이 보통 요청을 보낼 때 8kb 이하로 보낸다는 언급이 있고, 서버든 클라이언트든 자신이 보내는 body의 length 만큼은 처리할 수 있어야한다는 언급이 있어서, 8kb 이하 수준 중 가장 큰 값을 청크사이즈로 정했다.

  1. 학습 내용에 대한 개인적인 총평

프로토콜 사양 등으로 명확히 정해져있지 않다면, 무엇이 적절한 값인가 고민하고 선택해야하는 지점이 있습니다. Chunked message 구현시 이런 고민이 필요했습니다. 현업에서도 이런 경우가 많을 텐데, 맞는 것은 맞게 틀린 것은 틀리게 잘 분별하는 것 외에도 '내 생각이 진짜 맞는지' 검증할 수 있도록 하는 것이 중요하다는 생각이 들었습니다. 검색했을 때 베스트 플랙티스가 딱 나오는게 아니라면 시행착오를 수집해서 베스트 플랙티스를 찾아가야겠지요.

다음 학습 계획

  • Transfer-Encoding 헤더 구현

Last updated