T
TechInsights
목록으로
BackEnd•2026. 01. 08.

쏘카프레임 - 블루투스 모듈

쏘카
쏘카 Engineering Team
쏘카프레임 - 블루투스 모듈

핵심요약

원문 보기

쏘카는 앱으로 차량, 일레클, 따릉이 등의 잠금 해제 및 제어를 지원합니다. 이를 위해 쏘카프레임은 파편화된 플랫폼 블루투스 API를 추상화하고, 기기의 맥락을 응집하며, iOS와 Android 간의 동작 차이를 해소하는 블루투스 모듈을 개발했습니다. 이 모듈은 확장성, 비즈니스 유연성, 테스트 용이성, 오픈소스 가능성 등의 가치를 제공합니다.

쏘카프레임 - 블루투스 모듈

쏘카의 이동수단 제어 방식

  • 쏘카, 일레클, 따릉이 등 이동수단 제어는 내부에 장착된 단말기와 서버 또는 블루투스를 통해 데이터를 송수신하여 이루어집니다.
  • 블루투스 통신은 서버 통신보다 신뢰성이 높아 가능한 경우 우선적으로 사용됩니다.
  • 쏘카프레임은 이러한 기능 구현을 위한 블루투스 모듈을 제공합니다.

블루투스 모듈 개발 배경

  • 플랫폼별 블루투스 API의 파편화 및 서비스 요구사항 대응의 어려움을 해결하고자 합니다.
  • 하드웨어 맥락 응집: 플랫폼 API(iOS: CBPeripheral, Android: BluetoothDevice)는 Low-Level 인터페이스로, 기기 맥락을 담지 못해 개발자에게 어려움을 줍니다.
  • 플랫폼 코드 차이: iOS CoreBluetooth와 Android bluetooth 간 스캔 동작 등의 차이로 인한 파편화를 해결합니다.

쏘카프레임 블루투스 모듈 구조

  • 추상화 계층: 표준 블루투스 규격 코드 위에 BluetoothHost (관리자)와 BluetoothRemote (연결 대상) 추상화 계층을 도입했습니다.
  • 기기 확장성: BluetoothRemote 인터페이스를 따르는 새로운 기기 구현체 추가 시 기존 로직 수정 없이 유연하게 확장 가능합니다.
  • 관심사 분리: 기기의 고유 정보(BluetoothSpec)와 동적 행동 지침(BluetoothHandle)을 분리하여 관리합니다.
  • 코드 예시: 쏘카프레임 사용 시 openDoorCommand와 같이 명확한 의도 선언으로 복잡한 절차 나열 대신 비즈니스 로직에 집중할 수 있습니다.

블루투스 모듈의 가치

  • 확장성: 수평적(새로운 기기 추가) 및 수직적(연결 관리, 보안 기능 고도화) 확장을 용이하게 합니다.
  • 인프라-비즈니스 분리: 하드웨어 복잡성을 은닉하여 앱 개발자가 비즈니스 로직에만 집중할 수 있도록 합니다.
  • 비즈니스 유연성: iOS와 Android 간 아키텍처 통일로 의사 결정 속도 향상 및 신규 기능 개발 유연성 확보합니다.
  • 테스트 용이성: 하드웨어 의존성을 끊어내 Mock 객체 구현 및 예외 상황 검증 용이성을 높입니다.
  • 오픈소스 가능성: BluetoothCore 계층은 기술 커뮤니티 기여 가능성을 열어둡니다.
#BackEnd#Architecture
쏘카
쏘카

쏘카 Engineering Team

기술 인사이트를 전달하는 공식 채널

You might also like

View all
토스 피플 : 새로운 길을 만들 땐 내 선택을 믿는다

토스 피플 : 새로운 길을 만들 땐 내 선택을 믿는다

"이 버튼 왜 안 눌려요?" 물류 현장의 목소리로 PDA 시스템 완성하기

"이 버튼 왜 안 눌려요?" 물류 현장의 목소리로 PDA 시스템 완성하기