Programmers 87

[과제]회원가입, 로그인 API 구현 흐름, 결과

1. 회원가입 (Registration) 흐름회원가입은 새로운 사용자의 정보를 데이터베이스에 안전하게 저장하는 과정이다.회원가입 실행 간단 흐름도1. 클라이언트 → 서버: POST /register (email, password, name, ...)2. Controller: - 요청 데이터 추출 - userService.register 호출3. Service: - 이메일 중복 확인 (userRepository.findUserByEmail) - 비밀번호 해싱 (bcrypt.hash) - 새로운 사용자 정보 저장 요청 (userRepository.createUser)4. Repository: - DB에 `INSERT` 쿼리 실행 - 생성된 사용자 ID 반환5. Controller..

Programmers 2025.10.17

[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

[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

[18일차]웹 애플리케이션 동작 원리, ERD와 관계 예시

라우팅과 데이터 모델링 보고서1. 라우팅 (Routing)URL, 서버, 라우팅, 핸들러의 관계라우팅은 클라이언트가 요청한 URL(Uniform Resource Locator)에 따라 서버가 어떤 핸들러(Handler)를 실행할지 결정하는 과정이다. 이 관계는 웹 애플리케이션의 핵심 동작 원리로, 다음과 같이 설명할 수 있다.URL (클라이언트의 요청): 사용자가 브라우저 주소창에 특정 주소(https://example.com/users)를 입력하면, 클라이언트는 해당 URL로 서버에 요청을 보낸다.서버(Server): 서버는 클라이언트의 요청을 가장 먼저 수신하는 주체이다.라우터(Router): 서버 내에서 동작하는 라우터는 수신된 요청의 URL 경로(/users)와 HTTP 메서드(GET, POST ..

Programmers 2025.09.25