전체 글 10

항해+ 백엔드 코드 9주차 회고 : Kafka 메세지 큐

항해 20만원 할인 추천인코드: NYFKU8 이번 주 과제는 기존에 구현된 이벤트 기반 로직을 Kafka 메세지 큐를 활용하여 리팩토링 하는 과제였습니다. Kafka는 대규모 실시간 데이터 스트리밍을 위한 분산 메시징 시스템으로, 높은 처리량과 안정성을 제공하는 것이 특징입니다. 특히 이벤트 기반 아키텍처에서 서비스 간 결합도를 낮추고, 장애가 발생했을 때에도 메시지를 안정적으로 처리할 수 있도록 설계되어 있습니다 Kafka OverviewProducer & ConsumerProducer는 메시지를 Kafka 브로커에 발행하는 주체입니다.Consumer는 브로커에 적재된 메시지를 읽어오는 서비스입니다.Consumer는 메시지의 처리 위치를 추적하기 위해 offset을 사용하며, 이를 커밋하여 재처리나..

항해+ 2025.09.09

항해+ 백엔드 코드 8주차 회고 : Event 기반 Transaction

항해 20만원 할인 추천인코드: NYFKU8 이번 주 과제는 기존에 구현된 비즈니스 로직을 이벤트 기반 아키텍처로 리팩토링하는 것이었습니다. 단순히 하나의 트랜잭션으로 처리하던 복잡한 로직을 이벤트 발행과 구독 모델로 분리하면서, 트랜잭션 범위를 축소하고 관심사를 분리하였습니다. 애플리케이션 이벤트를 통한 관심사 분리 Event 기반 흐름 제어Event 를 발행 및 구독하는 모델링을 통해 코드의 강한 결합을 분리함Event 에 의해 본인의 관심사만 수행하도록 하여 비즈니스 로직간의 의존을 느슨하게 함활용 방안비대해진 트랜잭션 내의 각 작업을 작은 단위의 트랜잭션으로 분리할 수 있음특정 작업이 완료되었을 때, 후속 작업이 이벤트에 의해 trigger 되도록 구성함으로써 과도하게 많은 비즈니스 로직을 ..

항해+ 2025.08.31

항해+ 백엔드 코드 7주차 회고 : Redis의 자료구조와 활용

이번 주 과제는 기존에 구현된 선착순 쿠폰 발급과 인기상품 조회 기능을 Redis의 자료구조를 활용하여 리팩토링하는 것이었습니다. 단순히 캐시로만 알고 있던 Redis가 사실은 다양한 컬렉션 자료구조를 지원하고, 이를 통해 현업에서 랭킹 시스템, 이벤트 처리, 중복 제어 등 다양한 문제를 효율적으로 해결할 수 있다는 점을 새롭게 알게 되었습니다.특히 Redis의 Sorted Set은 굉장히 강력한 기능이라고 느꼈습니다. 원래는 직접 구현해야 하는 실시간 랭킹 기능을 단 몇 개의 명령어로 처리할 수 있다는 점이 인상적이었습니다.Redis 는 기본적으로 Key-Value 기반의 데이터 저장소입니다.Value 로는 단순히 String 뿐 아니라 다양한 데이터 타입 ( Collections )를 지원하는데, 이..

항해+ 2025.08.25

항해+ 백엔드 코드 6주차 회고 : 분산락 + 캐시

항해 20만원 할인 추천인코드: NYFKU8 🚀 분산락 & 캐시 정리1. 왜 필요한가?대용량 트래픽 환경에서는 **한정된 자원(쿠폰, 좌석, 재고 등)**에 동시에 접근하는 문제가 자주 발생합니다.단순히 DB 트랜잭션만으로는 성능 한계가 있어 Redis 기반 분산락 + 캐시 전략이 효과적입니다.2. Redis 기반 분산락Redis는 Key-Value 저장소이자 원자적 연산을 지원하기 때문에, 락 관리에 적합합니다.동작 방식락 획득: SETNX key value 로 키가 없을 때만 등록비즈니스 로직 수행락 해제: DEL key 로 해제TTL 설정: 장애 시 자동 해제 보장구현 방식Simple Lock실패 즉시 예외 발생 → 빠른 실패 처리단점: 재시도 로직 별도 구현 필요Spin Lock실패 시 일정 횟..

항해+ 2025.08.18

항해+ 백엔드 코드 5주차 회고 : 동시성 처리(Concurrency Control) 과제 정리 – 데이터 정합성과 성능 동시 확보하기 (항해 부트캠프 할인코드 있음)

이번 주차의 메인 주제는 동시성 처리 였습니다.항해 20만원 할인 추천인코드: NYFKU8 안녕하세요!이번 포스팅에서는 제가 진행한 동시성 처리(Concurrency Control) 과제에 대해 정리해보려고 합니다.실제 서비스 환경에서 자주 발생하는 경쟁 상황에서도 데이터 정합성을 지키면서 동시에 높은 성능을 내는 것이 목표였는데요,제가 어떤 전략을 선택했고 어떻게 구현했는지, 그리고 검증 결과까지 자세히 공유합니다.목차과제 개요 및 목표동시성 관련 기본 개념전략 선택과 도메인 매핑3계층 락 구현 방식주요 코드 및 테스트 결과성능 측정 및 결과전략 타당성 및 한계점마무리 요약1. 과제 개요 및 목표이번 과제의 주제는 바로 동시성 처리 입니다.서비스가 커지고 여러 사용자가 동시에 요청할 때, 발생할 수 ..

항해+ 2025.08.09

항해+ 백엔드 코드 4주차 회고

이번주의 주된 과제는 '데이터베이스'였다. 이미 구현한 데이터베이스도 있지만, 인덱스 튜닝 등 더 보완해 나가는 주 였다.항해 추천인코드: NYFKU8✍️ 이번 주 주제: 데이터베이스이번 주의 메인 과제는 **'데이터베이스'**였습니다.이미 지난주에 데이터베이스까지 구현하였지만, 인덱싱 등 더 보완하는 시간을 가졌습니다.📌 과제 링크Step07 PRStep08 PR🗂️ 과제 요약STEP07 - Integration(선택) 기존 설계된 테이블 구조의 개선이 필요한 점을 식별하고 ERD에 반영Infrastructure Layer 작성기능별 통합 테스트 작성STEP08 - DBInfrastructure 는 RDBMS ( MySQL ) 기반으로 작성합니다.조회 성능 저하가 발생할 수 있는 기능을 식별하고, ..

항해+ 2025.08.02

항해+ 백엔드 코드 3주차 회고

이번주의 주된 과제는 '아키텍처'였다. 총 4개의 아키텍처 중 원하는 아키텍처를 선택하고,지난주에 선택한 시나리오(이커머스 웹)를 선택한 아키텍처로 구현해보는 과제였다.항해 추천인코드: NYFKU8✍️ 이번 주 주제: 아키텍처이번 주의 메인 과제는 **'아키텍처'**였습니다.총 4개의 아키텍처(레이어드, 릴레이션 레이어드, 클린, 헥사고날) 중 하나를 선택하고,지난주에 설정한 이커머스 웹 시나리오를 기반으로 해당 아키텍처를 적용해 구현하는 것이 목표였습니다.📌 과제 링크Step05 PRStep06 PR🗂️ 과제 요약🔹 STEP 05선택한 아키텍처에 맞춰 패키지 구조 설계핵심 비즈니스 로직 구현시나리오 기반 필수 기능 구현단위 테스트 작성(Mocking/Stub 활용)→ 단위 테스트는 외부 의존성 없..

항해+ 2025.07.26

항해+ 백엔드 코드 2주차 회고

이번주의 주된 과제는 '문서화'였다. 총 8개의 문서를 작성해보았는데,구현 과정에서 문서랑 코드랑 왔다갔다 하면서 자주 업데이트를 하게 되었다.완벽한 문서는 있을 수 없겠지만, 그래도 너무 익숙하지 않아서 힘들었다....항해 추천인코드: NYFKU8✍️ 이번 주 주제: 문서화이번 주의 메인 과제는 '문서화’였습니다.총 8개의 문서를 작성하며, 비즈니스 로직을 분석하고 명확히 표현하는 데 집중했습니다.또 모든 문서가 일관적이도록 하기 위해서 노력했습니다.과제 링크📌 Step03 PR📌 Step04 PR🗂️ 과제 내용 요약STEP 03 - 분석시나리오 요구사항 분석 및 문서 작성 (e.g. 시퀀스 다이어그램, ERD 등)STEP 04 - 실행Mock API 및 Swagger 문서 작성(선택 과제) AP..

항해+ 2025.07.20

항해+ 백엔드 코드 1주차 회고

정말 바쁜 한 주가 지나갔다. 물론 이제 시작이고 앞으로 9주가 더 남았다......나는 웹 개발자가 아니라서 학습하는 거의 대부분이 생소한 개념들이라 과제도 바로 시작을 못하고, 개념부터 학습하는 방식으로 작업하다 보니, 정말 많은 시간이 필요했고, 이번주엔 회식도 겹치는 바람에 더 시간이 없었다. ㅜㅜ과제에서 얻을 수 있었던게 100이라면, 난 30만 얻은 것 같다. 하지만 30이라도 확실히 내 것으로 만들었다는 것이 중요한 거 같다. 1. 과제내용STEP01 - 기능 추가 및 테스트 구현포인트 충전, 사용에 대한 정책 추가 (잔고 부족, 최대 잔고 등)4가지 기본 기능 (포인트 조회, 포인트 충전/사용 내역 조회, 충전, 사용)에 대한 구현4가지 기본 기능에 대한 테스트 작성단, 이때 /databa..

항해+ 2025.07.12

항해 플러스 백엔드 9기를 시작하는 마음(항해 추천인코드 있음)

1. 지금까지의 개발자 커리어 회고나는 약 2년간 영업관리직으로 근무하다, 현재는 파이썬 기반의 데스크톱 애플리케이션 개발자로 1년 넘게 일하고 있다.영업직을 그만두고 새로운 직장을 찾던 중 문득 이런 생각이 들었다.“전 회사에서 배운 생산라인, 공정, 물류 시스템, 전산, 상품 지식들이 다른 회사에서는 무용지물 아닌가? 내가 정말 영업에서 내세울 만한 게 있을까?”이러한 고민 끝에, 변화가 많은 환경에서도 통용될 수 있는 ‘기술’을 가진 사람이 되고 싶다는 결심을 하게 되었고, 그렇게 개발자의 길에 들어섰다. 늦은 나이에 시작했지만 운이 좋게도 취업에 성공했고, 개발자로서의 인생을 시작하게 되었다.2. 항해 플러스 참여 계기하지만 개발자로 일하며 깨달은 것이 있다.분야도 매우 넓고, 커리어의 방향성을 ..

항해+ 2025.07.05