[Kotlin + Spring] MSA 환경에서 토큰 기반 인증 구현하기 (RTR, JWT vs UUID, Redis)
·
Java & Kotlin/Spring
🧐 MSA 환경에서 로그인 시스템은 어떻게 구현할까?마이크로서비스 아키텍처(MSA)는 서비스 간 독립성을 유지하면서도 유기적으로 연결된 분산 시스템을 구축하는 방식이다. 하지만 여러 개의 독립적인 서비스가 존재하는 MSA 환경에서는 "사용자 인증을 어떻게 관리할 것인가?" 하는 문제가 발생한다.기존 모놀리식 아키텍처(Monolithic Architecture)에서는 단일 서버가 세션을 관리하면 되었지만, MSA 환경에서는 인증에 대해 어떻게 처리해야 할지에 대한 문제가 생긴다. 각 서비스가 개별적으로 인증을 처리해야 할까? 그렇다면 서비스마다 로그인 로직을 구현해야 할까? 아니면 중앙 집중식 인증 시스템을 구축해야 할까? 우리가 기존에 쓰는 로그인 구현 방식은 다음과 같이 크게 세 가지로 분류할 수 있..
JPA 영속성 컨텍스트 내부 동작의 흐름 깊게 파헤치기
·
Java & Kotlin/JPA
🧐 들어가기 전... 영속성 관리 (영속성 컨텍스트, 엔티티 매니저, 엔티티 생명주기)🧐 들어가기 전...JPA : Java Persistence API, 자바의 ORM 기술 표준으로 애플리케이션과 JDBC 사이에서 동작한다. JPA가 제공하는 기능은 크게 두 가지로 나뉜다.엔티티와 테이블을 매핑 엔티티를 실제jhzlo.tistory.com🔍 JPA란?: Java 애플리케이션에서 데이터베이스와 객체 간의 매핑을 효율적으로 관리하기 위한 표준 ORM(Object-Relational Mapping) 기술이다.JPA는 관계형 데이터베이스와 객체지향 언어 사이의 불일치를 해결하기 위한 매우 강력한 도구이다. 객체 지향 패러다임과 관계형 데이터 모델 간의 불일치는 개발 과정에서 빈번한 문제를 야기하며, 이는..
영속성 관리 (영속성 컨텍스트, 엔티티 매니저, 엔티티 생명주기)
·
Java & Kotlin/JPA
🧐 들어가기 전...JPA : Java Persistence API, 자바의 ORM 기술 표준으로 애플리케이션과 JDBC 사이에서 동작한다. JPA가 제공하는 기능은 크게 두 가지로 나뉜다.엔티티와 테이블을 매핑 엔티티를 실제 사용JPA는 엔티티 매니저를 통해서 엔티티를 사용하게 되는데,이때 엔티티 매니저는 저장, 수정, 삭제, 조회 등의 엔티티와 관련된 모든일을 처리한다. 개발자 입장에서는 엔티티 매니저는 엔티티를 저장하는 가상의 데이터베이스라고 생각하면 된다.✅ 엔티티 매니저 팩토리와 엔티티 매니저☑️ 엔티티 매니저 팩토리 VS 엔티티 매니저Entity Manager Factory:엔티티 매니저를 생성한다Persistence Unit을 기반으로 생성되는 객체로, 데이터베이스와의 연결 설정, JPA ..
[Effective Java] Item05. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라
·
Java & Kotlin/DesignPattern
🧐 들어가기 전...많은 클래스는 하나 이상의 기본 자원에 의존한다. 객체 지향 언어에서는 각각의 객체들이 서로를 필요로 하며, 비즈니스 로직을 수행해나간다. 객체는 서로의 메서드를 호출하거나 데이터를 교환하면서 협력하며,이러한 상호작용을 통해 애플리케이션의 주요 기능을 구현한다. 이 과정에서 하나의 객체가 다른 객체의 인스턴스를 생성하고 의존하는 구조는 자연스럽게 나타나지만, 잘못된 설계 방식으로 인해 코드의 유연성과 재사용성이 저하될 위험이 있다. 단순히 new 생성자를 통해서 인스턴스를 생성하는 것은 잘못된 방식일까?그렇다면 어떤 방식으로 객체의 인스턴스를 생성해야하고, 어떻게 의존성을 관리해야 올바른 설계를 할 수 있을까?✅ 기존의 문제점 1️⃣ 정적 유틸리티 클래스의 부적절한 사용public ..
[Effective Java] Item04. 인스턴스화를 막으려거든 private로 선언하라.
·
Java & Kotlin/DesignPattern
🧐 들어가기 전...코드를 구성하다 보면, 정적 메서드와 정적 필드의 묶음으로 클래스를 구성하고 싶을 때가 찾아온다.// 비인스턴스화 가능한 유틸리티 클래스public class MathUtility { // 상수 필드 public static final double PI = 3.14159; public static final double E = 2.71828; // 정적 메서드: 두 수의 최대값 계산 public static int max(int a, int b) { return (a > b) ? a : b; } // 정적 메서드: 두 수의 최소값 계산 public static int min(int a, int b) { return ..
[Effective Java] Item03. private 생성자나 enum 타입으로 싱글톤임을 보장하라.
·
Java & Kotlin/DesignPattern
🧐 들어가기 전...싱글톤 패턴이란?싱글톤: 클래스가 단 "하나의 인스턴스"만 가지도록 보장 하나의 인스턴스만 가졌을 때의 장점은 "일관성"에서 비롯된다. 예를 들어, 우리나라의 화폐가 발행되는 곳은 중앙은행인 한국은행에서만 발행된다.만약에 화폐를 한국은행에서만이 아닌 여러 곳에서 찍어낸다면 일관성이 깨지게 될 것이다.통화의 흐름을 파악하기가 어렵게 되고, 부정확한 화폐가 유통될 수도 있다. 즉, 하나의 기관에서 모든 것을 관리함으로써 일관성과 신뢰성을 챙길 수 있다. 싱글톤의 대상은 무상태(stateless)객체 혹은 설계상 유일해야 하는 시스템 컴포넌트가 된다. [이팩티브 자바 中] 이처럼, 코드를 짤 때에도 하나의 인스턴스만 가지도록 보장해야하는 경우가 있따른다.이는 여러 인스턴스를 허용하지 않음..
J_hzlo
'Java & Kotlin' 카테고리의 글 목록 (2 Page)