팀 프로젝트에서 본인 담당 모듈을 중심으로 설명
팀 4명이 진행한 학사관리 시스템 프로젝트에서 저는 수강신청 모듈을 Spring Boot와 JPA로 구현했습니다. 동시에 여러 학생이 같은 강의를 신청할 때 정원을 초과하는 문제가 있었는데, 비관적 락을 적용해 동시성 문제를 해결했습니다. 부하 테스트에서 100명 동시 요청 시에도 정원 초과 없이 처리되는 것을 확인했습니다. 이 경험으로 트랜잭션과 동시성 제어의 중요성을 체감했습니다.
면접관이 이 한 문장으로 확인하려는 것들. 각 갈래를 알면 답의 뼈대가 잡혀요.
팀 4명이 진행한 학사관리 시스템 프로젝트에서 저는 수강신청 모듈을 Spring Boot와 JPA로 구현했습니다. 동시에 여러 학생이 같은 강의를 신청할 때 정원을 초과하는 문제가 있었는데, 비관적 락을 적용해 동시성 문제를 해결했습니다. 부하 테스트에서 100명 동시 요청 시에도 정원 초과 없이 처리되는 것을 확인했습니다. 이 경험으로 트랜잭션과 동시성 제어의 중요성을 체감했습니다.
개인 프로젝트로 게시판 API를 Spring Boot 기반으로 만들면서 컨트롤러, 서비스, 리포지토리 3계층으로 분리했습니다. 처음엔 컨트롤러에 비즈니스 로직을 다 넣었는데 테스트 코드를 작성하려니 컨트롤러 단위 테스트가 어려웠습니다. 이후 서비스 계층으로 로직을 옮기고 나서야 단위 테스트 커버리지를 70퍼센트까지 끌어올릴 수 있었습니다. 계층 분리가 왜 필요한지 몸으로 배운 경험이었습니다.
교내 동아리 홈페이지를 Spring Boot로 만들어 실제 운영까지 해봤습니다. 초기 버전은 정적 파일을 서버에 직접 올리는 방식이었는데, 배포할 때마다 다운타임이 생겨 CI 파이프라인을 GitHub Actions로 구성해 무중단은 아니어도 배포 시간을 15분에서 2분으로 줄였습니다. 실제 사용자가 있는 서비스를 운영하며 코드 품질뿐 아니라 배포 안정성도 개발의 일부라는 걸 배웠습니다.
같은 실수가 반복돼요. 이것만 피해도 절반은 갑니다.
진짜 면접은 두 번째 질문부터예요. 이 답 뒤에 따라올 법한 것들.