목록개발/TIL (10)
레커

- Sentry Sentry는 실시간 로그 취합 및 분석 도구이자 모니터링 플랫폼입니다. 로그에 대해 다양한 정보를 제공하고 이벤트별, 타임라인으로 얼마나 많은 이벤트가 발생하는지 알 수 있고 설정에 따라 알림을 받을 수 있습니다. 그리고 로그를 수집하는데서 그치지 않고 발생한 로그들을 시각화 도구로 쉽게 분석할 수 있도록 도와주며 다양한 플랫폼을 지원합니다. https://sentry.io/ 접속하여 가입을 진행노드환경으로 프로젝트 생성프로젝트 설정 -> Client Key(DNS) 클릭 -> DSN 키 복사 하여 .env에 추가슬랙에 가입-> 새로운 워크스페이 생성-> 채널생성-> 설정 및 관리 -> 앱관리 클릭앱 생성-> Incomming Webhoos 클릭 -> 웹 훅 권한 수락 -> .env에..
- Brute Force 공격 인증 정보(사용자 이름과 비밀번호)를 알아내기 위해 공격자가 반복적으로, 체계적으로 매번 다른 사용자 이름과 비밀번호를 입력하는 방식의 공격을 말합니다. 단순하지만 리소스를 많이 소비하는 시행착오 기반의 접근방식으로, 자동화된 툴이나 봇을 이용해 액세스 권한을 획득활 때 까지 대입합니다. - Rate Limiting npm i @nestjs/throttler - app.modules imports: [ ThrottlerModule.forRoot([{ ttl: 60, limit: 10 }]), }), 전역으로 60초 동안 최대 10회로 최대 요청 수를 제한 할 수 있다. 특정 라우터만 해제하는 방법 import { Controller } from '@nestjs/common'..
Auth.controller.ts 로 경로 지정 @UseGuards 를 통해 KakaoAuthGuard 실행 import { Controller, Get, Post, Redirect, Req, UseGuards, Request, Response, Res } from '@nestjs/common'; import { ApiTags } from '@nestjs/swagger'; import { KakaoAuthGuard } from './guards/kakao.guard'; import { ConfigService } from '@nestjs/config'; @ApiTags('Auth') @Controller('auth') export class AuthController { constructor(privat..
What is NestJS Interceptor? NestJS Interceptor는 request와 response시에 중간에서 값을 Intercept 한 뒤, 보내는 역할을 합니다. Interceptor는 추가적인 로직이 필요한 경우 사용합니다. Interceptor를 쓰는 대표적 케이스가 Logger입니다. Logger의 경우 request에 대한 정보, response에 대한 정보를 logging을 해야 하기에 Interceptor로 구현할 수 있습니다.. Observable Observable은 event가 흐르는 stream입니다. Observable은 누군가 구독(subscribe)을 해야 event를 발행(publish) 합니다. Observer가 Observable을 구독하면서 next,..

크로스 오리진 리소스 공유(CORS)는 애플리케이션을 통합하기 위한 메커니즘으로 한 도메인에서 로드되어 다른 도메인에 있는 리소스와 상호 작용하는 클라이언트 웹 애플리케이션에 대한 방법을 정의합니다. ex) 요청 방식에 따라(img, script 태그 등) -> Cross-Origin 정책, XMLHttpRequest, Fetch API 스크립트 -> Same-Origin 정책 출처(Origin) Origin : Protocol + Host + Port SOP 동일 출처 정책(Same-Origin Policy) 동일 출처 서버에 있는 리소스는 자유롭게 가져올 수 있지만, 다른 출처 서버에 있는 이미지나 영상 같은 리소스는 상호작용일 불가하다. 출처가 다른 어플리케이션끼리 자유롭게 소통한다는 것은 꽤 위험..
- Container 컨테이너는 애플리케이션을 언제든 실행 가능하도록 필요한 모든 요소를(소스코드, 구성요소, 종속성 등) 하나의 런타임 환경으로 패키징한 논리적 공간을 말한다. 애플리케이션과 종속 항목을 하나로 묶어, 실행하게 해주는 운영 시스템을 가상화한 경량의 격리된 프로세스 라고 할 수 있다. ( microVM / 운영체제 수준의 가상화 제공 / 독립성을 갖기 때문에 다른 컨테이너에 영향을 주지 않은 statless 환경 제공 - Container 기술이란 개인 데스크탑 / 기업내 서버/ 클라우드까지 언제 어디서든 빠르고 효율적으로 배포가 가능하고 확장을 가질 수 있도록 하는 기술입니다. 이를 통해 서버구성, OS설치, 네트워크, 개발도구 구성 등의 반복적 작업을 줄여 개발에 집중할 수 있도록 해..
1. NoSQL과 RDBMS의 특징과 차이점에 대해서 장, 단점을 들어 설명해주세요. RDBMS은 데이터를 column 과 row로 구성된 테이블로 데이터를 저장하는 방식으로, 스키마를 통해 테이블/column/row/인덱스/테이블 관계 등 데이터베이스의 요소를 명확하게 규정하는 방식입니다. 대표적으로 SQL이 있습니다. NoSQL은 기존의 RDBMS 방식이 다른 방식으로 데이터를 저장하는 방식을 말합니다. NoSQL 데이터베이스는 키-값, 문서, 그래프 등으로 데이터 모델을 만들어 저장합니다. 대표적으로 몽고디비/레디스/allegrograph 등이 있습니다. RDBMS는 데이터 구조가 명확하고 중복된 데이터를 최소화 할 수 있으며, ACID 속성을 보장할 수 있습니다. 다만, 모든 데이터의 관계가 명확..

프로세스 프로세스는 작업의 기본 단위 실행 중인 프로그램을 의미한다. 프로그램 디스크 상에 저장된 파일의 내용으로서 수동적인 개념이다. 결론 프로세스는 프로그램이 메모리에 적재되어 실행 가능한 상태로 존재하는 능동적인 개념이며, 레지스터(registers), 메모리(memory), 프로그램 카운터(program counter)와 같은 자원을 필요 Steps in Process Switching 1. CPU를 사용하기 위해 Ready 상태 2. Process A가 스케줄링 3. Process A의 A0를처리하고 다음 실행할 곳을 PC에 작성 (Program Counter) 기록 4. Process A의 A1를처리하고 다음 실행할 곳을 PC에 작성 (Program Counter) 기록 5. ProcessA ..