This week I Learned 19

주영택·2020년 5월 12일
0

This Week What I Learned

목록 보기
17/50

개발환경 구성에서 도커의 의미

빠른 개발 시작을 위해 로컬 개발 환경을 도커로 말아주는 것은 최근 새로 업무에 투입되는 동료를 개발팀이 제공하는 기본 옵션이 되고 있다.

하지만 나는 도커로 인한 쓸데없는 메모리 부족과 리눅스가 아닌 환경에서 도커를 써야한다는 압박과 그 느껴지지 않는 딜레이가 군실거렸다. 그래서, 최근 도커 개발환경을 제거하겠다고 PC 에 네이티브 서버들을 설치하고 잘 썼다.

그러던 중 인프라 구성이 개선되기 전 상태의 버그 패치가 필요해 서버 세팅을 변경해야 할 일이 발생했는데
기존 세팅으로 변경해도 정상 동작하지 않는 문제를 겪었다.

물론 제대로 세팅되지 않아서 그랬지만 마스터 브랜치의 패치는 보통 긴박한 시간 속에서 진행된다. 서버 세팅에 시간을 많이 쓰면 위험하다. 그 밤에 도커를 다시 설치하고 진행했어도 되겠지만 깔끔히 포기하고 도커가 설치된 업무용 피시를 사용할 때까지 포기했다.

다음 날 출근을 하고 지난 인프라를 그대로 복원해 주는 도커 환경을 보면서 그간 도커를 무시했던 나를 비웃었다.

GI (Global Illumination)

알못이지만, 나름 CG 업계를 동경해온 입장에서 한 10여년 전 GI 기법이 소개되었을 때 왜 이게 중요한 이슈인지 몰랐었다. 어쩌다 Unreal 5 reveal 영상을 보는데 GI 가 중요한 이유에 대한 힌트를 얻었다.

no light map no baking...

인터뷰 단상

측은지심 없이 어떻게 이 세상이 굴러가겠어...

생각보다 나쁘지 않은 인터뷰 였다.

브라우저 스크립트 핫 픽스 전략

정상 배포 절차를 통해서 핫-픽스를 할 수 있으면 해피한 핫픽스겠지만 그렇지 않은 경우가 종종 발생한다.

최근 인증서버 변경으로 인한 SPA 앱 개선은 준비 부족으로 인한 심각한 오류를 발생시켜 개발팀 모두 혼란에 빠졌다.
oAuth 를 이해하지 못하고 코드를 작성한 것이 불찰이지만 한 번에 개선하지 않고 부분 개선 전략을 선택한 내 잘못이 크다.

CTO 님께서 코드를 손보게 되었고 외부 출강이 있던 나는 뒤늦게 변경된 코드 일부를 확인했다. 그동안 내가 취한 전략과 다른 패치 패턴이 눈에 띄어 기록을 남겨 본다.

클라이언트 캐시를 Bypass 하기

클라이언트 스크립트는 캐시 문제가 항상 이슈다. 새로운 파일을 서버에 업로드 하고 캐시를 컨트롤 해야 하지만 현실적으로 접속자 캐시를 삭제하는 것은 불가능하다. 그렇다면 새 파일을 다시 로드하게 해야 한다.

단순하다. 파일 명을 다른 이름으로 지정하면 된다. 그동안 나는 왜 같은 이름의 파일을 업로드 했을까?
아마 클라이언트 파일만 교체해서 해결하려 했기 때문이다. 완벽하지 못한 해결이다.
어짜피 html 파일은 서버 재실행 없이 로드 가능하다.

<!--<script src="{{#asset}}js/main.js{{/asset}}" defer></script>-->
<script src="static-file-service-location/main-20200515-3.js" defer></script>

모 팀장님 아이디처럼 PlainOldCode 지만 완벽하다.

로컬 스토리지 인젝션

같은 패턴으로 메인 스크립트에서 해결하지 못하는 클라이언트 코드가 있다면 html 파일에서 script 태그로 패치하는 방법이 있다.

인증에 사용되는 토큰을 localStorage 에 저장하고 있는데 expired 된 토크이 invalidate 되어 발생하는 문제가 있었는데 서버에는 새 토큰을 가지고 있는 경우가 있어 이를 로컬 스토리지에 지접 심어 해결하는 방법도 발견하였다.

<script>const a = '{{accessToken}}'; if (a) { localStorage.setItem('access-token', a); }</script>

HTTP 프로토콜은 모두 text 라고 강조하면서 쫄지 말라고 했던 기억이 난다.
장애 앞에서 쫄지 않으려면 얼마나 더 성장해야 하는가?

링크들

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

0개의 댓글