본문 바로가기
Memo/우테코 4기

[우테코/줍줍] 2차 스프린트 회고

by 연로그 2022. 7. 22.
반응형

데모 영상 보러가기 https://youtu.be/H6rm16DesPo

 

📚 목차

  1. 우리 팀의 이야기
    • 코로나 이슈
    • 몹 대신 페어로 진행하기
    • Pull Request 알차게 써먹기
    • 프론트와 백엔드가 함께 개발하기
    • 아쉬운 점
  2. 백엔드의 토론 시간
    • ResponseEntity로 반환해야할까?
    • 어떤 CI/CD 도구를 사용할까?
    • application.yml 파일 숨기기
  3. 스프린트3 예상해보기
    • 기존 로직 변경과 신규 기능
    • 도전해보고 싶은 것
    • 해야할 일

 

 


✨ 우리 팀의 이야기

 

💛 코로나 이슈

게더로 모인 줍줍

 1차 스프린트 직후 코로나에 걸려버렸다...🙃 11일에 거의 죽을 뻔하다가 12일 아침에 겨우 겨우 병원에 가서 확진 판정을 받고 일주일 자가격리를 했다. 요즘 코로나 다들 스무스하게 넘어간다는데 나는 엄청 난리였다.😰 하루는 열이 40도 까지도 올라가고 계속 구토하고... 한 3일 정도는 밥 -> 약 -> 잠만 반복했다. (빈 속에 약 먹으면 안된다는 철저함..) 정신이 좀 차려진 뒤에는 팀원들한테 너무 미안해서 눈물이 났다... 참여 못할 것 같다고 카톡 보내니까 다들 팀프로젝트 절대 신경쓰지 말고 푹 쉬라고 답장 왔다. 이거 보고 감동 받아서 울면서 잤다ㅋㅋㅋㅠㅠ 다행히도 며칠 지나니까 몸이 많이 괜찮아져서 게더타운으로 데일리 회의도 진행하고 code with me로 페어 프로그래밍도 진행했다.🙂 페어 한시간, 쉬는시간 10~20분을 반복했는데 좀 힘든가..? 싶다가도 잠깐씩 누워있으면 곧 괜찮아졌다. 페어의 배려에 감사한다.👍

 

 

💛 몹 대신 페어로 진행하기

 스프린트 1은 전부 몹 프로그래밍으로 진행했다. (백엔드 기준) 스프린트 1 회고글에서 말했듯 개발 속도가 좀 느리다고 느꼈다.  이번에는 속도를 좀만 더 올릴 수 있도록 4인 몹 프로그래밍에서 2인 페어 프로그래밍으로 형식을 바꿨다. 혼자 진행할때보다는 느리지만 스프린트 1 때 보다는 훨씬 개선되었다는 느꼈다. 2인이 개발을 진행하면 다른 2인은 PR에 리뷰를 남기는 형식으로 진행했다. 메시지와 채널에 관련된 API들은 거의 다 만든 것 같다. 한 팀원이 이러한 과정을 '팀에서 더 나은 방향으로 발전하기 위해 다양한 시도를 해보고 있다는 느낌을 받았다'고 말해주었던게 기억에 남는다. 🤭

 

 

💛 Pull Request 알차게 써먹기

아주 긴 이야기를 나눈 흔적ㅎㅎ

 스프린트 1 때는 단순히 내가 작업한 내용을 main 브랜치에 하나의 커밋으로 만들기 위해 거쳐가는 과정처럼 느껴졌는데 스프린트 2 때는 PR을 다양하게 써먹었다. 😃

 

[GitHub] PR 리뷰 막기 (feat: draft)

😊 서론  이번 글은 내가 올린 PR 리뷰 막아버리는 것에 대해 포스팅하려 합니다.🤭 제목에 황당해하시는 분들도 많을 것 같습니다. 현재 진행중인 줍줍 프로젝트에서는 현재 진행 상황 공유

yeonyeon.tistory.com

 

 

💛 프론트와 백엔드가 함께 개발하기

회의하면서 쓴 화이트 보드

 프론트와 백엔드가 함께 개발을 진행해보라는 미션을 받았다. 처음에는 개발에 참여해야하는줄 알고 어.. 나.. 리액트 뭔지 잘 모르는데.. 지금 기능 개발도 다 안된 상황인데 리액트를 공부하고 있어도 될까..? 그렇다고 꼬재랑 호프(프론트 팀원들) 바빠죽겠는데 자바를 공부하라고 할 수도 없고.. 이걸 왜 해야할까? 라는 생각이 들었다. 그래서 우리가 결정한건 시나리오 테스트를 함께 개발하기로 했다. 여러가지 테스트 시나리오를 함께 짜면서 내가 떠오르지 못한 케이스가 발견되기도 하고 클라이언트가 API를 정확히 어떻게 호출할 예정인지 구체적으로 알 수 있었다. 프론트와는 기술적인 이야기를 할 일은 거의 없었는데 함께 할 수 있는 시간이 되어서 좋았다.👍

 

 

💛 아쉬운 점

 스프린트 2를 마무리하며 회고하는 시간을 가졌는데 한 팀원이 '대체 가능한 인력이 되고싶다'는 뉘앙스의 말을 했던게 기억에 남는다. 이번에 백엔드가 두 페어로 나뉘어서 각각 다른 기능들을 구현했다. 우리 페어쪽은 메시지 관련 API들을 다뤘고 다른 페어는 채널 관련 API들을 다뤘다. 채널 관련 코드들을 모두 읽었고 리뷰도 상세히 남겼으니까 로직을 보면 다 이해는 한다. 하지만 머릿속에 남는다는 생각은 안들었다.😅 프론트가 채널 API 이거 어떤 이슈가 있는 것 같은데 확인해줄 수 있어? 라고 물어본다면 즉각적으로 대응하기 힘들 것 같다는 생각이 들었다.😰 메시지 API에서 이슈가 발생한다면 해당 API를 개발하지 않은 페어가 이슈 대응을 하는건 어떠냐는 제안을 해보았고 긍정적으로 받아들여졌다. 스프린트 3에서 시도해보게 될 것 같다.🙂

 

 


🙋‍♀️ 백엔드의 토론 시간

 

💜 ResponseEntity로 반환해야할까?

 @RestController 어노테이션을 달았는데 반환 값으로 DTO가 아닌 ResponseEntity를 이용하길래 `이거 DTO로도 반환할 수 있어요!`라고 말했다가 논란이 일었다. 나를 뺀 모든 백엔드 팀원들이 ResponseEntity를 반환하는 편이었다. 헤더값에 데이터를 넣기 용이하기 때문이라고 했는데 나는 지금 헤더에 아무런 값도 없는데 사용할 필요가 있을까요? 라고 물어보았다. 상태 코드가 마음에 걸린다면 @ResponseStatus를 이용하면 된다고 DTO를 그대로 반환하는게 가독성이 좋아보인다고 설득했다. 팀원들은 모두 동의해주었고 이후에 불편함을 느끼면 ResponseEntity를 다시 도입하는 방향으로 가기로 했다. 😄

 

 ResponseEntity와 관련해 유사한 포스팅을 한 적이 있어 자세한 설명은 링크로 대체한다. 

 

 

💜 어떤 CI/CD 도구를 사용할까?

 각자 CI/CD 도구에 대해 조사하고 어떤 것을 선택할지 결정하기로 했다. 나는 Travis, GitHub Actions, Jenkins 세 가지에 대해 조사해보았고 GitHub Actions을 사용하자고 설득할 예정이었다. Travis는 일정 자원 사용한 후에는 유료로 이용해야했고 Jenkins는 Jenkins를 위한 서버 인스턴스가 별도로 필요했다. GitHub Actions는 Jenkins에 비해 적은 편이지만 우리가 이용할 기능들이 보편적인 것들이라 참고할만한 자료는 이미 충분히 쌓여있다고 생각했다. 하지만 GitHub Actions를 사용하는 경우 EC2 접근 권한 이슈가 있다는 소식을 들었고...(EC2 접근 권한은 우테코에서 정한 스펙이 있어 우리가 임의로 변경할 수 없다😭) Jenkins를 이용하기로 최종 결정했다. 

 

 

💜 application.yml 파일 숨기기

 예전에 우테코에서 진행했던 미션들 중에서 장바구니 미션 때는 OS 환경 변수를 통해 중요한 설정 정보들을 가렸다. (관련 포스팅 바로가기) 이 방법은 설정 값이 변경될 때마다 서버에 접속해서 OS 환경 변수를 매번 바꿔줘야한다는.. 귀찮음이 동반된다. 그래서 이번에 선택한 방법은 깃의 `서브 모듈`이다. 이에 대한 내용은 링크로 대체한다.🤭

 

👉 https://yeonyeon.tistory.com/251

 

[Git] 서브 모듈로 중요한 설정 정보 숨기기

❗ 서론  예전에 OS 환경 변수를 이용해 중요한 설정 정보를 숨기는 방법에 대해 포스팅했었다. (바로가기 링크 👉 https://yeonyeon.tistory.com/234) 이 방법은 값이 변경될 때마다 직접 배포 서버에 들

yeonyeon.tistory.com

 

 


💫 스프린트3 예상해보기

 

🖤 기존 로직 변경과 신규 기능

 기존 API 들은 모두 잘 돌아는 가지만! 이 방법으로 구현하는게 더 좋을 것 같다~ 식으로 개선 사항들이 나온 기능들이 몇 있었다. 개발했다고 끝난게 아니라 스프린트 3의 기능들을 구현하면서 조금씩 변경되어야 하는 부분들도 있어서 로직 변경의 필요성을 느꼈다.

 

 스프린트 3의 신규 기능으로는 `인증+인가`와 `북마크`가 있다. 특히 인증이 정말 중요한 작업이 될 것 같아서 전반적인 변경이 필요하게 되지 않을까~ 라고 각오하고 있다.

 

 CI/CD 쪽이나 인프라 같은 부분에 대해서도 조금씩 개선해야할 것 같다. 중요한 기능들은 다 구현했다고 생각했는데 아직 갈 길이 많이 남았구나 라는 생각이 들었다. 😂

 

 

🖤 도전해보고 싶은 것

  • JenkinsFile도 서브 모듈에 넣어서 비공개로 전환하기
  • 배포 스크립트 파일(deploy.sh)도 Jenkins로 관리하기
  • Github Action 등을 이용해 PR에서 테스트 통과하는 상태인지 점검할 수 있게 만들기
  • RestDocs 등을 이용해 API 문서 만들기
  • Database 이관 작업
  • Logging에 대해 고민하고 설정 파일 직접 건드려보기

 

🖤 해야할 일

 팀 프로젝트와는 별개로 다음 주에 개인 발표가 있어서 바쁠 예정이다.(테코..톡...😂) 개인 시간에도 팀 프로젝트를 들여다보고는 했는데 이번에는 진짜진짜로 발표 준비를... 해야한다...🙃 다다음주에 있는 데모데이 에서도 내가 발표할 예정이라 이번 스프린트에서는 개발 외에도 많은 시간을 소모하게 될 것 같다. 가능하면 발표 준비를 미리 하고 팀원들 앞에서 리허설을 한번 진행해보고 싶은데... 할게 하도 많아서 예정대로 진행할 수 있을지는 잘 모르겠다. 🤔 정신없이 휘몰아칠 각오를 하고 있다. 나 자신 화이팅!💪💪💪

반응형