전체 글 (28) 썸네일형 리스트형 BFF패턴과 MVC패턴의 차이점 BFF는 프론트엔드(UI/UX)의 요구사항에 최적화된 '전용 백엔드 비서' 서버를 의미한다.💡 핵심 개념 및 등장 배경정의: Backend for Frontend의 약자로, 프론트엔드를 위한 전용 백엔드 서버이다.해결 과제 및 등장 배경: 프론트엔드의 백엔드 종속성을 최소화를 실현하고, 기기별 커스텀 데이터 처리를 통해 리소스 낭비를 막고자 설계된 패턴이다.핵심 가치: 접근하는 디바이스마다 UI가 다르게 보여지는 분기 처리를 지원하는 것이다.특징: '1개 클라이언트 = 1개 BFF' 구조. 각 화면을 위한 전용 비서가 존재하는 셈이며, MSA 아키텍처에서 특히 유용하다.🔄 MVC 패턴 vs BFF 패턴 비교 (Spring/JPA 환경)Spring Framework와 JPA, QueryDsl을 사용하는.. Bearer 인증 vs. 쿠키 인증 vs. Basic 인증 차이점 🔑 Bearer 인증 vs. 쿠키 인증 vs. Basic 인증1. Bearer 토큰 인증 (JWT 등)특징 내용개념토큰을 소지한 자에게 권한이 있다는 의미입니다. 토큰 자체에 권한 정보가 포함되며, 보통 HTTP 헤더의 Authorization: Bearer \\ 형태로 전달됩니다.유연성/중심프론트엔드 중심, 유연함 - 웹, 모바일, 다른 서버 등 다양한 환경에서 쉽게 사용할 수 있습니다.Stateless무상태(Stateless) - 서버가 사용자의 세션을 따로 저장하거나 관리할 필요가 없어 **확장성(Scalability)**이 뛰어납니다.보안/권한토큰 서명으로 무결성이 보장되고, Payload에 역할 기반 인가(Role-Based Authorization) 정보를 담아 유연하게 처리할 수 있어 현대.. 세션 VS JWT 기본 개념 및 비교 I. 핵심 개념 및 원리 비교 속성 세션 (Session) 큰 (JWT)인증 방식상태 기반 (Stateful)무상태 기반 (Stateless)데이터 저장서버 측 (DB, 메모리, Redis)에 사용자 상태 저장토큰 자체에 사용자 정보 (Claim) 및 서명 포함클라이언트 저장고유한 세션 ID를 쿠키로 저장JWT 전체를 HTTP 헤더, 쿠키 또는 로컬 스토리지에 저장검증 메커니즘세션 ID로 서버/DB 조회 → 사용자 정보 확인토큰의 서명(Signature) 검증 → 유효성 확인 II. 장점 및 단점 구분 장점 및 단점 구분장점단점세션1. 즉시 권한 회수 용이 (서버에서 ID 무효화) 2. HttpOnly 쿠키 사용 시 XSS 공격 방어에 유리 3. 상태 변화 관리(장바구니 등)에 용이1. 서버 부하 높.. 트랜잭션 트랜잭션이란?트랜잭션이란 ‘더이상 분할이 불가능한 업무처리의 단위’를 의미한다.한꺼번에 수행되어야 할 일련의 연산모음을 의미한다.만약 A가 B에게 송금을 하였는데 A는 송금에 성공하였지만, B는 입금에 실패했다하면 안된다.그러므로 이러한 과정은 동시에 성공하던지, 동시에 실패해야 한다.이러한 과정같이 데이터 거래에 있어서 안정성을 확보하기 위해 하나의 과정으로 묶는 것이 트랜잭션이다.따라서 트랜잭션 과정을 통해 오류가 발생한다면 모든 작업을 원상태로 복구(RollBack)하고, 정상적으로 처리가 된다면 그 결과를 반영한다.데이터베이스에서 CRUD 과정을 통해 값(상태)를 바꿔주는 것 또한 일종의 트랜잭션이다.잘못된 Query를 작성하게 된다면 실제 반영이 안되기 때문이다.git의 commit기능 시 오류.. HTTP 메서드 HTTP 메서드란 클라이언트와 서버 사이에서 이뤄지는 Request(요청), Resposne(응답) 데이터를 전송하는 방식을 말한다.주로 사용되는 HTTP 메서드는 다음과 같이 5가지가 있다. 각 HTTP 메서드 차이점요청방식Body 포함 여부Content-Type 필요 여부비고부가 정보GET❌ 없음❌ 필요 없음 (무시됨)URL에 쿼리스트링으로 전달됨 POST✅ 있음✅ 꼭 필요 (application/json)Body에 JSON 담김최초 생성 시 201 성공메시지, 기존에 리소스가 있다면 200PUT/PATCH✅ 있음✅ 꼭 필요DTO 매핑하려면 필수PUT = 전체 수정PATCH = 부분 수정DELETE보통 없음❌ (상황에 따라 다름)대부분 URL 기반 삭제 GETGET요청은 헤더에 요청하려는 값을 담.. RDBMS, NoSQL이란 RDB란?사용자와 DB사이에서 사용자의 요구에 따라 데이터를 생성해 주고, DB를 관리하는 시스템이다.RDB란 관계형 데이터 모델에 기초를 둔 데이터베이스다.관계형 데이터 모델이란 데이터를 구성하는데 필요한 방법 중 하나로 모든 데이터를 2차원의 테이블 형태로 표현해 준다.쉽게 말하면 각 데이터를 ‘테이블’이라는 표형태의 구조에 저장한다.데이터베이스에 들어오는 값들을 순차적으로 차곡차곡 쌓아가는 방식이다.Java의 개념 중 스택의 개념과 비슷하다고 보면 좋을 것 같다.스택이란 LIFO(Last In First Out)처럼 순차적으로 값을 추가하고 삭제하는 ArrayList 같은 배열기반 컬렉션이 적합하다.이러한 구조 덕분에 함수호출이나 수식 계산에 사용된다.[MySQL을 활용한 DB 예시]RDB의 장점은.. 모놀리식 아키텍처 소개크게 보면 마이크로서비스 아키텍처는 마이크로서비스라는 작은 단위의 컴포넌트로 구성되어 있다.서비스 전체 기능을 독립된 작은 단위로 나누어 분리하고, 각각의 컴포넌트는 독립된 시스템 형태로 개발하고 운영한다.독립된 마이크로서비들은 전체 서비스와 분리해서 개발할 수 있으므로 서비스 변화에 비교적 자유롭다. 그러므로 민첩한 대응이 가능하다. 또한 독립성과 민첩성을 확보한 마이크로서비스 아키텍처는 대규모 서비스에서 여러 장점이 발현된다.보통 마이크로서비스 아키텍처와 비교해서 설명하는 것으로 모놀리식 아키텍처가 있다. 모놀리식 아키텍처란?위의 사진처럼 하나의 시스템이 서비스 전체 기능을 처리하도록 설계한 것으로, 과거부터 현재까지 흔히 볼 수 있는 아키텍처다.모놀리식 아키텍처는 전통적인 개발 방식으로 하나의 .. 경매 프로젝트 개발/TroubleShooting 내가 맡은 역할은 크게1) 상품에 대한 대분류,2) 소분류 조회,3) 사용자가 상품을 선택했을 때의 상세 정보 확인,4) 해당 상품에 대한 입찰을 구현해야 했다. 대분류나 소분류 상품 조회를 할 경우에는 세부 로직이 크게 달라질 일이 없었기 때문에 소분류 -> 대분류 -> 상세 조회 -> 입찰 -> 순서로우선순위를 정하게 되었다.사용자가 우리 서비스에 접속하게 되면 최초에 의류라는 카테고리의 상품들이 다음과 같이 보이도록 하였다.해당 페이지가 우리 서비스의 메인 페이지이며 각 사용자가 선택하는 카테고리 별 상품을 조회할 수 있도록 하였다.상품이 조회되는 조건은 다음과 같다.1) 해당 모델번호를 가진 입찰 희망 구매(최고), 판매(최저)가 각 1개씩 출력2) 이때 구매/판매는 입찰이 PROCESS인 상태.. 이전 1 2 3 4 다음