[Control Tower] Git 충돌 해결부터 사이드바 권한 분리까지
·
Projects/Team Projects
오늘은 팀 프로젝트를 진행하며 **형상 관리자(Configuration Manager)**로서 겪었던 Git 이슈들과, 프론트/백엔드 초기 세팅 과정에서 해결한 문제들을 정리해 본다.1. 🛠️ Git 형상 관리: .gitignore가 중요한 이유프로젝트 초반, 팀원들의 개발 환경(IDE, OS) 차이와 민감한 정보 파일 때문에 Git 충돌이 빈번하게 발생했다. 특히 Gradle 빌드 파일들이 계속 충돌을 일으켜 배포 흐름이 끊기는 문제가 있었다.🚨 문제 상황 (Trouble)보안 이슈: DB 비밀번호 등이 담긴 application_secret.yaml 파일이 실수로 원격 저장소(Remote Repo)에 올라갈 뻔함.빌드 충돌: 팀원마다 로컬 경로가 다른데 .gradle/ 캐시 파일이나 build/ ..
[TIL] 지저분한 Service 코드, 정적 팩토리 메서드로 깔끔하게 정리하기
·
Archive/TIL
1. "분리해도 괜찮은 부분"의 정체오늘 수업 중 **로그인 로직(AuthService)**에서 '이 부분은 분리해도 돼요'라고 했던 부분은 바로 응답 객체(DTO)를 생성하는 과정이었다.1.분리 대상 코드 (Before)현재 AuthService는 로그인 검증뿐만 아니라, 응답 객체(DTO)를 하나하나 조립하는 일까지 하고 있습니다.Java// [AuthService.java]// 서비스가 DTO의 필드 구조를 속속들이 알고 직접 조립함 (좋지 않음)return AuthDto.LoginResponse.builder() .userId(userId) .userName(member.getUserName()) .role(role) .token(token) ..
[개발기] 프로토타입을 넘어 서비스로: '경기 안심 로드' 대규모 리팩토링 기록 (Spring Boot 도입)
·
Engineering/AI & Tools
서론: 해커톤 그 이후, 멈추지 않는 도전지난 포스팅(경기 기후 바이브코딩 해커톤 후기)에서 소개했던 '경기 그늘 로드' 프로젝트를 기억하시나요? 감사하게도 해커톤 이후 After 프로젝트 지원 대상에 선발되어, 단순한 아이디어 구현을 넘어 '실제 서비스 가능한 수준'으로 프로젝트를 고도화할 기회를 얻게 되었습니다.특히 이번 프로젝트는 '클로드 코드(Claude Code)'를 활용한 AI 페어 프로그래밍(Vibe Coding) 방식을 적극 도입했습니다. 해커톤 당시에는 토큰 제한 문제로 메인 페이지만 구현하는 데 그쳐 아쉬움이 컸지만, 이번에는 토큰 효율성을 고민하며 실제 백엔드 로직까지 완성도 있게 구현해볼 수 있었습니다.오늘은 프로젝트명을 '경기 안심 로드(Gyeonggi Safety Road)'로 ..
[Spring Boot] 백엔드 핵심 흐름: JPA와 DDD, 그리고 AWS S3
·
Engineering/Backend Core
📝 서론: 수업을 앞두고Spring REST API 수업을 듣던 중, 강사님께서 앞으로 배울 핵심 기술들에 대해 미리 키워드를 던져주셨다. 궁금해서 미리 개념과 전체적인 흐름을 정리해 보고자 한다.오늘 정리할 내용은 백엔드 개발의 핵심인 **데이터 처리 방식(ORM, JPA, DDD)**과 파일 처리를 위한 AWS S3의 역할이다.1. 데이터를 다루는 흐름: ORM → JPA → DDD이 세 가지는 서로 다른 기술이라기보다, "데이터 중심 개발에서 비즈니스 로직 중심 개발로 나아가는 단계"라고 이해하면 쉽다.(1) ORM (Object-Relational Mapping)개념: 객체(Java Class)와 관계형 DB(SQL) 사이의 통역사."DB 테이블을 자바 객체처럼 다루고 싶다"는 아이디어에서 출발..
[Backend] DB 성능 최적화: 커넥션 풀(Connection Pool)과 HikariCP의 등장
·
Engineering/Backend Core
1. 서론: 왜 속도가 중요할까?학원 수업 중 강사님께서 "HikariCP가 DBCP보다 훨씬 빠르기 때문에 요즘은 무조건 이걸 쓴다"고 말씀하셨다. 단순히 "빠르다"고만 알고 넘어가기엔 백엔드 개발자로서 궁금증이 생겨, 정확히 무엇이 다르고 얼마나 차이가 나는지 정리해 보았다. 2. 커넥션 풀(Connection Pool)이란?DB와 연결을 맺는 과정(Connection)은 꽤 무거운 작업이다.비유하자면, 매번 통화할 때마다 전화선을 새로 설치하고(연결), 통화하고(SQL 실행), 선을 뽑는(종료) 것과 같다.커넥션 풀이 없을 때: 요청마다 연결/해제를 반복하여 시간이 오래 걸림.커넥션 풀(Connection Pool): 전화기(Connection) 10대를 미리 설치해두고, 요청이 오면 수화기만 빌려..
TIL: MVC 패턴의 본질과 Service 인터페이스의 진실
·
Engineering/Backend Core
1. 배경 (Background)학원에서 순수 자바(Servlet/JSP)에서 Spring Boot와 MyBatis로 넘어가면서 파일이 많아지고 구조가 복잡해졌다. REST API를 짜면서도 "도대체 MVC 패턴이 뭐고, 왜 이렇게 쪼개는 거지?"라는 의문이 들어 개념을 확실히 정리하게 되었다.2. MVC 패턴과 Model의 진화MVC는 Model, View, Controller의 약자로 애플리케이션의 역할을 나누는 것이다. Spring Boot로 넘어오면서 'Model'의 역할이 세분화되었다.📌 구조의 변화Controller: 여전히 교통정리(요청/응답) 담당.Model (세분화됨):Service: 핵심 비즈니스 로직 (What).Mapper: DB 접근 및 SQL 실행 (How).DTO/VO: 데이..