본문 바로가기

Backend/NestJS

[NestJS] 프레임워크와 라이브러리의 차이, 필수 기능

728x90
NestJS의 본격적인 공부에 앞서,
프레임워크에 대한 공부 기록이다.

참고 서적

 

NestJS로 배우는 백엔드 프로그래밍

> # 제이펍에서 책이 출간되었습니다. > [교보문고](https://product.kyobobook.co.kr/detail/S000200383301) / [예스24]() /…

wikidocs.net

앞선 기록에서도 언급했듯, 위의 책과 공식 문서로 공부를 할 예정이다.

책의 출고가 늦어져 오늘 받게 되었다.

 

책의 분량은 300페이지 정도로 적당한 것 같다.

최종 예제 프로젝트의 결과는 유저 서비스 API이고, 이와 관련된 기능들과 Nest에서 제공하는 패키지를 소개하는 듯하다.

 

이번 기록에는 프레임워크와 라이브러리의 차이점프레임워크가 갖춰야 할 필수 기능에 대한 공부를 기록할 예정이다.

기본 지식이 가장 중요한 만큼 앞으로는 빠른 진도보다는 모르는 워딩, 개념에 대한 꾸준한 공부와 기록을 우선할 것이다.


프레임워크와 라이브러리의 차이점

이 문제를 관통하는 키워드는 제어의 역전이다.
이는 간단하게 제어, 주도권을 누가 가지고 있느냐의 문제이다.

프레임워크

프레임워크는 이름 그대로 frame, 틀을 제공한다.

클래스와 인터페이스가 집약된 틀로 개발자는 이 틀 안에서 코드를 작성한다.

 

프레임워크는 짜여진 틀(인터페이스, 추상) 안에서 작성된 코드를 해석하고,

해당 코드가 요구하는 작업을 수행한다.

 

즉 주도권을 프레임워크 측에서 가진다는 의미이고, 제어의 역전이다.

라이브러리

반대로 라이브러리는 개발자가 주도권을 가지며, 단순히 도구 역할을 해준다.

개발자가 원하는 기능을 제공하는 부품 같은 역할인 것이다.

참고

아래 글에 자세한 설명을 볼 수 있다.

 

프레임워크와 라이브러리의 차이점

Framework Vs Library 프레임워크와 라이브러리의 정확한 차이점은 무엇일까요? 대중 알것 같지만 정확히 어떠한 차이점이 있는지 모르고 있는 경우가 많을지도 모릅니다. 프레임워크는 단지 미리 만

webclub.tistory.com

프레임워크의 필수 기능

최신 ECMA스크립트 지원

ECMA스크립트
ECMA Iternational이 ECMA-262 기술 규격에 따라 정의하고 있는 표준화된 스크립트 프로그래밍 언어를 말한다.
자바스크립트를 표준화하기 위해 만들어졌다.

표준화된 최신 자바스크립트를 지원하는지의 여부를 뜻한다.

CQRS

CQRS
Command and Query Responsibility Segregation

명령과 조회의 책임 분리를 뜻한다.

 

프로젝트의 규모가 커지다 보면, 소스 코드가 복잡해지는 경우가 많다.

이때 데이터베이스에 대한 명령(DB의 변형을 가하는)과 데이터 읽기 요청을 처리하는 로직을 분리시키면,

성능, 확장성, 보안을 강화할 수 있다.

HTTP 헤더 보안

외부 요청 중 일부의 위험에 대한 보안을 보장하는 기능

HSTS(HTTP Strict Transport Security)

웹에 접근할 때 강제적으로 HTTPS로 접근하도록 하는 헤더이다.

보안에 취약한 HTTP로 접근하는 것을 방지해준다.

 

SSL Strip 공격을 방어할 수 있다.

SSL Strip
SSL을 벗겨 다운그레이드시킴으로써, 정보 탈취를 가능하게 하는 공격

다양한 미들웨어

미들웨어
라우트 핸들러가 클라이언트의 요청을 처리하기 전에 수행되는 컴포넌트

출처 https://docs.nestjs.com/middleware#middleware

미들웨어에서는 요청과 응답에 변형을 가할 수 있고, 주기를 끝낼 수 있다.

때문에 쿠키 파싱, 세션 관리, 인증/인가 등의 작업을 수행한다.

로깅

로그(log)
사용자의 동작에 대한 기록

이슈가 발생했을 때, 문제점을 빠르게 찾아낼 수 있는 방법이다.

스케줄링

고정된 시간이나 일정한 주기를 가진 시간마다 수행해야 하는 작업이 있을 수 있다.

이에 대한 기능을 제공하는 것이 task scheduling 기능이다.

스웨거 문서화

프론트엔드 개발자와의 협업에서 API 문서화는 매우 효과적이다.

저번에 프론트 파트에서 진행했던 프로젝트에서 스웨거로 문서화된 API를 받은 적이 있다.

직관적이고, 필요한 정보들을 쉽게 볼 수 있어 편했던 기억이 있다.

 

해당 문서에서는 요청과 응답에 대해 필요한 정보를 직관적으로 제공한다.

요청

  • Request Syntax : API의 형태, 구조에 대한 정의를 나타낸다. API가 어떤 메서드를 사용하고, 요청 URL의 형태는 무엇인지 알려준다.
  • Request Header : 요청에 대한 헤더의 추가 정보를 담고 있다. 
  • Request Element : 해당 요청의 실제 메시지 정보를 담고 있다.

응답

  • Response Element : API에 대한 결과값을 확인할 수 있다. 여기엔 오류 응답도 포함된다.

ORM

ORM
Object Relational Mapping

객체-관계 매핑을 뜻한다.

객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것을 말한다.

테스팅

작성한 메서드가 정상적으로 작동하는지, 관계되는 모듈 사이의 상호 작용이 정상적으로 이루어지는지

테스트하는 것을 의미한다.


참고

https://tech.kakaoenterprise.com/127

 

API 문서 톺아보기

시작하며 안녕하세요. 카카오엔터프라이즈 테크니컬라이팅 팀의 Crystal(김유리), Sandy(차신영), July(김정인)입니다. 테크니컬라이팅 팀에서는 Kakao i 기술문서 사이트에 카카오엔터프라이즈가 개

tech.kakaoenterprise.com

https://zulloper.github.io/HTTP-Security-Headers

 

HTTP Security Headers (Http 보안 헤더)

Table of Contents HTTP Strict Transport Security (HSTS) 간단하게 해당 WEB에 접근할 때 강제로 HTTPS로 강제적으로 접근하도록하는 헤더이다. 간혹 HTTP로 접근 시 강제로 HTTPS로 접속하도록 한다. HTTPS를 강제하

zulloper.github.io

https://docs.nestjs.com/

 

Documentation | NestJS - A progressive Node.js framework

Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Progamming), FP (Functional Programming), and FRP (Functional Reac

docs.nestjs.com

마치며

계속 나오게 될 개념들의 핵심적인 부분을 정리했다.

Nest의 기능들과 결부되는 세부 사항들은 해당 기능을 기록하면서 다룰 예정이다.

 

잘못된 정보에 대한 피드백은 환영입니다.

감사합니다.

728x90