2025/02 39

KPT 회고 - 게임 아이템 거래소 프로젝트

1. KEEP(1) 🥇 소통- 서로 코드를 확인하며 로직 면에서 아쉬운 부분을 피드백하면 피드백 받은 사람이 적극 수용하고, 의견이 다를 때에는 같이 얘기하면서 조율한 점- 아이스 브레이킹, 팀원끼리 어색한 시간이 매우 짧아서 바로 활발할 의사소통을 하면서 프로젝트에 돌입할 수 있던 점- 발표자한테 모든 걸 맡기지 않고 다같이 리허설을 하면서 피드백도 하고 같이 발표 자료도 검토한 점- 의사소통이 잘 되어서 프로젝트 완성도에 오롯이 집중할 수 있던 점- 팀원이 힘들 때마다 서로 서로 격려와 응원의 말을 자주 해준 점(2) 🥈 기록- 5분 기록 보드 등등을 활용하여 고민과 규칙과 계획을 꼼꼼하게 기록한 점- 기술을 하나 사용할 때나 기술적 의사결정을 할 때마다 꼭 근거를 덧붙인 점(3) 🥉 협업- j..

Day 124 - 게임 아이템 거래소 프로젝트 100%, 발표회가 끝나고 봇물 터지듯 서럽게 울다 (수정 중)

1. 프로젝트 진행 상황 및 계획🥇 레디스(Redis) 공부하기 (진행 전, 25.03.17 완료 목표)🥈 도커(Docker) 공부하기 (진행 전, 25.03.17 완료 목표)🥉 동시성 제어 관련 공부하기 (진행 중, 25.03.17 완료 목표) 2. 발표회가 끝나고 봇물 터지듯 서럽게 울었다. [깃허브 링크] 진짜 진짜 고생했다..! 주말에는 트러블 슈팅으로 올리려고 한 내용을 정리하면서 최종 프로젝트를 준비할 예정이다.

Day 123 - 게임 아이템 거래소 프로젝트 90%, 테스트 코드를 원 없이 작성한 날

1. 프로젝트 진행 상황 및 계획🥇 분산 락 구현하기 (완료 - 팀원이 진행)🥈 분산 락 구현 이후 테스트 코드 실행하기 (완료 - 팀원이 진행)🥉 동시성 제어 관련 공부하기 (진행 중, 25.03.17 완료 목표) 2. 고민Q1. 분산 락을 거래소와 경매장 둘 다 적용해야 할까? A1. 이 문제를 해결하려면, 거래소와 경매장의 차이를 고려해야 했다. 경매는 아이템 가격이 어디까지 오를지 예측할 수 없어서 진입 장벽이 꽤 높았다. 아이템이 경매장에 올라올 정도면 매우 희귀하단 뜻일 테고, 그만큼 보유한 골드가 부족한 사용자는 애초에 입찰할 생각을 하기가 어려웠다.  반대로 거래는 가격에만 만족하면 누구든지 시도할 수 있으므로, 경매장보다 거래소에 훨씬 많은 사용자가 몰릴 수 있었다. 이렇게 예측되는..

Day 122 - 게임 아이템 거래소 프로젝트 70%, 삽질로 하루를 허비해 버렸다

1. 프로젝트 진행 상황 및 계획🥇 비관적 락 사용하기 (완료) 🥈 낙관적 락 사용하기 (완료)🥉 분산 락 구현하기 (진행 중, 25.02.06 완료 목표)4️⃣ 분산 락 구현 이후 테스트 코드 실행하기 (진행 전, 25.02.06 완료 목표)5️⃣ 동시성 제어 관련 공부하기 (진행 중, 25.02.06 완료 목표)  2. 삽질로 하루를 허비했다.(1) 스레드 20개, 입찰 요청 1,000건일 때 ▼ (2) 스레드 20개, 입찰 요청 500건일 때 ▼(3) 스레드 20개, 입찰 요청 249건일 때 ▼ 비관적 락(pessimistic lock)이나 낙관적 락(optimistic lock)을 적용했을 때 동시성이 잘 제어되는지를 보려고 테스트 코드를 작성하고 여러 번 실행했는데, 너무 '성능 개선'에 ..

Day 121 - 게임 아이템 거래소 프로젝트 55%, 한 사용자가 연속으로 입찰하지 못하도록 막아야 할까?

1. 프로젝트 진행 상황 및 계획🥇 동시성 문제를 검증할 수 있는 테스트 코드 작성하기 - 락(Lock)이 없을 때 (완료) 🥈 낙관적 락 사용하기 (진행 중, 25.02.05 완료 목표) 🥉 비관적 락 사용하기 (진행 중, 25.02.05 완료 목표) 4️⃣ 동시성 문제를 검증할 수 있는 테스트 코드 작성하기 - 낙관적 락 적용 후 (완료) 5️⃣ 동시성 문제를 검증할 수 있는 테스트 코드 작성하기 - 비관적 락 적용 후 (완료) 6️⃣ 동시성 제어 관련 공부하기 (진행 중, 25.02.06 완료 목표)  2. 한 사용자가 연속으로 입찰하지 못하도록 막아야 할까?고민 끝에 우리 팀의 게임 아이템 거래소에서는 한 사용자가 연속으로 입찰하지 못하도록 했다. '사용자 A-B-A' 순으로는 가능해도 'A..

Day 120 - 게임 아이템 거래소 프로젝트 45%, 자물쇠를 걸기도 전에 데드락(Deadlock)이 발생했을 때 심정이란

1. 프로젝트 진행 상황 및 계획🥇 종료된 경매에 입찰할 수 없도록 코드 리팩토링(refactoring)하기 (완료) 🥈 동시성 문제를 검증할 수 있는 테스트 코드 작성하기 - 락(Lock)이 없을 때 (진행 중, 25.02.04 완료 목표)🥉 낙관적 락 사용하기 (진행 전, 25.02.04 완료 목표)4️⃣ 비관적 락 사용하기 (진행 전, 25.02.04 완료 목표)5️⃣ 동시성 문제를 검증할 수 있는 테스트 코드 작성하기 - 낙관적 락 적용 후 (진행 전, 25.02.04 완료 목표)6️⃣ 동시성 문제를 검증할 수 있는 테스트 코드 작성하기 - 비관적 락 적용 후 (진행 전, 25.02.04 완료 목표)7️⃣ 동시성 제어 관련 공부하기 (진행 중, 25.02.05 완료 목표) 2. 자물쇠를 걸기..

Day 119 - 게임 아이템 거래소 프로젝트 35%, 낙낙(Knock Knock) 대신 락락(Lock Lock), 제대로 골머리 앓는 중

1. 프로젝트 진행 상황 및 계획🥇 경매 단건 조회하는 R 구현하기 (완료) 🥈 경매장 R에 예외 처리하기 (완료)🥉 종료된 경매에 입찰할 수 없도록 코드 리팩토링(refactoring)하기 (진행 중, 25.02.03 완료 목표)4️⃣ 동시성 제어 관련 공부하기 (진행 중, 25.02.03 완료 목표) 2. 여태까지 처리한 예외만 5가지인데, 내일부터는 동시성까지 제어해야 한다. 더보기package no.gunbang.market.domain.auction.entity;import jakarta.persistence.Column;import jakarta.persistence.Entity;import jakarta.persistence.EnumType;import jakarta.persistenc..

Day 118 - 게임 아이템 거래소 프로젝트 25%, 코드 한 줄 쓸 때마다 '지금이 최선일까?' 고민하다

1. 프로젝트 진행 상황 및 계획🥇 경매장에 아이템을 등록하는 C 구현하기 (완료) 🥈 경매장에서 아이템을 입찰하는 U (Patch) 구현하기 (완료)🥉 경매장에 등록한 아이템을 취소하는 D 구현하기 (완료)4️⃣ 동시성 제어 관련 공부하기 (진행 전, 25.02.02 완료 목표)5️⃣ 경매장 CUD에 각각 예외 처리하기 (완료) 2. 코드 한 줄 쓸 때마다 '지금이 최선일까?' 고민했다.더보기package no.gunbang.market.domain.auction.service;import lombok.RequiredArgsConstructor;import no.gunbang.market.common.Item;import no.gunbang.market.common.ItemRepository;im..