현재 다니고 있는 회사의 자금사정이 급격히 악화되어 구조조정이 6개월 간격으로 두 번 진행되었고, 100명 이상이던 직원은 20명으로 줄어 들었다.
회사는 추가 투자가 절실한 상태였는데, 다행히 MWC라는 전시회에 회사를 소개할 수 있는 소중한 기회를 얻었다.
그 결과 다음과 같은 신규 프로젝트가 생성되었다.
- 프로젝트 개요
- 개발 기간 : 2개월
- iOS, Android 앱을 App Store 및 Google Play에 출시
- 기획자 없음
- PM 없음
- 디자이너 없음
- 앱 개발자 1명 : 기획, PM, 1차 디자인, 앱 개발을 모두 담당해야 함
- 백 엔드 서버 개발자 1명
- 개발 항목
- 사용자가 개인 영상을 업로드하고 영상을 공개할 수 있는 서비스
- 서버에 존재하는 영상의 재생 및 화면 확대&축소&이동 기능
- 세 개의 영상을 동시에 재생하는 기능
- 사람의 모션 데이타를 선과 원으로 영상 위에 표시하는 기능
- 회원가입, 로그인 등의 개인화 기능
기존의 기획자, PM, 디자이너, QA 엔지니어, 안드로이드 개발자 3명, iOS 개발자 2명이 있었던 개발조직이 iOS와 Android를 모두 개발할 수 있는 개발자 한 명으로 축소 되었지만, 회사는 이런 상황을 외면하고 이 프로젝트를 일정안에 완료 하기를 요구했다.
회사의 직원 모두가 이 프로젝트는 불가능한 것임을 알고 있었지만, 앱 개발자인 나에게 강요된 대답은 “가능합니다” 라는 것이었다.
회사의 압박 때문에 이 프로젝트를 수락한 것이기도 했지만, 사실 나는 이 프로젝트를 일정안에 완료 할 수 있다는 자신감이 있었다.
20년 차 앱 개발자로서 다양한 iOS, AOS 앱을 개발하고 출시한 경험도 그 자신감의 이유 중에 하나지만, 사실 진짜 자신감의 원천은 Clean Architecture를 앱 개발에 적용해서 개발 속도를 높이는 방법에 대해 잘 알고 있다는 것이었다.
그 동안 Clean Architecture를 앱 개발에 적용하면서 많은 실패와 성공을 경험했고, 그로 인해 Clean Architecture를 앱에 적용해서 개발 속도, 품질, 확장성, 유지보수성을 최대화 하는 방법을 알게 되었는데, 그것이 내 자신감의 진짜 원천이었다.
오히려 내가 이 프로젝트에 가장 큰 걸림돌이 될 것이라고 생각한 것은 여러 번의 구조조정을 거치면서 낮아진 직원들의 사기였다.
대부분의 직원들은 의욕을 상실한 상태였고, 임원들 또한 주위를 살필 수 있는 여유가 없는 상태였다.
그래서 앱의 기획 및 서버 연동 그리고 앱 UI 등을 논의하고 결정하는 부분에 있어서 다들 소극적인 태도를 보였는데, 그로 인해 프로젝트를 진행하는데 많은 어려움이 예상되었다.
어찌됐건 이런 상태에서 프로젝트는 시작되었다.
Clean Architecture를 적용한 프로젝트는 다음과 같은 순서로 진행되었다.
- Clean Architecture 모듈 정의 : Data, Domain, Presentation
- Presentation 모듈 개발
- Data 모듈에 Mock Repository 만들고, Domain 모듈의 Usecase를 통해 Data를 Presentation에 전달하는 구조 개발
- 백엔드 개발자에게 필요한 API 및 Protocol 정리해서 전달
- 개발자의 디자인 감각으로 모든 화면 개발
- 프리랜서 디자이너 섭외 및 업무 범위 협의
- 디자이너에게 와이어 프레임 제공 및 유저 플로우 설명
- 디자이너의 UI Guide 적용
- 백 엔드 서버 개발자가 개발한 API 연동 및 추가 변경 협의
- Mock Repository를 Remote Repository로 대체
- 스트링 Localization : Korean, English
- 앱 심사 제출 : iOS, AOS
- 앱 심사 승인
다음 그림은 UI/UX 디자이너에게 전달한 기획서라고 할 수 있는 한 장짜리 PPT 문서다.
이 문서는 내가 개발과 기획을 같이하면서 만든 문서로 디자이너에게 전달하기에는 너무 부실한 문서지만, 다행히 개인적인 친분이 있는 디자이너라서 기획서가 없이 진행되는 것을 이해해 주었다.
디자이너는 이 문서를 바탕으로 세부 기획을 다시하고 UI Guide를 만들어 주었는데, 이 때부터 앱이 제대로 된 모양을 가질 수 있었다.
다음은 디자이너가 작성한 UI Guide 샘플이다.
짧은 개발일정 때문에 야근과 주말 출근을 할 수 밖에 없었고, 앱 개발의 모든 책임이 앱 개발자 한 명에게 지워진 상태였기 때문에 나는 어둡고 적막한 사무실에서 혼자 남아 일을 할 때가 많았다.
당연히 몸과 마음이 지쳐갔지만 이런 나를 지탱하게 해 준 것은 Clean Architecture를 기반으로 설계되고 작성된 코드들이었다.
내가 기획자, PM, 개발자의 역할을 왔다 갔다 하면서 정신이 없는 상황에서도 소스 코드로 다시 돌아오면 Clean Architecture가 코드의 구조와 흐름을 명확하게 알려주어서 내가 코드속에서 어디에 있어야 하고, 어디를 봐야 하고, 어디로 가야 하는지에 대해 알려주었다.
Clean Architecture를 잘 적용한 덕분에 iOS 와 Android 코드를 80% 이상 일치하게 작성할 수 있었으며, 그로 인해 개발 속도를 빠르게 할 수 있었고 유지보수성도 크게 향상시킬 수 있었다.
iOS와 Android 소스 코드의 일치율이 높아짐에 따라 iOS와 Android 앱에서 동일한 UI 버그가 나오고, 동일한 코드를 수정해서 버그를 해결하는 일이 잦아졌다.
또한 소스 코드의 구조가 관심사 분리의 원칙에 따라 각 모듈별로 잘 정리되었기 때문에 기능을 추가할 때 다른 모듈이나 기능들에 영향을 주지 않아 확장성이 높아졌고, 또한 그로 인한 버그들도 미연에 방지되어 기능의 안정성과 개발 속도를 높일 수 있었다.
Clean Architecture를 적용하고 야근과 주말 출근으로 개발 시간을 확보해도 앱을 MWC 시연전에 마켓에 출시할 수 있을지는 확신할 수 없었다.
앱 심사과정에서 서버의 오류와 앱 설명 부족 등의 이유로 심사가 번번히 거절되었기 때문인데, 그로 인해 새벽에 수시로 일어나서 심사결과를 확인하고, 심사가 거절되었으면 그에 대한 수정을 하고 다시 심사를 제출하는 일을 마켓에 출시할 때까지 반복했다.
다행히 앱 심사는 MWC 시연 며칠전에 모두 통과되어 마켓에서 다운로드가 가능 해졌다.
불가능한 일정의 프로젝트임에도 Clean Architecture가 길을 잃지 않도록 가야할 방향을 잡아줬고, 내 몸과 정신과 시간을 연료로 사용해 이 프로젝트를 일정안에 완료할 수 있었다.
이 프로젝트의 산출물인 iOS와 Android 앱은 MWC에서 잘 시연되었다.
그래서 나는 이 프로젝트의 최초 목표가 성공적으로 달성되었다고 판단한다.
지금까지 겪어보지 못한 악조건 속에서 길을 잃지 않고 프로젝트를 성공적으로 마무리한 나에게 스스로 고생했다는 말을 해주고 싶고, 기획서 없이 UI Guide를 만들고, 기획적인 부분까지도 도와준 디자이너분께 정말 감사하다는 말을 드리고 싶다.
앱의 최종 스크린샷과 동작 동영상은 아래와 같다.
- 앱 설치 링크
- iOS : https://apps.apple.com/us/app/4dist/id6474726948
- Android : https://play.google.com/store/apps/details?id=com.fdreplay.app.fdist
- 앱 리뷰
'프로그래밍 > Clean Architecture' 카테고리의 다른 글
네이티브 vs 크로스 플랫폼: 앱 개발의 선택 (0) | 2024.03.29 |
---|---|
Android에 Clean Architecture 도입하기 (0) | 2023.08.29 |
Clean Architecture에 대한 개인적인 생각 (0) | 2023.08.29 |
Clean Architecture 도입시 고려할 점 (0) | 2023.08.29 |
Clean Architecture 단점 (0) | 2023.08.29 |