전체 글 105

[26일차]Express.js 프로젝트 구조의 진화와 Nest.js와의 구조 비교

1. Express-Generator 기본 구조: 빠른 시작을 위한 뼈대express-generator가 제공하는 구조는 Express 애플리케이션의 가장 기본적인 뼈대이며, 신속한 개발 착수에 초점을 맞춘다.bin/www: 서버 실행 스크립트이다. Node.js HTTP 서버를 구동하고 특정 포트를 리스닝하는 역할을 담당하며, 애플리케이션의 '설정'(app.js)과 '실행'을 분리하는 구조이다.public: 정적 파일 디렉토리이다. 이미지, 클라이언트 사이드 JavaScript, CSS 등 브라우저가 직접 접근하는 파일들을 보관한다.routes: 라우팅 처리 디렉토리이다. URL 경로에 따라 클라이언트의 요청을 어떻게 처리할지 정의하는 로직이 위치한다.views: 템플릿 파일 디렉토리이다. Pug, E..

Programmers 2025.10.16

[25일차]프로젝트 설계 후기, 방법론 정리

1. 프로젝트 설계 회고이번 북스토어 프로젝트의 전체적인 기능 명세와 UI, 그에 따른 API와 데이터베이스 스키마를 통합적으로 설계하는 과정은 결코 쉽지 않은 경험이었다. 이전까지는 단일 기능을 구현하거나, 강의를 통해 주어진 명세에 따라 코드를 작성하는 데 집중해왔기에, '설계'라는 과정이 이토록 깊은 고민과 통찰을 요구하는지 미처 알지 못했다."건축에서 기초 공사가 8할을 차지한다"는 말처럼, 소프트웨어 개발에서도 초기 설계가 프로젝트의 성패를 좌우한다는 것을 체감할 수 있었다. 견고한 설계 없이는 기능 추가나 변경에 유연하게 대처하기 어렵고, 결국 기술 부채로 돌아온다는 사실을 이론이 아닌 현실로 깨닫게 되는 계기가 되었다.특히 이번 경험을 통해 단순히 코드를 작성하는 '코더(Coder)'를 넘어..

Programmers 2025.10.15

[24일차]API 설계 보고서

1. 개요본 문서는 '북스토어' 프로젝트의 백엔드 API 명세를 정의합니다. Express.js 기반의 백엔드 서버와 Next.js 기반의 프론트엔드 클라이언트 간의 데이터 통신을 위한 모든 엔드포인트(Endpoint)를 기술하여 원활한 협업을 지원하는 것을 목표로 합니다.Base URL: http://localhost:3001인증 방식: JWT (JSON Web Token)를 사용합니다.Access Token: API 접근 시 HTTP 헤더의 Authorization 필드에 Bearer 형식으로 포함해야 합니다. (유효기간: 1시간)Refresh Token: Access Token 재발급에 사용되며, httpOnly 쿠키를 통해 안전하게 관리됩니다. (유효기간: 7일)2. 공통 응답 형식 및 상태 코..

Programmers 2025.10.14

[23일차] 2차, 3차 프로젝트 개발 계획서

북스토어 프로젝트 개발 계획서프로젝트명: 북스토어 웹 애플리케이션 개발핵심 기술 스택:백엔드(BE): Express.js, Sequelize (또는 TypeORM), dotenv, bcrypt, jsonwebtoken프론트엔드(FE): Next.js (React 기반), TypeScript, SWR (또는 React-Query)1. 프로젝트 개요본 문서는 '북스토어' 웹 애플리케이션 개발을 위한 기능 명세와 개발 계획을 정의합니다. 사용자 인증, 도서 검색 및 조회, 장바구니, 주문/결제 등 온라인 서점의 핵심 기능을 구현하는 것을 목표로 합니다. Next.js를 활용하여 SEO(검색 엔진 최적화)와 초기 로딩 속도를 최적화한 사용자 친화적인 서비스를 구축합니다.2. 개발 단계별 계획Phase 1: 프로..

Programmers 2025.10.13

[22일차]웹 인증과 인가: 개념, 방식, 그리고 구현, next(), .env

인증(Authentication)과 인가(Authorization)1. 인증(Authentication)과 인가(Authorization)의 개념인증 (Authentication)인증은 사용자의 신원을 확인하는 절차이다. 즉, 시스템에 접근하려는 주체가 자신이 주장하는 그 사용자가 맞는지 검증하는 과정이다. 가장 일반적인 예는 아이디와 비밀번호를 입력하여 로그인하는 것이다. 인증이 성공적으로 완료되면, 시스템은 해당 사용자가 누구인지 식별할 수 있다.인가 (Authorization)인가는 인증된 사용자가 특정 리소스나 기능에 접근할 수 있는 권한이 있는지를 확인하는 절차이다. 인증이 "당신은 누구인가?"를 묻는 과정이라면, 인가는 "당신은 무엇을 할 수 있는가?"를 결정하는 과정이다. 인가는 반드시 인증..

Programmers 2025.10.02

[21일차]유효성 검사, err처리, 모듈화

현대의 웹 애플리케이션은 사용자에게 안정적이고 예측 가능한 서비스를 제공해야 한다. 이를 위해 개발자는 기능 구현뿐만 아니라, 예외 상황에 대비하고 코드의 품질을 지속적으로 관리해야 할 책임이 있다. 1. 유효성 검사 (Input Validation)1.1. 유효성 검사의 필요성유효성 검사는 애플리케이션으로 들어오는 모든 외부 데이터(주로 사용자 입력)가 우리가 기대하는 형식과 규칙에 부합하는지 확인하는 과정이다. 이는 애플리케이션의 안정성과 데이터 무결성을 지키는 첫 번째 방어선이다.주요 목적:데이터 무결성 유지: 데이터베이스나 시스템이 잘못된 형식의 데이터로 손상되는 것을 방지.보안 강화: SQL Injection 또는 XSS와 같은 악성 입력으로부터 애플리케이션 보호.예측 가능한 동작 보장: 유효..

Programmers 2025.09.30

[20일차]"SQL: 기본키, 외래키, 데이터 타입, 그리고 JOIN

기본키(PK)와 외래키(FK)의 정의와 존재 이유기본키 (Primary Key)정의: 테이블 내 각 행(Row)을 고유하게 식별하는 하나의 열(Column) 또는 열들의 조합이다.특징:단일 테이블 내에서 반드시 유일해야 한다.NULL 값을 가질 수 없다.존재 이유:데이터의 무결성을 보장한다.테이블의 각 행을 식별할 수 있도록 한다.외래키 (Foreign Key)정의: 한 테이블의 특정 열이 다른 테이블의 기본키를 참조하도록 설정된 키이다.특징:테이블 간의 관계를 정의한다.외래키는 참조 무결성을 유지한다(즉, 참조된 데이터는 반드시 존재해야 한다).존재 이유:테이블 간 관계를 설정하여 관계형 데이터베이스를 구성한다.데이터 일관성을 유지한다.기본키와 외래키 생성 방법테이블을 생성할 때 설정기본키 설정CREA..

Programmers 2025.09.29

[독학]Nest.js 에서 오랜만에 본 데코레이터 정복기

데코레이터와 메타데이터에 대한 핵심 정리데코레이터란 무엇인가?데코레이터는 코드에 부가적인 동작을 추가할 수 있는 도구이다. 메서드, 클래스, 변수에 자동으로 기능을 추가하는 선언적 프로그래밍 방식이며, 런타임에 동작을 감싸거나 수정하고 메타데이터를 추가하여 동작을 동적으로 제어할 수 있다.예: 특정 메서드가 호출되기 전에 권한 검사를 하도록 추가하거나, 메서드 실행 후 로깅 작업을 추가할 수 있다.함수 모듈화와 데코레이터의 차이함수 모듈화의 특징: 특정 동작을 함수로 분리하여 호출 시점에 직접 끼워 넣는다. 호출마다 명시적으로 작성해야 하므로 반복이 많아지고, 코드가 길어질 수 있다.데코레이터의 특징: 코드에 직접 끼워 넣는 대신, 메서드 위에 선언적으로 추가 작업을 붙인다. 공통 로직을 캡슐화하여 가독..

카테고리 없음 2025.09.27

[독학]Nest.js 대비 정리

NestJS 아키텍처 정리NestJS는 확장성과 유지보수성을 극대화하기 위해 설계된 서버 프레임워크로, 객체 지향 프로그래밍의 원칙과 모듈화 아키텍처를 기반으로 한다. 이 글에서는 NestJS의 주요 구성 요소와 각 요소의 역할, 그리고 상호작용 방식을 정리한다.NestJS 아키텍처: 레스토랑 비유NestJS의 구성 요소는 레스토랑의 운영 방식과 유사하다. 아래 표는 각 구성 요소의 역할을 비유적으로 설명한다.구성 요소레스토랑 비유핵심 역할클라이언트 (Client)손님API를 통해 서버에 특정 기능(요리)을 요청한다.컨트롤러 (Controller)웨이터손님의 주문(요청)을 받고 주방(서비스)에 전달하며, 완성된 요리(응답)를 손님에게 가져다준다.DTO (Data Transfer Object)주문서 양식주..

[19일차]관계형 데이터베이스 관리 시스템(RDBMS) 개념과 주요 특징

DBMS와 RDBMSDBMSDBMS(Database Management System)는 데이터베이스를 관리하고 운영하는 소프트웨어이다. 사용자는 DBMS를 통해 데이터베이스와 상호작용하며 데이터를 생성, 조회, 수정, 삭제(CRUD)할 수 있다.RDBMSRDBMS(Relational Database Management System)는 관계형 데이터베이스 관리 시스템을 의미한다. 이는 DBMS의 한 종류로, 데이터를 2차원 테이블(Table) 형태로 구성하며 테이블 간의 관계(Relationship)를 통해 데이터를 관리한다. 대표적인 RDBMS로는 MySQL, PostgreSQL, Oracle 등이 있다.RDBMS의 장점과 특징RDBMS는 데이터를 체계적으로 구조화하여 관리하므로 데이터의 일관성과 무결성..

Programmers 2025.09.25