1. 개요 Spring AOP(Aspect-Oriented Programming)를 활용하면, 권한 체크 로직을 모든 컨트롤러 메서드마다 반복해서 작성할 필요 없이 관점 지향 프로그래밍(Aspect-Oriented Programming) 방식으로 깔끔하게 분리할 수 있다.Spring AOP를 이용하여 API 호출 시 특정 역할(Role)만 접근 가능하도록 제한하는 방법을 정리하겠다. 2. 구현2 - 1. @RequireRole 어노테이션 생성 먼저, 권한 체크를 적용할 메서드에 사용할 커스텀 어노테이션을 생성한다.package com.example.infra.aspect;import java.lang.annotation.ElementType;import java.lang.annotation.Retenti..
1. 문제 상황 최근 프로젝트에서 Role 이라는 Enum 클래스를 만들면서 of 메서드를 추가하게 되었다. 이 메서드는 문자열 입력값을 받아 Enum 값을 반환하는 역할을 한다. package com.griotold.auth.domain.enums;import lombok.AllArgsConstructor;import lombok.Getter;@Getter@AllArgsConstructorpublic enum Role { MASTER("ROLE_MASTER"), HUB("ROLE_HUB"), DELIVERY("ROLE_DELIVERY"), COMPANY("ROLE_COMPANY"); private final String role; public static Role of(..
1. Record란? Java 16에서 정식으로 도입된 Record는 불변(immutable) 데이터 객체를 생성하기 위한 특별한 형태의 클래스다.주요 특징은 아래와 같은데, 모든 필드가 private final로 선언된다.생성자, getter, equals(), hashCode(), toString()메서드가 자동 생성된다.불변성(immutability)이 보장된다.java.lang.Record를 자동으로 상속한다.final 클래스라 상속이 불가능하다. 2. 기존 DTO vs Record 비교 동일한 데이터 객체를 일반 클래스로 작성했을 때, Record로 작성했을 때를 비교해보자 일반 DTO 클래스public class UserDTO { private final String name; pr..
1. 문제 상황 Kafka topic에 이벤트를 발행하기 위해서는 java 객체를 JSON 으로 직렬화하는 과정이 필요하다.이 때 변환하려는 이벤트에 LocalDateTime 타입의 필드가 있었고, 직렬화하는 과정에서 문제가 발생했다. ReservationCreatedEventpublic record ReservationCreatedEvent( UUID reservationId, Long userId, UUID restaurantScheduleId, LocalDateTime createdAt, // LocalDateTime LocalDateTime expiredAt // LocalDateTime) createdAt, expiredAt 이라는..
1. 문제 상황개발 환경에서는 Config Server 에서 데이터 소스를 가져다가 사용하고운영 환경에서는 github secrets, variales 에서 환경변수를 주입해서 EC2에 배포를 한다. 개발 환경의 yml을 보면,application-dev.ymlspring: application: name: auth-service config: import: "configserver:" cloud: config: discovery: service-id: config-service enabled: trueeureka: client: serviceUrl: defaultZone: http://localhost:19000/eureka/위 처..
1. AMI(Amazon Machine Image) 란? AWS EC2 인스턴스를 시작하는 데 필요한 소프트웨어 구성(운영 체제, 애플리케이션, 설정 등)을 포함한 템플릿.AMI는 EC2 인스턴스를 생성할 때 기본적으로 사용되며, 동이랗ㄴ 구성을 가진 여러 인스턴스를 빠르고 일관되게 배포할 수 있도록 도와준다. EC2 인스턴스를 시작할 때 이름도 넣고, VPC도 선택하고, 키 페어도 선택하고, 여러 가지를 선택하는데,그 중에서도 AMI를 선택하게 되어 있다. Quick Start 라는 항목을 보면,Amazon Linux, macOS 등등을 선택할 수 있다.일반적으로 EC2를 배포할 때 Amazon Linux를 많이 선택한다. 2. 사용자 정의 AMI Quick Start 옆에 내 AMI 라는 항목이 눈..
1. Kompose란? docker-compose.yml 파일을 쿠버네티스를 실행하기 위한 yaml 파일로 변환하는 툴이다.https://kompose.io/ Kompose - Convert your Docker Compose file to Kubernetes or OpenShiftWhy do cats (and developers) like Kompose? Developers love to simplify their development environment with Docker Compose. With Kompose, you can now push the same file to a production container orchestrator! Getting Startedkompose.io https:/..
1. 이벤트 흐름지난 게시글에서는 결제를 생성한 뒤, "payment-completed" 토픽에 이벤트를 발행하는 것 까지 했다.https://griotold.tistory.com/81 이번 게시글에서는 해당 토픽에서 이벤트를 수신하여 주문의 상태를 COMPLETE 로 바꾸고,"order-completed" 토픽에 이벤트를 발행하여 알림 서비스에서 알림 발송하는 것까지 해보자.https://github.com/Griotold/kafka-practice-sparta GitHub - Griotold/kafka-practice-spartaContribute to Griotold/kafka-practice-sparta development by creating an account on GitHub.github...