전체 글148 티스토리 꺼지쇼 https://velog.io/@kannikii/posts kannikii (KWON HYOUNG LEE) / 작성글 - velog velog.io 2026. 3. 17. JWT 이해를 위한 사전 개념 1. 먼저 "인증"이 왜 필요한가?HTTP는 Stateless(무상태) 프로토콜입니다. 즉, 요청이 끝나면 서버는 누가 보냈는지 기억하지 못합니다.사용자: "나 로그인했어요" → 서버: "ㅇㅋ"사용자: "내 정보 줘요" → 서버: "당신이 누구죠...?"그래서 매 요청마다 "나 이 사람이에요" 를 증명해야 합니다.2. 과거 방식 - Session 1. 로그인 → 서버가 세션 저장소에 {sessionId: "abc", user_id: 1} 저장2. 클라이언트는 쿠키에 sessionId: "abc" 보관3. 요청마다 쿠키 전송 → 서버가 세션 저장소에서 조회단점: 서버가 세션을 직접 저장 및 관리해야 함3. 현대 방식 - JWT Token 1. 로그인 → 서버가 토큰 생성 후 클라이언트에게 발급.. 2026. 3. 17. 싱글톤 빈 스코프 싱글톤스프링에서 가장 많이 사용되는 기본 빈 스코프스프링이 컨텍스트 로드할때 싱글톤 빈을 생성하고 빈에 이름을 할당특정 빈을 참조할 때 항상 동일한 인스턴스를 얻기 때문에 이 스코프 이름을 싱글톤이라고 한다.하지만 스프링 컨텍스트에서 이름이 다른 경우 동일한 타입의 인스턴스를 더 많이 가질 수 있음에 유의해야한다. 싱글톤 디자인 패턴스프링에서의 싱글톤 스코프와는 차이가 있다.일반적인 싱글톤 패턴에서는 표준 싱글톤으로 설계된 클래스를 사용하면 앱 메모리에 특정 클래스에 대한 인스턴스가 하나만 존재할 수 있다.하지만 스프링에서 싱글톤은 고유한 이름에 대해 동일한 인스턴스를 의미한다. 스프링의 컨텍스트에서 인스턴스 이름이 다르다면 동일한 클래스의 인스턴스라도 여러 개 가질 수 있다. 즉 스프링에서의 싱글톤.. 2026. 3. 15. 스프링 인터페이스 > 왜 써야할까?제약 정의하기 위한 방법으로 인터페이스를 사용1. 구현 분리를 위한 인터페이스 사용 “인터페이스는 구현을 숨기고 ‘역할(계약)’만 의존하게 만들어서 코드 변경의 영향을 줄이기 위해 사용한다.”구현을 바꿔도사용하는 코드를 수정하지 않게 만들기 위한 장치 시나리오 요구 사항----------------------------------------------서비스 댓글 게시 구현 'CommentService'----------------------------------------------리포지터리데이터베이스 객체 (리포지터리) (데이터 액세스 객체)댓글 저장은 DB에 하게 되므로 댓글 저장 기능을 구현하는 객체 이름을 'CommentRepository'----------------.. 2026. 3. 10. 크리스마스 시즌 웹사이트를 만들었는데 주소 :https://xmasnotetree.vercel.app/백엔드 node.js , framework : express프론트 react+vite DB MySQL대충 만들었는데 배포가 힘들었다, mysql2를 쓰니 따로 배포과정에서 mysql을 도커로 이미지화 해서 백엔드 배포한것과 따로 연결해줘야했다. sequelizer를 쓰면 그렇지 않아도 된다던데, 단지 설계과목 프로젝트로 진행하다보니 실제 sql 문 작성과정이 필요해서 어쩔 수 없던 선택이었다. 이후 또한번 문제가 발생한것이, railway에서 serverless 옵션을 백엔드, db전부 켜두고 시간이 지나서 오랜만에 접속하니 백엔드와 db가 연결이 끊긴건지 백엔드 관련 기능들이 500 에러를 내며 작동하지않았다. 일단 다시 서버리스 옵션을.. 2025. 11. 17. 백엔드 코드 패턴 정리 🧩 1. 서버 기본 구조 패턴 // 🧱 기본 Express 서버 패턴const express = require('express');const app = express();const PORT = 3000;app.get('/', (req, res) => { res.send('Hello Express!');});app.listen(PORT, () => { console.log(`${PORT}번 포트에서 서버 실행 중`);});패턴 핵심 정리express() : 서버 객체 생성app.get('/', callback) : 요청 라우팅 (경로와 콜백 연결)res.send() : 클라이언트로 응답 전송app.listen() : 서버 구동실험해볼 것res.send() 대신 res.json() 쓰면 결과가 어떻게.. 2025. 10. 7. 이전 1 2 3 4 ··· 25 다음