🚀 우아한테크코스 5기 레벨3 끝 - 2023년 8월 18일 금요일
약 2개월의 시간 동안 백엔드 + 프론트엔드 프로젝트를 3번의 데모데이 + 런칭 페스티벌을 진행하고 릴리즈 할 수 있었다.
백엔드 + 프론트엔드가 하나가 되어 제대로 된 프로젝트를 진행한 게 이번이 처음이었고 그만큼 재밌었고 힘들기도 한 기간이었다.
2023년 8월 18일 금요일 '</>바톤(baton)'이라는 프로젝트명으로 '코드 리뷰 중개 사이트'를 런칭했다.
첫 데모데이에 발표한 기획을 갈아엎어보기도 하며 '</>바톤(baton)'에
3번의 데모데이와 론칭 페스티벌으로부터 잊지 못할 추억들도 생기고 그 과정에서 만나보지 못한 새로운 고민을 해결해볼 수도 있었다.
또한 개발자라는 생각만으로 단순히 다양한 기능을 구현하는데 초점을 두지 않고 '</>바톤(baton)'이 실제 사용자에게 더 잘 나가갈 수 있도록 니즈(needs)를 해결하는데 집중했다.
이번 레벨3을 마치면서 캡틴 포비가 이런 느낌을 받으셨다고 말씀해 주셨다.
이번 기수들은 '어려운 기술을 녹여내는 것에 집중하기보다 실제 사용자에게 초점을 맞춰 훨씬 접근성이 좋은 서비스'
말씀 그대로 기획에 정말 많은 시간을 사용했고 사용자에게 부가적인 기능을 주기보다 실제로 필요한 기능이 무엇인지 분석하는데 많은 고민 했다. 그리고 그 8주간의 과정을 적어보려 한다.
🟩 1차 데모데이 (1주 차 ~ 2주 차)
1차 데모데이에서는 '릴레이 소설'이라는 지금과는 전혀 다른 주제로 프로젝트를 진행하고 있었다.
이 때는 나름 여유가 있고 같은 팀이 된 크루들과 친해지면서 차근차근 하나하나 보면서 나아가던 때였다.
그리고 개발을 하기보다 자기 사용 설명서, 킥오프 미팅을 통해 팀 스타일을 정하고 기획에 많은 시간을 할애했다.
2주 차,블로킹할 여유도 있었고 사람들에게 설문 조사를 돌리면서 추상적인 프로젝트 주제를 명확하게 잡아가고 있었다.
익숙한 주제는 아니지만 '릴레이 소설'이라는 프로젝트 기획을 본격적으로 준비하게 되었다.
처음에 '릴레이 소설'은 누구든지 서비스에 접속해서 빠른 회전율로 재미있게 릴레이 형식으로 단편의 글을 작성할 수 있는 서비스였다.
즉, 재미를 위한 서비스였기에 불편한 점을 해소하는 것은 아니었다. 오직 재미를 위해서였고 팀 내에서 릴레이 소설을 진행해 보기 했다.
결과는 재미없었다. 그래서 다들 고민하기 시작했고 끝내 재미보다 좀 더 전문성을 부여하기로 했다. 작가 지망생들이 간단하게 릴레이 소설을 작성하며 글에 대한 재미와 연습을 할 수 있는 서비스로 나아가는 방향으로 정했다. 그리고 1차 데모데이 발표를 끝마쳤다.
1차 데모데이에서 발표를 했었을 때 '릴레이 소설'이라는 주제가 어떤 사람의 불편한 점을 해소시켜 줄 수 있는 서비스인지에 대한 피드백이 많이 들어왔다. 또한 팀원 간에 싱크가 제대로 맞지 않아 서로 다른 생각을 하는 것 같다는 이야기도 들렸다.
🟩 2차 데모데이 (3주 차 ~ 4주 차)
3주 차가 시작되고 곧바로 현재 가지고 있는 문제점들을 해결해 나갔다. 팀원들의 스타일을 모두가 알게 되고 회의 방식, 결정 방식도 모두 날카로워졌다. 이야기가 느슨해지거나 길어질 때 잠시 휴식을 취하거나 끊어내는 등 팀 활동이 효율적으로 변했다.
팀이 효율적이게 변한 것은 좋은 일이지만 지금 중요한 것은 '릴레이 소설'이 어떤 문제를 해결하는 서비스인지 정하는 것이다. 즉, 주제를 확실하게 정해서 팀원들이 모두 같은 방향을 향할 수 있도록 해야 했다. 먼저 서비스가 재미를 위한 것인지, 전문성을 위한 것인지를 확실하게 정하기로 했고 모두의 생각을 확인하기 위해 동시에 자신의 생각을 적어 올렸다. 조금씩 다른 생각을 가지고 있었고 이대로 회의를 진행해도 어느 방향이 더 좋을지 모두가 헷갈려하기만 했다. 그래서 좀 더 설문조사를 돌리고 실제 작가분에게 연락이 닿아 '릴레이 소설'이라는 서비스에 대한 생각을 받을 수 있었다. 하지만 이러한 노력에도 불구하고 3주 차가 끝나갈 때도 정확한 방향이 정해지지 않았다. 어떻게든 끄집어내도 현재 서비스는 문제에 대한 해결이, 타겟층이 명확하지 않음이 앞길을 막아섰다.
4주 차가 시작되는 월요일, 팀원 모두 현재 '릴레이 소설'을 밀고 나갈지 다른 주제를 시작할지 고민해 왔다.
새로운 주제, 이전에 제출한 기획, 릴레이 소설 변형 등 다양한 주제가 나왔고 결과적으로는 '코드 리뷰 중개 서비스'라는 새로운 주제로 나아가기로 했다. 이유는 팀 내에 모든 크루가 경험해 봤고 코드 리뷰를 필요로 하는 타겟층도 명확했기 때문이다.
곧바로 새로운 설문조사를 돌리기 시작했고 3주 차까지의 끝없는 회의로 달궈진 팀의 발전한 기획 실력 덕분에 이틀 만에 이전보다 더 명확한 기획이 가능했다.
시안을 만들고 곧바로 개발에 들어갔다. 수요일, 목요일이라는 짧은 시간 내에 CI와 수동 배포까지 완료하고 2차 데모데이를 맞이했다.
코치님들의 2차 피드백으로는 아직 완성되지 못한 기본 요구사항과 프로젝트가 한 사이클을 돌릴 수 있도록 해보는 것이었다.
새로운 기획으로 인해 다른 팀들에 비해 느린 속도를 따라잡아야 한다고 조언해 주셨다.
🟩 3차 데모데이 (5주 차 ~ 6주 차)
3차 데모데이가 시작되고 먼저 코드 리뷰라는 서비스를 한 사이클 돌릴 수 있도록 만드는 것에 초점을 두었다. 스프린트 주기를 1주 차로 뒀지만 이것을 더 나누어 스프린트 주기를 3일로 잡았다. 부가적인 기능이라고 생각 드는 것을 후순위로 미루고 주기능을 최우선으로 구현하기로 했다. 다만 캠퍼스에 코로나가 유행하면서 개발이 불가능한 상황이 생겼다. 때문에 실제 주기능보다 생산성을 높일 수 있도록 도커를 이용해서 CD를 구현했다. 크루들은 검증용 어노테이션 커스텀, 날짜 커스텀을 진행했다. 동시에 5주 차 금요일에 테코톡 HTTPS 발표를 끝마쳤다.
하지만 다음 날 곧바로 나도 코로나에 걸려 개발하기 더욱 힘든 상황이 나왔다. 다행히 주말에 시작되어 평일에 3일 정도만 재택으로 진행하면 됐다. 일단 아픈 거는 무시할 수 있는 정도의 상태였다. 재택으로 진행하면서 게더를 이용해서 소통에 큰 문제는 없었지만 듣거나 의견을 내기 힘들다는 점이 오프라인보다는 아쉬운 느낌이 컸다. 물론 크루들이 굉장히 편의를 봐줘서 90% 이상은 다 되긴 했다. 아무튼 소통은 그렇다고 해도 전체적인 개발 구현이 뒤처질 수는 없다고 생각했고 이것을 기회로 삼아 현재 프로젝트에 큰 영향을 미치지 않지만 인프라로 후순위였던 소셜 로그인을 내가 구현하기로 결정했다. 월요일 저녁에 결정된 소셜 로그인 구현을 월요일, 화요일, 수요일 동안 크루들의 4번의 리뷰를 통해 구현이 완료됐다. 역시 코드 리뷰는 바톤.
그리고 6주 차 목요일에 다시 출근하여 발표 준비와 함께 HTTPS를 추가하고 배포까지 완료했다. 정말 재밌었던 게 지금까지 배포를 진행하면서 이슈가 항상 발생했었다. 이번에도 마찬가지였고 현재 이슈는 사용자의 요청이 Nginx에 매핑을 어떻게 해야 할지에 대한 문제였다. 리액트의 싱글 페이지를 사용하고 있는 사용자는 백엔드 서버로부터 데이터를 받아 화면에 띄울 때 필요한 API를 호출하는 것은 실제로 브라우저가 하는 것이라는 것을 생각하게 되었다. 레벨 2에서 인프라, 네트워크에 약해서 정말 많이 고생했었는데 레벨 3에서 그 고생들로부터 얻은 지식이 하나하나 연결되어 결국 지금의 트러블슈팅을 해결할 수 있게 됐다는 것을 느끼는 기간이기도 했다.
다음날 3차 데모데이 발표를 진행했다. 발표자는 나랑 도리였다. 발표자체는 정말 무난하게 슥슥 진행됐다. 발표가 끝나고 피드백을 받았는데 3차 데모데이에서는 코치님들께서 바톤팀이 생각보다 더 빠르게 움직여서 새로운 프로젝트를 진행한 걱정이 사라지셨다고 말씀해주셨지만 실제 계획했던 주기능 구현이 늦어졌다는 사실 자체는 아쉬웠다. 이전에 3차 스프린트 회의에서 스프린트 주기를 줄여 고객들의 피드백을 반영하자는 계획이나 생각자체는 좋은 아이디어였지만 계획을 생각대로 진행시키지 못한 점은 다른 이슈가 있었다고 할지어다 아쉬운 부분이다. 결국 문제는 기존에 계획했던 프로젝트의 주기능을 한 사이클로 돌리기는 힘들다는 점이었다. 5주 차, 6주 차를 생각해 보면 팀원들이 출근하지 못하는 이슈로 주기능보다 보조기능에 더 집중해서 개발해 왔는데 크루 한 명 한 명을 위해서 프로젝트 추진을 늦추는 게 정답은 아니라는 것을 알게 됐다. 모든 팀원의 절반이 사라진다고 해도 계획을 늦추는 것이 아니라 주요된 내용을 기록하는 앱을 사용하여 최대한 모든 내용을 전달해 주려 노력하고 또는 주요 내용을 문서화하여 전파하면서 프로젝트가 흐트러지지 않도록 노력해 보는 것이 다음 스프린트의 목표로 잡아봤다.
🟩 4차 데모데이(론칭 페스티벌) (7주 차 ~ 8주 차)
팀 내에서 발생했던 이슈가 해결되면서 나름 차분하다고 느낄 수 있는 4주 차를 맞이하였다. 3차 데모데이에서 코치님들로부터 받은 피드백으로 팀에서 계획했던 한 사이클을 구현을 목표로 잡았다. 팀원들과 회의를 진행했고3주 차에 짧은 스프린트 주기로 고객의 피드백을 반영하면서 방향을 잡아보자는 계획은 좋았으나 생각보다 지키기가 굉장히 어려웠다는 말이 나왔다. 이전에 목표로 했던 한 사이클을 돌릴 수 있는 기능을 구현하기로 회의를 빠르게 끝내고 시안과 함께 API 명세서를 작성했다. 그리고 곧바로 API 구현에 들어갔다.
이번 4차에서 다른 팀들과 비교되는 부분은 팀 내 코드 리뷰가 잘 활성화된 부분이다. 백엔드 코드 컨벤션을 놓치거나 제안할 수 있거나 궁금한 부분을 커멘트로 달고 나 또한 크루들로부터 피드백을 받으면서 코드를 개선시키며 다양한 관점으로 분석해 볼 수 있었다.
공통 요구사항이었던 모니터링과 로깅도 진행했다. 프로메테우스에 그라파나를 추가해서 해볼 수도 있었지만 EC2를 하나 더 할당받아 사용하기에는 비용적으로 비효율적이라는 팀 내 결정으로 CloudWatch를 도입하여 EC2에서 기본으로 수집하는 매트릭과 CloudWatch Agent를 이용하여 원하는 로그 매트릭까지 수집하여 대시보드를 만들어 봤다. 예상하지 못한 오류 로그를 CloudWatch 대시보드에 접근하여 분석할 수 있는 부분이 가장 큰 장점이었고 약 15개월가량 이 데이터를 계속해서 접근할 수 있고 직접 관리하지 않아도 AWS에서 미리 자동화해놓은 부분에 역시나라는 생각이 들었다. 모니터링을 이용하면서 EC2 사용량(CPU, 메모리, Disk) 등에 대한 경보를 만들어 개발자가 직접 수동으로 확인하지 않아도 된다는 큰 장점은 서버를 관리하는데 용이했다.
오후에 타 팀들의 론칭 발표를 보면서 감탄사가 절로 나온 게 한 두 개가 아니었다. 이전에 피드백했던 부분들을 포함해서 전체적으로 더욱 퀄리티 높은 프로젝트를 보면서 우와 소리만 계속 내버리기도 했다. 이후에 팀별 부스를 통해서 서비스를 경험해보기도 했다. 우아한영업코스를 다니는 거 같은 크루들의 영업 실력에 한 번 더 놀라기도 한 시간이었다.
아직 레벨 4가 남았고, 많은 미션들과 이 프로젝트를 더 개선시킬 수 있는 기회가 있다는 것에 감사함을 느끼며 맛난 맥주 마시러 가겠다.
우아한테크코스 5기
레벨3 끝
👨🚀 🚀
'👨🚀 우아한테크코스 5기' 카테고리의 다른 글
레이어드 아키텍처에 패키지 구조를 개선해서 코드 생산성 높이기 (0) | 2023.10.09 |
---|---|
[20230709] 우아한테크코스 5기 LEVEL 3 - 바톤 프로젝트 2주차 (0) | 2023.07.09 |
[20230703] 우아한테크코스 5기 LEVEL3 - 바톤 프로젝트 1주차 (0) | 2023.07.03 |
[20230607] 우아한테크코스 5기 LEVEL2 - 레벨2 및 인터뷰 회고 (0) | 2023.06.23 |
[20230521] 우아한테크코스 5기 LEVEL 2 - 지하철 미션, 추가 비용 정책을 데이터베이스에서 가져오려면 (0) | 2023.05.21 |