Cloud Wave 3기가 끝나고 약 1달이 지났습니다. 늦기 전에 후기를 남겨두고자 합니다.교육 개요기간: 2024.06.24 ~ 2024.08.30 (10주)장소: 인천대상: 주로 대학생 (고학년) 및 취업 준비생교육 환경참가자 구성대학생이 많았습니다. 저희 팀의 경우 4명 중 2명이 4학년 재학 중이었습니다. 취업을 목적으로 하는 교육이다 보니 저학년은 거의 없었습니다.숙소 ?인천에서 진행되기에 저는 대구 사람으로서 합격 발표 나고 그 주 주말에 바로 집을 계약했습니다.인천이 처음이라 지리를 잘 몰랐지만, 선학역 근처로 숙소를 구했습니다. 교육장과 가까우면서도 서울 접근성도 나쁘지 않았습니다. 다른 참가자들 중에는 송도에 거주한 경우도 있었습니다.교육 과정각 주차별 주제와 간단한 평가:1-2주차: ..
결제 시스템과 동시성 문제를 다룰 수 있는 프로젝트를 간단하게 구현해보고자 고민하던 중, 한정된 수량의 인기 상품을 특정 시간에 판매하는 서비스를 만들기로 결정했습니다.기능 요구사항핵심 기능특정 시간(예: 10시)에 품절 대란인 물건이 판매된다.사용자는 1인당 최대 3개까지만 구매 가능하다.회원 가입사용자 정보고유 사용자 번호: 각 사용자는 고유한 번호를 가진다.사용자 명:최소 2자, 최대 6자로 제한된다.로그인 아이디:이메일 주소를 사용하여 로그인할 수 있다.비밀번호:비밀번호는 암호화되어 DB에 저장된다.로그인사용자는 로그인 아이디(이메일)와 비밀번호를 입력하여 로그인할 수 있다.내 정보 조회사용자는 자신의 정보를 조회할 수 있다.물건 구매구매 절차사용자는 한 번에 하나의 물건만 구매할 수 있다.한 물..
선착순 쿠폰 발급 시스템을 구현하는 방법에 대해 궁금하여 공부하며 기록 해보았습니다.1. 요구사항 정의이벤트를 진행하며, 선착순 100명에게만 할인 쿠폰을 지급하고자 합니다. 시스템은 아래의 조건을 만족해야 합니다.선착순 100명에게만 지급되어야 한다.많은 유저가 동시에 쿠폰을 요청할 때 트래픽을 버틸 수 있어야 한다.쿠폰 발급 시 데이터 정합성을 유지해야 한다.이러한 요구사항을 충족하기 위해 트랜잭션 관리, 동시성 처리, 비동기 시스템 구성 등 다양한 기술적 요소를 고려해야 합니다. 동시에 쿠폰 발급이 이루어질 때, DB에 과부하를 주지 않고 처리할 수 있는 방법도 필요합니다.2. 문제 해결 방안(1) Redis를 활용한 문제 해결Redis는 싱글 스레드 기반으로 동작하며, 내부적으로는 여러 가지 고유..
애플리케이션에서 여러 사용자가 동시에 같은 데이터를 수정하려 할 때, 동시성 문제(Race Condition)가 발생할 수 있습니다. 이런 문제를 해결하기 위한 방법으로 여러 접근 방식이 있습니다. 이번 글에서는 Spring에서 동시성 문제를 해결하기 위한 몇 가지 대표적인 방법을 살펴보겠습니다. 1. synchronized 키워드를 이용한 해결Java에서 가장 기본적인 동시성 처리 방법 중 하나는 synchronized 키워드를 사용하는 것입니다. 이를 통해 하나의 프로세스 내에서 동시에 여러 스레드가 동일한 리소스에 접근하지 못하도록 제어할 수 있습니다. 아래는 synchronized를 사용한 예시입니다.public synchronized void decreaseQuantity(Long id, Lon..
로그인 기능을 구현하다보니 Spring Security의 인증 과정에 대해 공부해야 했고, 그 중 아이디와 패스워드를 사용한 인증은 어떤 식으로 이뤄지는가에 대해 정리해 보았습니다.스프링 시큐리티가 제공하는 필터들WebAsyncManagerIntergrationFilterSecurityContextPersistenceFilterHeaderWriterFilterCsrfFilterLogoutFilterUsernamePasswordAuthenticationFilterDefaultLoginPageGeneratingFilterDefaultLogoutPageGeneratingFilterBasicAuthenticationFilterRequestCacheAwareFilterSecurityContextHolderAwar..
Java에서 커스텀 유효성 검증 어노테이션 만들기일반적으로 @Email, @Pattern, @NotBlank 등의 표준 유효성 검증 어노테이션을 사용하지만, 프로젝트 내부에서 DTO를 만들어줄 때 전부 동일한 유효성 검사를 반복해서 하다보니 한 군데서 모아서 관리할 수 없을까 하다가 찾아보게 되었습니다. 1. 커스텀 유효성 검증 어노테이션 만들기먼저, @ValidEmail과 @ValidPassword라는 커스텀 어노테이션을 만들어 보겠습니다. 이 어노테이션을 사용하면 이메일 형식과 비밀번호 규칙을 한 번에 검증할 수 있습니다.UserDTO 클래스:public class UserDTO { @Documented @Constraint(validatedBy = {UserValidator.EmailVa..