본문 바로가기

전체 글

오늘도 기획자한테 안 된다고 말했다. 웹 구독 시스템, 주문, 배송, 상품까지 단기간에 많은 프로젝트를 달려왔습니다. 9개월 남짓한 시간동안 다음 문장이 현실되었습니다. | 상품에 대한 주문이 발생하면 구독이 이루어지고 실물 상품에 대한 배송이 예약될 수 있다. 이 문장에 관여하는 많은 데이터들이 있습니다. 당장 상품을 주문하고 결제한 유저들이 그 데이터에 관심있겠지만, 개발자도 해당 데이터를 주시합니다. 그리고 또 관심가질 사람들있는데 운영 실무자들이 그 대상입니다. 개발자를 포함한 운영 실무자들이 상품관리, 회원관리, 주문.. 배송 등등을 관리할 수 있도록 서비스 플랫폼 어드민을 만드는 것이 기나긴 프로젝트의 마지막 테스크였습니다. 특히 어드민은 지금 생각해도 아쉬움이 많습니다. 그 과정을 정리해보려고 합니다. 대략적인 어드민 사이드 메.. 더보기
따닥 이슈와persist context flush 귀뽀연님이 겪으신 이슈를 공유받다가 해결했던 경험을 기록해두려고합니다. 상황은 이러했습니다. 클라이언트에서 따닥이슈로 이력 저장 요청이 중복으로 발생했다. 이때의 에러는 DataIntegrityViolationException 해당 에러를 try - catch 로 잡아서, 500 -> 400 error 로 응답 수정했다. 그리고 log 레벨을 error -> warn 으로 변경했다. 하지만 여전히 500 에러가 발생했고, 변경했던 warning 로그도 당연히 찍히지않았다. 이 에러는 어디서 언제 발생한 것 일까요? 맞춰보세요. 문제의 시발점은 42번 라인입니다. 해당 로직을 타고 들어가보겠습니다. 21번 라인에서 repository.save() 를 수행하고 있습니다. 해당 위치에서 DataIntegrit.. 더보기
서킷브레이커의 사용설명서는 없다 with.연동 라이브러리들 Discovering circuit breakers was the day I first encountered error handling. On a weekend afternoon, errors occurred consecutively across projects within the team. The initial point of error was a service heavily integrated with external systems. Errors originating from this service cascaded to affect other services, spreading like wildfire. circuitBreakers 를 처음 알게 된 건, 에러 대응을 한 날이었습니다. 주말 오후, 팀.. 더보기
믿거나 말거나, 데이터 독이 data dog인 이유 데이터 독을 공부하게 된 계기는 애플리케이션의 인사이트를 얻기 위해서였습니다. 서킷 브레이커 적용시 서비스에 대한 이해도를 높이기 위해서 데이터 독을 공부해야겠다는 생각을 했습니다. 근데 맘 잡고 공부할려니까 참고 서적이 하나도 없었습니다.. 참고할 만한 포스팅 역시 찾질 못했습니다. 그냥 혼자 시간이 될 때마다 조금씩 살펴보는 방식으로 공부를 했는데, 포스팅 하나 나올 정도가 되어보여 정리해보려고 합니다. 데이터 독에는 많은 기능이 있지만. 한 애플리케이션에 대한 이해도를 높이고자한다면 APM 페이지를 참조하면 충분합니다. APM 은 Application Performance Monitoring의 약자입니다. 길게 풀어 읽어보면 해당 페이지에서 어떤 정보를 제공하는지 감을 잡을 수 있습니다. 응답 시간.. 더보기
재고 차감 로직 복기하며 구멍난 헛간 메우기 어떤 서비스든 판매하는 상품이 있다면 상품에 달린 재고도 관리 대상입니다. 이전에 구현했던 재고 차감 로직을 복기해보고 개선해보려고 합니다. 먼저 상품 재고와 관련된 보통의 요구사항입니다. 1. 상품은 등록된 재고량을 초과하여 판매할 수 없다. 2. 재고가 없는 상품은 주문할 수 없다. 3. 상품 재고는 미리 등록해둘 수 있어야한다. 해당 포스팅에서는 1번과 2번에 집중되어있습니다. 📍 재고 차감편 보통 재고 차감시 사용하는 라이브러리는 redis 입니다. 왜 redis가 이용되고 있는 걸까요? 아래와 같은 이유들이 있습니다. 재고 차감에 redis를 사용하는 이유 1. 재고 차감은 실시간으로 이루어져야 하며, 높은 성능이 요구되는 작업이다. -> Redis 는 Disk 기반이 아닌 Memory 기반의 .. 더보기
똑똑 거기 누구 없소 입사 직후와 지금의 윤지 씨는 얼마나 성장한 것 같나요? 성장이 멈춘 것 같다. 시간이 흐른 만큼 성장한 것 같다. 많은 성장을 이룬 것 같다 중, 나는 중간이었다. 올해 우리 팀은 많은 프로젝트를 오픈했다. 한 일의 양은 많았는데, 그 정도의 성장이라면 그 효율이 좋지 않은 거였다. 왜 중간 정도의 성장 밖에 할 수 없었는지, 그 근거를 알고 싶었다. 그러려면 내가 몸담았던 프로젝트와 그때 배운 것들을 정리하는 과정이 필요했다. 입사 후, 앱 중심이었던 구독 서비스를 웹 화하는 프로젝트에 투입되었다. 그 프로젝트를 시작으로 크고 굵은 프로젝트에 계속 참여하게 되었다. 속해있는 팀이 회원이나 상품, 결제 같은 비즈니스 기반 도메인을 담당하고 있어서 그런 건지는 몰라도 앞으로 쭉 바쁠 일만 남아있다. 그래.. 더보기