Raycom IoT 작업자 앱
Native App / Flutter App
서비스개요
처음 회사에서 의뢰 받은 기술은 Objective-C로 만들어진 iOS앱에 대한 기능추가 및 유지보수 내용이었습니다.
Native 기술에서 비컨, 블루투스, Wifi등 다양한 네트웍 기술을 통해 산업현장의 작업자들에 대해 안전관리를 하는 기술을 서비스하는 내용입니다. 수주되는 업체별로 앱이 조금 분산되어 있어서 Objective-C로 만들어진 iOS앱만 작업자, 운전자, 관리자 3개 한세트가 3개의 회사로 분산되어 있었고, 안드로이드도 그만큼 있었는데 저는 초기에 iOS만 하기로 계약된 상태였습니다. 이후에 기능추가 및 유지보수를 하다가, Flutter로 앱을 전환하는것을 제안 드렸고, Flutter로 앱을 전환하는 프로젝트를 진행 / 완료 했고, 현재 효율적으로 서비스 하고 있습니다.
진행내용
Objective-C기술로 만들어진 앱을 9개 유지하는게 보통일이 아니었습니다. 코드베이스도 전부 다르고, 회사별로 특별한 내용들도 담겨 있어서, 기능을 추가하거나 버그를 수정하기에 신경을 상당히 많이 써야 했습니다. 각각의 로컬장비에서 개발 및 빌드하는 환경을 인수인계 받고, 6개월동안 기능추가 및 안정화로 계약 되어 있는동안, 모든 앱들의 모니터링을 추가하고, 기능을 추가하고 버그를 잡고 안정화를 했습니다.
이런 앱이 9개나 되었습니다.,
안정화가 된 상황에서 이 회사의 모바일 팀 구조에서는 도저히 유지가 불가능한 것을 공유하고, Flutter 앱으로 전환을 제안 했습니다.
진행해야할 내용은 상당히 많았습니다.
Bluetooth로 산업현장에 배치되어 있는 센서들의 정보를 통해 작업자들의 위치를 아주 세밀하게 처리하고, 스마트폰의 센서들로 추락감지, 걸음수, 심박수 등 안전에 영향있는 데이터를 수집하고 처리하는 기능과 작업자의 등록, 관리 푸쉬 메세지등 기초 서비스에 필요한 다양한 기능을 갖고 있었습니다.
Flutter로 전환 프로젝트에서는
플러터로 개발, 그리고 빌드하고 배포하는 과정도 클라우드 서비스를 통해 장비 없이 인증서 및 코드매직을 통해 빌드를 간소화할 수있도록 먼저 세팅 했습니다.
안드로이드 같은경우는 앱이 종료되어도 계속 신호를 받아야 하는 백그라운드 서비스가 되어야 했는데, 이 환경에서 특수한 비컨장비의 정보를 수집하고, 모으고, 정리해서 서버로 보내는 이런 과정들을 개발 했습니다.
환경별로 정말 많은 이슈들이 있었는데, 고생을 꽤 했습니다.
Flutter로 전환할때는 인증부터, 기초 화면들은 전부 Flutter로 개발 하지만, Native에서만 가능한 기능도 제법 있고, 오픈소스로 안되는 것들이 제법 많아서, 별도의 안드로이드, iOS 네이티브 플러그인들을 제작 했습니다. 특히 안드로이드의 백그라운드 처리 때문에 개발이 많이 되었습니다. 과정에서 인터페이스도 중요해서 pigeon을 사용하고 이후에 유지하기 쉽도록 정리 하고, 각각의 기능별로 Native Plugin들을 제작 햇습니다.
이게 만들어진 센서 신호들과, Flutter앱을 연결하고 꽤 오랫동안 비컨센서 테스트를 하고, 보완하는 과정을 거쳤습니다.
앱이 하루종일 안죽게 하기 위해서 정말 시간을 많이 썼습니다.
앱 개발 빌드가 나오고 부터는 새로운 앱을 출시 해야 했는데 그 과정도 제가 진행 했습니다.
앱스토어에 기초정보를 등록하고, 스크린샷을 만들고,
출시검토를 위해 PDF로 간단한 흐름을 안내로 만들어서 올리고 까지
과정을 통해 바로 심사도 통과 했고 앱을 정상적으로 출시 했습니다.
후기
회사의 서비스를 만들때 어떤 기술과, 배포 정책, 관리정책이 미치는 영향은 정말 큰 것 같습니다. 서비스를 유지하기에 적합한 기술을 고르고 제품을 판매하고 과정을 견뎌내며 기술을 꾸준히 개선하는데 정말 힘든것을 다시 느꼈고, 특히 모바일 같은 플랫폼의 변화가 빠르고, 센서 영향도 많은 IoT 서비스는 특히 얼마나 많은 수고가 들어가는지 다시 경험 했습니다. 과거에도 여러 차례 IoT 경험이 있었지만, 이렇게 직접적으로 고객의 안전에 영향이 있는 IoT는 처음 이었고, 그 중요한 반응성을 경험할 수 있어서 좋은 경험 이었고, 아직도 새로운 센서 작업이 생길때 요청이 발생하고 있습니다.