[쏘카] iOS 개발자 1년차 회고

김상우·2024년 5월 15일
33
post-thumbnail
post-custom-banner

쏘카 iOS 개발자 합격 후기 글을 작성한지 벌써 1년이 지나 회고를 써보려한다.

about work.

일에 대한 회고.

입사 후 지금까지 회사에서 했던 모든 일들을 노션에 정리하고 있다. 그래야겠다고 다짐을 했던 건 아닌데, 기록에 집착을 하는 성격이 있어 어쩌다보니 빠지지 않고 모두 기록하게 되었다. 겪었던 문제들, 그걸 내가 어떻게 해결했었나 등등.

쏘카 앱 메인화면 개발을 했던 게 기억에 많이 남는데, 메인화면 디자인을 개편하고, 어드민과 Server Driven 을 도입해 메인화면을 구성하는 컴포넌트들을 유동적으로 가져갈 수 있도록 개발했었다.

모든 유저들이 보는 핵심 화면을 개발한다는 것에 대한 부담이 있었는데, 그게 오히려 좋았다. 책임감을 갖고 더 나은 코드를 작성하기 위해서 깊은 고민을 하게 됐던 것 같다. 이 프로젝트를 하면서 디자이너, 기획자, 웹 + 서버 개발자분들과 얘기를 진짜 많이 했던 거 같은데 그 시간들도 좋았다.

→ 결과물. 각 컴포넌트 사이즈를 Server Driven 으로 유동적으로 가져갈 수 있게 개발했다.
(Server Driven 에 대해 올렸던 글)

제일 의미있던 프로젝트는 쏘카 프레임 개발인데, 쏘카 iOS 앱에 필요한 라이브러리 및 모듈 개발이다.

쏘카 iOS 앱은 모듈화 되어있지 않았었다. 하지만 코드 생산성과 사업의 미래에 모듈화는 필수다.
쿠팡을 예로, 쿠팡 이츠, 쿠팡 플레이 등 모든 앱에서 공통적으로 사용하는 Low Level 모듈이 있을 것이라고 확신한다. 카카오톡, 카카오 뱅크등 다른 대규모 서비스들도 마찬가지.

쏘카도 쏘카 앱 뿐만 아니라 일레클(전기 자전거 앱), 유레카(세차 앱), 핸들러(차량 조달 앱) 등을 효율적으로 유지 보수해야 한다. 그리고 성장하며 서드파티 앱들이 더 생겨날 것이다. 이러한 맥락에서 iOS 팀은 잠시 피쳐 개발을 미뤄두고, Tuist, RIBs, Clean Arichitecture 를 도입했으며, 이런 서드파티 앱들에서 공통으로 사용할 여러가지 라이브러리 모듈들을 개발하게 되었다.

일반적인 앱이라면 반드시 개발하게 되는 단위 기능들이 있다. 하나의 예를들어, 에러에 대한 처리를 하지 않는 앱은 없다. 쏘카는 쏘카만의 에러 처리 방식을 약속, 체계를 구축하고, 그에 대한 모듈을 만들었다. 이제 쏘카 유니버스의 모든 앱에서 이 에러 처리 모듈을 채택해서 사용한다면, 모든 앱에서의 에러 처리 방식을 통일하게 되며, 앱마다 에러 처리 로직을 다른 방식으로 새롭게 작성하거나 다른 앱의 코드를 복붙할 일이 없다.

Swift 의 일반적인 센스에서는 enum 으로 에러들을 선언하지만, 우리는 우리의 아키텍처에 맞게 enum 이 아닌 다른 방식으로 에러를 선언했고, 근간이 되는 에러를 정의하고, 그것에서 파생시켜 여러가지 종류의 에러들을 새롭게 선언하여 우리만의 에러 체계를 새롭게 잡았다. 또한, 쏘카에선 RxSwift 를 사용하기 때문에 RxSwift 의 subscribe 메서드와 쉽게 결합할 수 있는 형태의 에러 처리 루틴을 선언했다.

또 한가지 예를들어, 웬만한 앱들에선 사용할 데이터들을 여러가지 Context 와 함께 저장한다. 앱의 프로세스가 active 한 동안 살아있는 휘발성 메모리 방식, 앱의 생명주기와 상관없이 디바이스에 저장할 Disk 방식. 암호화 알고리즘을 거쳐서 보안을 높인 저장 방식, 정해진 만료기간 동안 새롭게 fetch 할 필요없이 값을 가져오는 캐시 방식의 저장 등, 다양한 택틱들이 있을 것이다. 이러한 저장 Context 전략들을 체계화 한 모듈을 만들고, 이 모듈을 사용하는 쪽에서의 저장 방식을 통일한다.

이 외에도 앱의 저기반에서 사용할 수 있는 Low Level 모듈들을 많이 구축했다. Serialize/Deserialize, 딥링크 처리, 웹브릿지, 로깅, Migration, RxSwift sugar extension 등 등 .. 구색을 갖춘 앱이 필요할만한 것들은 개발을 해두었다. 문자열, 디자인 시스템 등 상대적으로 앱 단과 가까운 High Level 모듈도 개발했다.

아키텍처와 모듈화에 관심 있었고, 코드 전체적인 그림을 그리는 능력, 미래에도 흔들림없이 안정적인 구조를 설계하는 능력을 기르고 싶었기 때문에 더 의미가 있었다. 약 7~8 개월에 걸친 초대형 프로젝트였는데, 다른 대기업에서는 할 수 없을, 밑바닥부터 기초공사를 닦아가는 경험을 할 수 있었다.

신세계 구축의 치열한 흔적.

about life.

회사 생활에 대한 회고.

입사 초반 한 달 동안은 매일 쏘카를 타고 출퇴근했었다. 직원은 75% 할인을 받는다. 지금 생각해보면 매일 3시간씩 어떻게 운전했는지 모르겠는데 입사뽕에 차서 가능했던거 같다. 애사심을 갖고 타볼 수 있는 차종은 거의 다 타봤다. 직접 타면서 느낀건 쏘카가 간단하게 차를 빌리기 위한 용도로 정말 좋다는 것. 30분도 빌릴 수 있고, 전국에 쏘카존 개수가 파리바게트 개수보다 많다. 그만큼 아무대서나 빌릴 수 있다.

회식 사진들. 회식을 야무지게 자주한다. 회식을 하지 않더라도 점심시간에 자주 나가서 사먹는다.

일반적인 루틴은 점심 사먹고 → 커피 내기 가위바위보 하고 (도파민 충전) → 서울숲 산책.
그 중 누가 7일 연속 커피 가위바위보를 졌다는 전설도 있다 ㅎ. 잠깐 쏘카를 빌려서 점심을 먹고 오기도 한다.

서울숲의 모바일 개발자들. 월급 루팡하고 있는 모습이 아니다. 회사 바로 앞에 산책할 수 있는 곳이 있어서 좋다. 가끔 서울숲에 돗자리 깔고 짜장면을 시켜먹거나 피자를 시켜먹을때도 있다. 여기 짜장면 집은 이 넓은 서울숲에서 어디 앉아있는지 귀신같이 알아서 찾아오신다.

바쁜게 지나간줄 알고 워크샵 갔는데 맥북 들고 이슈 대응했던 건에 대하여. 늦여름에 가평으로 워크샵을 갔었다. 이튿날 아침에 풀장 위로 비가 내리는 모습이 기억난다. 그리고 PM 분이랑 통화로 이슈 대응 얘기했던것도..

겨울에는 요러고 귀엽게 논다. 저 눈오리 군단이 사람들 지나가면서 사진찍는 핫플이 되었다.

iOS. @나르 @모로. 회사에서 본명이 아닌 닉네임을 사용하는데, 이게 회사 분위기가 편하고 자유로운 데 큰 역할을 하는 것 같다. 월화수목금을 아벨로 불리고 토일만 김상우로 불리니 이젠 아벨이 본캐고 김상우가 부캐가 된 기분이다.

365일 동안 아벨로 열심히 살아온 내 자신을 칭찬하며 마무리. 앞으로의 일들을 기대하며 언젠가 쿨타임이 차면 다시 회고글을 써봐야겠다.

profile
안녕하세요, iOS 와 알고리즘에 대한 글을 씁니다.
post-custom-banner

8개의 댓글

comment-user-thumbnail
2024년 5월 16일

회사 분위기가 좋아보이네요!
파이팅

1개의 답글
comment-user-thumbnail
2024년 5월 21일

멋있어요 !

1개의 답글
comment-user-thumbnail
2024년 5월 23일

재미있어 보여요

1개의 답글
comment-user-thumbnail
2024년 6월 18일

제가 없어서 서운하네요

1개의 답글