본문 바로가기

분류 전체보기

내멋대로 React 개념 정리하기 런타임컴퓨터 언어 안에 쓰인 프로그램을 관리하기 위해 특정한 컴파일러나 가상 머신이 사용하는 기본 코드 라이브러리나 프로그램을 말한다. Nodes자바스크립트 엔진인 V8으로 빌드된 자바스크립트 런타임이다. 자바스크립트로 서버 사이드 애플리케이션으로 구현할 수 있게 해준다. npmNode js으로 만들어진 모듈을 관리해주는 툴이다. 파이썬에서는 pip, 루비에서는 gem으로 연상하면 된다. 명령문 npxnpm 5.2+ 버전의 패키지 실행 도구이다. React자바스크립트 라이브러리이다. 컴포넌트라고 불리는 독립적인 코드 조각들을 활용하여, 복잡한 UI를 유연하게 구현할 수 있게 도와주는 역할을 한다. Babel자바스크립트 컴파일러다.Babel의 입력과 출력 모두 자바스크립트이다. 최신 버전의 자바스크립트 문..
[Varnish] Vary User-Agent HTTP Header가 캐시 퍼포먼스에 미치는 영향 Vary HTTP Header란? vary: Accept-Language, User-Agent, Cookie, Accept-Encoding 동일한 URL에서 사용자 에이전트에 따라 다른 응답을 내려줄 때 가용되는 Header이다. Vary User-Agent HTTP Header가 Cache Hit에 미치는 영향 과거의 웹 환경에서는 에이전트 환경 별로 보여주는 HTML이 달랐다. 그래서 Vary Header의 User-Agent 값을 활용하여 클라이언트 별로 다른 데이터를 내려줬다. 그러나 오늘날에는 에이전트별로 다른 HTML을 내려주지 않는다. 그리고 현대 웹 개발에서는 JSON 데이터으로 데이터를 주고받기 때문에, 유저 에이전트 별로 데이터가 다른 경우는 흔치 않다. 때문에 Vary HTTP Hea..
[Django] Django에서 MultiProccess 사용 시 주의사항 Django에서는 하나의 프로세스에서 하나의 커넥션을 맺는 것을 가정하고 있다. 그러나 Python에서는 프로세스를 사용하는 경우, 자식 프로세스에서 부모 프로세스의 자원을 복제한다. 때문에 Django에서 멀티프로세스를 사용하는 경우, 위와 같은 처리 때문에 오류가 발생하기 쉽다. 해당 문제의 대표적인 해결안으로는 자식 프로세스 시작 시, 모든 커넥션을 닫아주는 방법이 있다. def close_service_connections(): # close db connections, they will be recreated automatically db.connections.close_all() # close ES connection, needs to be manually recreated connection..
루비 개발자가 파이썬 개발자가 된다면? 나는 2015년도에 스타트업에서 백엔드 엔지니어로서 처음 프로그래밍 일을 시작했다. 2010년대 초에는 가독성이 높고, 생산성이 높은 웹 프레임워크가 인기를 끌었다. 루비온레일즈도 그 중 하나였고, 당시에 시작된 많은 스타트업에서 루비온레일즈를 주력 언어로 채택하고는 했다. 첫 직장도 이러한 배경으로 루비온레일즈를 주 언어로 사용했다. 그래서 메인 서비스가 루비온레일즈로 구현되었고, 이 곳에서 3년간 루비를 사용했었다. 나는 루비의 긱한 이미지와 희소성을 좋아한다. 드라마 실리콘밸리의 주인공인 리처드도, 처음에는 루비로 프로그래밍을 시작했다. 그래서 루비가 더 특별하고 재미있게 여겨졌다. 그리고 루비의 동글동글한 문법과, 한 편의 글을 쓰듯이 프로그램을 작성할 수 있단 점을 좋아한다. 그 중, 테스트 프..
(Django) Django에서 Thread를 다룰 때 주의할 점 💡한줄 요약 Django 스크립트에서 Thread를 사용하는 경우, Thread가 종료될 때 명시적으로 DB Connection을 닫아주는 것이 좋다. Djagno에서 Thread를 사용할 때, DB Connection이 관리되는 방식 Django에서 DB에 접근하는 Thread를 사용하는 경우, Thread마다 새로운 DB Connection을 생성된다. Django는 request가 종료될때, request_finished signal을 발생시켜 지난 DB Connection들을 모두 닫는다. ( 참고 - DB Connection을 관리하는 방법 ) 즉, Thread에서 만들어진 DB Connnecion은 Thread를 실행시킨 메인 프로세스가 종료될 때 닫힌다. import threading fro..
[APM]Elastic APM Agent 튜닝하기 최근에 회사에서 Elastic APM을 도입했다 ! 호호 🙉 쌩으로 도입한 후, 1주일 지켜본 결과. 몇가지 튜닝이 필요한듯하여 관련 자료를 찾아보았다! ( 튜닝을 안하니 APM Queue가 가득 찼다는 오류가 난다 🙈 ) 1. Sample Rate APM 에이전트에서 기본적으로 샘플링된 트랜잭션을 수집하긴 하지만, 수집 비율을 조정할 수 있다. transaction_sample_rate 설정을 조정하면 스토리지 비용과 APM 운영으로 인한 부하를 줄일 수 있다. 100% 샘플링을 하더라도 Agent가 API 응답시간에는 영향을 미치지 않는다. 그리고 샘플링되지 않은 트랜잭션이더라도 응답시간 같은 기본 정보들은 수집된다. https://www.elastic.co/guide/en/apm/agent/java..
동영상 플랫폼 이해하기 (2) - AWS MediaConvert AWS 미디어 컨버트란? 파일기반 콘텐츠를 여러 디바이스에 송출할 할 수 있도록 파일을 변환해주는 프로그램이다. File based Transcoding이란? 영상 콘텐츠 파일에 영상 변환과 압축, 패키징, 접근 권한 제어를 수행한다. 영상 변환 영상 파일의 해상도를 낮춰서 파일을 압축하거나, 파일을 여러개로 분할해주는 역할을 수행한다. Adative Streaming을 위하여, 네트워크 대역폭별로 내려줄 영상 파일을 지정할 수 있다. 영상의 썸네일 이미지를 추출할 수 있다. 영상 음성 파일을 추출해준다. 영상 파일 포맷을 변환해준다. 예를 들어, m2ts 포맷 영상 파일을 hsl, mp4 파일으로 변환해준다. 패키징 여러 디바이스 타입에서 영상파일을 사용할 수 있도록 영상 파일을 패키징을 한다. 접근 ..
동영상 플랫폼 이해하기 (1) - HLS 이번 포스팅에서는 스트리밍 동영상 플랫폼을 구성하기 위해 필요한 사전 지식을 정리하고자 합니다. HLS이란? HTTP으로 영상 스트리밍을 할 때 사용하는 프로토콜을 의미합니다. 이 프로토콜은 2009년에 애플에서 공개한 표준이며, 현재는 많은 플랫폼에서 HLS 프로토콜을 지원하고 활용하고 있습니다. HLS 특징 HLS 프로토콜을 사용하면 네트워크 상태에 따라 영상 화질을 선택할 수 있는 Adaptive Bitrate Streaming을 사용할 수 있습니다. 그리고 클라이언트에서 영상을 청크 단위로 쪼개서 다운받을 수 있고, 부분 재생을 할 수 있는 기능도 제공합니다. 이러한 특징 덕분에 사용자는 영상 재생 시, 전체 영상 파일을 다운받지 않아도 되게 되었습니다. 그리고 특정 재생 위치부터 영상을 보는 경..