음 일단 5월 초에 배포 완료한 패밀리박스 4.0 프로젝트를 이제와서 적는게 이상할 수 있겠지만, KT를 나오고 잊어버리지 않기 위해 적는다.
아마 이전에 Project Memoir 라고 간단하게 적은 내용이 있을텐데, 당시에 공부했던 내용을 적은거라 굉장히 대충 적은 것을 확인할 수 있다;;
참고로, 내가 처음 인수인계 받은 패밀리박스의 버전은 02.02.22 버전이었고, 3.0, 4.0 두 번의 메이저 업데이트를 진행하였다.
What is FamilyBox 4.0 ?
표면적인 제목은 UI/UX 고도화였지만, 세션/토큰, 스토리, 프로모션, FCM 마이그레이션 등등 여러가지 기능이 몰래 추가되었고, 원래는 더 많은 기능이 추가될 뻔 했었다..(휴)
Process
모든 프로젝트 진행순서는 아래와 같다.
- 분석
- 설계
- 개발
- 테스트
물론 순서는 1-2-3-4-3-4-3-4-3-4-3-4- … - 배포 이다.
어딜가나 비슷 할 것이고, 위 단계에 조금 추가를 한다면 코드리뷰와 단위테스트, 통합테스트 등이 있을 것이다.
자세한 내용은 생략한다.
분석
개발자마다 개발 성향, 속도, 스타일 등이 모두 다르다.
그렇기 때문에 프로젝트를 진행하기 앞서 기능명세서를 통해 기능을 모두 정리하고, 공수를 산정하여 WBS를 작성한다.
우리는 당시 프로젝트를 진행할 때, 모바일은 aOS 2명, iOS 2명이었는데 편제가 나만 초급이고 모두 고급이셔서 중급개발자 기준의 공수를 잡기로 약속했었다.
이처럼 12월 1일에 프로젝트가 시작하기 전, 기능명세서와 기획서 초안을 바탕으로 공수를 산정하였고 이를 바탕으로 WBS를 작성하여 전체 일정을 잡게 되었다.
(물론 내부적으로 이슈가 많이 있어 협의하는 과정도 만만치 않았다..ㅠ)
설계
패밀리박스는 이미 안정적으로 돌아가는 앱이었고, 구글플레이, 원스토어 평점은 2018년 3월 3.0 버전 이후 4점 밑으로 내려와 본 적이 없을 정도로 굉장히 안정적인 앱이었다.
그러므로 안정성을 보장하되, 이전에 수많은 개발자의 손을 거쳐가 지저분해진 레거시 코드를 정리 할 필요는 있었다.
고민끝에 내린 결론은 히스토리를 알고있는 내가 메인을 잡고, 메인부터 레거시 코드를 정리해야겠다고 생각하였다.
그리하여 이전부터 관심은 있지만 실무에선 사용해보지 못한 MVVM 패턴을 메인과 몇몇 화면들에 적용하였고, 기존에 사용하지 않던 AAC도 와르르 사용하게 되었다.
하지만 시간관계상 기존의 안정성과 히스토리를 모두 뜯어고칠 순 없었고, 어디서 발생할지 모르는 사이드이펙트를 몰랐기에 네트워크 모듈과 DB등은 그대로 사용하기로 하였다.
(통신사 요금제 종류가 워낙 많다보니..)
그러므로 최소한으로 DataBinding, LiveData 정도만 사용하여 메인 구조를 바꾸게 되었다.
개발
우리는 5번의 시연이 잡혀있었고, 1번은 일정이 맞지 않아 총 4번의 시연을 진행하였다.
물론 모두 성공적이었다.
개발하며 Git은 이 내용과 같이 관리하였다.
개발 이슈가 있을때는
- aOS 개발자끼리 회의 및 협의
- aOS, iOS 개발자끼리 회의 및 협의
- aOS, iOS, 서버 개발자끼리 회의 및 협의
- aOS, iOS, 서버 개발자, 기획자 + 디자이너끼리 회의 및 협의
- aOS, iOS, 서버 개발자, 기획자 + 디자이너, 패밀리박스 담당자끼리 회의 및 협의
- ……
……
등등 커뮤니케이션을 통해 최대한 서로 배려하며 개발을 진행하였다.
물론 내부적인 갈등도 있었지만, 자세한 내용은 생략한다.
테스트
가장 중요하지만, 가장 힘든 과정이라고 생각한다.
일단 실질적으로 4번의 시연이 있어 시연 중간중간마다 체크를 하며 왔고, 메인을 뜯어고쳤더라도 기존의 로직은 당연히 유지했기에 큰 문제는 없을거라 생각했다.
하지만 패밀리박스는 100만명 이상이 다운로드 받은 앱이기 때문에, 수많은 스마트폰과 사용자를 100% 테스트할 수 없기 때문에 개발 완료 후 1달간의 테스트기간을 거쳐 안드로이드 04.00.00 버전 1차 출시를 하였고, 2주동안 빠르게 VOC와 ANR을 토대로 Hotfix 04.00.01 버전을 출시하게 되었다.
1차출시를 빠르게 해야했던 이슈나 내부적인 테스트 방법은 구체적으로 적을 수 없는 문제가 있지만 큰 틀에서는 위와 같이 진행을 하게 되었다.
이슈
사실 내부적으로 이슈가 굉장히 많았다.
테스트 기간 제외하고 12월 1일부터 3월 31일까지 프로젝트를 진행하면서 사람문제로 이렇게 이슈가 많을줄은 상상도 못했었다.
처음엔 팀이 해체될 뻔 하기도 하고, 프로젝트가 엎어질 뻔 하기도 하고, 담당자도 중간에 바뀌고, 기타 등등..
좋은 환경 뒤에는 환경을 만드는 과정이 있었다는걸 잊지 말아야겠다..ㅠㅠ
느낀점
나중에 누군가 나에게 어떤 사람들과 일하고 싶냐고 물어본다면 지금의 나는 “커뮤니케이션”을 잘 하는 사람이라고 말하고 싶다.
프로젝트를 한다는 것은 다양한 직군이 모여 같은 목표로 나아가기 위해 모여 일을 하는 것이다.
물론 같이 달리며 옆사람과 부딪힐 수도 있고 넘어질 수 있다.
하지만 서로 커뮤니케이션을 하며 다시 방향을 잘 잡아줄 수 있는 사람들과 일을 한다면 좋을 것 같다.
그리고 물론 그런 사람들과 일을 했기에 성공적으로 패밀리박스 4.0 프로젝트를 마칠 수 있었던 것 같다.
앞으로 사건사고도 많겠지만 프로젝트를 하며 엉킨 것이 있다면 잘 풀어나갈 수 있도록 더 성장 할 것이다.