팀프로젝트를 하면 프로젝트 완성을 위해 작업에 대한 세분화된 계획과 개발 일정을 세우고 작업 진척도를 서로 공유하고 알 필요가 있다. 먼저 프로젝트 방법론을 정해야 하는데 프로젝트 방법론은 크게 애자일과 워터풀 방식이 있다. 애자일 방식은 짧은 기간내에 프로젝트를 빠르게 완성시킨 후 점진적으로 프로젝트를 개선시켜 고객의 니즈를 점진적으로 충족시켜 준다. 그러나 워터풀 방식은 정해진 기간 내에 완벽한 설계안으로 점진적으로 개발해 나아가서 프로젝트를 완성시킨다. [ 애자일 방식과 워터풀 방식 ] 팀프로젝트를 할 때 우리 팀은 애자일 방식으로 하였다. 왜냐하면 온라인 옷 쇼핑몰이라는 도메인을 처음 접했기 때문에 개발해 나가면서 언제든지 설계안을 수정할 수 있었기 때문이다. 그래서 철저한 계획을 세워 프로젝트를..
Git Branch 전략과 컨벤션을 정하고 팀 프로젝트를 진행했다. [Git Branch 전략] 기능 개발을 진행할 때 develop 브랜치를 기준으로 feature 브랜치를 만들어서 기능개발을 완료 기능 개발한 feature를 develop 브랜치에 Pull Request를 하고 코드리뷰를 진행한 후 develop 브랜치에 merge merge를 한사람씩 하여 업데이트된 develop 브랜치를 각각의 feature 브랜치에서 develop브랜치를 rebase하고, develop에 merge하여 깃 히스토리를 관리 [Git 컨벤션] 커밋 타입은 [태그: 제목] 형식 태그는 영어로 쓰되 첫 문자는 소문자 태그로는 feat, fix, docs, style, refactor, test, chore 를 사용 ..
JWT 인증 방식 적용 1. SecurityConfiguration 수정 시큐리티 Form Login 방식에서 JWT 인증방식으로 변경하려면 SecurityConfig에서 FormLogin방식과 HttpBasic 인증방식을 disable 해야 한다. 그리고 JWT를 사용하는 이유 중 하나인 session 유지를 비활성화한다. [ httpBasic().disable 이유 ] HttpBasic 인증 방식은 request 헤더에 Authorization 키 값에 Basic 뒤에 사용자 아이디, 패스워드를 base64로 인코딩해서 전송하여 인증하는 방식이다. base64 방식은 누구나 쉽게 복호화할 수 있어서 HttpBasic 인증 방식을 사용하지 않는다. 사용하더라도 아이디 패스워드를 암호화해서 전송되도록 H..
코드 리팩토링 전 아래 코드는 회원가입시 email 중복 체크를 하는 서비스 기능이다. email 파라미터로 member 객체를 가져오지 못하면 "사용 가능한 이메일 입니다." 메시지와 success 필드에 true를 넣어서 프론트에서 분기 처리를 하였다. 만약 member 객체를 가져오면 "이미 사용중인 이메일 입니다." 라는 메시지와 success 필드에는 false를 넣어 응답한다. 위 코드가 지저분한 이유는 try catch 로 인한 에러 처리와 emailCheckResponse를 3군데서 build() 하기 때문이다. try catch를 서비스 에서 사용하지 않으려면 GlobalException을 사용해야 한다. GlobalException은 @ExceptionHandler와 @Controlle..