벤티의 개발 로그

[회고] 부꾸러미 (테오의 스프린트 18기, 그리고 그 후) 본문

카테고리 없음

[회고] 부꾸러미 (테오의 스프린트 18기, 그리고 그 후)

sonsh75 2025. 1. 18. 14:27
포스트 하단에 서비스 및 주요 기능 설명이 있습니다!

천리길도 한 걸음부터

긴 여정의 시작

 

2024년 12월 초, 나는 다음 단계를 준비했었다. 다만 잘 풀리지 않아 매일같이 하루종일 고민만 하면서 지냈다. '이제 어떡하지?', '가만히 있는 것은 싫은데 뭘 하면 좋지?', '어떻게 해야 내 미래에 조금이라도 도움이 될까?' 등등. 그러다 글또 자유 홍보 채널에서 한 메시지를 보게 되었다. 테오의 스프린트. 한 줄로 요약하자면 7일 동안 팀원끼리 기획부터 시작해서 결과물 완성까지 해보는 것이다. 7일? 괜찮을까? 싶었지만 작년에 첫 해커톤을 망친 경험을 극복하고도 싶었고, 단기간에 무언가에 몰입하는 경험에 대한 갈증이 있어서 큰 고민 없이 신청했다.

 

참가 신청 시트에 작성한 내용1. 목표와 이번 스프린트에서 얻고자 하는 것과 기여하고자 하는 것
참가 신청 시트에 작성한 내용2. 이번 스프린트에 참여하는 각오와 미래의 팀원들에게 전할 한 마디.

 

첫 스프린트

스프린트 일정

 

테오의 스프린트의 가장 큰 특징을 뽑자면 이전까지 진행했던 사이드 프로젝트는 기획/디자이너/프론트엔드/백엔드가 분리되었었는데, 이번에는 모두가 기획부터 참여하는 것이다. 모두가.

 

Day 1

OT 전에 1인당 1개의 아이디어를 들고 오는 숙제가 있었다. 나는 새해를 준비하는 느낌으로 Habit Tracker 용도로 사용할 도구성 아이디어를 생각해왔으나... 보기 좋게 익명 투표에서 탈락했다. 너무 식상해서 그런 것 같다.

 

팀 선정은 우선 모두가 들고 온 아이디어를 익명 투표를 통해 1차로 거르고, 뽑힌 아이디어를 생각한 분들이 각자 자신의 아이디어에 대한 설명을 발표한 후 투표를 통해 2차로 걸렀다. 2차 투표는 피그잼의 포스트잇 기능을 이용해 개발하고 싶은 아이디어 하나를 직접 고르는 것이다. 수많은 아이디어 중에 내 관심을 끌던 것이 있었다. '연말결산'. 새해를 준비하는 것도 좋지만 연말에 한 해를 돌아보는 것도 중요하다는 것을 느꼈기에 주저없이 신청했다.

 

그 후에 우리 팀끼리 모여 자기소개만 하고 끝냈다. 우리 팀은 4조...였지만 우리끼리 '우럭즈'라는 특별한 이름을 붙였다.

 

Day 2 ~ Day 4

두번째 날은 아이디어와 기획을 구체화하고 어떤 페이지가 있어야 할 지, 그리고 그 페이지에 어떤 내용이 있어야 할 지를 결정하는 날이었다. 우리 팀은 '연말 감성', '아기자기함', '다른 사람이 바라보는 내 모습'을 키워드로 삼았다. 그리고 제일 중요한 이름을 정했는데, 부끄럽다의 '부끄'와 꾸러미의 '꾸러미'를 합쳐서 '부꾸러미'로 결정했다.

페이지 나누기와 BDD의 최종 결과물

 

세번째 날과 네번째 날은 조금 특별한 방법을 이용해서 아이디어를 구체화했다. BDD와 SDD이다. 백엔드를 공부하면서 TDD와 DDD는 들어봤는데 그 둘은 조금 생소했다.

 

테오의 설명을 간단하게 요약하자면 BDD는 행동 위주 개발, 즉 우리 서비스를 이용할 사람(위 그림의 캐릭터)이 어떤 행위를 하고자 할 때 어떻게 화면 이동을 할 지를 결정하는 것이었다. 이 활동을 통해 대략적으로 화면에 어떤 버튼이 있어야 할 지, UI는 어떻게 구성해야 할 지를 결정할 수 있었고 구현할 API 목록을 작성할 수 있었다. 예전에 UML Sequence Diagram을 하나하나 그리던 기억이 있어서, 어렵지 않게 이해해 우리 팀이 위 그림처럼 꼼꼼하게(?) 작성하는 것을 도왔다.

 

생소했던 것은 SDD인데, 이 부분도 테오의 설명을 요약하자면 사용자가 어떤 행위를 할 때 그 행위를 하기 전후에 화면의 어떤 요소가 바뀌어야 하는 지를 작성하는 것이다. 나는 자꾸 그 어떤 요소를 화면이 아니라 DB에 저장될 데이터로 치환을 해서 생각해서 버벅거렸다. 다행히 다른 팀원들이 같이 열심히 도와주신 덕분에 완성할 수 있었다.

 

Day 5 ~ Day 7

결정의 흔적

 

Day 4 종료 직후, 백엔드 팀원들끼리 모여 기술 스택부터 커밋 컨벤션, ERD, 코드 스타일을 정했다. 추가로 나는 이전 프로젝트에서 썼던 PR 템플릿을 들고 왔다.

 

그 후는...개발개발개발의 연속이었다. 2박3일 동안 3시간 밖에 자지 못했고, 아예 잠을 못 잤던 팀원도 있었다. 육체적으로는 힘들었지만 새벽에 창문을 열고 닉네임에 맞게 커피를 물처럼 마시면서 버텼다. 힘들 때마다 첫 날의 다짐 '재밌게 개발하기'를 주문처럼 되뇌었다. 여태까지 진행했던 프로젝트는 반년이 넘는 기간동안 진행해서, 3일이라는 기간 동안 개발하는 것이 괜찮을까라는 걱정이 있었지만... 다행히 결과물까지 완성할 수 있었다.

 

3일이라는 시간을 온전히 부꾸러미에 쏟았다. 백수...였기 때문에 다행히(?) 다른 파트의 팀원들의 요청 사항, 궁금한 사항, 수정 사항이나 개발 순서나 우선 순위 같이 우리 팀이 급하게 결정해야 할 내용을 정할 때 적극적으로 의견을 낼 수 있었고 바로바로 답장을 드릴 수 있었다. 짧은 시간 안에 개발해야하는 스프린트인 만큼, 빠른 의사 결정이 중요하다고 생각했기 때문에 디코를 계속 띄워놨었다.

 

마지막 날에는 ZEP에서 랜덤으로 두 팀씩 매칭해서 서로의 서비스를 이용하고 피드백을 하는 작업을 했다... 하지만 우리 팀은... ㅠㅠ 배포가 잘 풀리지 않아 데모 버전으로 밖에 공개를 하지 못했다. 너무 아쉬웠다. 다들 얼마나 열심히 했는지 서로 알았던 만큼 아쉬움도 컸다. 이렇게 끝나나 싶었다. 하지만...

 

실패를 킥으로

오히려 이는 우리 팀이 불타오르게 하는 계기가 되었다. 데모데이 때 만났던 다른 팀들은, 이후에 더 이상 운영을 하지 않을 것이라고 했지만, 우리 팀원들은 그렇지 않았고 나도 의지가 강했기 때문에 추가 개발을 하고, 배포와 운영, 홍보까지 하기로 했다.

 

그렇게 4주 간의 추가 개발을 거쳐 아래와 같이 완벽한 서비스를 만들 수 있었다. (부꾸러미 링크)

부꾸러미 서비스 이미지! 우리의 북극곰 부꾸가 구슬을 담고 있다!

 

우리 서비스를 3줄로 요약하자면!

 

1. 평소에 직접 물어보기에는 부끄러워서 하지 못했던 질문을 보따리로 만들어서

2. 링크를 통해 카카오톡이나 다른 곳으로 공유를 하면

3. 그 링크를 접속한 사람들이 구슬을 만들어 답변을 남길 수 있다.

 

또, 우리 서비스의 킥이라면 귀여운 우리 캐릭터 부꾸, 받은 구슬 색깔에 맞게 사용자들에게 다른 색깔로 내리는 눈, 기능의 심플함이라고 말할 수 있다.

 

글또에 올린 홍보 메시지!
다행히 많은 분들이 관심을 가져주셨다.

 

내가 얻은 것

테오의 스프린트 마지막 날, 팀원들에게 받은 롤링페이퍼
실제로 내가 받은 구슬들! 제 보따리 링크는 이 글 하단에 있습니다! ^^

자신감

예전에 무박 2일 해커톤을 나갔다가... 좋지 않게 끝난 적이 있는데 이번 스프린트 덕분에 '나도 단기간 개발을 할 수 있구나'라는 자신감이 생겼다. 또, 시간이 많은(?) 덕분에 부꾸러미를 개발할 때 많은 시간을 쏟았는데 덕분에 위와 같은 구슬들을 많이 얻은 것 같아 뿌듯했다.

 

팀워크

이번 프로젝트에서는 JPA 대신 jOOQ라는 다소 생소한 기술 스택을 이용해서 DB에 접근했는데, 3일이라는 시간 내에 이것을 바로 적용하기에는 무리가 있어서 '어떡하지...'라는 걱정이 앞섰다. 그런데 다른 팀원 분이 잠도 자지 않고 날 포함한 다른 팀원 두 명을 위해서 단 몇 시간 만에 보일러 플레이트 코드를 완성해오셨다.

 

놀랐다. 그리고 많이 반성했다. 내가 그동안 팀워크라고 생각했던 것은 막히는 부분이 생겼을 때 잠깐 도움을 주는 정도였는데 다른 팀원을 위해 이 정도로 내 시간과 에너지를 쏟은 적이 있나 스스로에게 물어봤다. 없었다. 고작 몇 시간동안 Discord로 도와준 것이 전부였다.

 

다른 팀원은 Spring에 아직 익숙하지 않은 팀원이었는데, 덕분에 나도 밤샜다고 귀찮아하지 않고 그 팀원과 스프린트 Day 7에 페어 프로그래밍을 할 수 있었다. 3일 동안 같이 코드를 작성하면서 GitHub 사용법부터, Spring의 Controller, Service, Repository 클래스가 각각 어떤 역할을 하는지, 포스트맨을 통해 어떻게 API를 테스트 할 수 있는지, 또 Query 문을 어떻게 작성하는지 까지 차근차근 한 단계씩 같이 개발하는 것을 도와주었다. 막판에 이메일을 암호화해서 DB에 저장하는 로직을 작성할 때는 오히려 그 팀원 덕분에 Mapper 대신 Converter 클래스를 이용해서 구현할 수 있었다. 이것이 '함께 성장하는 것의 소중함과 즐거움'이라고 느꼈다.

 

기술적 성장

단기간에 개발하면서 새로 맡은 부분도 많고, 새로 사용한 기술도 많다. 대충 목록을 작성하면 아래와 같다.

  1. jOOQ 사용
  2. Spring Boot 3.X 첫 사용 및 DTO에 Record 타입 사용
  3. Preflight 요청 지연 문제 및 CORS 에러를 해결하기 위해 CORS 설정을 관리하는 CorsConfig 클래스 생성 및 수정
  4. Swagger 설정
  5. RDS 서버 시간에 Asia/Seoul 시간대 적용
  6. SQIDS ID 사용
  7. Validation 적용
  8. GitHub Actions의 Workflow 분석
  9. Jira 첫 사용
  10. 그 외의 여러 에러 수정

짧은 시간에 이런 내용들을 많이 배울 수 있었다. 이 내용들에 대해서는 다음 글들에서 다루기로 했다.


부꾸러미 체험

(자세한 설명은 이 포스트에서 확인하실 수 있습니다!)

 

보따리 링크 를 통해 접속하면 아래와 같은 화면이 뜬다.

보따리 도착 화면

 

보따리와 구슬 알기를 선택해 설명을 봐도 되고, 그냥 시작하기를 선택해 구슬(답변)을 남길 수 있다.

구슬 생성 화면

 

위 화면의 '나는 너에게 어떤 사람이야?' 부분이 내가 설정한 질문(보따리) 내용이다. 링크를 통해 접속한 사용자가 색깔을 고르고 내용을 입력한 후, 완료를 누르면...

보따리에 담긴 구슬 전달해주러 가는 부꾸

 

보따리를 등에 맨 채 귀엽게 걸어가는 부꾸를 볼 수 있다. ^^

구슬 생성 완료 화면

 

위 화면은 구슬 생성 완료 화면인데, 받은 구슬 개수 공개 여부는 설정에서 끌 수 있다. 또, '나도 보따리 만들러가기' 버튼을 누르면 질문을 생성해서 다른 사람들에게 보따리를 공유할 수 있다!

원래 움짤입니다...

 

아직 서비스를 운영 중이니, 더 많은 사람들이 이용해서 평소에 하지 못했던 질문과 답변을 주고 받고, 보따리를 맨 채 걸어가는 부꾸를 봐줬으면 좋겠다! ^^

 

(피드백은 언제나 환영합니다! 화면 하단의 '문의하기'를 선택하시거나 이 글의 댓글을 통해 의견을 남겨주실 수 있습니다!)