Module Caching Node.js에서 모듈이 어떻게 로드되고 캐싱되는지 이해하는 것은 최적화된 효율적인 코드를 작성하기 위해 중요합니다. 모듈 캐싱은 시간과 리소스를 절약하여 애플리케이션을 더 빠르고 반응성 있게 만들 수 있습니다. 이 글에서는 Node.js의 모듈 캐싱에 대해 자세히 알아보고, 어떻게 효과적으로 사용할 수 있는지에 대해 탐구하겠습니다. 모듈 캐싱이란? 모듈 캐싱은 Node.js가 모듈 파일을 단 한 번만 로드하도록 하는 메커니즘이며, 이는 애플리케이션 전체에서 여러 번 require 되더라도 마찬가지입니다. 모듈이 처음 로드될 때 실행되고 메모리에 캐시됩니다. 동일한 모듈에 대한 후속 require 호출은 캐시된 버전을 반환합니다, 추가적인 파일 작업이나 코드 실행이 필요 없게 ..
JWT 와 Session 시작하기에 앞서, 해당 글에서는 JWT에 대한 구조에 대해서는 자세하게 설명하지는 않도록 하겠습니다. 어느 정도 JWT에 대한 이해가 되신 분들이 해당 글을 읽고 어떠한 인증 전략을 가져가야 하는지 생각해보는 글이 되었으면 합니다. Session 기반 인증 Session 기반 인증이라고 하면서 서버에서는 user에 따른 Session ID를 생성 하고 해당 Session ID를 서버 리스트에 저장을 시켜 요청이 올 때 마다 유저를 인증하는 방식입니다. 위의 Sequence Diagram (이하 SD) 을 보면 Session 기반인증의 가장 큰 특징은 서버에서 저장을 하고 있다라는 것입니다. Token 기반 인증 토큰 기반 인증 방식은 Session과는 다르게 유저에 대한 인증 정..
HTTP vs HTTPS HTTP(HyperText Transfer Protocol)와 HTTPS(HyperText Transfer Protocol Secure)는 인터넷을 통해 데이터를 전송하기 위한 프로토콜입니다. 주요한 차이점은 보안과 암호화입니다. 보안: HTTP: HTTP는 평문 텍스트로 데이터를 전송하기 때문에 보안이 제공되지 않습니다. 데이터가 암호화되지 않기 때문에 도청이나 데이터 변조와 같은 공격에 취약합니다. HTTPS: HTTPS는 SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security) 프로토콜을 사용하여 데이터를 암호화합니다. 이를 통해 데이터의 기밀성과 무결성을 보호하고, 도청과 데이터 변조를 방지할 수 있습니다. 암호화: HTTP..
TDD Study 용 기본 Module 더보기 Production 환경 Express Mongoose npm install express mongoose --save Development 환경 Jest Node-mocks-http supertest npm install jest supertest node-mocks-http --save-dev Extensions JestRunner 단위(Unit)테스트 더보기 정의 개발자가 작성한 모듈 단위의 코드를 테스트하는 것. 소스 코드의 개별 단위 를 테스트 하여 준비 여부를 확인. 조건 독립적이어야 한다. (어떤 테스트도 다른 테스트에 의존하면 안됨) 격리 되어져야 한다. 주입을 받거나 model을 받아야 하는 경우 mockup으로 처리 하여야 한다. 목적 프로..
인터프리터와 JIT `JavaScript`의 기본 컴파일러는 V8엔진의 `인터프리터(Interpreter)` 입니다. 인터프리터의 특징으로는 코드를 한 줄 씩읽어 내어 바이트코드로 변환한다는 것입니다. 이렇게 변환된 바이트코드를 V8 엔진의 `Just-In-Time(JIT)` 컴파일러로 한번에 컴파일을 하는 방식을 제공하고 있습니다. 인터프리터 V8 엔진은 JavaScript 코드를 처음 실행할 때, 인터프리터를 사용하여 코드를 바이트코드(Bytecode)로 변환합니다. 인터프리터는 코드를 한 줄씩 읽어서 해석하고 실행합니다. 이 과정에서 실시간으로 코드를 실행할 수 있습니다. 인터프리터는 빠른 실행 속도를 제공하지만, 최적화된 기계어 코드보다는 비교적 느린 성능을 가질 수 있습니다. JIT 컴파일러 V..
JavaScript Node.js를 알아보기 이전에 자바스크립트에 대해서 이해를 하고 있어야 합니다. 자바스크립트는 기본적으로 클라이언트 사이드 (Client Side)에서 사용되는 스크립트 언어를 말합니다. 여기서 말하는 클라이언트 사이드는 사용자의 웹 브라우저에서 동적으로 코드를 변경되는 것을 말하며, 반대로의 의미는 서버 사이드(Server Side) 입니다. 자바스크립트가 가진 특징은 아래와 같습니다. 클라이언트 측 스크립트 언어: 위에서 설명 하였 듯이, JavaScript는 웹 브라우저에서 실행되는 클라이언트 측 스크립트 언어입니다. HTML 문서 안에서 태그를 사용하여 JavaScript 코드를 작성하고 실행할 수 있습니다. 웹 페이지의 동적인 동작을 구현하거나 사용자와의 상호작용을 처리하는..