Resume ↗

03 · LGSC

약 200개 제품군과 오프라인 환경을 감당하는 하나의 공통 구조

LG 가전제품을 휴대폰과 연결해 실시간 데이터 확인과 제품 제어를 제공하는 애플리케이션

기간
2023.11 ~ 2025.12
팀
4인 개발
역할
요구사항 분석 · 프론트엔드 아키텍처 · 상태 관리 · 공통 핵심 기능 개발
기술
Flutter · Dart · RxDart · Drift · Wi-Fi (SoftAP) · TCP·TLS Socket · Laravel · AWS
실제 화면 (일부 데이터 블러 처리)

Background

  • 제품군마다 서로 다른 데이터 파싱 구조를 가지고 있었습니다.
  • 초기 시연 제품은 안정적으로 동작해야 했습니다.
  • 이후 추가되는 제품군에도 대응할 수 있는 확장성이 필요했습니다.
  • 인터넷이 없는 환경에서도 실시간 정보 확인과 제어가 필요했습니다.
  • 국가 및 기능별 사용 통계 수집이 필요했습니다.

Role & Users

담당 범위

  • 요구사항 분석
  • 프론트엔드 아키텍처
  • 상태 관리
  • 공통 핵심 기능 개발
  • 냉장고 제품군 핵심 기능 개발
  • 백엔드 개발
  • 데이터베이스 설계
  • 배포
  • 팀원 관리
  • 일정 관리
  • 고객사 커뮤니케이션

사용자

  • 가전제품 수리기사
  • 제품 소프트웨어 개발자

Key Challenge

로그 동기화 직접 구현

문제

기존 솔루션은 네트워크가 끊기면 요청이 쌓였고, 오래 쓰면 앱이 꺼졌습니다.

접근

  • Drift / SQLite 로컬 데이터베이스에 로그를 행 단위로 저장했습니다.
  • 네트워크 복구 시 순차 전송하고, 전송 완료·재시도 상태를 관리했습니다.

Crash Rate 8% → 1%

Challenge 2

공통 컴포넌트

문제

전체 제품군 스펙이 확정되지 않은 상태에서 팀이 쓸 공통 UI가 필요했습니다.

접근

  • 냉장고 제품군 기준으로 공통 구조를 먼저 구현했습니다.
  • 제품군별 차이는 확장 포인트의 내부 분기로 대응했습니다.

약 200개 제품군이 하나의 공통 구조를 공유

Key Decision

MPTCP 검증과 iOS 적용

Android·iOS의 MPTCP 지원을 검증하고, iOS에 네이티브 URLSession 옵션으로 적용했습니다.

외부 솔루션을 그대로 채택하지 않고 내부 동작 원리를 검토했습니다.

Decision 2

파싱 룰 저장 DB 설계

사업부와 제품군마다 다른 파싱 룰을 저장할 수 있는 데이터베이스를 설계했습니다.

Manage Parsing Rules

  1. 파싱 룰 업로드

    Excel 기반 관리

  2. 앱 로컬 저장소 업데이트

    변경된 파싱 룰만 다운로드

  3. 새로운 파싱룰 적용

    변경된 출력 확인

Outcome

MAU
7,000+
지원 제품군
약 200개
비정상 종료 발생률
약 8% → 약 1%스토어 측정 기준
오프라인 로그 동기화
자체 구현

정리

  • 실제 서비스로 배포되어 운영 중입니다.

Reflection

상태 관리

  • 당시 RxDart Stream 기반 상태 관리를 사용했습니다.
  • 다시 구현한다면 Riverpod을 검토하고 싶습니다.
  • 초기 학습 곡선과 유지보수성을 개선하고 싶습니다.

공통 통신 로직

  • 최초에는 모바일 앱만 고려했습니다.
  • 이후 웹 지원 요구가 발생했습니다.
  • 다시 설계한다면 통신 로직을 독립 라이브러리로 분리하고 싶습니다.

테스트 문화

  • 이 프로젝트는 자동화 테스트 없이 운영했습니다.
  • 그 아쉬움이 이후 ReadON(486건)·물류 시뮬레이터(1,281건)의 테스트 체계로 이어졌습니다.
제품 연결 · 원격 단품 제어
실시간 모니터링 · 사용 이력 데이터 조회
실시간 오류 확인 · 조치 가이드
제품 기능 대시보드 · Quick Check