쏘카가 2019년 앱 전면 개편 시 설계한 Android/iOS 공유 앱 프레임워크(SocarFrame)의 철학과 아키텍처 1편이다. 개발자 경험(DX)과 팀 생산성을 핵심 설계 목표로 삼아 "마치 한 사람이 작성한 듯한" 코드 일관성과 플랫폼 경계 극복을 추구한 원칙을 소개한다.
핵심 포인트- Android·iOS 양 플랫폼이 공유할 수 있는 추상화 경계를 드러내 한 플랫폼 개발자가 다른 플랫폼 코드를 빠르게 이해 가능
- 플랫폼 지식을 라이브러리 레이어에 격리해 비즈니스 기능 개발자가 플랫폼 선택을 매번 고민하지 않도록 설계
- 엄격한 코딩 컨벤션 + 인지적 축약 유도로 코드 일관성 확보 — 서로의 실수를 바로잡고 위임이 쉬운 환경
- 화면을 웹으로 교체하거나 다시 네이티브로 전환해도 문제없도록 UI 레이어 경계 설계
- 주니어는 비즈니스 개발하며 프레임워크(플랫폼 설명서)로 점진적 성장, 시니어는 프레임워크 진화에 집중
상세 정리- 설계 동기: 잉여 시간 확보 → 인프라·라이브러리 개선 재투자 → 다시 잉여 시간 증가 선순환 구조 목표
- 플랫폼 추상화: 같은 시스템의 Android·iOS 코드가 동일한 사고방식으로 읽히도록, 한 플랫폼 개발자가 반대편 코드 빠르게 파악
- 크로스플랫폼 대비 포지셔닝: Flutter/RN 대비 생산성 낮지만 네이티브 품질·장기 안정성 유지, 기존 네이티브 서비스에서 채택 용이
- 넓은 커버리지 원칙: "없으면 할 법하지 않으니 없는 것, 되는 건 매뉴얼에 있다" — 개발자가 매번 새로 조사 불필요
- 웹-네이티브 전환 설계: 화면 레이어 경계 구분으로 웹·앱 개발자 모두 활용, 서비스 유동성과 UI 완성도 사이 선택 폭 확보
- 주니어 온보딩: 진입 장벽 높아지지만 난이도 증가가 아닌 배울 양 증가, 프레임워크 코드로 플랫폼 이해를 점진적으로 습득
- 시니어 역할: 기술 트렌드 선반영 + 미래에 필요한 기반 기능 개발 — 할 것/배울 것/미리 해둘 것 명확히 분리
- 기대 효과: 제품 안정성·개발 속도·기획 피드백 속도 향상, AI 코드 완성 정확도 부수 효과(일관된 코드 = 좋은 학습 데이터)
- 운영 과제: 예외 없는 규격 준수 유지가 가장 어렵고, 프레임워크도 기술 트렌드에 맞춰 다음 세대로 지속 진화 필요
왜 읽나모바일 팀 공통 프레임워크를 설계하거나 Android·iOS DX 통합을 고민하는 팀에게 쏘카의 의사결정 맥락을 직접 들을 수 있다. 기술 구현보다 "왜 이렇게 설계했는가"에 집중해 아키텍처 판단 근거가 풍부하다.