전체 글 (104)


[Limbing #12] Outbox 이후 마주한 문제들(Retry, DLQ, 멱등성)

[Limbing #12] Outbox 이후 마주한 문제들(Retry, DLQ, 멱등성)

📑 Contents 1. 지난 글에서 미룬 이야기 2. 재시도하면 안 되는 실패가 있다 3. 재시도 정책에도 이유가 있다 4. 같은 메시지가 두 번 왔을 때 5. 실패를 복구 가능한 실패로 만들기 6. 마무리 지난 글에서 미룬 이야기https://sou330.tistory.com/106 [Limbing #8] 업로드한 영상이 영영 처리중이라면? Outbox Pattern📑 Contents 1. 기존 방식의 문제점 └ Dual-write 불일치 문제 └ 유실 시 복구 수단이 없음 2. Outbox Pattern이란? 3. 프로젝트에 적용한 구조 4. 배운 점 오늘은 Outbox Pattern을 적용한 부분에 대해 적어보sou330.tistory.com지난 번에 프로젝트에 O..

[Limbing #11] 배포를 안전하게 만들기: systemd, 버전형 릴리스, 자동 롤백

[Limbing #11] 배포를 안전하게 만들기: systemd, 버전형 릴리스, 자동 롤백

📑 Contents 1. 기존 Lightsail 배포 방식의 한계 2. 목표: 버전형 릴리스 + 자동 롤백 3. systemd로 배포 방식 전환 4. 버전형 릴리스 구조 설계 5. 안전한 배포 프로세스 구현 6. GitHub Actions 개선 7. 마무리 오늘은 백엔드 멘토님께서 과제로 내주신 CI/CD 배포 구조 개선 과정을 기록해보려 한다. 처음 배포 로직을 짠 거라 동작한다는 자체에 의미를 뒀었는데 다시 보니 배포 실패 시 복구가 어렵고, 배포 중 장애가 발생해도 안전하게 대응할 수 없는 등 여러 허점이 있었다. 이번 과제를 통해 실패하면 자동으로 롤백되고, 언제든 이전 버전으로 복구할 수 있는 배포 구조를 만드는 과정을 경험할 수 있었다. 기존 Lightsail 배포 방식..

[Limbing #10] Claude Code를 사용하며 가장 먼저 익힌 기능들

[Limbing #10] Claude Code를 사용하며 가장 먼저 익힌 기능들

📑 Contents 1. Claude Code를 사용하려면? 2. Model 선택 3. Plan Mode 4. Usage 5. Resume 6. CLAUDE.md 7. Code Review 8. Context 9. Compact 10. 마치며 요즘 채용공고를 보면 AI Native 개발 역량이나 신기술 활용 능력에 대해서 우대하는 기업이 많아졌다. 이제는 AI를 개발 과정에서 활용하는 것이 자연스러운 흐름이 되었고 중요한 것은 얼마나 효과적으로 활용할 수 있느냐라고 생각한다. AI 개발 이라고하면 프롬프트 엔지니어링, 컨텍스트 엔지니어링, 하네스 엔지니어링, 루프 엔지니어링 등등 많지만! 처음 AI를 도입하는 시점에서는 머리아프다. 그래서 내가 입문했던 간단한 Clau..

[Limbing #9] Prometheus + Loki + Grafana로 운영 모니터링 환경 구축하기

[Limbing #9] Prometheus + Loki + Grafana로 운영 모니터링 환경 구축하기

📑 Contents 1. 모니터링을 구축한 이유 2. 모니터링 시스템은 어디에 구축해야 할까? 3. 어떤 지표를 수집했는가 └ Infrastructure └ Application └ Database └ Logs └ RabbitMQ 4. 서버를 선택해서 한 번에 보기 5. 느낀 점 처음으로 프로젝트를 하면서 모니터링을 구축해보았다. 나는 인프라 관리가 넘 귀찮게 느껴졌는데 이 부분은 재밌었다. 모니터링을 구축한 이유서비스에 문제가 발생했을 때, 개발자가 5분 안에 원인을 파악하고 대응할 수 있는 환경을 만든다. 이 프로젝트의 가장 큰 목표는 실제 서비스를 운영해 보는 것이다. 내가 만든 코드가 실제 사용자를 안정적으로 받을 수 있는가를 검증하고싶다.본격적인 출시를 준비하면서, ..

[Limbing #8] 업로드한 영상이 영영 처리중이라면? Outbox Pattern

[Limbing #8] 업로드한 영상이 영영 처리중이라면? Outbox Pattern

📑 Contents 1. 기존 방식의 문제점 └ Dual-write 불일치 문제 └ 유실 시 복구 수단이 없음 2. Outbox Pattern이란? 3. 프로젝트에 적용한 구조 4. 배운 점 오늘은 Outbox Pattern을 적용한 부분에 대해 적어보려한다. Limbing 프로젝트에서 나는 영상과 피드 도메인을 맡고있다. 영상을 업로드하는 부분에 대해 적용했다. 기존 방식의 문제점Outbox Pattern을 왜 적용했을까? 결론은 장애 상황에서 복구할 수 없다는 점이다. 영상을 업로드할 때는 DB의 상태 변경과 메시지 발행을 함께 수행하게 되는데, 문제는 이 둘이 서로 다른 시스템이라 원자적으로 묶을 수 없다. 그래서 둘 중 하나만 성공하고 나머지 하나가 실패했을 경우에 문제들은 다음과 ..

[Limbing #7] YOLOv8 Pose 모델 성능 비교 (Nano vs Small vs Medium)

[Limbing #7] YOLOv8 Pose 모델 성능 비교 (Nano vs Small vs Medium)

📌 목차1. The Way Up 데이터셋으로 검증 환경 구성 └ 데이터셋 소개 └ 디버깅 코드 작성2. YOLOv8 Pose 모델별 성능 비교 └ Nano └ Small └ Medium3. 직접 평가한 정확도 분석 └ Good / Bad 기준 정의 └ 엑셀 통계 결과 └ Processing Time 확인4. 마치며 https://sou330.tistory.com/101?category=1572982 [Limbing #3] 스켈레톤 모델 비교와 YOLOv8 테스트📌 목차 1. 우리 서비스에 스켈레톤 모델이 필요한 이유 2. 스켈레톤 모델 비교 • MediaPipe Pose • YOLOv8 Pose 3. YOLOv8 Pose? 4. 클라이밍 이미지에 적용해보기 ..