🔍 자바 17의 Record 공식 문서 살펴보기 - Record는 불변인가?
·
개발/Java
데이터를 전달하기 위한 DTO(Data Transfer Object) 클래스를 만들 때, 우리는 항상 getter, setter, equals, hashCode, toString을 기계적으로 만들어야 했습니다. (Lombok 라이브러리가 필수였던 이유).핵심 개념: Record는 "불변(Immutable) 데이터 객체"를 아주 쉽게 생성할 수 있게 해주는 새로운 클래스 타입입니다.핵심 장점: 레코드로 만들면 필수 메서드가 자동으로 생성됩니다. 간결성 & 불변성이라는 장점을 가져갈 수 있어요.근데 이렇게 불변 데이터 객체라고만 말할 수 있을까? 놉! 비교하기이름과 나이 데이터를 담아서 전달하는 간단한 DTO(Data Transfer Object) 클래스를 만들 때를 비교해보겠습니다.❌ Before (Jav..
GPU 서버 관리 자동화 시스템 알림 병목 해결기 (소비자-생산자 패턴, Redis Message Queue 알아보기)
·
이야기
저는 1년간 교내 서버 관리자로 근무하면서 GPU 서버 관리 자동화 시스템의 백엔드를 개발해왔습니다. 오늘은 이때 마주했던 문제를 해결하는 방법, 그리고 생산자(Producer)-소비자(Consumer) 패턴에 대해 작성해보려고 합니다! 요구사항먼저 이해를 돕기 위해 비즈니스 요구사항을 살펴보겠습니다. GPU 서버의 각 컨테이너(정확히는 Pod)에는 만료 기한이 있습니다. 사람이 직접 수작업으로 컨테이너를 내리는 대신, 정해진 만료 기한에 따라서 컨테이너가 자동으로 정리되어야 합니다. GPU 서버 관리 자동화 시스템에는 웹 UI가 존재합니다. 각 사용자는 웹 UI에 대한 계정이 있으며, 계정 또한 만료 기한이 존재합니다. 웹 UI 계정별로 컨테이너는 여러개 생성될 수 있습니다. 앞서 말했던 것처럼 여러..
[Spring Boot] Spring Security 권한 분리하기
·
개발/Spring
서비스를 개발하다보면 여러가지 권한을 가진 회원들이 생기는 경우가 많다.방문하는 모든 사람들이 접근할 수 있는 리소스, 그리고 회원만 접근할 수 있는 리소스가 있을 것이다.작은 프로젝트에서는 회원만 접근할 수 있는 리소스는 토큰이 필요하게끔하면 되겠지만,관리자 계정이 필요한 경우도 있다. 아주 간단하게는 리눅스처럼 관리자용 특정 `user_id`를 주어 해결할 수 있다. 하지만 권한을 나눠야하는 case가 3개 이상인 경우, `user_id`로 구분하는 방식은 유연성과 확장성이 떨어진다.따라서 내가 Spring Security로 권한을 나누고 관리하는 방법에 대해 적어보고자 한다. Spring Security를 이미 사용하고 있다면, 권한을 나누는 방법은 아주 간단하다. 1. Role enum을 만든다...