본문 바로가기

전체 글

재고 차감 로직 복기하며 구멍난 헛간 메우기 어떤 서비스든 판매하는 상품이 있다면 상품에 달린 재고도 관리 대상입니다. 이전에 구현했던 재고 차감 로직을 복기해보고 개선해보려고 합니다. 먼저 상품 재고와 관련된 보통의 요구사항입니다. 1. 상품은 등록된 재고량을 초과하여 판매할 수 없다. 2. 재고가 없는 상품은 주문할 수 없다. 3. 상품 재고는 미리 등록해둘 수 있어야한다. 해당 포스팅에서는 1번과 2번에 집중되어있습니다. 📍 재고 차감편 보통 재고 차감시 사용하는 라이브러리는 redis 입니다. 왜 redis가 이용되고 있는 걸까요? 아래와 같은 이유들이 있습니다. 재고 차감에 redis를 사용하는 이유 1. 재고 차감은 실시간으로 이루어져야 하며, 높은 성능이 요구되는 작업이다. -> Redis 는 Disk 기반이 아닌 Memory 기반의 .. 더보기
똑똑 거기 누구 없소 입사 직후와 지금의 윤지 씨는 얼마나 성장한 것 같나요? 성장이 멈춘 것 같다. 시간이 흐른 만큼 성장한 것 같다. 많은 성장을 이룬 것 같다 중, 나는 중간이었다. 올해 우리 팀은 많은 프로젝트를 오픈했다. 한 일의 양은 많았는데, 그 정도의 성장이라면 그 효율이 좋지 않은 거였다. 왜 중간 정도의 성장 밖에 할 수 없었는지, 그 근거를 알고 싶었다. 그러려면 내가 몸담았던 프로젝트와 그때 배운 것들을 정리하는 과정이 필요했다. 입사 후, 앱 중심이었던 구독 서비스를 웹 화하는 프로젝트에 투입되었다. 그 프로젝트를 시작으로 크고 굵은 프로젝트에 계속 참여하게 되었다. 속해있는 팀이 회원이나 상품, 결제 같은 비즈니스 기반 도메인을 담당하고 있어서 그런 건지는 몰라도 앞으로 쭉 바쁠 일만 남아있다. 그래.. 더보기
DDD 와 TDD 는 함께 가야할 것 같아요. 스터디를 시작했다. 공부하고 싶었던 도메인 주도 설계 주제로 를 함께 읽는다. 나는 이 책을 읽을 때 다짐했던 것이 몇 가지 있다. 1. 무조건 수용하지 않을 것 2. 종합적으로 접근할 것 3. 내가 해 온 경험과 비교하며 읽을 것 그래서 이 포스팅은 를 읽으며 기록한 나의 잡생각에 가깝다. 책에 대한 요약서가 아니다. 1부 동작하는 도메인 모델 만들기를 읽으면서 나는 두 가지 질문과 두 가지 깨달음을 얻었다. 질문 객체와 모델은 무엇이 다른가? 도메인 주도 설계의 목적 중 하나인 '관련자 모두가 용어 일원화를 통해 도메인 모델에 집중하여 문제를 해결하는 것' 과 API First 는 맞닿아 있지 않을까? 깨달음 DDD 와 TDD 가 함께 병행되면 지식 탐구 과정을 궤도에 올리는 선순환고리가 만들어질 수.. 더보기
이상한 나라의 객체 : 객체는 思物 이다. 객체는 창조된다 창조한 객체의 특성을 상기시킬 수 있다면 현실 속의 객체의 이름을 이용해 객체를 묘사하라. 그렇지 않다면 깔끔하게 현실을 무시하고 자유롭게 여러분만의 새로운 세계를 창조하기 바란다. 처음 자바 공부를 시작했을 때, 가장 이해하기 난감했던 건 '객체' 라는 개념이었다. 국어는 대부분 한자로 이루어져있어서 한자풀이를 해보면 이해하기 쉬운 경우가 많았다. 나는 그때에도 객체를 사전에 검색해보았다. 客 손 객, 體 몸 체. 이 두 개의 한자로는 좀 이해하기 어려웠다. 중국에서는 이 객체를 뭐라고 부르는지 궁금했다. 몇 개의 중국 개발자 깃헙을 둘러보니 그들은 面向对象程序设计 으로 객체 지향 프로그래밍을 일컫고 있었다. 그러다 이런 단어가 눈에 띄었다. 思物 : 面向对象程序设计 思物 를 직역하면 .. 더보기
객체가 자율적이면 뭐가 좋을까 객체 지향 패러다임의 핵심은 상속이 아니라 자율적인 객체들끼리의 협력이다. 여기서 자율은 어떻게 나오는 것일까. 캡슐화와 자율성 객체의 자율성은 객체의 외부와 내부를 판가름하는 데에서부터 나온다. 우선 객체A는 자신의 프라이버시를 외부로부터 지키기위해 (간섭하거나 접근할 수 없도록) 차단해야한다. 객체 외부B는 접근이 가능한 수단을 통해서만 해당 객체A와 협력을 맺을 수 있다. 이 협력을 통해 객체 B는 객체 A 가 무엇을 수행하는지는 알 수 있지만, 어떻게 수행하는지에 대해서는 객체 A의 프라이버시이므로 알 필요가 없다. 우리는 이것을 객체(A)의 캡슐화=정보은닉이라고 부른다. 응답과 요청, 협력 발생 캡슐화를 통해 객체의 자율성을 확보하는 이유는 무엇일까. 객체는 자기자신을 주체적으로 변경할 수 있어.. 더보기
입사 후, 참여했던 프로젝트 회고 2. [21년 10월 ~ 21년 02월] 새로운 도메인을 위한 데이터 마이그레이션과 그 이후 더보기 1차 데이터 마이그레이션 세 개의 새로운 도메인에 대하여 새로운 데이터가 출현했고, 과거 데이터를 spring batch를 통해 함께 이관시킴. 약 4천 건의 프로덕트 맵핑 데이터 생성 약 9만 건의 유저에 대한 월렛 데이터 생성 약 1만개에 대한 멤버십 데이터 생성 이에 따라, 유저가 소유한 서비스 권한 및 멤버십이 기술화됨 2차 데이터 정합성 맞춤 알림 서로 다른 도메인이지만 한 싸이클 내에서 정합해야하는 데이터들이 있음. 유저의 서비스 권한 - 이용할 수 있는 티켓 - 환불 이력 정합성 불일치 시, 메일 / 슬랙 알림이 오도록 자동화. 10분에 한번씩 Event Bridge - Lambda 트리거를 .. 더보기