본문 바로가기

전체 글160

Nest.js(5) 로깅 - 애플리케이션의 동작을 기록한다 내장 Logger클래스는 @nest/common 패키지로 제공됩니다. 로깅 옵션을 조절하면 다음과 같이 로깅 시스템의 동작을 제어할 수 있습니다. 로깅 비활성화 로그 레벨 지정 - log, error, warn, debug, verbose 로거의 타임스탬프 재정의. ex) 날짜를 ISO8601 형식으로 변경 기본 로거를 재정의(오버라이딩) 기본 로거를 확장해서 커스텀 로거를 작성 의존성 주입을 통해 손쉽게 로거를 주입하거나 테스트 모듈로 제공 외부 로거 winston 로거의 필요한 기능 - 서비스를 상용 수준으로 운용하기 위해서는 로그를 콘솔에만 출력하는 게 아니라 파일에 저장 - 중요한 로그는 데이터베이스에 저장을 해서 쉽게 검색할 수 있도록 해야 합니다. - 로.. 2022. 7. 2.
인증 ( 세션, 쿠키, 로컬 ) 세션 기반 인증 세션은 로그인에 성공한 유저가 서비스를 사용하는 동안 저장하고 있는 유저 정보입니다. 서버는 세션을 생성하고 나서 세션을 데이터베이스에 저장하고, 이후 사용자의 요청에 포함된 세션 정보가 세션 DB에 저장되어 있는 지 확인합니다. 브라우저에는 데이터를 저장할 수 있는 공간이 있습니다. - 현재 열려있는 브라우저을 닫거나 새로운 탭 또는 창을 열면 데이터가 삭제되는 세션 저장소 - 창이 닫히더라도 데이터가 남아 있는 로컬 저장소, - 간단한 데이터를 저장할 수 있는 쿠키가 있습니다. 세션방식의 단점은 악의적인 공격자가 브라우저에 저장된 데이터를 탈취할 수 있다는 것입니다. 비록 세션을 알 수 없는 문자열로 만들었다고해도, http는 보안에 취약하기 때문에 중간에 전달되는 데이터 역시 가로챌.. 2022. 7. 1.
Docker 이 도커 파일로 도커 이미지를 만들 수 있습니다. 도커 파일이 서버 운영 기록이라면, 도커 이미지는 운영 기록을 실행할 시점이라고 할 수 있습니다. 도커 파일 = 서버 운영 기록 코드화 도커 이미지 = 도커 파일 + 실행 시점 참고 https://www.44bits.io/ko/post/easy-deploy-with-docker 도커(Docker) 입문편: 컨테이너 기초부터 서버 배포까지 도커(Docker)는 2013년 등장한 컨테이너 기반 가상화 도구입니다. 도커를 사용하면 컨테이너를 쉽게 관리할 수 있으며, 이미지를 만들어 외부 서버에 배포하는 것도 가능합니다. 이 글은 도커를 시 www.44bits.io https://www.44bits.io/ko/post/why-should-i-use-docker-.. 2022. 6. 29.
Nest.js(4) MySQL 설정 💡 ORM이란? ORM(Object-Relational Mapping)은 데이터베이스의 관계를 객체로 바꾸어 개발자가 OOP로 데이터베이스를 쉽게 다룰 수 있도록 해 주는 도구입니다. SQL문을 그대로 코드에 기술하고 그 결과를 쿼리셋으로 다루는 방식에서 세부 쿼리문을 추상화하는 것으로 발전하였습니다. 개발자는 ORM에서 제공하는 인터페이스를 통해 일반적인 라이브러리를 호출하듯 DB에 데이터를 업데이트하고 조회할 수 있습니다. 데이터베이스 설정 DBeaver와 MySql를 이용해서 개발 한다. ORM 가능한 기능중에 TypeORM 을 사용합니다. @nestjs/typeorm 패키지에서 제공하는 TypeOrmModule을 이용하여 DB에 연결할 수 있습니다. ... import { Type.. 2022. 6. 29.
Nest.js(3) 프러바이더, 모듈, 파이프 프러바이더(Provider) 컨트롤러는 요청과 응답을 가공하고 처리하는 역할을 맡는다고 했습니다. 만약 음식 배달 앱에서 메뉴 목록 조회를 요청했다고 했을 때, 사용자 주변에 위치한 가게를 DB에서 검색하는 작업을 수행해야 합니다. 또 사용자가 좋아할 만한 메뉴가 학습되어 있다고 하면 이를 기반으로 추천 메뉴 구성을 바꿀 수도 있을 것입니다. 앱이 제공하고자 하는 핵심 기능, 즉 비즈니스 로직을 수행하는 역할을 하는 것이 프로바이더입니다. controlloer 에서 할수 있지만 단일 책임 원칙( SRP, single responsbility principle ) 나눠 줘야 한다. Nest에서 제공하는 프로바이더의 핵심은 의존성을 주입할 수 있다는 점입니다. 💡 의존성 주입(Dependency Inject.. 2022. 6. 24.
관점 지향 프로그래밍(AOP) 관점 지향 프로그래밍(AOP, aspect-oriented programming)은 횡단 관심사(cross-cutting concern)의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임이다. - 위키피디아 백엔드 애플리케이션은 갖추어야 할 요구사항이 많이 있습니다. 여기서 요구사항이라 함은 서비스가 제공하는 핵심 기능을 해결하기 위한 사용자의 요구사항 뿐만 아니라 유효성 검사, 로깅, 보안, 트랜잭션과 같이 애플리케이션 전반에 걸쳐 제공해야 하는 공통 요소를 포함합니다. 이를 횡단관심사라고 부릅니다. 소스코드에서 횡단관심사를 따로 분리하여 구현하지 않으면 우리가 작성하는 애플리케이션의 코드는 횡단관심사의 코드와 섞여 뒤죽박죽이 되고 맙니다. 코드는 읽고 이해하기 힘들게 되고 모듈.. 2022. 6. 24.