[시스템 설계] 커머스 도메인 주문-결제 분산 트랜잭션 설계
·
카테고리 없음
0. 설계 경계설계하고자 하는 분산 트랜잭션 서비스는 글로벌 한정판 스니커즈 Drop 커머스다.정오 오픈 시점 예상 동시 접속자 수는 100만 명이다.판매 재고는 1,000족뿐이다.선착순 공정성을 보장해야 한다.1족도 초과 판매되면 안 된다.주문서 진입 후 5분 안에 결제가 끝나지 않으면 재고를 돌려줘야 한다.사용자는 최대 10분 안에 성공 또는 실패 피드백을 받아야 한다.- 대기열이 100만 명을 그대로 주문 서버로 보내지 않고, 입장 순서와 트래픽을 제어한다고 본다. 즉, 주문 API에는 대기열을 통과한 사용자만 들어온다.- 재고 서비스가 초과 판매를 막기 위해 재고를 먼저 선점한다고 본다. 내부 구현은 Redis 분산 락이든 DB 조건부 업데이트든 가능하지만, Part 3에서는 재고 서비스가 다음 ..
Claude Code를 모니터링 해보자!: claude-analytics 개발기
·
카테고리 없음
들어가며지난 글에서는 초기 창업 팀이 파편화된 AI 사용에서 벗어나기 위해 manifest.md와 YAML 기반의 명세서를 도입하고, 팀의 컨벤션에 맞게 Claude Code를 통제하는 '컨텍스트 엔지니어링' 과정을 공유했습니다.그렇게 나름의 규칙을 세우고 매번 수정하며 '컨텍스트 엔지니어링 회고'를 진행하고 있습니다. 하지만 회고를 진행할 때마다 /resume 으로 대화 흐름을 보고 피드백하기를 반복하는 과정이 불편했고, 생산성을 위해 오히려 더 번거로운 일을 하는 것은 아닌가? 하는 의문이 들었습니다. 이 글은 claude code의 대화 내용을 웹으로 직접 보기위한 대시보드를 만들기까지의 회고 입니다. 1. 터미널 창을 벗어나고 싶다는 단순한 귀찮음Claude Code는 기본적으로 CLI 기반으로 ..
초기 창업 팀에서 Claude Code 를 도입한 방법
·
카테고리 없음
1. 들어가며: 바이브 코딩의 유행과 현실적인 고민2025년 개발 생태계를 뒤흔든 가장 뜨거운 화두는 단연 바이브 코딩이었을 것입니다. 초기 창업팀에서 프로젝트를 시작하는 개발자이자 본격적인 커리어를 준비하는 취업준비생 입장에서, 코드를 뚝딱 만들어내는 AI의 발전 속도는 경이로움을 넘어 일견 채용에 대한 두려움으로 다가오기도 했습니다.하지만 막연한 불안감에 빠져있기보다는 시각을 조금 바꿔보기로 했습니다. "어떻게 하면 이 강력한 AI를 활용해 우리 팀의 개발 생산성을 극대화할 수 있을까?"실무에 AI를 도입하며 마주한 현실은 단순히 코드를 복사하는 것만큼 간단하지 않았습니다. 팀원 각자가 파편화된 방식으로 AI를 사용하다 보니, 오히려 팀의 코드 컨벤션을 맞추고 프로젝트 전체의 통일성을 유지하는 데 더..
NCP Finance 환경에서 GitHub Actions로 CI/CD 구축하기
·
Infra
인턴때 진행한 NCP Finance 환경에서 Bastion Host를 따로 두지 않고, Cloud Functions을 활용해 CI/CD 파이프라인을 구축한 과정을 공유해보고자 합니다. 어쩌다가 NCP Finance 환경을 사용하게 되신 분들은 도움이 되셨으면 좋겠습니다.NCP 뿐 만 아니라 private subnet 환경에서 CICD를 구축해보고 싶으신 분들도 한번 참고해보시면 좋을 것 같습니다.1. 구축 배경프로젝트의 인프라 환경은 다음과 같은 제약이 있었습니다.환경: NCP Finance 네트워크: 모든 애플리케이션 서버는 Private Subnet에 위치접근 제어: 외부 인터넷에서 내부 서버로의 SSH(22번 포트) 접근 불가보통 이런 환경에서 자동 배포를 구성하려면 두 가지 방법 중 하나를 선택합..
[Recap] CRAYON를 재출시하며
·
Recap
CRAYON?CRAYON은 동아리 모집 올인원 솔루션이다.동아리 원을 모집하고, 평가를 관리하는 과정에서 생기는 불편함을 해결하자는 목표로 기획되었다.  이제 회고를 해?나는 CRAYON에 24년 여름부터 참여해왔다.9월 1차 출시, 그리고 현재 2차 출시를 해오며 매번 회고해야겠다는 생각을 했지만 회고의 방향을 잡기 어려워 미뤄왔었다.2차 출시를 한 지금 CRAYON에는 많은 이야기가 쌓였고, 개발자로서, 이야기를 공유하고 함께 공감했으면 하는 생각으로 회고를 작성하기로 했다. 1. CRAYON 시작2. 1차 출시, 그리고 실패3. 변화4. 현재5. 회고를 마무리하며 CRAYON 시작 정말 잘 가꿔진 화원인줄 알았는데... 이미 개발이 진행중인 CRAYON에 참여하기 시작하며 처음에는 잘 개발되고 있는..
[Recap] 2024년 회고 : 방황하고 넘어지고, 다시일어나기
·
Recap
2024년은 어떤 한 해였어?2024년을 한마디로 정의하자면 “성장통 가득한 한 해”라고 답하고 싶다.성공보다 실패가 많았고, 웃기보다는 눈물이 더 많았던 한 해였다.열심히 방황하고 넘어지고 다시 일어난 한 해를 회고해 보고자 한다.  1. 첫 서비스 출시2. 갑자기 맞이한 휴식기3. 넘어지기4. 다시 일어서기5. 그래서 2025년에는  첫 서비스 출시 : Fling 2024 2월에 2023년 1월부터 약 두 달간 진행한 프로젝트 Fling을 출시했다. 나에게 있어서는 처음으로 주 기능을 담당해서 개발하던 프로젝트 였기 때문에 큰 의미를 가진다.지금 돌아보면 JPA나 자바의 기초도 잘 안되어 있어 메인 기능을 담당하기 꺼리고 있던 내게 첫 도전이었기 때문이다. 서비스 자체로는 조금 아쉬웠다많은 사용자를 ..
[Recap] 모던 자바 인 액션 스터디 회고
·
Recap
들어가면서3개월간 진행한 모던 자바 인 액션 스터디가 종료됐다.새 스터디 준비를 위해 회고를 해보려고 한다. 스터디 진행방식과 어떤 것들을 공부했는지는 여기로https://github.com/Leets-Official/modern-java-in-action GitHub - Leets-Official/modern-java-in-action: Leets 3기 자바 스터디Leets 3기 자바 스터디. Contribute to Leets-Official/modern-java-in-action development by creating an account on GitHub.github.com왜 모던 자바 인 액션이었지?모던 자바 인 액션을 고른 이유는 이 당시 스트림과 람다를 전혀 사용할 줄 몰랐기 때문이다.심지..
[Spring] MapStruct, Mapper 가 제대로 작동하지 않음
·
SpringBoot
Mapper가 제대로 작동이 안되어 팀원이 4시간이 넘는 트러블 슈팅을 겪었다  문제 상황분명 Mapper 문법에 맞게 작성했는데 구현체가 생성되지 않고, 코드가 제대로 실행되지 않음결론부터 말하자면 Target 에 Setter가 누락되어서 생기는 오류였다.Mapper가 어떻게 작동하는지 부터 다시 되짚어보며 문제를 해결해봤다. Mapper, 그럼 어떻게 구현되는가?@Mapperpublic interface TestMapper{ void updateHuman(TestDto testDto, @MappingTarget Test test);}이렇게 코드를 작성하면 testDto 의 내용이 Test 객체로 매핑된다!어떻게 작동되는 것일까?공식 문서를 보자Mapper는 구현될 때 target에 setter를..
rootTiket
rootTiket