협업의 문턱, 깃허브 코드 리뷰와 Pending의 늪
개인 프로젝트를 할 때는 자유롭기만 했던 깃허브가, 협업의 영역으로 들어오니 꽤 깐깐한 ‘수문장’처럼 느껴집니다. 우리 팀의 소중한 메인 브랜치를 지키기 위해 적용한 Ruleset과, 그 과정에서 겪은 코드 리뷰의 시행착오를 정리해 봅니다. 🛡️ 메인 브랜치를 보호하라: Ruleset 적용 팀 프로젝트에서는 main 브랜치에 코드를 합치기 전,...
개인 프로젝트를 할 때는 자유롭기만 했던 깃허브가, 협업의 영역으로 들어오니 꽤 깐깐한 ‘수문장’처럼 느껴집니다. 우리 팀의 소중한 메인 브랜치를 지키기 위해 적용한 Ruleset과, 그 과정에서 겪은 코드 리뷰의 시행착오를 정리해 봅니다. 🛡️ 메인 브랜치를 보호하라: Ruleset 적용 팀 프로젝트에서는 main 브랜치에 코드를 합치기 전,...
최근 오픈소스 생태계에서는 주종 관계를 연상시키는 master라는 용어 대신 main을 기본 브랜치명으로 사용할 것을 권장하고 있습니다. 저 또한 새로운 저장소를 만들 때마다 이 설정을 적용하려 했으나, 생각보다 해결 과정이 매끄럽지 않았습니다. 오늘은 브랜치명을 변경하며 겪은 시행착오와 이를 통해 얻은 ‘문제 해결의 관점’을 정리해 봅니다. ...
자바 공부를 시작할 때 가장 처음 배우는 내용이지만, 기초라는 이유로 쉽게 잊히곤 합니다. 하지만 자바가 왜 수많은 개발 현장에서 선택받는지 이해하려면, 그 밑바닥에 흐르는 구동 원리를 정확히 알 필요가 있습니다. 📚 핵심 용어 정리 본격적인 흐름을 이해하기 전, 네 가지 핵심 키워드를 먼저 정의해 봅니다. JDK (Java Developm...
API를 설계하다 보면 “수정” 기능을 만들 때 관성적으로 PUT을 선택하곤 합니다. 저 또한 최근 프로젝트에서 수정 기능을 구현하며 모든 매개변수를 Optional(선택 사항) 로 열어두고 PUT을 사용했다가, PUT의 진짜 의미와 동작 방식을 다시 공부하게 된 경험이 있습니다. 🚫 나의 실수: “PUT인데 왜 다 안 보내도 돼?” 처음 AP...
프론트엔드 개발을 처음 시작하면 코드 로직보다 ‘환경 설정’에서 더 큰 벽을 느끼곤 합니다. 이번 프로젝트에서도 패키지 임포트 문제부터 동작 원리 파악까지 다양한 난관이 있었지만, 그 과정에서 기술의 본질과 효율적인 학습 방향을 정립할 수 있었습니다. 🛠️ 1. ‘Module Not Found’ 해결기: npm install의 두 얼굴 개발 초...
🛑 문제 상황: Mock 서버 연동 후 데이터 미출력 Postman으로 Mock 서버를 생성하고 HTML(Frontend)과 연동하는 작업을 진행했습니다. 분명히 API 호출은 성공하는 것 같은데, 화면에는 데이터가 전혀 나타나지 않았습니다. 🔍 시도해본 것들 “데이터가 없어서 그런가?”: 단순히 조회가 안 되는 문제라 생각하여 데이터를 넣어...
🧐 왜 ‘기능 위주’의 명세서가 위험할까? 이전 프로젝트를 진행하며 API 명세서를 작성했을 때, 단순히 “이런 기능이 필요하니까 이렇게 만들자” 라는 생각으로 기능 구현에만 급급했던 적이 있습니다. 하지만 막상 개발이 시작된 후, 로직을 구현하다 보니 데이터 구조가 맞지 않아 명세서를 수정해야 하는 상황이 빈번했습니다. 개발이 진행된 이후에 명세...
이 글은 콘서트 예약 시스템 과제 중 Redis 기반 콘서트 랭킹 기능을 직접 구현하면서 설계 과정에서 고민했던 지점과, 그 과정에서 배운 점과 느낀 점을 정리한 기록이다. 시작하며 – 이 고민이 나왔다는 것 자체가 콘서트 랭킹 기능을 구현하다가 이런 생각이 들었다. “이 기능도 UseCase로 분리해야 하는 거 아닐까?” 예전 같...
락과 트랜잭션 경계 분리: 직접 겪어보며 정리한 실무 패턴 이번에 좌석 예약 기능을 구현하면서, 락과 트랜잭션의 경계를 어떻게 잡아야 하는지에 대해 다시 한 번 정리할 기회가 있었다. 처음에는 단순히 @Transactional 메서드 안에서 분산 락을 획득하고 해제하는 방식으로 구현했지만, 코드 리뷰와 구조를 다시 살펴보면서 이 방식이 왜 문제가 ...
Redis 캐시에 객체를 저장할 때 직렬화가 필요한 이유 Spring에서 @Cacheable을 사용해 Redis 캐시를 적용하다 보면, 다음과 같은 예외를 한 번쯤 마주치게 된다. org.springframework.data.redis.serializer.SerializationException: Cannot serialize 처음 이 에러를 ...