목록전체 글 (293)
celina의 이것저것
이커머스 도메인에서 주문 상태는 굉장히 깊고 복잡한 프로세스이다.지금 떠올리는 것만 하더라도 주문, 취소, 환불, 반품이 있고 이 4개 도메인만 생각해도 정말 복잡하다. 배송중인지 아닌지, 취소요청 승인이 되었는지, 주문을 취소했는지,,,, 이렇게 복잡한 상태들을 어떻게 관리해야할까PENDING → CONFIRMED → SHIPPING → DELIVERED → COMPLETED ↓ ↓ CANCEL_REQUESTED RETURN_REQUESTED ↓ ↓ CANCELED RETURN_IN_PROGRESS ..
1. 문제 상황 (Issue)주문 목록 조회 API(GET /api/orders) 호출 시, 예외 발생. LazyInitializationException: 엔티티를 DTO로 변환하는 과정에서 연관된 엔티티(User)를 참조할 때 세션이 종료되어 데이터를 초기화할 수 없음.OrderResponse.from()에서 order.getUser().getName()을 호출하는 시점에 Hibernate 세션이 이미 닫혀 있어서, lazy 로딩된 User 프록시를 초기화할 수 없었다.2026-02-16T17:09:51.900+09:00 ERROR 29120 --- [ecommerce-platform] [nio-8080-exec-1] c.e.p.g.c.e.GlobalExceptionHandler : Exc..
Spring Security: 보안 프레임워크 (인증/인가 전체를 담당)시큐리티 안에 JWT라는것이 들어간다. 보안과 관련된것들 중 하나라고 생각하면 된다. 기존에는 유저가 로그인할 때 비밀번호를 평문 8글자로만 체크하고 있다.비밀번호 같은 중요한 기밀은 절대 그대로 저장하면 안된다...그렇기 때문에 보안이 필요하다// 로그인 public UserResponse login(UserLoginRequest request) { // 이메일로 사용자 조회 User user = userRepository.findByEmail(request.getEmail()) .orElseThrow(() -> new UserException(ErrorCode.PASSWORD_UNMATCHED)); ..
더 나아가 쿠버네티스에 대해 공부해보고자한다.실제 상용 서비스를 운영할 때는 1개 서버만 운영하지 않기 때문에 쿠버네티스가 필수적이다. 1. Kubernetes 개념1. 왜 컨테이너 오케스트레이션이 필요한가배경실제 상용 서비스를 운영할 때는 1개 서버만 운영하지 않기 때문에 n개의 서버에 컨테이너를 배포하는 전체 과정으루 수동으로 제어해야 한다.서버에 장애가 발생했을 때도 해당 서버의 컨테이너를 다른 서버로 옮기는 등 작업도 직접 해야 한다.여기서 컨테이너 오케이스트레이션을 사용하면 수동 제어 부분 전체를 모두 자동화할 수 있다. 2. 쿠버네티스란?컨테이너화된 애플리케이션의 대규모 배포, 스케일링 및 관리를 간편하게 만들어주는 오픈 소스 기반 컨테이너 오케스트레이션 도구즉 도커엔진의 컨테이너들을 효율적..
도커는 사이드 프로젝트를 해보며 써본 경험이 있다. 하지만 개념을 모른채, 당장 실무에 적용만 해보았다. 그래서 Docker에 대해 물어보면 잘 대답을 하지 못했다. 이번 9주차에 Docker에 대하여 깊게 배웠는데, 나름대로 복습도 하고 공부도 하며 개념을 잊지 않기 위해 정리해본다. 1. 클라우드 및 Docker 개념 학습우선 컨테이너에 대한 개념을 알아보자.개발을 하다보면 운영체제, 라이브러리 버전, 설정파일 등에서 발생하는 환경 의존성 문제로 인해 다양한 문제가 발생할 수 있다.나의 로컬에서의 버전와 프로젝트의 버전이 다르면 이러한 문제가 자주 발생한다.Docker가 이러한 문제를 해결하기 위해 컨테이너라는 기술을 제공한다. 컨테이너란?애플리케이션과 필요한 모든 요소(os, 라이브러리, 설정 등)..
이제 직접 만든 Spring API와 openwebui를 활용하여 실제로 웹으로 접속해서 나만의 챗봇을 만들것이다.이번에 구현할 사항은 다음과 같다. 1. Docker 환경 구성2. Open Web UI 설치 및 연결3. RAG 기능 구현 1. Docker 환경 구성프로젝트에서 제공하는 서비스들은 전부 docker로 만들고 관리할 것이다.postgres: RAG용 벡터 저장소ollama: LLM 백엔드 spring-api: 구현한 APIopen-webui: 사용자 인터페이스services: ollama: image: ollama/ollama:latest container_name: ollama ports: - "11434:11434" volumes: - olla..
문제 상황ChatService 안의 chatClient 가 스프링에서 제대로 주입되지 않고 null인 상태2025-11-30T20:09:57.098+09:00 ERROR 70917 --- [nio-8080-exec-5] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.NullPointerException: Cannot invoke "org.springframework.ai.chat.client.ChatClient.prompt()" because "this...
이번엔 추가 및 개선할 점- 사용가능한 LLM모델 API 반환- 사용자가 동적으로 모델을 선택할 수 있는 기능- 실시간 처리 - 코드 리팩토링 1. 사용 가능한 LLM 모델 API 반환요청메시지는 없고, 응답메시지만 있다.{ "object": "list", "data": [ { "id": "qwen3", "object": "model", "created": 1686935002, "owned_by": "ollama" }, { "id": "gpt-3.5-turbo", "object": "model", "created": 1687882411, "owned_by": "openai" } ]} 2. 사용자가 동적으로..