전체 글 210

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..

Day 117 - 게임 아이템 거래소 프로젝트 10%, 기록 팀장은 감기에 걸려도 기록을 포기하지 못한다.

1. 프로젝트 진행 상황 및 계획🥇 경매장에 아이템을 등록하는 C 구현하기 (진행 전, 25.02.01 완료 목표) 🥈 경매장에서 아이템을 입찰하는 U (Patch) 구현하기 (진행 전, 25.02.01 완료 목표)🥉 경매장에 등록한 아이템을 취소하는 D 구현하기 (진행 전, 25.02.01 완료 목표)4️⃣ 동시성 제어 관련 공부하기 (진행 전, 25.02.02 완료 목표)5️⃣ 경매장 CUD에 각각 예외 처리하기 (진행 전, 25.02.01 완료 목표) 2. ERD(Entity Relationship Diagram) 3. 와이어프레임(Wireframe) 4. 기록 팀장은 감기에 걸려도 기록을 포기하지 못한다.집에서만 지낸 탓인지 한 달 넘게 운동하지 못한 탓인지 아침부터 코를 훌쩍였다. 재채기를..