[루퍼스 부트캠프] 백엔드 과정 10주간 돌아보기
·
Essay/WIL
백엔드 개발자로서 3년간의 경험을 쌓으며 단순한 CRUD를 넘어서 더 깊은 고민과 역량이 필요한 영역으로 도약하고 싶었습니다. 기능을 구현하는 것에서 벗어나 백엔드 개발자가 반드시 알아야 할 원리와 고민해야 할 지점들을 배우고 싶었고, 그 과정에서 제 열정을 다시 끌어낼 수 있기를 바랐습니다. 그런 다짐으로 루퍼스 부트캠프의 백엔드 과정을 수강했고 10주간의 몰입을 통해 제 열정을 다시 일깨우고 새로운 동기를 얻을 수 있었습니다. 무엇보다도 훌륭한 멘토분들의 이끌어 주심 덕분에 즐겁게 배우고 성장할 수 있었습니다. 10주간의 과정 PG 개발에서의 원자성 보장과 테스트코드 당시에는 메서드에 붙은 @Transactional이 어떻게 작성되어야 원자성이 보장되는지 잘 알지 못했다. 이전 주차에 했던 내용이라..
[WIL] 루퍼스_부트캠프 9주차
·
Essay/WIL
이번주는 랭킹 시스템을 개발하였고 레디스의 ZSET 자료구조를 사용했다. 그러면서 공부했던 것들을 정리해본다. 1. Redis 자료구조 학습랭킹 시스템 구현의 핵심은 Redis ZSET(정렬된 집합) 이다.ZSET은 (member, score) 쌍을 저장하고, 점수 기준으로 정렬된 상태를 유지한다.랭킹 시스템에서 자주 쓰는 명령어는 다음과 같다. 점수 추가/갱신:ZADD rank:product:day:20250914 100 productId:123 ZINCRBY rank:product:day:20250914 1 productId:123랭킹 조회 (Top-N):ZREVRANGE rank:product:day:20250914 0 9 WITHSCORES특정 상품 점수/순위 조회:ZSCORE rank:prod..
[WIL] 부트캠프 8주차
·
Essay/WIL
이번 주에는 카프카를 직접 써봤다.글로벌 이벤트와 로컬 이벤트… “이벤트에도 글로벌이 있구나” 싶은 순간도 있었다. 어디에 쓰이는지가 먼저 궁금K.A.F.K.A라는 이름 정도만 아는 상태에서, 이 도구가 무엇으로 구성되는지보다 어디에 쓰이는지가 먼저 궁금했다.그 부분은 월요일 멘토링에서 전체 흐름을 들으며 큰 도움을 받았다.이벤트 분리를 처음부터 미세하게 하려니 막막했는데, “쉬운 것부터 해보자”는 말이 전환점이었다.즉, 주문등록(재고 차감, 포인트 차감, 쿠폰 사용) 같은 핵심 트랜잭션부터 쪼개기보다, 우리 시스템 관점에서 바깥이라고 볼 수 있는 데이터 플랫폼 전송 같은 곳부터 분리해보기로 했다.그리고 나서 주문등록 이벤트를 떼어내 보니, 예컨대 주문 이벤트 발행 후 포인트 차감이 실패하면 보상 트랜잭..
[WIL] 부트캠프 7주차 : Spring Application Event 기본 용어와 튜토리얼 코드
·
Essay/WIL
Spring Application Event를 사용해보긴 했지만, 용어와 코드가 어떻게 매칭되는지는 늘 헷갈렸다. 이번 글에서는 이벤트 관련 용어와 Spring을 이용해 내부 이벤트를 사용할 때 참고할 수 있는 예시 코드를 소개하려 한다. 1. 이벤트 용어멘토링 시간에 들었던 예시는 이벤트 관련 용어를 이해하는 데 가장 도움이 되었다. 마라탕집 3000평 가게에 식사하러 갔다.테이블A에서 "계산해" 달라고 한다 → 지나가던 알바가 무전기로 "A테이블 계산이요"라고 전달한다. → 계산 서버가 달려와서 "계산해드리겠습니다"이벤트 프로듀서 (Publisher) = 테이블A이벤트 = "계산 해줘" → 커맨드가 아니니깐, “계산해줘” 보다는 "여기 식사 다 했어요!" 일 듯.이벤트 브로커 = 알바 + 무전기이벤트..
[WIL] 부트캠프 6주차
·
Essay/WIL
보호되어 있는 글입니다.
[WIL] 부트캠프 5주차
·
Essay/WIL
1. 새롭게 배운 개념/지식RestTemplate 적용잘한 점 : RestTemplate 사용법과 Redis 자료구조와 활용방안에 대해서 공부했다. 공부 방법: Redis 자료구조와 활용방안(레디스 공식 유튜브: 짧고 지루하지 않게 설명 잘함. 단점은 영어라서 피곤, 개발자를 위한 레디스: 자료구조와 활용방안 부분만 봤는데 좋은 책이였다! gpt나 블로그 보지 말고 그냥 이 책 보는 것이 시간 낭비 안함. 짧게 정리된 것만 보면 별 생각을 안하게 되는데, 책을 보면서 따라가다보면 생각을 하게 되기 때문이다. )RestTemplate 사용법과 Redis 자료구조는 정리를 해두었는데, 이거 정리해두니 다른 사람 코드가 잘 읽혔다! 2. 문제를 해결하면서 얻은 인사이트캐시 구현을 어느 레이어에서 어떤 방식으..
[WIL] 부트캠프 4주차
·
Essay/WIL
한 일주문/결제과정에서 여러 작업(재고차감, 포인트 사용)의 원자성 보장 : 트랜잭션을 이용동시성 처리 : 좋아요 수 증감, 재고 차감, 포인트 사용에 대해 하나의 자원에 여러 요청이 몰렸을 때 정합성을 보장하기 위한 처리. DB를 이용하여 적절한 lock 사용하기쿠폰 설계 : 정액/정률이라는 여러 정책을 개방/폐쇄 원칙에 맞게 설계하고 주문 단계에 적용하기 공부해야 할 것 Springframework의 Transaction에 대해 알아보기 해야 할 일 이번주 프로젝트를 하면서 고민했던 부분이 Facade 계층에 코드가 너무 많아 지는 것이였는데 application 계층 내에 유효성 검증을 위한 별도 Resolver 를 두도록 코드 리팩토링 resolver를 사용하는 부분 코드 리뷰 요청드리기 :..
[WIL] 부트캠프 3주차
·
Essay/WIL
이번주 이커머스를 구현하면서 당면했던 내용을 정리해본다. JPA를 사용하면서 알아야 하는 것들도메인 중심으로 개발하고 각 도메인이 연결되었을 때 역할, 책임, 경계에 대해 고민하면서 구현하는 한 주였다. 하지만 JPA라는 도구를 사용하면서 JPA엔티티를 도메인 엔티티와 같게 두고 사용하기에 도메인을 DB에 저장할 때 어떤 형태로 어떤 방법으로 할 지에 대한 것도 매뉴얼 적으로 알 필요가 있었다. 1. VO를 JPA/QueryDSL에서 사용할 때 @Convert vs @Embedded AttributeConverter는 VO ↔ DB 컬럼 값 간 변환이 필요할 때 사용하는 것으로, 크게 @Convert, @Embedded 방법이 있다.두 방식의 큰 차이는 Convert는 컬럼 1개로 저장하고, Embedd..
[WIL] 부트캠프 1주차
·
Essay/WIL
7월 12일부터 시작한 경력자 부트캠프의 1주일이 지났다. 지난 한 주간은 TDD에 대한 것을 주제로 아래 내용을 익혔다. TDD로 범위를 작게 개발하는 것.테스트코드를 작성하는 방법테스트더블을 이용한 테스트코드 법 그리고 일주일이 지난 이번 토요일엔 여러 형태의 코드 리뷰를 받았다.렌 멘토님의 전체 코드 리뷰 : 멤버 한 분의 코드를 보면서 코드리뷰를 했는데 비슷한 고민을 하면서 코드를 작성하기 때문에 공감가는 부분이 많았다. 이 시간에 많은 인사이트를 받았다랜덤 리뷰 : 다른 팀 멤버들과 랜덤하게 조가 편성되어 각자가 받은 PR을 공유했다. 우리 팀은 주제로 이야기를 나눴는데 @Transactional 에 대한 부분과 테스트코드에 대한 이야기를 했다. Transaction의 범위와 readonly=t..
콘서트 예매 시스템 개발 회고
·
Essay/WIL
지난 3주간 시나리오 기반 서버 구축을 진행했다. https://github.com/mybloom/hh_concert_java대기열 관련 백엔드 시스템 설계를 진행하고 변경에 유연한 코드를  위해 아키텍처와 테스트코드 작성하는 것을 배웠다.그리고 운영을 위해 필요한 로깅과 동시성 처리도 진행했다.가장 긴 시간을 할애한 것은 설계와 비즈니스 로직 작성이었다. 그러면서 이 시간에 변경에 유연하고 유지보수를 고려한 코드 작성하는 법을 익히고 싶었다.그러기 위해서는 아키텍쳐 지식도 있어야 하고 좋은 코드를 많이 보면서 지식을 어떻게 코드화하는지도 익혀야했다.1시간 남짓 설명을 통해 무엇을 공부해야하는지 파악하고 실제로 더 필요한 지식들은 스스로 익혀야 했었다.나는 만들면서 배우는 아키텍처라는 책이 도움이 많이 ..
SQL 쿡북 스터디 회고
·
Essay/Learning Essay
SQL을 좀 더 정확히 짜고 싶어서 최근 SQL쿡북이라는 책으로 스터디를 했다. 요즘은 데이터분석이라는 조직에서 관련 업무를 해서 백엔드가 쿼리를 많이 짤 일은 없는 추세인 것 같기도하다. 근데 이 공부는 계속해서 필요를 느꼈고 하고 싶었던 주제여서 시작하게 되었다. 이번 스터디를 하면서 느낀 것은 개발 공부는 이론 정리와 실습이 항상 함께 가야하는데 이론 공부로는 어떤 영감?을 얻는 단계인 것 같다. '막연히 쿼리를 더 잘 짜고 싶다, 결과 보장하는 쿼리를 짜고 싶다'는 마음으로는 더 잘되지가 않는다. 종종 개발 커뮤니티를 보면 해당 질문이 가끔 올라오고 답변으로 실무를 추천하는데 바로 투입되야하는 상황에서 실력을 바로 늘릴 수는 없다. 그러려면 때로는 지루하고 진득하게 이론을 볼 필요가 있는데 이번 ..
주제선정과 아이디에이션
·
Essay/Learning Essay
보호되어 있는 글입니다.