Framework35 NestJS 완전정복: 미들웨어, 가드, 인터셉터, 파이프의 모든 것 1. 미들웨어(Middleware)1.1. 개념 및 역할미들웨어는 Express와 마찬가지로 요청(Request)과 응답(Response) 사이에서 실행되는 함수입니다. HTTP 요청이 컨트롤러의 핸들러에 도달하기 전에 실행되는 함수로, 요청(request)과 응답(response) 객체, 그리고 next() 함수를 통해 다음 미들웨어로 제어를 전달할 수 있습니다. 주로 요청의 전처리(로깅, 인증, body 파싱 등)나 후처리, 특정 조건에 따른 요청 차단 등에 사용됩니다. NestJS의 미들웨어는 Express 미들웨어와 거의 동일하게 동작하지만, Nest의 DI 시스템과 모듈 시스템에 통합되어 더 구조적으로 관리할 수 있습니다.1.2. 사용법1) 클래스형 미들웨어 작성 방법 및 적용 방법기본적으로 클.. Framework/NestJS 2025. 5. 17. NestJS 완전정복: 모듈, 컨트롤러, 서비스의 모든 것 1. NestJS의 아키텍처 개요NestJS는 Node.js 환경에서 엔터프라이즈급 서버 애플리케이션을 개발할 수 있도록 설계된 프레임워크입니다. Angular에서 영감을 받은 구조와 데코레이터 기반 프로그래밍, 그리고 강력한 의존성 주입(Dependency Injection, DI) 시스템을 갖추고 있습니다. NestJS의 핵심은 모듈(Module), 컨트롤러(Controller), 서비스(Service) 세 가지 컴포넌트로 구성됩니다. 이 세 가지는 각각의 역할이 명확하게 분리되어 있으며, 대규모 프로젝트에서도 유지보수성과 확장성을 극대화할 수 있도록 설계되어 있습니다2. 모듈(Module): 기능 단위와 의존성 관리의 중심2.1. 모듈이란?모듈은 NestJS 애플리케이션의 구조를 구성하는 기본 단위.. Framework/NestJS 2025. 5. 16. NestJS 톺아보기 : NestJS 개요 및 아키텍처 앞으로 일주일 간 NestJS와 공부한 내용을 정리하여 올리려고 합니다.*해당 글은 AI를 활용하여 정리하였음을 서두에 밝힙니다.NestJS 개요와 아키텍처1. NestJS란 무엇인가?NestJS는 Node.js 환경에서 동작하는 진보적(Progressive)이고, 효율적이며, 확장성 있는 서버사이드 애플리케이션 프레임워크입니다. TypeScript를 기본으로 지원하며, 객체지향 프로그래밍(OOP), 함수형 프로그래밍(FP), 함수반응형 프로그래밍(FRP) 등 다양한 패러다임을 포용합니다. NestJS는 Angular에서 영감을 받은 구조와 데코레이터 기반의 프로그래밍 모델을 제공하여, 대규모 애플리케이션 개발에 적합한 아키텍처를 갖추고 있습니다.공식 사이트: https://nestjs.com/공식 문서.. Framework/NestJS 2025. 5. 15. Spring @Transactional이 동작하지 않는 이유: Self-Invocation 정리 개요스프링의 @Transactional은 선언형 트랜잭션 처리를 가능하게 해주는 강력한 도구입니다. 하지만 실무에서는 @Transactional을 붙였음에도 트랜잭션이 전혀 동작하지 않는 이상한 상황을 겪곤 합니다. 그 대표적인 원인이 바로 Self-Invocation(자기 호출)입니다.이 문서에서는 Self-Invocation이 발생하는 구조적 원인과 해결 방법을 명확하게 정리합니다.핵심 개념 요약항목설명@Transactional 처리 방식프록시(proxy) 객체를 통해 트랜잭션을 적용 (JDK 동적 프록시 또는 CGLIB)Self-Invocation 정의하나의 클래스 내부에서 자신의 메서드를 직접 호출하는 행위문제의 본질프록시가 아닌 실제 인스턴스(this)를 통해 메서드가 호출되어 AOP 미적용결과.. Framework/Spring 2025. 5. 7. Supabase 완전 정복: 오픈소스 Firebase 대안의 모든 것 1. Supabase란?Supabase는 오픈 소스 기반의 BaaS(Backend as a Service) 플랫폼으로, Firebase와 유사한 기능을 제공하면서도 PostgreSQL을 백엔드 엔진으로 사용하는 것이 가장 큰 특징입니다. 복잡한 서버 구성 없이도 사용자 인증, 데이터베이스 관리, 파일 스토리지, 실시간 데이터 동기화, 서버리스 함수 등을 손쉽게 구성할 수 있어, 프론트엔드 중심의 개발 환경에서 빠르게 백엔드를 구축할 수 있습니다.Supabase는 "Firebase를 오픈소스로 다시 만든다면 어떤 모습일까?"라는 질문에서 시작된 프로젝트입니다.2. 주요 기능 및 아키텍처 구성기능설명Authentication (Auth)다양한 인증 방식(이메일/비밀번호, 매직 링크, OTP, 소셜 로그인, .. Framework 2025. 5. 7. FastAPI 로 간단하게 로컬 서버 띄우기 서론오늘은 FastAPI 로 간단하게 로컬 서버 띄우는 방법에 대해서 알아보도록 하자. 기본적으로 python(Python 3.13.2 기준으로 작성됨)이 설치된 것을 가정하고 진행하겠다.FastAPI 간단 소개Python 서버 개발 프레임워크에는 대표적으로 FastAPi, Django, Flask가 있다. 오늘은 이 중에서도 FastAPI에 대해서 알아보겠다. FastAPi란 Python 기반의 초고속 비동기 웹 프레임워크. Starlette와 Pydantic 기반으로 만들어졌으며, 비동기 API와 자동 문서화(Swagger)를 강력하게 지원한다. Python 싱글스레드 한계를 이벤트루프 + 비동기로 극복해서 동시성 높인 게 FastAPI와 같은 최신 프레임워크의 특징이다. 참고로 Python 서버는 .. Framework 2025. 3. 15. [Batch] 배치 애플리케이션의 이해와 Spring Batch 기본 활용법 배치의 정의와 필요한 이유1. 배치의 정의배치(Batch)는 대량의 데이터를 정기적이고 반복적으로 처리하는 프로그램입니다. 주로 사용자가 없는 새벽 시간대에 실행되며, 대규모 데이터의 처리, 집계, 변환 등 비즈니스 로직을 실행하는 데 활용됩니다. 2. 배치 애플리케이션이 필요한 이유x2.1 WAS와 배치의 구분WAS (Web Application Server)는 사용자 요청을 실시간으로 처리하는 서버입니다.하지만 배치와 같이 대규모 데이터를 처리하거나 비즈니스 로직을 길게 실행해야 하는 작업은 WAS에서 실행하기 적합하지 않습니다.주요 이유는 다음과 같습니다:성능 문제: 실시간 요청을 처리하는 서버에서 대량 데이터 작업을 수행하면, 응답 속도가 느려져 사용자 경험이 저하됩니다.안정성 문제: 장시간 실행.. Framework/Spring 2025. 1. 19. [Batch] Spring Batch Scope의 개념과 Job Parameter 사용 방법 Spring Batch Scope란Spring Batch에서 Scope란 개념이 존재합니다. Scope는 빈의 생성 및 관리와 관련된 범위를 정의하는 개념으로, _작업(job) 실행 과정에서 특정 컨텍스트나 상태를 유지해야 하는 경우에 사용_됩니다.Spring Batch에선 모든 빈을 처음에 한 번에 생성하지 않고, 특정 Scope 내에 있는 빈을 실행 시점에 생성합니다. 이렇게 하는 이유는 배치 애플리케이션을 효율적으로 동작시키기 위함입니다. Scope를 활용하여 실행 시점에 빈을 생성하는 것이, 그렇지 않았을 때보다, 어떤 면에서 더 효율적일까요?Spring Batch에서 실행 시점에 빈을 생성하는 이유1. 동적 데이터 및 실행 환경의 요구 처리배치 작업은 실행 시점마다 다른 JobParameters.. Framework/Spring 2024. 11. 27. [Spring] Spring Boot 환경설정 가이드 1. Spring Initializr 활용하여 Spring Boot 프로젝트 생성하기1.1 프로젝트 정보(스펙) 설정하기Spring Initializr는 Spring Boot 프로젝트를 빠르고 쉽게 생성할 수 있는 도구입니다. 먼저, Spring Initializr 웹 사이트에 접속합니다. 다음은 프로젝트 설정의 각 요소에 대한 설명입니다.Project: Maven 또는 Gradle 빌드 시스템 중 하나를 선택합니다. 일반적으로 Gradle을 많이 사용합니다.Language: Java, Kotlin, Groovy 중 선택합니다. 대부분 Java를 선택합니다. Spring Boot Version: 최신 버전 또는 안정적인 버전을 선택하는 것이 좋습니다.Project Metadata:Group: 보통 패키지.. Framework/Spring 2024. 9. 23. [Spring] Spring 프레임워크란 무엇인가? 서론오늘은 자바 백엔드 진영의 대표적인 프레임워크인 스프링에 대해서 알아보도록 하겠습니다.본론스프링의 어원과 탄생 배경스프링(Spring)이란 영어로 봄을 말합니다. 왜 봄이라고 이름을 지었을까요? 스프링 프레임워크가 등장하기 전인 2000년대 초로 돌아가보면, EJB(Enterprise Java Beans)라는 자바 기업용 애플리케이션 프레임워크를 활용하여 어플리케이션 개발을 했습니다. EJB는 당시 자바의 표준이었죠. 하지만 너무 무겁고 복잡하고 비효율적이었습니다. 이에 불만을 느낀 로드 존슨이란 개발자가 EJB 없이도 고품질의 애플리케이션을 만들 수 있다는 것을 "Expert One-on-One J2EE Design and Development"란 책을 통해 증명해냅니다.로드 존슨은 순수한 자바 코.. Framework/Spring 2024. 9. 20. [Spring] IoC와 DI란 무엇인가? 제어의 역전 (IoC, Inversion of Control)개발자가 작성한 객체나 메서드의 제어를 개발자가 아니라 외부(프레임워크)에 위임하는 설계 원칙을 제어의 역전이라고 한다.관련 용어빈 (Spring Bean)스프링이 IoC 방식으로 관리하는 오브젝트를 뜻한다. 자바 빈과 구분 짓기 위해, 스프링 빈이라고도 부른다.참고로 스프링 내 모든 오브젝트가 전부 빈이 아니다. 그 중에서 스프링이 직접 그 생성과 제어를 담당하는 오브젝트만을 빈이라고 부른다.빈 팩토리 (Bean Factory)스프링의 IoC를 담당하는 핵심 컨테이너를 말한다.스프링 컨테이너의 최상위 인터페이스로, 스프링 빈을 관리하고 조회하는 역할을 담당한다. 대표적으로 getBean() 메소드를 제공한다.애플리케이션 컨텍스트 (Applic.. Framework/Spring 2024. 9. 20. [Test] Spring Boot 환경에서의 유닛테스트와 통합테스트, 슬라이스 테스트 서론오늘은 Spring Boot 환경에서 유닛 테스트와 통합 테스트, 각각의 테스트 과정에서 활용되는 어노테이션과 메서드들은 무엇이 있는지 정리해보겠습니다.대상독자테스트코드를 처음 작성해보시는 분들, Slice Test를 처음 들어보시는 분들, 테스트코드를 하고 싶지만 심리적인 장벽 때문에 아직 시도해보지 못한 분들에게 이 글을 추천합니다.이론유닛 테스트(Unit test)와 통합 테스트 (Integration test)꼭 짚고 넘어가야 하는 유닛 테스트와 통합 테스트의 정의에 대해서 알아봅시다.유닛 테스트보통 개발자가 테스트 코드를 짠다고 하면, 유닛 테스트 짜는 것을 말합니다. 코드 레벨에서의 테스트를 하며, 특정 함수나 클래스와 같이 작고 고립된 코드의 기능을 확인하는 자동화된 테스트를 진행합니다... Framework/Spring 2024. 9. 19. 이전 1 2 3 다음 반응형