취미 및 동호회 서비스 만날까에서
당신의 관심사를 등록하고 모임에 참여하세요!
- Kotlin 1.4
- Spring boot
- MySQL
MySQL 데이터베이스는 프로젝트 내부의 src/course/sql/ddl.sql
을 실행하여 스키마를 만들 수 있습니다.
DB 스키마 설정이 완료되면 application.properties
파일에 설정한 DB의 설정을 입력해주어야 합니다.
만날까 서비스는 프론트와 백엔드가 분리되어있습니다.
백엔드 서비스인 이 프로젝트를 먼저 실행한 후, 프론트 앱을 실행하면 앱 구동이 완료됩니다.
개발자가 생성한 모든 Pull Requests는 빌드/테스트를 자동으로 수행하여 정상적으로 실행될 수 있는지 자동으로 확인하고 있습니다. 따라서 PR에 대한 코드 리뷰를 진행할 때 이 코드가 잘 동작하는지 여부를 검토하지 않아도 됩니다.
만날까 프로젝트는 Github Action으로 배포 파이프라인을 구성하였습니다. 배포를 진행할 때 .jar
파일과 컨테이너 환경을 모두 배포할 수 있도록 두 가지 버전의 작업을 만들었습니다. 해당 Action은 여기에서 확인할 수 있습니다.
개발 Feature는 코드리뷰를 거치지 않으면 머지하지 않는것을 기본 원칙으로 세웠습니다. 이를 통해 우리는 코드의 품질을 개선하고 팀원들이 작성한 코드의 동작을 이해할 수 있었습니다.
API 문서 없이 프론트엔드 개발자와 스펙에 대해 논의하기는 쉽지 않은 일입니다. API의 사용 전제 조건, 사용 권한, 매개 변수, 반환 값 등을 명확하게 전달해야 했고, 문서화 없이는 관리가 거의 불가능했습니다. 그래서 우리는 Restdocs를 통해 API의 모든 동작을 문서화했습니다. 프론트엔드 개발자는 더 이상 백엔드 개발자에게 이 API가 무엇을 하는지 물어볼 필요가 없습니다.
다음 코드를 통해 API 문서생성을 자동화하였습니다.
result.andExpect(status().isOk)
.andDo(
document("club-withdraw",
getDocumentRequest(),
getDocumentResponse(),
pathParameters(parameterWithName("clubSeq").description("모임 시퀀스.")),
responseFields(
*commonResponseField()
)
)
)
@Transactional
override fun findMeetingApplicationByUserAndMeetingSeq(clubUserParam: ClubUser, meetingSeq: Long): MeetingApplication {
return from(meetingApplication)
.join(meetingApplication.meeting, meeting)
.join(meetingApplication.clubUser, clubUser)
.join(meeting.club, club)
.where(
clubUser.seq.eq(clubUserParam.seq), meeting.seq.eq(meetingSeq)
).fetchOne()
}