Back-End 47

LDAP

LDAP란 무엇일까?Lightweight Directory Acccess Protocol은 네트워크상에 있는 사용자 정보, 기기 정보 등을 체계적으로 저장하고 찾아볼 수 있도록 만든 통신규칙이다. 쉽게 말해, 모든 정보를 담아두는 거대한 중앙 온라인 주소록과 그 주소록을 빠르고 가볍게 이용할 수 있는 사용 방법을 합쳐놓은 것LDAP가 등장한 배경사용하는 서비스가 3개면, 사용하는 아이디와 비밀번호도 각 3개씩 존재한다. 그 이상의 서비스를 사용한다면, 모든 계정을 따로 관리해야 하는 불편함이 생긴다. 이를 해결하기 위해 LDAP가 등장했다. LDAP 사용 전각 시스템마다 개별적으로 사용자 정보를 저장하고 관리해야 함사용자는 시스템마다 다른 아이디와 비밀번호를 외워야 함관리자는 신규 입사자나 퇴사자가 생길..

Back-End 2025.09.02

[Spring boot] Transactional의 함정

업무 중 실제 겪은 일이지만, 보안상 다른 예시로 대체하겠다. CRUD의 내용은 같으니 참고하면 좋을 것 같다. 경험회원 가입이 됐을 경우 쿠폰을 발급되고 DB에 저장되는 기능을 개발하고 있었다. Service Layer가 길어지는게 보기 싫었던 나는 Event Listner를 사용하기로 결정했다.@Transactionalpublic void signUp(User user) { // 1. 회원 정보 저장 memberRepository.save(user); // 2. 회원가입 완료 이벤트 발행 eventPublisher.publishEvent(new UserSignedUpEvent(user.getId())); } 회원가입이 되면 이벤트를 발생시키는 코..

Back-End 2025.08.15

[Spring boot] 중앙 집중식 예외 처리

// 특정 컨텐츠의 모든 쿼리 조회 @Transactional(readOnly = true) public List findQueriesByContent(Long contentId) { // content 검증 Content content = getContentService.getByIdIfPermitted(contentId); // 해당 콘텐츠의 모든 쿼리 반환 return noSqlQueryRepository.findByContent(content); } 해당 코드는 특정 컨텐츠에 해당 가능한 즉, 매핑된 모든 쿼리를 조회하는 간단한 메서드이다. 1차로 이 쿼리가 특정 컨텐츠에 해당되는지 검증하고, 검증에 통과하면 모든 쿼리를 List로..

Back-End 2025.08.14

동기와 비동기

프론트엔드와 백엔드의 비동기 처리 비교비동기 처리 기본 개념작업을 기다리지 않고 다른 작업 수행자원 효율적 활용반응성 향상I/O 작업 최적화프론트엔드 비동기브라우저 단일 스레드 환경사용자 인터페이스 반응성 중심Promise, async/await, 이벤트 리스너프레임워크별 비동기 처리(React useEffect, Vue watch)사용자 피드백 중심 에러 처리AJAX, fetch API, axios 라이브러리백엔드 비동기1. Node.js의 비동기 처리 🟢이벤트 루프 기반 비동기 모델단일 스레드 이벤트 루프 아키텍처Non-blocking I/O 작업콜백 함수, Promise, async/await 패턴주요 비동기 APIfs 모듈: 파일 시스템 비동기 작업http/https 모듈: 네트워크 요청setT..

Back-End 2025.05.30

[Redis] 기본 개념

1. Redis 기본 개념 및 아키텍처 🏗️1.1 Redis란?정의: Redis(Remote Dictionary Server)는 오픈 소스 인메모리 데이터 구조 저장소개발자: Salvatore Sanfilippo(antirez)가 2009년 개발라이센스: BSD 라이센스구현 언어: ANSI C로 작성되어 이식성이 높음아키텍처: 이벤트 기반 단일 스레드 모델 사용1.2 핵심 특징인메모리 처리: 모든 데이터를 RAM에 저장하여 초고속 처리 (초당 100,000+ 작업)다양한 데이터 구조: 단순 키-값 저장소를 넘어선 풍부한 데이터 타입 제공원자적 연산: 데이터 구조에 대한 원자적 작업 지원으로 경쟁 조건 방지내구성: RDB 스냅샷, AOF 로그 등을 통한 데이터 영속성 보장클러스터링: 수평적 확장성 지원확..

Back-End 2025.05.26

[Java] JPA 영속성

1. 영속성 컨텍스트란? 🏠영속성 컨텍스트는 엔티티를 영구 저장하는 환경을 의미눈에 보이지 않는 가상의 데이터베이스 같은 공간으로, 엔티티 객체를 보관하고 관리EntityManager em = emf.createEntityManager(); // 영속성 컨텍스트 생성em.persist(entity); // 엔티티를 영속성 컨텍스트에 저장2. 엔티티의 생명주기 (4가지 상태) 🔄2-1. 비영속(new/transient) 상태 ⚪영속성 컨텍스트와 전혀 관계가 없는 새로운 상태그냥 자바 객체를 생성한 상태 (new 키워드로 생성)Member member = new Member(); // 순수한 객체 상태 (비영속)member.setId("member1");member.setUsername("회원1");2-..

Back-End 2025.05.23

[DDD] 도메인 주도 설계 애그리거트

애그리거트의 정의와 본질 🔍애그리거트는 연관된 객체들의 클러스터로, 도메인 모델에서 하나의 단위로 취급되는 패턴입니다. 에릭 에반스(Eric Evans)가 제안한 이 개념은 복잡한 도메인을 관리 가능한 단위로 분해하는 핵심 전략입니다.애그리거트는 데이터 변경의 단위이자 트랜잭션의 일관성 경계로 작용합니다. 이는 단순한 객체 그룹이 아닌, 도메인 규칙과 불변식을 보장하는 응집력 있는 단위입니다.애그리거트 루트(Aggregate Root)의 역할과 책임 ⚙️1. 접근 제어자 (Gatekeeper)모든 외부 참조는 루트를 통해서만 이루어짐내부 엔티티에 대한 직접 접근 차단예시: Order 루트를 통해서만 OrderLine 수정 가능2. 일관성 관리자 (Consistency Manager)도메인 규칙 검증 및..

Back-End 2025.05.22

[Spring] Mybatis

MyBatis의 주요 특징 ✨간결한 DB 연동 처리 - 자바 코드 1~2줄로 DB 연동 가능SQL과 자바 코드의 분리 - XML 파일로 SQL 분리결합도 감소 ⬇️응집도 증가 ⬆️유지보수성 향상 🔧MyBatis 구현 단계 📝1. 의존성 추가 📦Maven pom.xml 또는 Gradle build.gradle 파일에 MyBatis 의존성을 추가합니다.2. Mapper XML 파일 생성 📄SQL 명령어에 고유 ID 부여 방식으로 설정DAO에 작성된 SQL 분리XML 태그(엘리먼트)를 사용하여 SQL 관리자바 코드는 소문자, SQL은 대문자 사용 권장 INSERT INTO BOARD VALUES (NVL((SELECT MAX(BID)+1 FROM BOARD),1001),#{title..

Back-End 2025.05.08

[Spring] 어노테이션 세부사항 정리

@Component 🏷️@Component는 클래스 레벨에 사용하는 어노테이션주요 특징 ✨자동 스캔: Spring이 컴포넌트 스캔을 통해 자동으로 빈으로 등록클래스 단위: 클래스 자체를 Spring 컨테이너에 등록타입 기반: 해당 클래스 타입의 빈을 생성하위 어노테이션: @Controller, @Service, @Repository는 모두 @Component의 특수한 형태@Componentpublic class UserService { // 클래스 내용}작동 방식 ⚙️ 설정이나 @ComponentScan 어노테이션을 통해 스캔 범위 지정Spring이 해당 범위 내의 @Component 클래스들을 찾아 자동으로 빈 등록기본적으로 클래스명의 첫 글자를 소문자로 바꾼 이름을 빈 이름으로 사용 (user..

Back-End 2025.04.24

[Spring] AOP

📌 AOP의 기본 개념관점 지향 프로그래밍 (Aspect Oriented Programming)OOP(객체 지향 프로그래밍)를 보완하는 개념높은 응집도를 유지하는 데 도움을 줌IoC는 낮은 결합도를 유지하는 데 도움AOP + IoC ⇒ 유지보수가 용이한 시스템 구축 가능📌 관심사의 분리 (Separation of Concern)일반적인 서비스 구성:로깅예외처리권한 확인핵심 비즈니스 로직트랜잭션 처리🔹 핵심 관심사 (Core Concern)CRUD = 비즈니스 메서드 = 핵심 로직 = 핵심 관심 = 종단 관심🔹 횡단 관심사 (Crosscutting Concern)로깅, 예외 처리, 권한 확인, 트랜잭션 = 부가적인 코드 = 공통 기능 = Advice📌 트랜잭션의 이해트랜잭션 = 작업의 처리 단위예..

Back-End 2025.04.23