전체 글
[Spring] Spring에서 제공해주는 Local Cache에 대해서
[Spring] Spring에서 제공해주는 Local Cache에 대해서
2025.03.30들어가기 전이번 포스팅에서는 Spring에서 기본적으로 제공해 주는 Local Cache에 대해서 알아보겠습니다.먼저 Spring에서 제공해 주는 Local Cache에 대해서 알아보기 전 Cache가 무엇인지에 대해 알아보겠습니다. Cache란?자주 사용하는 데이터를 메모리에 미리 복사해 놓는 임시 장소입니다. 캐시는 저장공간이 작고 비용이 비쌉니다. 하지만 사용하는 이유는 빠른 성능을 제공하기 때문입니다. 보통 데이터를 사용할 때 디스크에 접근을 해서 저장된 데이터를 사용을 합니다. 지속적으로 데이터를 요청을 하면 DBMS의 부하가 늘어나고 시간도 오래 걸립니다. DBMS의 부하를 줄이고 시간을 줄이기 위해 캐시를 사용합니다. 캐시는 메모리에 데이터를 저장하고 관리하기 때문에 DBMS에 접근하..
[Java] synchronized와 ReentrantLock에 대해서
[Java] synchronized와 ReentrantLock에 대해서
2025.03.14들어가기 전멀티 스레드 환경에서 동시에 접근하면 데이터 무결성이 깨질 수 있습니다.이러한 현상을 방지하기 위해 synchronized와 ReentrantLock을 사용해서 임계 영역에 하나의 자원만 접근하게 하여 데이터 무결성을 지킬 수 있습니다.이번 포스팅에서는 synchronized와 ReentrantLock가 무엇인지 알아보고 어떻게 데이터 무결성이 지켜지는지 알아보겠습니다. synchronized와 ReentrantLock에 대해 알아보기 전에 임계 영역이 무엇인지 알아보겠습니다. 임계 영역이란?임계영역이란 프로세스 간에 공유자원을 접근하는 데 있어서 문제가 발생하지 않도록 한 번에 하나의 프로세스만 이용하게끔 보장해줘야 하는 영역입니다. public class CriticalSection {..
[Spring Boot] Spring, S3를 활용하여 파일 다운로드
[Spring Boot] Spring, S3를 활용하여 파일 다운로드
2025.01.25들어가기 전이번 포스팅에서는 Spring, S3 preSignedUrl를 활용하여 S3에 업로드된 파일을 다운로드하는 방법에 대해서 알아보겠습니다.S3의 개념 및 버킷 생성하는 방법을 모르시는 분은 아래 포스팅을 참고하고 이 글을 읽으시는 것을 추천드리겠습니다. https://hoestory.tistory.com/72 [Spring Boot] Spring Boot + Kotlin + AWS S3를 이용한 이미지 다루는 방법들어가기 전 이번 포스팅에서는 Spring Boot와 Kotlin, AWS S3를 이용하여 이미지를 업로드, 조회, 삭제하는 방법에 대해 알아보겠습니다. AWS S3란? S3(Simple Storage Service)는 AWS에서 제공하는 클라우드 스hoestory.tistory.co..
[Spring Boot] ShedLock이란?
[Spring Boot] ShedLock이란?
2024.12.23들어가기 전이번 포스팅에서는 ShedLock에 대해서 다뤄볼 예정입니다. ShedLock은 스케줄러와 연관 있는 Lock입니다.스프링에서 제공하는 스케줄러가 무엇이며 속성에 대해서 자세히 모르시는 분은 아래 포스팅을 참고하고 이번 포스팅을 읽으시는 것을 추천드리겠습니다. https://hoestory.tistory.com/91 [Spring Boot] @Scheduled에 대하여들어가기 전이번 포스팅에서는 Spring에서 제공해 주는 @Scheduled에 대해서 알아보겠습니다. @Scheduled@Scheduled는 스프링 프레임워크에서 제공해 주는 기능입니다.특정 시간에 어떤 작업을 수행을hoestory.tistory.com ShedLock이란?만약 여러 개의 서버에서 동일한 스케줄링을 실행시키면 원..
[Spring Boot] @Scheduled에 대하여
[Spring Boot] @Scheduled에 대하여
2024.12.20들어가기 전이번 포스팅에서는 Spring에서 제공해 주는 @Scheduled에 대해서 알아보겠습니다. @Scheduled@Scheduled는 스프링 프레임워크에서 제공해 주는 기능입니다.특정 시간에 어떤 작업을 수행을 할 때 사용합니다.Scheduled에는 아래와 같은 옵션들이 존재합니다.cron : 작업 수행 할 시간설정zone : 수행할 시간의 타임존 설정fixedRate : 작업 시작 시간 기준으로 일정 간격마다 작업 설정fixedDelay : 이전 작업 종료 시간 기준으로 일정 간격 후에 작업을 실행하도록 설정 지금까지 @Scheduled의 속성에 대해 알아보았습니다. 이제 스케줄러를 실행시키기 위한 설정과 각각의 속성에 대해서 예제를 통해서 알아보겠습니다. 스케줄러 사용을 위한 설정 im..
[MySQL] 비관적락과 낙관적락에 대하여
[MySQL] 비관적락과 낙관적락에 대하여
2024.12.01들어가기 전 이번 포스팅에서는 비관적락과 낙관적락에 대해서 알아보겠습니다.알아보기 전 공유 락, 배타적 락, 격리 수준에 대해서 모르시는 분은 아래 포스팅을 읽고 이어서 진행하시는 것을 추천드리겠습니다. https://hoestory.tistory.com/87 [MySQL] 데드락 및 데이터베이스 Lock(Shared Lock, Exclusive Lock, Record Lock)에 대하여 -1들어가기 전 이번 포스팅에서는 데드락과 데이터베이스 Lock에 대해서 알아보겠습니다.트랜잭션 격리 수준에 대한 내용은 아래 포스팅을 참고하시면 됩니다. https://hoestory.tistory.com/86 [MySQL] 트hoestory.tistory.com https://hoestory.tistory.com/8..
[MySQL] Explain으로 성능 개선 포인트 찾기
[MySQL] Explain으로 성능 개선 포인트 찾기
2024.11.17들어가기 전 이번 포스팅에서는 성능 개선 포인트를 찾기 전에 Explain의 컬럼인 Type에 따른 스캔방식에 대해서 알아보고 성능 개선하는 방법에 대해서 알아보겠습니다.아래에서 설명할 내용들은 대부분 인덱스를 활용하는 내용입니다. 인덱스가 적용 안 되는 케이스에 대해서 궁금하신 분들은 아래 포스팅을 참고하시는 것을 추천드립니다.https://hoestory.tistory.com/80 [MySQL] 인덱스 적용안되고 풀스캔이 적용되는 패턴들어가기 전이번 포스팅에서는 인덱스를 설정을 하고 인덱스 스캔방식을 원했지만 풀스캔이 쿼리 패턴에 대해서 알아보겠습니다.Mysql에서 지원해 주는 Explain이라는 키워드를 사용하여 스캔방hoestory.tistory.com Explain에 대해서 알아보기 전 포스..
[Spring Boot] 트랜잭션 전파과정에 대하여
[Spring Boot] 트랜잭션 전파과정에 대하여
2024.11.10들어가기 전이번 포스팅에서는 트랜잭션 전파과정에 대해서 알아보겠습니다.트랜잭션 격리 수준에 대해서 궁금하신 분은 아래 포스팅을 참고하시는 것을 추천드리겠습니다. https://hoestory.tistory.com/86 [MySQL] 트랜잭션 격리 수준들어가기 전 이번 포스팅에서는 데이터베이스 트랜잭션의 격리 수준에 대해서 알아보겠습니다. 트랜잭션 격리 수준트랜잭션 격리 수준은 여러 트랜잭션이 동시에 실행되는 상황에서 특정 트hoestory.tistory.com 트랜잭션 전파과정이란?트랜잭션 전파과정은 하나의 트랜잭션이 다른 트랜잭션과 상호작용 하는 것을 의미합니다. 설정에 따라 하나의 트랜잭션이 다른 트랜잭션에 합류하거나, 새로운 트랜잭션을 생성하는 등 다른 트랜잭션과 상호작용을 합니다. 트랜잭션 전..
[MySQL] 데드락 및 데이터베이스 Lock(Shared Lock, Exclusive Lock, Record Lock)에 대하여 -1
[MySQL] 데드락 및 데이터베이스 Lock(Shared Lock, Exclusive Lock, Record Lock)에 대하여 -1
2024.10.20들어가기 전 이번 포스팅에서는 데드락과 데이터베이스 Lock에 대해서 알아보겠습니다.트랜잭션 격리 수준에 대한 내용은 아래 포스팅을 참고하시면 됩니다. https://hoestory.tistory.com/86 [MySQL] 트랜잭션 격리 수준들어가기 전 이번 포스팅에서는 데이터베이스 트랜잭션의 격리 수준에 대해서 알아보겠습니다. 트랜잭션 격리 수준트랜잭션 격리 수준은 여러 트랜잭션이 동시에 실행되는 상황에서 특정 트hoestory.tistory.com 데드락이란?데드락은 교착상태를 의미하고 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 무한정 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태를 의미합니다. 위의 이미지를 보면 R1(자원 1)은 P1(프로세스 1)을 점유하고 있는 상태..
[MySQL] 트랜잭션 격리 수준
[MySQL] 트랜잭션 격리 수준
2024.10.06들어가기 전 이번 포스팅에서는 데이터베이스 트랜잭션의 격리 수준에 대해서 알아보겠습니다. 트랜잭션 격리 수준트랜잭션 격리 수준은 여러 트랜잭션이 동시에 실행되는 상황에서 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있게 허용할지 말지 정하는 것입니다. 트랜잭션 격리 수준의 종류는 아래와 같습니다.READ_COMMITTED : 다른 트랜잭션에서 커밋된 내용을 참조 가능READ_UNCOMMITTED : 다른 트랜잭션에서 커밋되지 않은 내용 참조 가능REPEATABLE_READ : 트랜잭션 진입 이전에 커밋된 내용만 참조 가능SERIALIZABLE : 트랜잭션에 진입하게 되면 락을 걸어 다른 트랜잭션에서 참조 불가능Oracle의 기본 격리 수준은 READ_COMMITTED, MySQ..
[RabbitMQ] RabbitMQ 개념 및 Spring 연동
[RabbitMQ] RabbitMQ 개념 및 Spring 연동
2024.09.18들어가기 전이번 포스팅에서는 RabbitMQ에 대해서 알아보고 RabbitMQ와 Spring을 연동하는 방법에 대해서 알아보겠습니다. RabbitMQRabbitMQ는 클라우드 환경, 온프레미스에 쉽게 배포할 수 있는 안정적인 메시징 및 스토리밍 브로커입니다.메시지 큐*(Message Queue)를 통해 여러 애플리케이션에 데이터를 주고받을 수 있도록 해주기 위한 AMQP*의 구현체입니다. AMQP란?Advanced Message Queuing Protocol의 약자로 생산자(Producer)와 수신자(Consumer) 사이에서 메시지를 안전하게 교환하는 메시지 지향 미들웨어 개방형 프로토콜입니다.메시지 큐(Message Queue)란?프로세스 또는 프로그램 간에 데이터를 교환할 때 사용하는 통신방법으로..
[Java] 동기화 기법에 대하여(뮤텍스, 세마포어) - 1
[Java] 동기화 기법에 대하여(뮤텍스, 세마포어) - 1
2024.08.20들어가기 전동기화를 하지 않으면 동시성 이슈로 인해 예상치 못한 문제를 겪을 수 있어 동기화를 하여 이와 같은 문제를 방지해야 합니다. 그래서 이번 포스팅에서는 동시성 이슈를 방지하기 위한 동기화 기법에 대해 알아보겠습니다. 동시성 이슈로 인한 문제는 아래 포스팅을 참고하시는 것을 추천드립니다.https://hoestory.tistory.com/83 [Java] 동시성 이슈 개념과 발생하는 동작 과정들어가기 전이번 포스팅에서는 동시성 이슈에 대해 알아보겠습니다. 동시성 이슈를 알아보기 전에 싱글 스레드와 멀티 스레드 환경에 대해서 알아보겠습니다. 싱글스레드와 멀티스레드 싱글hoestory.tistory.com 동기화란?동기화는 여러 스레드가 동시에 임계 영역*에 접근을 하려고 할 때 하나의 스레드만 접..