1. 인증(Authentication)과 인가(Authorization) 로그인 기능을 구현하기 전에 가장 혼동하기 쉬운 두 개념을 먼저 정리한다. 인증 (Authentication) — 당신은 누구인가 인증은 사용자가 누구인지 확인하는 과정이다. 아이디와 비밀번호를 입력해 로그인하는 행위가 대표적인 예다. 서버는 이 과정을 통해 "이 요청을 보낸 사람이 실제로 등록된 사용자인가"를 판단한다. 인가 (Authorization) — 무엇을 할 수 있는가 인가는 인증된 사용자가 특정 리소스에 접근하거나 특정 동작을 수행할 권한이 있는지 확인하는 과정이다. 로그인한 사..
1. SOP와 CORS 개념웹 브라우저는 기본적으로 동일 출처 정책(Same-Origin Policy, SOP)이라는 보안 규칙을 따른다. SOP는 서로 다른 출처(Origin)로의 리소스 요청을 차단한다.출처(Origin)는 세 가지 요소로 구성된다. 요소 예시 프로토콜https://, http:// 호스트neordinary.co.kr, api.umc.com 포트:3000, :5500 이 세 가지 중 하나라도 다르면 다른 출처로 판단한다. 예를 들어 https://neordinary.co.kr에서 https://api.umc.com을 호출하면, 호스트가 다르기 때문에 브라우저는 요청을 차단한다.SOP만 있으면 프론트엔드와 백엔드가 서로 다른 ..
1. 미들웨어 개념과 동작 원리Express에서 미들웨어는 요청(req)과 응답(res) 사이에서 동작하는 독립적인 함수다. 클라이언트가 서버로 요청을 보내면, 그 요청이 라우트 핸들러에 도달하기 전에 미들웨어들이 순서대로 실행된다. HTTP 응답이 완료될 때까지 이 미들웨어 사이클이 계속된다.req, res, next 역할 인자 역할 req클라이언트가 보낸 요청 객체. URL, 헤더, 바디, 쿠키 등 요청 정보를 담는다. res서버가 클라이언트에게 보낼 응답 객체. res.json(), res.send() 등으로 응답을 완성한다. next다음 미들웨어로 실행을 넘기는 함수. 호출하지 않으면 체인이 멈춘다. myLogger 미들웨어 예제impo..
1. ORM이란5주차에서 작성한 Repository 코드를 다시 보면 이렇다:export const getUserPreferencesByUserId = async (userId) => { const conn = await pool.getConnection() try { const [preferences] = await pool.query( "SELECT ufc.uf_category_id, ufc.f_category_id, ufc.user_id, fcl.f_category_name " + "FROM user_favor_category ufc JOIN food_category_list fcl on ufc.f_category_id = fcl.f_category_id " + ..
1. GitHub 이슈 기반 워크플로우기능을 개발하기 전에 GitHub Issue를 먼저 만드는 것이 팀 협업의 기본 흐름이다. 이슈 → 브랜치 → 커밋 → PR 순서다.Git Flow vs GitHub Flow협업 브랜치 전략은 크게 두 가지로 나뉜다.전략브랜치 구성적합한 상황Git Flowmain, develop, feature, release, hotfix대규모 팀, 명확한 릴리스 주기가 있는 프로젝트GitHub Flowmain + feature 브랜치빠른 배포, 소규모 팀, 대부분의 웹 서비스Git Flow는 main, develop, feature, release, hotfix 브랜치를 모두 관리하는 복잡한 모델이다. GitHub Flow는 main과 feature 브랜치만 사용하는 단순한 모델..
1. Node.js란 무엇인가Node.js는 Chrome V8 엔진으로 빌드된 JavaScript 런타임이다. "서버 언어"가 아니라 "JavaScript 실행 환경"이다. 서버, CLI 도구, 빌드 툴(Webpack, Vite), 자동화 스크립트 어디에나 쓸 수 있다.실제 사용처: Netflix, LinkedIn, PayPal, NASA, 네이버, 카카오 등이 Node.js를 서버로 사용한다.Node.js가 서버로 적합한 이유: I/O가 많고 동시 접속이 많은 서비스에 강하다. 단, CPU를 많이 쓰는 연산(이미지 처리, 암호화)에는 약하다.2. 싱글 스레드와 Non-blocking I/ONode.js는 하나의 메인 스레드로 코드를 실행한다. 그런데 어떻게 동시에 여러 요청을 처리할 수 있을까?핵심은 ..