728x90

전체 글 176

NestJS 전역 CacheManager로 Redis 사용하기

1. CacheManager 사용 이유NestJS에서 캐싱을 위해 redis를 사용할 때직접 RedisModule과 RedisService를 정의하여 사용할 수도 있지만,@nestjs/cache-manager 와 cache-manager 라이브러리를 사용하면 훨씬 간단하다. service를 정의해서 사용할 때는redis 서버에 command를 보내는 메서드를 모두 직접 구현해 사용해야 한다. 라이브러리를 사용하면get, set, reset, del 등 흔히 사용하는 커맨드들이 제공되어바로 사용할 수 있다. 2. CacheManager 사용 방법캐시 매니저 라이브러리 사용에 대해서는NestJS 공식문서에서도 안내하고 있다. [공식 문서]$ npm install @nestjs/cache-manager cac..

Node.js/NestJS 2024.07.06

[개념 정리] 서버리스(serverless)란?

서버리스(serverless)란? 서버리스란 서버가 없다는 의미는 아니다. 직접 서버 환경을 관리하지 않고, 원하는 함수만 작성함으로써 서버의 역할을 할 수 있다는 의미이다. 서버 환경을 생성하고 관리하는 것에도 많은 시간과 비용이 들기 때문에 서버리스를 사용하면 서버 운영이 매우 간단해진다. 서버리스는 함수 단위로 만들어진다. 서버리스의 또다른 장점은 원활한 오토스케일링이다. 사용량에 따라서 매우 유연하게 비용을 지불할 수 있다. 사용되지 않는다면 비용을 지불하지 않는 온디맨드(on demand) 방식이다. 서버리스의 단점은 사용되지 않는 시간동안 함수들이 잠들어 있기 때문에 요청이 들어왔을 때 잠들어 있는 함수를 깨우는 데에 시간이 걸린다. 큰 시간은 아니지만 항상 요청 대기 상태인 서버에 비하면 반..

환경 2023.09.19

[개념 정리] 자바스크립트 prototype & prototypal 상속

프로토타입이란 자바스크립트는 객체 간의 상속이 이루어질 때 C언어나 Java와는 다른 방식으로 상속이 이루어진다. 객체를 복사하는 방식으로 상속을 구현하는 다른 언어들과 달리 자바스크립트는 자신만의 속성들 + 프로토타입 객체에 대한 링크를 가진다. 프로토타입은 체인처럼 위에서 아래로 쭉 연결되어 있으며, 자신에게 연결된 프로토타입부터 위로 올라가며 프로토타입 체인의 종단에 이를 때까지 속성을 탐색할 수 있다. 모든 객체가 자기 자신의 속성을 보관하는 주머니와, 부모/조상 객체의 연결 주머니와도 연결된 연결 주머니(prototype)을 가진다고 이해할 수 있다. 이 둘이 혼동되기 쉬운데, 이 둘은 완전히 별개의 두 주머니라고 이해하는 것이 이해가 쉽다. 예를 들어 함수를 작성하고 그 함수를 생성자로 사용하..

Node.js/JavaScript 2023.09.18

[Redis] Redis란? 설치 방법과 활용법

회사에 입사하고 새롭게 접하게 된 Redis. 이전에 사용해 본 적이 없어서 생소하기도 하고,사용해야 하는 이유와, 사용되는 로직이 잘 이해되지 않았다. 스스로 정리하지 않으니, 한 번 들어도 까먹게 되더라.다음에 봤을 때 또 초면처럼 느끼지 않도록 정리해보자. Redis란우선 redis는 데이터 접근/저장/관리와 관련된 서비스다. 일반적으로 데이터는 데이터베이스에 저장하여, 필요할 때마다 쿼리를 실행해 불러오거나 저장하거나 한다. 그러나 개발을 하다보면 데이터 베이스에 접근하는 것은 시간이 많이 걸린다는 것을 느끼게 된다.속도를 빠르게 하기 위해 데이터 베이스에도 캐싱이 적용되는데,Redis가 자주 접근하는 데이터를 캐시에 두고 속도를 향상시키는 데이터 캐시 서버 역할을 한다. Redis는 key-va..

DataBase/Redis 2023.09.12

[JS문법] 이스케이프 시퀀스 종류 정리

자바스크립트에서 '', "" 등으로 표현하는 일반 문자열 내에서 줄바꿈 등을 표현하기 위해서는 아래와 같은 이스케이프 시퀀스를 사용해야 한다. 이스케이프 시퀀스 의미 \0 Null \b 백스페이스 \f 폼 피드: 프린터로 출력할 경우 다음 페이지의 시작 지점으로 이동 \n 개행: 다음 행으로 이동 (가장 흔히 사용) \r 개행: 커서를 처음으로 이동 \t 탭(수평) \v 탭(수직) \uXXXX 유니코드. 예를 들어, '\u0041'은 'A', '\uD55c'는 '한'을 의미함 \' 작은 따옴표 \" 큰 따옴표 \\ 백슬래시 이스케이프 시퀀스 없이 줄바꿈 등을 표현하고 싶다면 ``(백틱)으로 문자열을 표현하면 된다.

Node.js/JavaScript 2023.08.09

[키워드 정리/운영체제] 펌웨어 VS 운영체제

펌웨어와 운영체제의 차이는 무엇일까? 둘은 아래와 같은 차이가 있다. 일반적으로 펌웨어는 ROM이라 불리는 비휘발성 메모리 하나를 사용한다. 반면, 운영체제는 휘발성, 비휘발성 메모리를 계층화하여 사용한다. 펌웨어는 자유롭게 프로그램을 설치할 수 없고, 미리 설치된 프로그램을 기반으로 업데이트가 일어난다. ROM에 해당 소프트웨어를 지우고 덮어쓰는 방식으로 업데이트가 일어난다. 운영체제는 장기적으로 업데이트가 되면서 운영체제 위에 프로그램을 자유롭게 설치하는 것이 가능한다. 펌웨어의 예로는 키보드, 세탁기 안의 소프트웨어 등이 있다. 운영체제의 예는 MacOS, WindowOS 등이 있다. 참고: inflearn 강의 'CS 지식의 정석 - 큰돌'

[개념 정리/운영체제] 메모리 할당

메모리 할당 프로그램에 필요한 메모리를 할당할 때 시작 메모리 위치, 메모리 할당 크기를 기반으로 할당한다. 메모리 할당 방식은 연속 할당과 불연속 할당으로 나뉜다. 연속 할당 연속 할당(continuous memory allocation)은 메모리에 연속적으로 공간을 할당하는 것이다. 사용 가능한 모든 메모리 공간이 같은 위치에 함께 있다. 메모리 파티션이 전체 메모리 공간에 이리저리 분산되어 있지 않는다. 연속 할당에는 고정 분할 방식과 가변 분할 방식이 있다. 고정 분할 방식 고정 분할 방식(fixed partition allocation)은 메모리를 미리 같은 크기로 분할하여 할당하는 방식이다. 고정 분할 방식은 내부 단편화(internal fragmentation)을 발생시킨다. 내부 단편화란 ..

[개념 정리/운영체제] 캐시

캐시 캐시란 데이터를 미리 복사해 놓는 임시 저장소이자 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리를 말한다. 이를 통해 데이터 접근 시간의 단축, 데이터를 다시 계산하는 시간 등을 절약할 수 있다. 캐시의 예는 CPU 레지스터가 대표적이다. CPU가 메모리로부터 데이터를 가져올 때의 시간이 길어, 그 중간에 레지스터 계층을 둬 속도차이를 해결하는 것이다. 캐시 히트란 캐시에서 원하는 데이터를 찾은 것을 말하며, 캐시 미스란 캐시에서 원하는 데이터를 찾지 못한 것을 말한다. 위 그림과 같은 경우, 캐시미스가 일어나면 메모리로 가 원하는 데이터를 레지스터에 등록하게 된다. 캐시는 우리가 사용하는 서비스 내부에서도 많이 찾아볼 수 있다. 예를 들어, 데이터베이스에서 redis..

[개념 정리/운영체제] CPU 스케줄링 알고리즘

CPU 스케줄링 알고리즘 CPU가 어떤 프로세스를 선택할 것인지는 스케줄링 알고리즘을 통해 선택되며, 효율적으로 선택하는 것이 중요하다. 효율적이란, 아래 세 가지 사항을 만족시키는 것을 말한다. CPU 사용률이 높은가? 단위 시간당 작업을 마친 프로세스의 수(처리량)이 높은가? 작업을 요청한 프로세스가 작업을 시작하기 전 대기하는 시간이 짧은가? CPU 스케줄링 방식은 비선점형과 선점형으로 나뉜다. 비선점형 방식(non-preemptive) 비선점형 방식에는 FCFS, SJF, 우선순위 방식 세 가지가 있다. 비선점형 방식은 프로세스가 스스로 CPU 소유권을 포기하는 방식이며, 강제로 프로세스를 중지시키지 않는다. 따라서 컨텍스트 스위칭으로 인한 부하가 적다. FCFS(First Come, First ..

[개념 정리/운영체제] 교착 상태(deadlock)

교착 상태 (deadlock) 교착 상태(deadlock)은 두 개 이상의 프로세스들이 서로가 가진 자원을 기다리며 중단된 상태를 말한다. 이 과정에서 각 프로세스는 서로가 원하는 자원을 유지한 채 다른 프로세스의 자원을 얻고자 기다리는 것이다. 원인 교착 상태가 발생하기 위한 필요조건은 4가지가 있다. 상호 배제: 주어진 시간 내에 하나의 프로세스만 자원을 독점할 수 있다. 즉, 다른 프로세스들은 접근이 불가능하다. 점유 대기: 특정 프로세스가 점유한 자원을 다른 프로세스가 요청하며 대기하는 상태이다. 비선점: 다른 프로세스의 자원을 강제적으로 가져올 수 없다. 환형 대기: 프로세스 A는 프로세스 B의 자원을 요구하고, 프로세스 B는 프로세스 A의 자원을 요구하는 등 서로가 서로의 자원을 요구하는 상황..

728x90