스프린트4 그리고 레벨3 회고

공병주(Chris)·2022년 8월 29일
2
post-thumbnail

스프린트4 회고

레벨 3의 마지막 스프린트가 시작되었다~!

팀원들과 아래와 같은 목표를 잡았다.

스프린트 4 목표

  1. 소나클라우드 (백엔드)
  2. cloudwatch (백엔드)
  3. 성능 리포트 공유 (프론트)
  4. 테이블의 ID 암호화
  5. 프로필 기능 (닉네임 수정 포함)
    1. 닉네임 수정 (1순위)
    2. 내가 쓴 글 보기 (2순위)
    3. 비밀번호 변경 (최후순위)
  6. 블라인드 처리된 글 api요청으로도 안보이도록 수정
  7. 대댓글 기능
  8. 알람기능→ 종 모양 클릭해 들어갔을때 알림이 온다
  9. 댓글 좋아요 (베스트 댓글)
  10. 테스트 커버리지 높이기 및 테스트 리팩토링

테이블의 ID(사용자 아이디) 암호화

서비스적으로 사용자 아이디 암호화가 가장 시급했다. 우리 서비스는 익명 기반의 서비스다. DB를 오픈했을 때, 사용자를 식별할 수 있으면 안된다. 따라서, member 테이블에 사용자를 식별할 수 있는 e-mail을 column으로 두지 않았다. 그리고 password만 해싱을 해두었다. 그런데 사용자들이 생각보다 자신을 식별할 수 있는 ID를 사용했다. 그래서 철저한 익명 보장이 되지 않을 것이라고 판단되어 이를 바로 해싱하자고 결론 내렸다.

사실 서비스에 대한 근거 없는 비판을 하는 사람이 있었는데, ID가 해싱되어 있지 않았을 때 해당 사용자를 알아낼 수 있었지만 괜히 악감정이 생길 것 같아서 그냥 보지 않았다. 또한, 우리 서비스는 익명이기 때문에 보면 안되는 것이기도 하다.

우리 팀 진짜 익명 보장을 위해서 정말 노력합니다… 알아줍쇼!!!

나는 무엇을?

나는 알람 기능과 테스트를 담당했다.

알람 기능

알람 기능을 구현했다. 꽤 복잡할지 알았는데, 생각보다 로직이 복잡하거나 하진 않았다.

한가지 맘에 걸리는 것이 있다면, 새로운 알림이 생겼을 경우에 종에 초록색 불이 들어온다.
Server-Sent 방식이 아니라 10초? 15초에 한번씩 서버로 요청을 보내는 형식으로 구현했다.

이를 Web-Socket으로 구현해볼까했지만, 새로운 의존성을 추가해야 했다. 레벨 3에서 사용할 수 있는 기술은 제한적이었기 때문에 일단 pass.. 그렇다면 Spring에 내장되어있는 SSE라는 선택지가 있었다. 하지만, 레벨 4 때 Web-Socket을 사용할 수 있을 때, 둘의 차이를 확실히 파악하고 구현해야겠다는 생각이 들었다.

그리고 무엇보다 테스트 코드의 픽스쳐들이 조금 중구난방이었어서 빨리 테스트 픽스쳐를 정리하고 싶었다..

알람을 구현하면서 엔티티의 메서드 재정의에 따라, JpaRepository를 상속한 Repository의 query가 생성되지 않는 문제를 겪었다.

JPA) Failed to create query for method public abstract

해결방안은 찾았지만 원론적으로 어떤 동작 방식 때문에 문제가 발생했는지는 파악하지 못한게 아쉽다.

테스트 리팩토링

테스트 코드의 픽스쳐들이 정말 중구난방이었다.. 여러 명이서 코드에 관여를 하다보니, 테스트 픽스쳐를 확인하지 않고 각자의 픽스쳐들을 만들다 보니 중복되는 픽스쳐들이 정말 많았다. 픽스쳐를 하나 수정하고 30초 정도의 전체 테스트를 돌리고 또 픽스쳐를 수정하고 전체 테스트를 돌려야했다. 꽤 귀찮은 작업이었다. 팀원들과 앞으로는 테스트코드를 작성하기 전에 사용할 수 있는 픽스쳐가 있는지 충분히 확인하자는 피드백을 나누었다.

깃터디

팀원들이 깃에 대해 잘 몰라서 깃터디를 열었고 이스트가 선생님(?)ㅋㅋ을 해주었다. 팀 전체 스터디에 대한 만족도는 너무 높았다. Level4 때는 프론트와 백을 아우르는 지식에 대해 팀테코톡을 진행하기로 했다!! 두근두근!

git merge, rebase merge, squash merge

깃 이슈

깃 관련해서 또 문제가 생겼다… 깃은 진짜 너무 어렵다… 깃 마스터 되고 싶다… 헌치가 팀 기술 블로그에 문제 상황과 해결방안을 잘 정리해주었다.

Squash Merge 후 Rebase시 발생하는 문제 해결 과정😂

공유

팀원들이 각자 구현한 것들도 이전에 비해 점점 공유가 잘 되고 있다. 팀 기술블로그에 글이 늘어나는 것을 보면, 그래도 우리가 많은 것들을 해내고 많은 것들을 얻고 있구나 하는 뿌듯함이 든다.

속닥속닥 기술블로그

Level 3를 돌아보자

기능 개발에 쫓기지 않았나 싶다.

기능 개발에 쫓겨 코드의 퀄리티가 그렇게 좋지 못하다는 생각이 든다. 설계, 객체 지향에 대해 고민하는 시간이 더 있었으면 좋았을텐데라는 생각이 든다. 레벨 4때 유지보수를 하면서 이 부분에 대해서 꼭 개선을 하고 팀원들과 함께 고민해보고 싶다.

Infra 지식을 많이 얻었다.

Https와 CI/CD를 맡아서 Infra 기술이 늘지 않았나라는 생각을 한다.

JPA

JPA는 책으로 봤을 때 간단해보였다. 하지만 사용해보니 꽤 어렵더라… 생각보다 복잡하고 Lazy와 Proxy, JPQL, SpringDataJpa 등등 … 공부할 것이 산더미다. 그래도 빨리 이것들을 더 깊고 넓게 알아보고 싶다. 기다려라 JPA

Spring

사실 가장 아쉬운 부분이 Spring이다. Spring에 대해서 큰 발전이나 도전을 하지 못했던 것 같다. 더 노력하자..!

협업

협업은 생각보다 어려웠다. 물론 팀원들은 너무 좋아서 다행이다. 좋은 의사소통은 무엇인지, 깃 관리, 공유를 잘하는 방법, 문서화를 잘하는 방법, 효율적으로 회의를 진행하는 방법, 토론이 길어질 때 어떻게 해야하는지 등. 모든 것들이 나와 팀원들에게 새로웠다. 하지만, 우리가 잘했던 점은 회고를 정말 열심히 했고 그에 따른 액션플랜을 도출해서 진행했다는 것이다. 사실 개인적으로, Level3는 협업을 하는 방법을 배우는게 주된 목적이라는 생각이 들었다. 팀원들과의 협업 속에서 말하는 방식과 사고 방식을 개선할 수 있었다. 또한, 공유를 통해 함께 알아가는 기쁨에 대해 알 수 있었다. 이 모든 것들은 좋은 팀원들과 함께였어서 가능했던 것 같다. 참으로 감사합니다.

그리고 우리 팀 여행 다녀왔다.




Level 4 때도 더 많은 추억들을 팀원들과 많이 쌓고 싶고 함께 더 많이 성장했으면 좋겠다

속닥속닥 화이팅!!!!! ❤️

2개의 댓글

comment-user-thumbnail
2022년 8월 29일

속닥속닥 최고다~~

답글 달기
comment-user-thumbnail
2022년 10월 8일

속닥속닥 잘쓰고 있습니다.

답글 달기