전체 글
-
Grpc Spring Security - 1) GrpcSpringSecurity의 인증, 인가Spring 2024. 9. 21. 13:00
새롭게 신규 서버를 기존 서비스와 더불어 Grpc로도 기능을 제공해야하는 업무가 있어, 이번에 Grpc 통신을 할때 Security를 적용해보았다. 토큰을 이용한 인증, 인가를 구현하였다. 기본적으로 Spring Security와 비슷하게 동작한다. 참고로 Spring Security의 간단한 인증 인가 예외처리에 대해서는 이전에 작성한 블로그 글이 있다! ↓https://dodop-blog.tistory.com/448 인증 예외 처리 문제 해결 (2) - Spring Security의 인증 / 인가 예외 처리(지난 편,,,) ↓ https://dodop-blog.tistory.com/447 AuthenticationEntryPoint와 ControllerAdvice 최근에 sprign securi..
-
도메인 주도 개발 시작하기 CH.8 ~ CH.9DESIGN PATTERN & ARCHITECTURE 2024. 7. 3. 23:40
Ch. 8 : 애그리거트 트랜잭션 관리 8.1애그리거트와 트랜잭션 동시에 한 데이터를 수정하고자 하는 경우 (동시성 이슈 발생)애그리거트의 일관성이 깨짐 해결 방안 선점 잠금한 스레드가 애그리거트를 수정하는 동안 다른 스레드가 변경 불가능하게 방지 동시에 애그리거트를 수정할 때 발생하는 데이터 충돌 해소 가능 DBMS의 행단위 잠금 사용하여 구현 ex) JPA Entity Manager의 LockModeType, 스프링데이터 JPA의 @Lock 애너테이션, 하이버네이트 PESSIMISTIC_WRITE 잠금 모드 (for update 쿼리)잠금 순서에 따른 교착 상태를 주의다른 스레드가 대기 상태에 빠질 수 있어 대기 시간 설정이 필요 ex) JPA lock.timeout, 스프링 데이터 JPA의 @Que..
-
도메인 주도 개발 시작하기 CH.6 ~ CH.7DESIGN PATTERN & ARCHITECTURE 2024. 6. 26. 22:42
Ch. 6 : 응용 서비스와 표현 영역 6.1표현 영역 사용자의 요청 해석 및 담당 응용 서비스 호출 응용 서비스가 요구하는 형식으로 사용자 요청을 변환 응용 서비스 호출 후 실행 결과를 사용자에게 맞는 형식으로 응답 덕분에, 응용 서비스가 표현 영역에 의존하지 않을 수 있음응용 영역 실제 사용자가 원하는 기능을 제공 기능 실행에 필요한 인자를 메서드 인자로 받고 실행 결과 리턴 6.2응용 서비스 사용자(클라이언트)가 요청한 기능 실행 역할기능 실행 레포지터리에서 도메인 객체를 가져와 사용 도메인 객체를 사용=> 도메인 영역과 표현 영역을 연결해주는 창구 역할 응용 서비스가 복잡하다면, 도메인 로직을 구현하고 있는지 파악해보아야 함 도메인 로직을 분산해서 구현하면, 코드 품질 문제 발생 및 반복..
-
도메인 주도 개발 시작하기 CH.4 ~ CH.5DESIGN PATTERN & ARCHITECTURE 2024. 6. 19. 23:53
Ch. 4 : 레포지토리와 모델 구현 4.1.레포지터리 인터페이스 애그리거트와 같이 도메인 영역에 속함 인터페이스는 애그리거트 루트를 기준으로 작성해야 함레포지터리 구현 클래스 인프라스트럭처 영역에 속함 인프라스트럭처에 대한 의존을 낮춰야 함 레포지터리의 기본 기능 ID로 애그리거트 조회 ID외의 다른 조건으로 애그리거트를 조회할 때에는 JPA의 Criteria나 JPQL을 사용할 수 있음 애그리거트 저장 JPA를 사용한다면 트랜잭션 범위에서 변경한 데이터는 자동 저장되므로 저장하는 메서드를 추가할 필요가 없음 삭제 기능의 경우 삭제 요구사항이 있더라도 데이터 조회가 필요한 경우나 원복해야하는 경우도 있기 때문에 데이터를 실제로 삭제하는 경우가 많지 않음 4.2스프링 데이터 JPA레포지터리 인터페..
-
도메인 주도 개발 시작하기 CH.1 ~ CH.3DESIGN PATTERN & ARCHITECTURE 2024. 6. 10. 23:13
쿠버네티스 스터디를 끝내고 새로운 스터디를 들어가게 되어, 책을 공부하면서 정리를 해보려고 한다!책은 최범균 저자의 이다. https://www.yes24.com/Product/Goods/108431347 도메인 주도 개발 시작하기 - 예스24가장 쉽게 배우는 도메인 주도 설계 입문서!이 책은 도메인 주도 설계(DDD)를 처음 배우는 개발자를 위한 책이다. 실제 업무에 DDD를 적용할 수 있도록 기본적인 DDD의 핵심 개념을 익히고 구현을www.yes24.com Ch. 1 : 도메인 모델 시작하기 1.1도메인소프트웨어로 해결하고자 하는 문제영역 한 도메인은 다시 하위 도메인으로 나눌 수 있음 고정된 하위 도메인이 존재하는 것은 아님 상황에 따라서 하위 도메인 구성 여부가 달라짐 특정 도메인을 위한 ..
-
MySQL datetime의 시간 반올림데이터베이스/MYSQL 2024. 6. 6. 02:29
최근 데이터 생성 api를 호출하고 조회 api를 호출하였을때, false로 반환되어야 하는 반환값이 true로 반환되고 있는 문제가 발생했다. 문제상황해당 반환값은 LocalDateTime의 데이터를 주어진 시점(LocalDateTime)과 비교하여, 현재시점 이후라면, true를 이전이라면 false를 반환하도록 로직이 구현되어있었다. 예시 코드는 다음과 같다. @Entityclass Test ( @Column(columnDefinition = "datetime(6)") val time: LocalDateTime) : BaseEntity() { fun isAfter() = time.isAfter(LocalDateTime.now())} 분명 데이터를 생성하는 시점에 Loca..
-
인프런) 실습으로 배우는 선착순 이벤트 시스템JAVA 2024. 6. 5. 00:36
이번에는 실습으로 배우는 선착순 이벤트 시스템 강의를 듣고 실습해보았다. https://www.inflearn.com/course/%EC%84%A0%EC%B0%A9%EC%88%9C-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EC%8B%A4%EC%8A%B5/dashboard 실습으로 배우는 선착순 이벤트 시스템 | 최상용 - 인프런최상용 | 선착순 이벤트 시스템을 구현할 때 어떤 문제가 발생할 수 있고 어떻게 해결할 수 있는지 배워봅니다., 선착순 이벤트 시스템도 자신있게! 예제를 통해 실전 감각을 잡아보세요. [임www.inflearn.com 선착순 시스템 문제와 해결 실시간으로 100개의 쿠폰만을 발행해야하는 선착순 이벤트 시스템에서..
-
인프런) 재고시스템으로 알아보는 동시성 이슈 해결 (2)JAVA 2024. 6. 5. 00:18
지난 글에 이어서 다음의 인프런 강의를 실습해본다. https://www.inflearn.com/course/%EB%8F%99%EC%8B%9C%EC%84%B1%EC%9D%B4%EC%8A%88-%EC%9E%AC%EA%B3%A0%EC%8B%9C%EC%8A%A4%ED%85%9C/dashboard 재고시스템으로 알아보는 동시성이슈 해결방법 | 최상용 - 인프런최상용 | 동시성 이슈란 무엇인지 알아보고 처리하는 방법들을 학습합니다., 동시성 이슈 처리도 자신있게! 간단한 재고 시스템으로 차근차근 배워보세요. 백엔드 개발자라면 꼭 알아야 할 동www.inflearn.com 지난글 https://dodop-blog.tistory.com/463 인프런) 재고시스템으로 알아보는 동시성 이슈 해결 (1)동시성 이슈 해결을..