Spring Framework : Spring Bean, DI, IoC 알아보기
·
Backend/Spring
📌 객체 지향 설계 원칙 (SOLID 원칙)단일 책임 원칙 SRP(Single Responsibility Principle) : 하나의 클래스는 하나의 책임만 가져야 한다.개방 폐쇄 원칙 OCP(Open Closed Principle) : 확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다.리스코프 치환 원칙 LSP (Liskov Substitution Principle) : 부모 타입의 객체를 자식 타입으로 교체해도 프로그램이 정상적으로 동작해야 한다.인터페이스 분리 원칙 ISP (Interface Segregation Principle) : 클라이언트는 자신이 사용하지 않는 인터페이스에 의존하면 안 된다.의존 역전 원칙 DIP (Dependency Inversion Principle) : 고수준..
실전 분산 락 가이드: 언제 Lettuce를, 언제 Redisson을 써야 할까?
·
Backend/Spring
💡 분산락이란 ?분산 환경이란 ?여러 대의 컴퓨터(서버)가 하나처럼 협력하며 동작하는 시스템단일 환경 (Monolithic)분산 환경 (Distributed)하나의 서버에서 모든 기능 수행 (DB, API, 캐시 등)기능별로 여러 서버로 나누어 수행 (API 서버, DB 서버, 캐시 서버 등)서버가 죽으면 시스템 전체가 멈춤일부 서버가 죽어도 전체 서비스는 유지될 수 있음🧩 그래서 왜 분산 락이 필요할까?분산 환경에서는 여러 서버가 동시에 같은 자원에 접근할 수 있으므로, 중복 처리나 충돌을 막기 위해 분산 락이 필요한 것이다 !!여러 서버가 동시에 같은 좌석을 예약하려고 할 때 → 분산 락으로 하나만 성공하게 제어단일 서버 환경에서는 Java synchronized, DB 트랜잭션 락(PESSIMI..
동시성 제어 방법 총 정리
·
Backend/Spring
🔧 동시성 제어란 ?여러 트랜잭션이 동시에 DB에 접근할 때 발생하는 충돌을 막아 데이터의 일관성과 무결성을 보장하는 기법 동시성 제어란 DBMS가 다수의 사용자 사이에서 동시에 작용하는 다중 트랜잭션의 상호간섭 작용에서 Database를 보호하는 것을 의미한다. ⚠️ 동시성 제어가 필요한 이유동시성 문제가 발생하면 데이터 중복 처리, 잘못된 값 저장 등 예상치 못한 결과가 생길 수 있으므로 동시성 제어가 꼭 필요하다. 📌 Race Condition (경쟁상태)여러 스레드가 동시에 같은 데이터를 변경하려 할 때, 처리 순서에 따라 결과가 달라지는 상황동시 접근을 제어하지 않으면, 예상과 다른 결과가 발생할 수 있다.주로 공유 자원에 대한 읽기 → 수정 → 쓰기 사이클이 충돌을 발생시킨다.예시재고 감소..
AWS SDK v1 기반 S3 이미지 업로드 구현 (Spring Boot 연동 포함)
·
Backend/Spring
🌐 Amazon S3(Simple Storage Service)란?📌 개요Amazon S3는 AWS(Amazon Web Services)에서 제공하는 객체 스토리지(Object Storage) 서비스다. 이름 그대로 데이터를 파일 단위(객체)로 저장하며, 무제한에 가까운 저장 공간과 높은 내구성, 확장성을 제공한다.일반적인 파일 서버는 트래픽이 증가함에 따라 장비를 갖춰야하는데, 이를 S3가 대신 해준다고 생각하면 된다.📦 “이미지, 동영상, 로그 파일, 백업 데이터 등을 저장할 공간이 필요하다면? → 바로 S3!” 📌 S3의 주요 특징항목설명객체 단위 저장데이터는 객체(object) 단위로 저장되며, 각각의 객체는 키(Key)와 메타데이터를 가짐버킷(Bucket)객체들을 저장하는 컨테이너. 전 ..
커스텀 어노테이션
·
Backend/Spring
커스텀 어노테이션(Custom Annotation)은 개발자가 정의한 어노테이션으로, Java에서 특정한 기능을 수행하기 위해 사용하는 메타데이터다. 기본적으로 Java는 여러 내장 어노테이션(예: @Override, @Deprecated, @Entity 등)을 제공하지만, 개발자가 필요에 맞게 새로운 어노테이션을 정의하여 사용할 수 있다.커스텀 어노테이션의 정의와 사용어노테이션 정의커스텀 어노테이션을 정의하려면 @interface 키워드를 사용한다.예시 : 사용자가 정의한 @UserId 어노테이션@Target(ElementType.PARAMETER) // 어노테이션이 적용될 위치@Retention(RetentionPolicy.RUNTIME) // 어노테이션의 유지 기간public @interfa..
공통 관심 사항 - Filter, Intercepter, AOP
·
Backend/Spring
공통 관심 사항(cross-cutting concerns)공통관심사항(Cross-Cutting Concern) 은 로직의 핵심 비즈니스와는 별개이지만 여러 곳에서 반복적으로 사용되는 기능 즉, 비즈니스 로직과는 직접적인 관련은 없지만, 여러 계층(Service, Controller 등) 에서 공통적으로 필요한 기능들을 의미한다.공통 관심 사항의 대표적인 예시는 다음과 같은 것들이 있다.공통 관심 사항설명✅ Logging요청/응답 로그, 에러 로그✅ 인증(Authentication)로그인 유저 확인✅ 권한(Authorization)관리자 권한 체크✅ 예외 처리공통 에러 핸들링✅ 트랜잭션 처리서비스 실행 시 트랜잭션 관리✅ 캐싱중복 호출 방지✅ 성능 측정메서드 실행 시간 로그 이러한 공통 관심사를 처리하기 ..