본문 바로가기
반응형

전체 글166

[NestJS] 6장: 데이터베이스 연동 (with TypeORM) 6장: 데이터베이스 연동 (with TypeORM)대부분의 웹 애플리케이션은 데이터를 영구적으로 저장하기 위해 데이터베이스를 사용합니다. NestJS에서 가장 널리 사용되는 ORM(Object-Relational Mapping) 라이브러리인 TypeORM을 사용하여 데이터베이스와 상호작용하는 방법을 배웁니다.1. 핵심 개념ORM (Object-Relational Mapping):객체 지향 프로그래밍 언어(TypeScript/JavaScript)의 객체(Object)와 관계형 데이터베이스(Relational Database)의 테이블을 자동으로 매핑(연결)해주는 기술입니다.복잡한 SQL 쿼리를 직접 작성하는 대신, user.save(), userRepository.find() 와 같은 객체 지향적인 코드로.. 2025. 9. 19.
[NestJS] 5장: 미들웨어, 파이프, 가드 - 요청 처리의 수문장들 5장: 미들웨어, 파이프, 가드 - 요청 처리의 수문장들NestJS는 Express의 미들웨어 개념을 포함하면서, 파이프(Pipe), 가드(Guard)라는 추가적인 요청 처리 메커니즘을 제공합니다. 이들은 각각의 명확한 역할을 가지고 컨트롤러에 도달하기 전 요청을 처리하는 수문장 역할을 합니다.1. 핵심 개념미들웨어 (Middleware):Express의 미들웨어와 거의 동일합니다. 라우트 핸들러가 실행되기 전에 호출되는 함수입니다.주로 요청/응답 객체를 조작하거나, 로깅, 서드파티 라이브러리(예: helmet, cors) 연동 등 라우트 핸들러와 직접적인 관련이 적은 횡단 관심사(cross-cutting concerns)를 처리하는 데 사용됩니다.@Injectable() 클래스로 구현하거나 간단한 함수.. 2025. 9. 19.
[NestJS] 4장: 모듈 - 코드의 체계적인 정리와 캡슐화 4장: 모듈 - 코드의 체계적인 정리와 캡슐화모듈(Module)은 NestJS 애플리케이션의 아키텍처를 구성하는 기본 단위입니다. 관련된 기능(컨트롤러, 프로바이더 등)들을 하나의 모듈로 묶어 코드를 체계적으로 관리하고, 애플리케이션의 구조를 명확하게 만듭니다.1. 핵심 개념모듈 (@Module): @Module() 데코레이터가 붙은 클래스입니다. 이 데코레이터는 NestJS가 애플리케이션 구조를 구성하는 데 사용하는 메타데이터를 제공하는 객체를 인자로 받습니다.@Module 데코레이터의 주요 속성:providers: 이 모듈 내에서 사용될 프로바이더(서비스 등)의 배열입니다. 여기에 등록된 프로바이더는 NestJS의 DI 컨테이너에 의해 인스턴스화되고, 이 모듈 내의 다른 구성 요소에 주입될 수 있습니.. 2025. 9. 19.
[NestJS] 3장: 프로바이더와 의존성 주입 - 로직의 분리와 재사용 3장: 프로바이더와 의존성 주입 - 로직의 분리와 재사용프로바이더(Provider)는 NestJS의 가장 기본적인 구성 요소 중 하나입니다. 서비스, 리포지토리, 팩토리 등 다양한 역할을 할 수 있으며, 컨트롤러의 부담을 덜어주고 비즈니스 로직을 캡슐화합니다. NestJS의 핵심 디자인 패턴인 의존성 주입(DI)이 프로바이더를 통해 어떻게 이루어지는지 배웁니다.1. 핵심 개념프로바이더 (Provider):@Injectable() 데코레이터가 붙은 클래스를 의미합니다. @Injectable()은 NestJS의 DI 컨테이너가 이 클래스를 관리할 수 있는 대상으로 표시합니다.서비스(Service)가 가장 일반적인 프로바이더의 예시입니다. 서비스는 컨트롤러가 직접 처리하기 복잡한 비즈니스 로직(데이터 처리, .. 2025. 9. 18.
[NestJS] 2장: 컨트롤러와 라우팅 - 요청을 받아들이는 관문 2장: 컨트롤러와 라우팅 - 요청을 받아들이는 관문컨트롤러(Controller)는 클라이언트의 HTTP 요청을 받아 처리하는 첫 번째 관문입니다. NestJS에서 데코레이터(Decorator)를 사용하여 어떻게 라우팅을 정의하고, 요청 데이터를 추출하는지 배웁니다.1. 핵심 개념컨트롤러 (@Controller): 클래스에 @Controller() 데코레이터를 붙여 컨트롤러임을 선언합니다. @Controller('users')와 같이 인자를 주면, 해당 컨트롤러 내의 모든 라우트는 /users 라는 경로 접두사(prefix)를 갖게 됩니다.라우트 핸들러 데코레이터: 컨트롤러 클래스 내의 메소드에 붙여, 특정 HTTP 메소드와 경로에 대한 핸들러임을 나타냅니다.@Get(): GET 요청@Post(): POS.. 2025. 9. 18.
[NestJS] 1장: NestJS 소개 및 개발 환경 설정 1장: NestJS 소개 및 개발 환경 설정효율적이고 확장 가능한 서버 사이드 애플리케이션을 구축하기 위한 프레임워크, NestJS의 세계에 오신 것을 환영합니다. NestJS가 어떤 철학을 가지고 있으며, Express.js와 어떻게 다른지, 그리고 첫 프로젝트를 어떻게 시작하는지 배웁니다.1. 핵심 개념NestJS란?: Node.js 서버 애플리케이션을 구축하기 위한 프로그레시브(Progressive) 프레임워크입니다. 내부적으로는 Express(또는 Fastify)를 기반으로 동작하지만, 그 위에 강력한 아키텍처 패턴을 제공합니다.주요 철학 및 특징:TypeScript 기반: 모든 코드를 TypeScript로 작성하여 코드의 안정성과 유지보수성을 극대화합니다.아키텍처: Angular에서 영감을 받은.. 2025. 9. 18.
[Spring] 10장: 다음 단계를 향하여 10장: 다음 단계를 향하여지금까지 Spring Boot의 핵심 기능들을 학습했습니다. 이 마지막 챕터에서는 실무에서 마주할 수 있는 더 넓은 주제들을 소개하며, 앞으로 어떤 방향으로 학습을 이어 나가야 할지에 대한 지도를 제공합니다.1. AOP (Aspect-Oriented Programming, 관점 지향 프로그래밍)개념: 로깅, 트랜잭션, 보안 등 여러 비즈니스 로직에 공통으로 흩어져 있는 부가 기능(cross-cutting concerns)을 하나의 모듈로 분리하여 관리하는 프로그래밍 패러다임입니다. 코드의 중복을 줄이고 핵심 비즈니스 로직을 더 깔끔하게 유지할 수 있습니다.주요 용어: Aspect, Advice, Pointcut, Join PointSpring AOP: Spring은 프록시(Pr.. 2025. 9. 18.
[Spring] 9장: Docker를 이용한 컨테이너화 9장: Docker를 이용한 컨테이너화"제 컴퓨터에서는 잘 되는데, 서버에서는 안 돼요." 라는 말을 없애주는 기술, 컨테이너에 대해 배웁니다. 내가 만든 Spring Boot 애플리케이션을 어떤 환경에서든 동일하게 실행할 수 있도록 Docker 컨테이너 이미지로 만드는 방법을 학습합니다.1. 핵심 개념컨테이너(Container): 애플리케이션과 그 실행에 필요한 모든 것(라이브러리, 종속성, 설정 등)을 패키징한 독립적인 실행 단위입니다. 가상 머신(VM)보다 훨씬 가볍고 빠릅니다.Docker: 컨테이너 기술을 쉽게 사용할 수 있도록 해주는 오픈소스 플랫폼입니다.이미지(Image): 컨테이너를 생성하기 위한 읽기 전용 템플릿입니다. 애플리케이션과 실행 환경이 코드 형태로 기록되어 있습니다.Dockerf.. 2025. 9. 18.
반응형