This week I Learned 17

주영택·2020년 4월 27일
0

This Week What I Learned

목록 보기
15/50

포스터 이미지 출처

HTTP 응답과 캐시 히트

http 응답 정보에 문자열 하나라도 다르면 캐시는 invalidate 된다. CTO님의 말을 빌리면 daum.net 메인의 경우 99% 의 캐시 히트를 유지한다고 한다.

예전에 주요 포털이 iframe 으로 로그인 창을 유지하는 경우가 있었는데 이런 연유였고 그래서 지금은 ajax(fetch) 를 통해 해당 영역을 별도로 랜더하고 있다.

응답 정보에는 당연히 쿠키 정보도 포함된다. 스케일이나 트래픽이 늘어나면서 authentication 정보는 따로 나누어 요청하고 전달 받는 것이 더 나은 전략이 된다.

TypeScript 데코레이션

A Decorator is a special kind of declaration that can be attached to a class declaration, method, accessor, property, or parameter. Decorators use the form @expression, where expression must evaluate to a function that will be called at runtime with information about the decorated declaration.

프리-프로세스하는게 아니고 런타임에 처리된다고 한다.

런타임 시멘틱 확장은 좀 신중하게 접근해야할 필요가 있다고 생각하는데...
JS에서 데코레이션이 널리 쓰일 일은 없을 것 같고...

Vue Config 의 pathRewrite

어떤 패턴은 regex 를 생성하고 어떤 패턴은 그냥 문자열로 사용하고 있음.

어쨌든, Nginx 의 location 등에 사용하는 정규식은 일반 regex 패턴이 아니고 nginx 전용의 패턴.

antPathMatch, glob 패턴, 와일드 카드 등 여러 정규식 패턴이 있음.

Datetime 타입 문제

자바스크립트의 date 객체는 외부로 표현되기 전까지는 UTC 값이다. 즉, UTC 기준의 Epoch 값인 것이다.
이 값을 프린트하거나 다른 타입에 저장할 때 변환이 일어난다. 타임존 영향을 받게 된다.

멀티 리전 서비스를 생각해보면 이 문제는 쉽게 해결하기 어렵다.

  • 데이터베이스의 시각 값
  • 데이터베이스 드라이버에서 처리하는 부분
  • 서버의 타임존
  • 브라우저의 타임존

각각의 스텝마다 변경이 있을수도 있고 없을수도 있다. 물론 컨트롤 가능한 부분도 있고 그렇지 않은 부분도 있다. 사이드 이펙트를 줄이면서 안전한 방법으로 날짜/시각을 처리하는 과정을 고민해야 한다.

중첩된 비동기 코드에 대한 테스트 케이스 작성

이중으로 Promise 된 코드를 테스트 하기 위해 반드시 해당 함수(모킹된 함수)가 호출되는지 점검해야 한다. 그렇지 않은 경우는 그냥 테스트를 성공했다고 생각할 수 있다.

하지만 사실 컨텍스트를 벗어나 테스트가 스킵되었는데 성공했다고 여길 수 있다. sunny day 케이스만 생각하면 안된다.

Nginx 프록시에서 청크가 잘릴 경우

보통 SPA 스타일 개발하는 경우 배포는 스태틱 파일로 나가지만 개발할 때는 프록시 서버를 사용한다. 내 경우도 어드민 페이지는 스태틱 파일과 API서비스 둘로 이루어져 있는데 이 스태틱 파일을 서빙하는 개발 서버가 프록시로 연동되어 있다.

그런데 최근 환경 셋업에서 이 프록시 서버의 스태틱 파일을 온전히 내려주지 못하는 일이 발생하고 있다.

인스펙터를 열어 전송된 파일을 열어보면 청크가 잘렸다고 나온다.

location / {
  proxy_path http://vue-cli-app
  proxy_buffering off;

우선 이 방법으로 우회를 했는데 좀 더 살펴봐야겠다. 다른 환경에서는 이 플래그가 없이 잘 작동하기 때문이다.

링크들

profile
NodeJS 백엔드 웹 개발자입니다.

0개의 댓글