1. 물류 관리 및 배송 시스템을 위한 MSA 기반 플랫폼 개발 MSA(Microservices Architecture) 기반의 시스템을 설계하고 구현한다.MSA 애플리케이션을 구성하면서 실무에서 발생할 수 있는 다양한 상황을 경험해본다.API 연동, 데이터 무결성 유지, 서비스 간 통신의 신뢰성을 확보하는 방법에 대해 집중적으로 고민한다.Gemini API를 사용하여 AI를 활용하는 경험을 쌓는다. 2. 인프라 설계서 auth servicedelivery service(배송, 배송 경로 기록, 배송 담당자)hub service(허브, 허브간 이동 정보)product service(업체, 상품)order service(주문)notification service(Gemini AI, Slack) 3. ERD..
자바 심화 2기
https://github.com/Griotold/CodeBloom_DeliveryApp GitHub - Griotold/CodeBloom_DeliveryAppContribute to Griotold/CodeBloom_DeliveryApp development by creating an account on GitHub.github.com 1. 프로젝트 간단 소개스프링부트 개발환경을 통해 '00의 민족'과 같은 주문 관리 플랫폼의 백엔드 구축했습니다.생성형 인공지능 서비스(`API`)를 활용하여 `AI` 기능 적용했습니다. 2. `ERD`, 인프라 설계서특징적인 것은 "음식점 허가 요청(`p_store_request`)"라는 테이블을 따로 만들어서 가게 생성시 곧장 "음식점(`p_store`)" 테이블에 ..
오늘 Spring Data에서 제공하는 페이징과 정렬을 위한 두 가지 유용한 어노테이션인`@PageableDefault` 와 `@SortDefault` 에 대해 알게 되었다.이 어노테이션들은 컨트롤러 메서드에서 페이징과 정렬 기능을 쉽게 구현할 수 있게 해주는 도구다. 1. `@PageableDefault`Pageable 객체의 기본값을 설정하는 데 사용된다. 1 - 1. 주요 속성size: 페이지당 항목 수 (기본값: 10)page: 시작 페이지 번호 (기본값: 0)예시@PageableDefault(size = 20, page = 0) 2. `@SortDefault`정렬 기준의 기본값을 설정하는 데 사용된다. 2 - 1. 주요 속성sort: 정렬할 필드명direction: 정렬 방향 (ASC 또는 D..
1. QueryDSL프로젝트 진행중, 가게를 조회하는 기능을 개발하고 있었는데page, size, 카테고리, 메뉴명, 가게명 등의 동적인 조건으로 쿼리를 해야 하는 상황이 있었다.메뉴명과 가게명은 부분일치해도 가게 목록을 가져와야 하고,카테고리는 categoryId가 정확히 일치해야하는 등 굉장히 복잡한 쿼리였다. QueryDSL은 JPA와 함께 사용되는 쿼리 빌더로 , 타입 안전한 쿼리를 작성할 수 있도록 도와준다. 1 - 1. 타입 안정성QueryDSL은 자바 코드로 쿼리르 작성하기 때문에, 컴파일 시점에 문법 오류를 잡아낼 수 있다.이는 문자열 기반의 JPQL이나 SQL과 달리 런타임 오류를 방지할 수 있어 안정성이 높다.// 잘못된 필드명을 사용하면 컴파일 시점에 오류가 발생queryFactory..
1. 문제 상황분명히 프로젝트에는 회원가입과 로그인 요청 API는 인증하지 않는다고 SecurityConfig에 선언해뒀다.그리고, 원하는 대로 잘 동작했다.그런데, 어느 순간 회원가입이 정상적으로 처리되지 않는 상황이 발생했다.아래 처럼 2. 원인 찾기2 - 1. 팀 공통 깃허브 레포에서 병합하는 과정에서 발생한 문제?처음에는 팀 공통 레포에서 pull 당긴 후에 벌어진 일이라병합하는 과정에서 뭔가 충돌이 있었겠거니 했다.팀원들에게 물어본 결과, 문제가 없다는 답변을 받았다.같은 레포를 pull 당겼는데 나만 문제가 생길 수가 있나? 2 - 2. SecurityConfig 를 다시 한 번 살펴보기package com.sparta.project.config;import com.sparta.project...
1. 문제 상황배달 앱을 만드는 팀프로젝트 중 요구사항으로모든 테이블에 생성한 사람, 생성날짜, 업데이트한 사람, 업데이트날짜를 기록하라는 것이 있었다.이것을 구현하기 위해 JpaAuditing, AuditorAware를 활용하여 통해,해당 테이블에 변경사항이 있을 시 현재 로그인 중인 사용자의 id를 자동으로 기록되도록 구현하려고 했다.참고한 자료는 아래 블로그 글이다.https://javacpro.tistory.com/85 [Spring Boot] JPA, AuditorAware 사용하여 사용자정보 자동 입력1. Config 생성 @EnableJpaAuditing 어노테이션을 추가하여 Annotation 을 사용하여 Audit 활성화 @Configuration @EnableJpaAuditing pub..
0. S.A 란?Starting Assignments 로, 프로젝트 시작전 작성 문서를 말한다. 1. API 명세서1 - 1. user 1 - 2. address 1 - 3. store_request 1 - 4. store 1 - 5. store_category 1 - 6. menu 1 - 7. order 1 - 8. payment 1 - 9. review 1 - 10. AI 2. 테이블 명세서 2 - 1. 사용자 테이블(p_user) ※ 아래부터는 필드에 모두 공통적으로 다음과 같은 필드가 포함됨을 가정합니다. 2 - 2. 음식점 테이블(p_store) 2 - 3. 음식점 카테고리 테이블(p_store_category) 2 - 4. 음식점 지역 테이블(p_location) 2..