요즘 보통 캐시라는 기술이 곧 레디스다 라고 불릴만큼 레디스는 캐시로 많이 사용되는데요,레디스가 어떤 기술이길래 캐시로 사용되는지 레디스의 또 다른 강점은 무엇인지 알아보고자 합니다. 캐시란? 우선 캐시라는 것이 무엇인지 알아볼텐데, 캐시의 정의는 데이터를 빠르게 접근할 수 있도록 임시로 저장하는 고속 저장소를 의미하고 빠르게라는 모호한 의미를 조금 더 정확하게 표현하면 원격 디스크 저장소(데이터베이스 등)에 저장되어 있는 데이터에 접근하는 비용과 시간을 절약하기 위해 메모리(RAM)에 데이터를 저장하여 빠르게 접근하는 기술입니다. 캐시는 정말 다양하게 활용되지만, 대중적으로 사용되는 대표적인 사례는 자주 사용되는 데이터(상품 조회 같은)를 캐시에 올려두고 접근하여 사용자 경험을 향상시키는 사례가 있습니..
전체
Transaction이란?Spring을 사용하다 보면 자연스럽게 MVC 구조를 접하게 되고, 이 과정에서 데이터 저장소(Model)에 접근하기 위해 JDBC, JPA, Hibernate 등의 기술을 활용하게 됩니다.이러한 기술들을 사용하여 데이터 저장소에 요청할 쿼리를 만들고 실행하기 전까지의 과정을 하나의 작업 단위라고 하는데, 이를 한 단어로 트랜잭션이라고 부릅니다.트랜잭션은 작업 단위 안에서 발생하는 조회, 생성, 수정, 삭제 등의 여러 작업을 하나로 묶어 처리하는데요,예를 들어, 주문이라는 작업은 다음과 같은 단계를 포함하며, 이를 하나의 트랜잭션으로 처리합니다:사용자의 주문 요청상품 재고 감소주문 정보 저장사용자에게 주문 요청 완료 알림 발송이처럼 주문 작업은 여러 단계를 포함하는 하나의 트랜잭..
서론 항해 시작과 함께 진행한 이직 수습기간을 정신없이 마치고 메인 결제 관련 기능 작업을 진행하게 되었습니다. 어떻게 시기라는 게 이렇게 딱 맞는지, 항해를 진행했던 시기에는 바쁘게 일을 처리하는 상황이 없었는데 고맙게도 딱 끝마치고 나니 그동안 하지 못 했던 일들이 몰려온듯한 느낌이었네요 개인적인 이슈 관리는 노션에 진행하고 있었지만, 처음으로 메인 기능을 많이 고치게 되는 계기가 되어서 이를 적어보게 되었습니다. 이번에 맡게 되었던 개발 건은 기존 결제 기능에서 새롭게 추가된 기능을 녹여내기 위해 파라미터를 추가하여 저장하는 작업인데요,사실 겉으로 보기에는 별 게 없는 작업이고 신규 개발 건이면 내 입맛대로 만들 수 있는 작업이기도 합니다. 다만, '주문/결제'라는 이 키워드 하나로 그 내포되어 ..
안녕하세요, 이번에 알아볼 주제는 Spring의 Filter입니다. Spring에서는 WEB 요청을 위한 다양한 필터가 존재하는데요,이번 시간에는 Spring에서 기본적으로 제공 해 주는 필터 종류와 필터들이 어떻게 호출 되는지, 그리고 필터의 올바른 사용에 대해서 알아보려 합니다.Spring의 필터란?Filter는 Java Servlet API에서 제공하는 기능으로, HTTP 요청/응답에 대한 사전 및 사후 처리를 수행할 수 있는 기능을 제공합니다. 이는 Java 웹 애플리케이션에서 가장 기본적인 필터링 메커니즘입니다. 필터는 다양하게 사용되는데요, 주로 인증 및 권한 검사, 로깅 및 모니터링, 요청/응답 데이터 변환, CORS 설정 등으로 다양하게 사용되고 있습니다. Spring Filter는 Spr..
Event? Spring에서는 특정 동작이나 프로세스가 수행될 때, 특수한 행동을 일으키는 이벤트 라는 개념이 존재합니다. 예를 들면, JPA의 경우 엔티티의 감지를 위해 다음과 같은 리스너 어노테이션을 사용하고 있는 것을 볼 수 있는데요,@Entity@EntityListeners(UserEntityListener.class)public class User { @Id @GeneratedValue private Long id; private String name; // Getters and setters...} 이처럼 Spring 이벤트는 특정 동작이 수행될 때, 비즈니스 로직과 별개의 동작을 수행하는 이벤트를 처리할 수 있는 기능을 제공 해 주고 있는데, 오늘은 이에 대해서 ..
@ComponentScan의 동작 원리Spring 프레임워크에서 @ComponentScan은 지정된 패키지를 스캔하여 Spring 컨테이너에서 관리할 빈(Component)을 자동으로 등록하는 역할을 합니다.이 어노테이션은 주로 @Configuration 클래스와 함께 사용되며, Spring 애플리케이션 초기화 과정에서 매우 중요한 부분을 차지합니다. @ComponentScan은 @SpringBootApplication을 통해서 관리됩니다.@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan( // ..
작성 개요평소 개인적으로 사용하기도 하고 현업에서도 사용하고 있는 Spring을 충분히 이해하고 있는가?라는 생각을 가지고 동작 원리에 대해 다시 한 번 정리하게 되었습니다. 어디까지 분석할 것인가?어디까지 쓸 것인가를 가장 고민하게 되었는데, 본 글을 쓰게 된 목적이 MVC 과정을 어떻게 수행하는지가 목적이기 때문에, 그 과정에서 개별 어노테이션이 어떻게 동작하는지 까지 분석하는 것은 오버스펙일듯 하여 추후 세부적으로 접근 가능하게끔 하는 가이드 문서쯤 어딘가..? 라는 글을 적는게 좋을 것 같았습니다..ㅎㅎ SpringBoot의 시작SpringBoot는 어떻게 시작될까요? SpringBoot는 다음과 같이 다양한 실행 방식을 제공합니다.Intellij 사용 시, [Gradle > bootRun]co..
우리는 수업 과정을 통해 Database 라는 저장소를 배우게 되고, Table 이라는 데이터를 저장하기 위한 프레임을 배우게 됩니다. 보통 우리는 다양한 정보를 공통의 데이터 프레임을 가지는 하나의 테이블에 저장하게 되는데, 여기서 테이블에 대한 조회를 빠르게 하기 위해 사용되는 키워드가 바로 인덱스라고 합니다. 인덱스는 다른 말로 색인이라고 불리는데, 색인 과정을 통해 우리는 특정 데이터에 대한 조회를 빠르게 할 수 있는 특징을 가지고 있습니다. 인덱스의 개념인덱스 = 색인 과 같은 의미로, DB의 Table에서 원하는 정보를 빠르게 조회하기 위해 사용합니다. 인덱스는 주로 SELECT 쿼리에서 사용하는데, DB 사용의 70%는 읽기인 만큼 인덱스는 조회 성능을 높이기 위해서 사용한다는 특징을 가지고..