Spring
-
[Spring] Redis의 Redisson을 활용한 분산락 처리Spring 2025. 5. 10. 19:40
개요동시성 제어를 위한 락 방식은 여러 가지가 있고, 접근 레벨에 따라서도 적용할 락 방식이 다릅니다. 예를 들어, 하나의 프로세스 안에서의 동기화, 여러 프로세스 간의 동기화, 또는 분산 시스템에서의 동기화 등 목적에 따라 요구사항과 복잡성이 달라집니다. 그 중에서도 다중 스레드 환경과 분산 시스템 환경 모두에서 동시성 제어를 보장하기 위해 Redis의 Redisson을 통한 분산락 처리에 대해 알아보겠습니다.1. 락의 종류와 차이점동시성 제어를 위해 사용되는 락은 크게 다음과 같이 분류할 수 있습니다.종류설명정리락 (Mutex)단일 프로세스, 단일 스레드 간 동시성 제어관적락 (Monitor Lock)JVM의 synchronized 키워드로 구현된 락비관적 락데이터 접근 시마다 락 걸어 충돌 방지낙관..
-
[Spring] Lock 종류 정리 (낙관적 락, 비관적 락, 분산락, 데드락, 등) 및 예시Spring 2025. 5. 8. 10:21
1. Lock이란?1.1 설명Lock은 동시에 여러 개의 트랜잭션이나 프로세스가 같은 리소스(데이터, 파일 등)에 접근하려고 할 때 발생할 수 있는 경쟁 조건(Race Condition)을 방지하기 위한 제어 장치입니다. 데이터 정합성을 보장하고 예기치 않은 충돌을 방지하기 위해 필수적인 메커니즘입니다.1.2 원리Lock은 주로 다음의 방식으로 작동합니다.하나의 트랜잭션이 리소스를 점유하면, 다른 트랜잭션은 해당 리소스가 해제될 때까지 대기하거나 실패 처리됩니다.Lock의 종류에 따라 점유 방식(낙관적, 비관적)이나 위치(DB, 분산 시스템 등)이 달라집니다.2. 낙관적 락 (Optimistic Lock)2.1 낙관적 락이란?낙관적 락은 충돌이 거의 발생하지 않을 것이라고 가정하고 처리하는 방식입니다. ..
-
[Aws + Spring] SNS(Simple Notification Service) + Spring Boot 에러 메일 전송 기능 구축하기Spring 2024. 1. 20. 16:28
소개 이번 포스트에서는 Spring Boot와 AWS의 Simple Notification Service(SNS)를 결합하여 어플리케이션에서 발생한 에러를 실시간으로 감지하고 관리자에게 메일로 알림을 보내는 기능을 구축하는 방법에 대해 알아보겠습니다. AWS SNS(Simple Notification Service)란? AWS SNS는 Amazon Web Services(AWS)에서 제공하는 완전 관리형 메시징 서비스로, 분산된 시스템에서 효율적으로 메시지를 전송하고 받을 수 있는 서비스입니다. 다양한 플랫폼과 어플리케이션 간에 쉽게 메시지를 송수신할 수 있도록 설계되었습니다. 주요 특징: 다양한 플랫폼 지원: SNS는 모바일 디바이스, 웹 어플리케이션, 이메일, HTTP 엔드포인트 등 다양한 플랫폼으로..
-
[Aws + Spring] Spring Boot + Aws Glue + S3를 활용한 방문자 통계 구축 (1)Spring 2024. 1. 2. 22:48
🚀 웹 애플리케이션을 구축할 때 방문자 통계 및 실시간 데이터 분석은필수 요소입니다. 이번 포스팅에서는 Spring Boot, AWS Glue, 그리고 S3를 결합하여 방문자 통계 시스템을 구축하는 방법을 알아보겠습니다. 이 포스팅에서는 아래 두 가지 통계를 구축할 예정입니다. 1. 일일 방문자 디바이스 통계 (PC, 모바일, 테블릿 수) 2. 일일 사이트 통계 (방문자 수, 페이지 뷰, 회원가입 수) 🎯 이 포스트를 통해 얻을 수 있는 것: AWS Glue를 이용한 데이터 ETL 프로세스 자동화 AWS S3를 활용한 확장 가능한 통계 데이터 저장소 구축 웹 애플리케이션의 방문자 통계 프로세스 구축 ✍️ 목차 1. AWS S3 로그 폴더 생성 2. Spring Boot 설정 3. Spring Boot에..
-
[Spring] Spring Boot에서 아임포트 다날 본인인증 연동(Rest Api)Spring 2023. 9. 21. 23:44
서버에서 본인인증을 처리하는 방법은 여러가지가 있다. 1) 이메일을 통한 본인인증 2) SMS를 통한 본인인증 3) PG사 제공 본인인증 서비스 이용 그 중에 3번 즉, iamport의 다날 PG사를 이용한 본인인증 서비스를 Spring Boot에서 Rest Api 방식으로 연동하는 방법을 작성해본다. 개발 환경: 💡 Spring Boot 2.5.5 💡 Java 1.8 💡 JPA 💡 Maven 💡 WebView Target: Unity 📌 아임포트 관리자 콘솔에서 가맹점 식별코드와 Api Key, Api Secret Key를 발급 받았다는 전제하에 진행한다. 먼저, 동작 순서는 아래와 같다. 1. 클라이언트에서 '본인인증하기' 클릭시 서버에 웹뷰 인증값을 요청 2. 서버에서 인증토큰(인증값 UUID, 만..
-
Spring boot Gitlab CI/CD 구축 (2)Spring 2023. 9. 19. 22:20
저번 포스팅에서는 GItlab-Runner용 IAM 계정을 생성하고, EC2 서버에 Runner를 설치 했으며, 필요한 설정까지 완료 했습니다. 이번 포스팅에서는 Gitlab Repository 설정과 Package를 설치하고 파이프라인을 구축 해보겠습니다. https://developer-been.tistory.com/37 Spring boot Gitlab CI/CD 구축 (1) 개발 프로세스에서 CI/CD(Continuous Integration/Continuous Deployment)는 애플리케이션 개발과 배포의 효율성을 높이고 소프트웨어 개발 수명 주기를 단축하는 중요한 구성 요소입니다. 이 포스팅에서는 AWS developer-been.tistory.com 5. Gitlab Runner 설정 P..
-
Spring boot Gitlab CI/CD 구축 (1)Spring 2023. 9. 10. 19:14
개발 프로세스에서 CI/CD(Continuous Integration/Continuous Deployment)는 애플리케이션 개발과 배포의 효율성을 높이고 소프트웨어 개발 수명 주기를 단축하는 중요한 구성 요소입니다. 이 포스팅에서는 AWS EC2 인스턴스에 GitLab Runner를 설치하여 GitLab CI/CD 파이프라인을 구축하고, Spring Boot에서 CI/CD 프로세스를 구현하는 방법을 알아보겠습니다. 💡 CI/CD(Continuous Integration/Continuous Deployment)란? CI/CD는 개발자 및 개발 팀이 소프트웨어를 더 신속하게 개발하고 배포할 수 있도록 도와주는 소프트웨어 개발 및 배포 프로세스의 조합입니다. 이를 통해 코드 변경사항이 자동으로 통합되고 테스..
-
[AWS + Spring] Spring Boot에서 S3와 CloudFront를 이용한 파일 업로드 (2)Spring 2023. 9. 3. 19:04
이전 포스팅에서 AWS CloudFront 및 S3를 생성하고, 정책을 생성해서 적용까지 완료 했습니다. 해당 포스팅에서는 Spring Boot 설정을 하고 Presigned URL 생성 API 까지 구현 해보겠습니다. AWS CloudFront 및 S3 및 정책 생성은 이전 포스팅을 참고 하시길 바랍니다. https://developer-been.tistory.com/36 [AWS + Spring] Spring Boot에서 S3와 CloudFront를 이용한 파일 업로드 (1) Spring Boot 애플리케이션에서 파일 업로드 기능을 구현하고, 이를 AWS S3와 CloudFront를 활용하여 파일을 안정적으로 저장하고 배포하는 방법을 설명합니다. 이를 통해 애플리케이션의 성능과 안정성 develope..