전체 글

· MSA
1. Eureka란?Netfilx에서 개발한 서비스 디스커버리 서버로,MSA 환경에서 각 서비스들의 위치를 동적으로 관리하는 핵심 컴포넌트이다. 2. 서비스 디스커버리(Service Discovery)?서비스 디스커버리는 마이크로서비스 환경에서 각각의 서비스 인스턴스들의 위치(호스트, 포트)를 자동으로 등록, 검색, 관리하는 시스템이다. 클라우드 환경에서 서비스의 위치가 동적으로 변경됨에 따라, 수동으로 서비스 위치를 관리하기 어렵다. 자동화된 서비스 등록과 발견(discovery)가 필요하다. 서비스 디스커버리를 통해 MSA 환경에서 각 서비스들이 서로를 쉽게 찾고 통신할 수 있게 된다.3. Eureka의 구성요소3 - 1. Eureka Server모든 마이크로서비스의 정보를 등록하고 관리하는 레지스트..
0. JpaMetamodelEntityInformation.isNew(T entity)@Overridepublic boolean isNew(T entity) { if(versionAttribute.isEmpty()) || versionAttribute.map(Attribute::getJavaType).map(Class::isPrimitive).orElse(false)) { return super.isNew(entity); } BeanWrapper wrapper = new DirectFieldAccessFallbackBeanWrapper(entity); return versionAttribute.map(it -> wrapper.getPropertyValu..
· MSA
1. MSA 개요MSA(Microservice Architecture)는 하나의 큰 애플리케이션을 여러 개의 작은 독립적인 서비스로 나누어 개발하는 소프트웨어 아키텍쳐 방식이다. 각각의 서비스는 독립적으로 배포 가능하고, 자체 프로세스에서 실행되며, 경량하된 통신 메커니즘(주로 HTTP)를 사용하며, 비즈니스 기능 단위로 구성된다. 1 - 1. 주요 특징독립적인 배포 가능성: 각 서비스는 독립적으로 배포할 수 있다.작은 팀 구성: 각 서비스는 작은 팀이 독립적으로 개발하고 관리할 수 있다.기술 스택의 다양성: 각 서비스는 적절한 기술 스택을 자유롭게 선택할 수 있다. 2. 모놀리식 vs MSA2 - 1. 모놀리식 모놀리식은 하나의 큰 애플리케이션에 모든 기능이 통합되어 있다.단일 코드베이스와 데이터베이스..
· 깃
1. 협업할 때 PR(Pull Requset) 를 사용하는 이유코드 리뷰와 협업의 핵심 도구인 Pull Request는 팀 프로젝트의 품질을 높이고 안정적인 개발을 가능하게 한다.개발자가 자신의 작업 브랜치에서 변경사항을 만들고, 이를 메인 브랜치에 병합하기 전에 다른 팀원들의 검토를 받을 수 있다.이 과정에서 코드의 버그를 조기에 발견하고, 코딩 스타일을 일관되고 유지하며, 더 나은 구현 방법에 대한 토론이 가능해진다.또한, PR을 통해 변경사항을 문서화하고 추적할 수 있어, 나중에 특정 기능이나 버그 수정의 히스토리를 쉽게 확인할 수 있다.요약하면 교차 검증! 2. PR Template 적용 Creating a pull request template for your repository - GitHub..
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...
Griotold
Griotold's Olive Oil