전체 글

함께 성장하는 개발자
AWS

[AWS] ALB gRPC 설정 - Route53 도메인 설정까지

🐸 서론회사 인프라를 점점 MSA 로 옮기고 있는 와중에 내부 ALB 로 gRPC 서버를 연결해야 하는 일이 생겼다.ALB 를 gRPC 통신을 사용하는 방법을 알아보자.우리는 ALB를 사용하기로 했는데 이유는 아래와 같다.1. gRPC Server 를 다중화하고 ALB를 이용해서 부하를 분산시킬 수 있다.2. EC2 인스턴스는 재시작시 IP 가 변경되는데 그런 변경되는 IP 를 관리할 필요가 없다.3. ALB 가 Health Check / 장애 발생 시 정상 인스턴스에만 트래픽을 전달해 줌즉 ALB 를 이용해서 더 고가용성의 서버를 구축할 수 있게 된다. 0. 목차Target Group ( 대상그룹 ) 설정ALB 생성Bastion Server 에서 grpcurl 로 ALB 동작 검증하기 (실패)Rout..

데이터베이스

[MySQL & PostgreSQL] Null 값을 안전하게 비교하기

1. 문제 상황PostgreSQL 에서 nullable 한 column 의 값이 변경이 되면 History 데이터를 쌓도록 Trigger 를 만들고 있었습니다.if OLD.purpose NEW.purpose 인 경우 Trigger 가 실행 되도록 했다. 그런데 purpose 값을 바꿔도 History 데이터가 생성이 되지 않았습니다.purpose 가 아닌 다른 값을 변경하는 경우에는 정상적으로 Trigger 가 동작하는 것으로 봐서는Trigger 가 적용이 안 된 문제는 아닌 것 같은데 ... 2. 문제 원인문제의 원인을 알아냈습니다. 설명하기 전에 아래의 쿼리의 결과를 예상해봅시다 ! select null = null, null null, null = 1, null 1, 1 = 1, ..

Spring

[Spring] GlobalExceptionFilter 에 적용한 Exception 잡히지 않는 오류

1. 문제상황AOP 를 활용해서 요청의 권한을 검증하고권한이 없는 경우 AccessDenieedException 을 던지고GlobalExceptionHandler 에서 잡아서 처리하길 기대했다. 문제의 코드 ( 권한 검증 AOP ) @Before("@annotation(requireBookAuthority)") public void verifyAttendanceBookAuthority(JoinPoint joinPoint, RequiredBookAuthority requireBookAuthority) throws Throwable { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getReq..

JPA

[JPA] 양방향 연관 관계와 무한 참조 문제: 원인과 해결 방법

0. 문제 상황 - 무한참조 문제 발생 문제 상황 설명에 앞서 도메인 설명을 간략하게 하겠습니다. 저는 출석부 서비스 "체쿠리"를 개발 중입니다.회원은 N 개의 출석부를 가질 수 있습니다.출석부는 N 명의 회원을 가질 수 있습니다.출석부를 여러 명의 선생님이 함께 관리하는 시스템인거죠. 그리고 출석부는 사용 가능 요일( AttendanceDays )이 있습니다.1개의 출석부는 [월, 화, 수, 목, 금 ] 등 1..N 개의 AttendanceDays 가 있습니다. 문제는 여기서 발생합니다. 회원이 가진 출석부를 조회하는 API를 통해서AttendanceBook, AttendanceDays 를 함께 호출했더니 아래와 같은 결과가 발생했습니다. AttendanceBook, AttendanceDays 가 서로..

Spring

[Spring] GlobalExceptionHandler 구현하기

0. 배경지식이 글을 이해하기 위해 필요한 간단한 기본 지식을 설명 드리겠습니다. 백엔드 개발자에게 예외 처리란 중요한 작업 중 하나입니다.서비스 운영 시에는 예외를 로깅하고 예외를 가공해서 사용자에게 필요한 정보만을 노출하는 것이 중요합니다. 이러한 예외 처리를 Spring 은 다양한 기능으로 추상화 해 개발자의 예외 처리 어려움을 덜어줍니다.Spring 은 예외 처리를 위해 기본적으로 3 가지의 ExceptionResolver 를 제공합니다. ExceptionHandlerExceptionResolverResponseStatusExceptionResolverDefaultHandlerExceptionResolver이 ExceptionResolver 가 동작하는 순서는 1 -> 2 -> 3 입니다.즉 Ex..

후뿡이
개발자 '왜?'길 인생