분류 전체보기

· 기타
10주간의 항해 솔직 후기약 두달 반이라는 기간동안 항해 플러스 Lite 1기를 진행했고, 수료한지 2주가 채 되지 않았다. 오늘은 그 따끈따끈한 후기에 대해 돌아보고, 이후 항해를 고려하고 있는 분들께 도움이 되었으면 하는 마음에 글을 작성하게 되었다. 항해 전, 나의 상황나는 소프트웨어학과를 전공했고 취업 전 인턴/부트캠프 등에 참여하며 경험을 쌓았으며, 2024년 하반기부터 근무를 시작해 현재 만 1년차가 조금 넘은 개발자다. 대부분 개발자로 취업하게 되면 "나, 제대로 성장하고 있는걸까? 이대로 괜찮은걸까?"라는 고민을 누구나 한다고 생각한다. 왜냐하면 개발자에는 유독 "성장"이라는 수식어가 항상 따라다닌다.나 또한 내가 현재 잘 하고 있는건지, 내 커리어가 잘 쌓이고 있는지 의문을 계속 가져왔다..
· 기타
모니터링 및 장애 대응이번 주차에서 얻어가고 싶은 것이번 주는 시스템의 안정성과 가시성 확보를 목표로 모니터링 및 장애 대응에 집중해보자.특히 실시간 부하테스트 환경을 구축하고, 이를 기반으로 병목 지점을 파악하며 장애 상황에 대응할 수 있는 매뉴얼을 준비하는 걸 목표로 삼자.실무에서 안정적으로 운영되는 시스템을 만들기 위해서는 단순히 기능 구현이 아니라, 모니터링-분석-대응의 사이클을 체계적으로 마련해야 하기 때문에, 이번 주도 많이 고민해보고 좋은 시스템이 어떤 것인지 찾아보도록 해야겠다. 과제 요구사항부하 테스트 진행 (부하 지점 파악 및 진행, 애플리케이션 배포 스펙 검토)장애 대응 보고서 작성 및 대응 매뉴얼의 필요성 검토 문제 상황(1) Kafka 기반 쿠폰 발급 시스템의 성능을 개선하기 위해..
· 기타
Kafka 학습 및 활용이번 주차에서 얻어가고 싶은 것이번 주는 Kafka를 중심으로 이벤트 기반 아키텍처의 실질적인 적용에 초점을 맞춰보자.기존에는 Spring 내장 이벤트 기능인 @TransactionalEventListener를 통해 비동기 처리를 구현했었는데, 이번에는 Kafka라는 외부 메시지 브로커를 활용하여 보다 확장성 있고, 시스템 전반에 걸쳐 표준화된 이벤트 처리 구조를 설계하는 것이 목표다.또한, Kafka 기반으로 실시간성을 유지하면서도 서비스 간 의존도를 낮추고, 추적 가능한 이벤트 흐름을 만들 수 있는 방법에 대해 깊이, 많이 고민해보자. 과제 요구사항Kafka 학습 및 프로젝트 적용 설계 문서 작성Kafka를 활용하여 주문 생성 시 실시간으로 주문 정보를 외부 플랫폼에 전달대용량..
· 기타
이벤트를 활용한 실시간 데이터 전송 및 MSA 설계이번 주차에서 얻어가고 싶은 것이번 주는 MSA 환경에서 실시간 데이터 흐름을 어떻게 처리할 수 있을지에 대한 이해를 넓히는 데 초점을 맞추고자 한다.기존에는 마이크로서비스 간 데이터 전달을 동기 호출이나 폴링 방식에 의존했는데, 이번엔 이벤트 기반 아키텍처를 적용하면서 관심사 분리, 실시간 처리, 트랜잭션 연계라는 세 가지 키워드를 중심으로 설계를 고민해보자.또한, 이벤트를 활용하면서 발생할 수 있는 데이터 정합성 이슈와 보상 트랜잭션 처리에 대해 많이 고민해보자. 과제 요구사항주문 완료 시 외부 플랫폼으로 주문 정보를 전송하는 로직을 이벤트를 활용하여 개선MSA 기반 구조에서 서비스 간 의존성을 최소화하면서도 실시간성을 확보하는 아키텍처 설계 문제 상..
· 기타
Redis 기반 랭킹 및 동시성 처리 시스템 구축이번 주차에서 얻어가고 싶은 것실시간 데이터 처리와 동시성 제어가 동시에 요구되는 환경에서 Redis가 얼마나 유용하게 사용될 수 있는지를 체험해보고자 한다.특히 Sorted Set 자료구조를 활용해 랭킹 시스템과 선착순 쿠폰 시스템을 구성하면서, 동시에 발생하는 업데이트 요청을 어떻게 안정적으로 처리할 수 있을지를 고민하고 싶다.또한, 기존의 DB 기반 락 처리 방식에서 Redis로 개선했을 때 성능과 구조적 이점이 어떻게 달라지는지도 꼭 확인해보고 싶다. 과제 요구사항실시간 판매량 기반 상품 랭킹 시스템 구축Sorted Set을 활용한 랭킹 갱신 및 조회 로직 설계기존의 낙관적 락 + 분산락 쿠폰 발급 로직을 Redis 기반으로 개선Redis 기반 동..
· 기타
Redis 기반 분산락 적용 및 캐싱이번 주차에서 얻어가고 싶은 것분산 환경에서의 동시성 문제를 어떻게 다뤄야 할지에 대한 감을 잡고 싶었다.특히, 단일 인스턴스가 아닌 멀티 인스턴스 환경에서 데이터 정합성을 보장하려면 어떻게 해야 하는지 실제 적용을 통해 체득해보고 싶었다.또한, 데이터 조회 성능 개선을 위해 Redis를 활용한 캐싱 전략을 실험하고, 실제로 성능이 얼마나 향상되는지도 확인하고 싶었다. 과제 요구사항분산락 구간 식별 및 분산락 적용캐싱이 필요한 부분 식별 및 캐싱 적용동시성 테스트 및 캐시 성능 비교 테스트 문제 상황(1) 베스트셀러 데이터를 매번 DB에서 조회하면서 트래픽이 증가할수록 응답 지연이 발생했고, 특정 시점에서는 DB 부하가 급격히 올라가는 문제가 있었다.(2) 인기 도서..
· 기타
데이터베이스 락 기반 동시성 제어이번 주차에서 얻어가고 싶은 것동시성 문제가 발생하는 원인을 깊이 이해하고, 그에 대한 효과적인 대응 전략으로서의 DB 락 기반 제어 방식을 익히고 싶다.단순히 "동시성 제어가 필요하다"는 수준을 넘어서, 어떤 방식이 언제 적절한지 구체적으로 판단하고 설계할 수 있는 능력을 키우고 싶다. 과제 요구사항동시성 문제 식별(포인트 충전/사용, 쿠폰 발급, 주문 재고 처리 등)DB 락 전략(낙관적 락, 비관적 락)의 적용 비교테스트 환경에서 동시 요청을 시뮬레이션하여 실제 문제 재현 및 해결 문제 상황(1) 선착순 쿠폰 발급 과정에서 동시성 문제가 발생했다. 재고가 남아 있음에도 불구하고 중복 발급되거나, 재고보다 많은 쿠폰이 발급되는 문제가 발생했다. 주문 시 상품 재고 차감에..
· 기타
데이터베이스 설계이번 주차에서 얻어가고 싶은 것데이터베이스를 어떻게 활용해야 '잘' 활용하는 것인지 알고싶다.여태는 단순히 DB를 사용해왔다면 이제는 효율적인 방안을 활용하고, 다양한 상황에서의 대응 전략을 유연하게 가져갈 수 있는 방법들을 배우고 싶다. 과제 요구사항Infrastructure Layer 작성기능별 통합 테스트 작성(Testcontainers 활용)쿠폰 발급 경쟁 조건 테스트외부 메시지 전송 실패 시 fallback 처리 검증) 문제 상황(1) testcontainers 활용 시 DB 생성 오류가 발생했다. 테스트 DB의 특정 테이블이 올바르게 생성되고 삭제되지 않는 문제다.(2) 선착순 쿠폰 발급 시 race condition으로 인해 올바르게 재고 처리가 되지 않는 문제가 발생했다.(..
말도 못하는 감자
'분류 전체보기' 카테고리의 글 목록