신입 iOS 개발자의 1년간의 회고

펄핏 Perfitt·2022년 3월 3일
1
post-thumbnail

안녕하세요, 펄핏의 iOS 개발자 Nick입니다. 어느덧 펄핏에 입사한 지 1년이 지나가고 있네요. 😁
이번 포스팅에서는 제가 펄핏에서 신입 iOS 개발자로 업무를 진행하면서 있었던 일, 느낀 점, 앞으로 어떤 것들을 하면 더 나은 개발자가 될 수 있을지에 대해 했던 고민을 공유하려 합니다.

Perfitt-iOS App 적응기

제가 생각하기에 개발자에게 있어서 제일 빠르게 적응해야 하는 것은 코드라고 생각해요. 저의 경우 기존 프로젝트를 다운받아 사용 중이던 프레임워크, 코드 스타일, 화면이 어떻게 동작하는지 확인을 우선으로 했습니다. 아니 웬걸 프레임 워크는 제가 사용 하던 것과 일치하는 게 별로 없고 코드 스타일은 화면마다 다르며 화면 전환은 Segue 방식과 코드로 전환하는 방식이 혼방되어 있어서 제 머릿속에는 물음표가 가득했답니다.

물론 기존 코드를 받아보는 개발자들은 아마 맨 처음 프로젝트를 받았을 때 왜 이렇게 짠 거야?! 하는 경우가 많이 있을 것이라고 예상합니다.

저도 프로젝트를 다운받고 코드를 보면서 맨 처음에는 "왜 이렇게 구현한 거지?!" 라는 생각을 하고 있었지만, iOS 개발 공부를 시작한 지 1년도 안 된 저에게 있어서는 매우 다양한 방법으로 구현되어 있는 코드를 통해 혼자 공부할 때 얻지 못했던 다양한 경험을 해볼 수 있어 빠른 시간 내에 성장할 수 있어 좋은 경험이었습니다.


Perfitt에서 배포 실수...

결론부터 말하자면 App Store에 개발 서버 URL을 사용해서 배포해버린 사건이 있었습니다.

앱을 배포하는 것에 익숙하지 않았던 것도 있었고 릴리즈 하기 전에 사내 테스트용 ad hoc 배포를 위해 잠시 Scheme을 변경했던 게 원인이었습니다…

아침 운동 중 CTO 님께서 먼저 이슈를 발견하시고 저에게 슬랙을 주셨을 때 저는…

불안에 떨며 급히 운동을 마무리하고 일단 배포했던 버전을 내리고 CTO 님은 AWS API Gateway를 활용해서 급히 개발 서버 URL을 호출해도 실 서버 API를 호출 할 수 있도록 작업해주셨던 기억이 있네요… 이때 저는 해고되나…? 라는 생각을 하였지만 마니님과 도니님의 위로를 받으며 멘탈을 잡을 수 있었습니다.

그 이후 저는 배포를 할 때 저만의 프로세스를 두 가지 추가하게 되었습니다.

  1. Scheme Archive Build Configuration이 Release 인지 확인하기
  2. TestFilght를 통해 배포할 기능 및 개선 사항 확인하기

Fastlane을 활용한다면 배포 이슈가 더 줄어들겠지만 아직 활용하는 법을 숙지하지 못했기에 숙지 후 제가 적용한 방법을 공유하는 포스팅을 진행해볼게요.


New Project

새로운 프로젝트는 펄핏의 Commerce 기능을 업그레이드 하는 것이었습니다. 고려해야 할 것이 많은 프로젝트로 웹 프론트엔드 개발자이신 jean 님이 개발하실 상품 목록 화면과 연동되는 기능도 잘 구현되고, 안전성을 높이며 유지보수를 원활하게 할 수 있게 하고 싶었습니다. 그래서 이번 기회에 MVVM(Model View ViewModel) 디자인패턴을 도입하기로 하였습니다.

iOS 개발자는 저 혼자였기 때문에 초반에 MVVM구조를 구현하기에서 많은 어려움이 있었습니다. 이때 곰튀김 님의 RXSwift 강의를 들으면서 ReactiveX의 기본적인 사용 방법을 익히는 과정을 선행하였습니다. 그리고 MVVM 패턴을 구현하기 위해 다양한 블로그들을 보면서 더 많은 혼돈에 빠지게 되었는데요… 그 이유는 MVVM 패턴을 구현하는 방법이 블로그마다 너무 달랐기 때문입니다.

그래서 저는 구현에 대한 팁을 얻기 위해 이미 MVVM 패턴으로 구현된 안드로이드 개발자이신 도니님께 안드로이드에서는 MVVM 패턴을 구현방법에 대한 팁들을 얻을 수 있었습니다.

도니 님의 도움으로 하나의 ViewController를 MVVM 패턴으로 적용을 시키니 이제부터는 저는 로봇처럼 비슷한 작업을 노가다 하며 iOS 앱의 리팩토링을 진행했습니다. 결과를 보니 코드가 한결 깔끔하고 신경 써야 할 비즈니스 로직이 하나의 파일로 관리할 수 있게 되어 앞으로의 유지보수작업을 빠르게 처리할 수 있을 것 같은 생각을 하게 되었습니다.

왜냐하면, 기존 ViewController에는 UI 처리 로직, 비즈니스 로직 모두 하나의 ViewController안에서 처리하게 되었었지만 MVVM 패턴으로 변경하면서 ViewController는 오로지 UI 처리만, 비즈니스 로직은 Model 안에서 처리하는 방식으로 변경되었기 때문에 한 파일에서 어디 있는지 한~참 찾아가며 수정하는 일이 줄어들었기 때문입니다.

현재는 오랜 시간에 걸쳐 적용한 아키텍처는 잠시 수면 아래에 가라앉아있는 상태네요 😅 다시 아키텍쳐를 작업하여 안전성을 높이는 작업을 하기를 고대하며…


SDK 개발

펄핏은 발과 신발 사이즈 간의 매칭 알고리즘을 개발하여 오차없는 신발 사이즈를 추천하는 서비스인데요. 우리는 사용자에게 신발 사이즈 추천을 위해서는 사용자의 발 정보가 필요합니다. 발 정보를 얻기 위해 카메라를 사용하고 있는데요. 저는 이번에 발 측정을 위한 카메라를 다른 서비스에도 이용할 수 있게 만들기 위해 SDK를 개발하게 되었습니다.

iOS는 CocoaPods로 배포하기로 했는데요. 개발하면서 많은 이슈가 있었습니다. 저는 이 작업에 대해 공유하고 싶은 내용이 많아 다음 포스팅에 다뤄 보도록 할게요~ 🥲


1년간 느낀 점 및 계획

펄핏에서 1년간 가장 좋았던 점을 생각해보면 맨 처음 생각나는 것은 사람들이 아주 좋다는 게 떠오르는 회사입니다. 첫 회사이지만 앞으로 개발자로 생활하면서 우리 회사 분들 같은 사람들보다 좋은 사람들과 같이 일을 할 수 있을까? 라는 생각을 많이 하게 된 매우 유니크한 회사인 것 같습니다.

앞으로 펄핏 앱에서 하고 싶은 일은 TDD 도입과 새로운 프로젝트에서 마무리하지 못했던 디자인 패턴 도입을 하고 싶습니다.

개인적인 목표로는 SwiftUI를 이용하여 사이드 프로젝트를 진행 하는 것을 목표로 하고 있습니다. 사이드 프로젝트의 소식도 간간히 전할 수 있다면 좋겠네요.

그럼 신입 iOS 개발자 Nick(🤖) 의 1년간의 회고를 마치도록 하겠습니다. 긴 글 읽어 주셔서 감사합니다.

profile
Beyond The Size Limit

0개의 댓글