예상치 못한 프로젝트

2026년 9월

2026년 2월, Health Mirror를 만들어봐야겠다고 처음 생각했습니다.

일주일쯤 지났을 때, 앱이 내 휴대폰에서 처음부터 끝까지 일단 작동하기 시작했습니다.

그때 속으로 생각했던 기억이 납니다. '와, 이게 진짜 되네?'

실제로는 전혀 안 되고 있었습니다. :)

하지만 그 첫 일주일은 그보다 훨씬 중요한 사실 하나를 알게 해주었습니다.

아이디어를 떠올리고, 그걸 실제로 만드는 데까지 걸리는 거리가 갑자기 훨씬 짧아졌다는 사실이었습니다.

당시 나는 수석 제품 매니저(Principal Product Manager)였습니다.

내 일은 주로 '무엇을(what)' 만들지, 그리고 '왜(why)' 만들어야 하는지 정의하는 것이었습니다. 그 아이디어를 '어떻게(how)' 구현할지는 풀스택 개발팀과 IT, 운영팀을 비롯한 수많은 사람들의 손을 거쳐야 하는 영역이었습니다.

대형 언어 모델(LLM)은 그 구도를 완전히 바꾸어 놓았습니다. 낯선 영역으로 들어가는 내 곁에 AI 파트너가 생긴 것입니다. 물론 나중에야 알았지만, 그 길 역시 결코 직진은 아니었습니다. :)

Health Mirror는 그렇게 시작되었습니다. 이 새로운 방식이 나를 과연 어디까지 데려다줄 수 있을지 직접 확인해보는 일종의 실험이었습니다.

일주일 만에 만든 앱이 현실을 만났을 때

Health Mirror의 초기 버전은 AI 추론을 포함한 모든 기능을 휴대폰 안에서만 처리하도록 만들었습니다.

개인적으로 아주 마음에 드는 아키텍처였습니다. 사진 촬영, 이미지 전처리, 모델 실행, 결과 저장까지 전부 기기 내부에서 끝났기 때문입니다. 깔끔하고 단순했으며, 무엇보다 개인정보 보호 측면에서 아주 훌륭했습니다.

문제는 이걸 iOS와 Android 모두에서 동작하는 진짜 앱으로 구현하려 했을 때 터졌습니다.

그 후 한 달 동안 나는 필요한 핵심 기능들의 의존성 사슬을 맞추느라 두더지 잡기 게임을 해야 했습니다. :)

의존성 충돌을 하나 해결하면 다른 문제가 불쑥 튀어나왔고, 라이브러리 하나를 업데이트하면 멀쩡하던 다른 기능이 작동을 멈췄습니다.

한 달 내내 두더지만 잡고 있던 끝에, AI 파트너가 마침내 이렇게 말했습니다. "더 이상 드릴 수 있는 제안이 없습니다. 이 생태계가 너무 빠르게 변하고 있네요. 올해 말쯤이면 가능할지도 모르겠습니다."

우리는 실패를 인정했습니다.

당시 프로젝트 노트는 아주 단호하게 적혀 있습니다.

당시 프로젝트 노트에서

## ⚠️ Known Constraints & Decisions

### ❌ Abandoned Approach

* TensorFlow.js + React Native (Expo)

* Reason: incompatible with modern RN/Expo architecture

그리고 이렇게 덧붙여졌습니다.

당시 프로젝트 노트에서

## 🧠 Key Lessons Learned

* On-device AI with Expo + TFJS is not viable (current ecosystem)

* Native/runtime layer matters more than JS layer for ML

...

그래서 팀을 교체했습니다

두 번째 AI 파트너를 합류시켰습니다.

셋이 모이자 드디어 제법 그럴듯한 아이디어 회의가 가능해졌습니다. 시간이 지나면서 한 파트너는 아키텍트 역할을, 다른 파트너는 개발자 역할을 맡게 되었습니다.

비슷한 시기에 내 모델에서 약간 민망한 허점 하나를 발견했습니다. :)

초기 모델은 이미지 분류에서 하나의 정답만 고르는 Softmax 방식을 사용하고 있었습니다. 이후 나는 혀의 여러 특성을 독립적으로 포착하기에 더 적합한 Sigmoid 방식으로 바꿨다고 생각했습니다.

하지만 알고 보니 진짜 Sigmoid가 아니라, Softmax 기반으로 시뮬레이션된 결과물에 불과했습니다.

결국 우리는 모델을 다시 학습시켰습니다.

그리고 출력 품질을 높이기 위해 또 다시 학습시켰습니다.

그리고 또 한 번. :)

4월쯤 되자, 우리는 기존 방식을 땜질하는 일을 그만두기로 했습니다.

그리고 본격적인 구조 전환(Pivot)에 나섰습니다.

"휴대폰 밖으로 나가야만 하는 최소한의 요소는 무엇인가?"

이 질문 하나가 아키텍처의 물꼬를 터주었습니다.

카메라 촬영, 이미지 디코딩, 텐서(Tensor) 준비, 그리고 머신러닝 추론까지… 이 모든 과정을 iOS와 Android 모두에서 완벽히 작동하는 단 하나의 모바일 의존성 사슬에 억지로 맞출 필요가 없었던 것입니다.

우리는 좁게 정의된 기능 하나만 클라우드로 옮기기로 했습니다.

바로 '추론'이었습니다.

나머지 모든 과정은 처음 원했던 대로 기기(Edge) 안에 그대로 둘 수 있었습니다.

물론 그 초기 설계조차 처음에는 원본 이미지를 추론 서비스로 전송하는 방식이었습니다. 당시 내 노트는 이렇게 적혀 있습니다.

당시 프로젝트 노트에서

## 🔐 Privacy Design (MVP)

* Images sent to server for inference

* No persistent storage of images

* Processing done in-memory

* HTTPS required for production


## 🧭 Future Considerations (Post-MVP)

...

* Possible future migration: ONNX Runtime (on-device AI)

다행히 얼마 뒤, 우리는 텐서 변환 작업까지 모바일 의존성 사슬을 깨뜨리지 않고 기기 내부로 분리해 내는 데 성공했습니다. 덕분에 원본 이미지조차 휴대폰 밖으로 보낼 필요가 없어졌습니다.

휴대폰 밖으로 나가는 것은 오직 숫자 데이터로 이루어진 텐서뿐입니다.

클라우드 서비스는 이 텐서로 모델을 돌린 뒤 예측 신뢰도 점수 목록만 돌려줍니다.

그리고 휴대폰이 그 외의 모든 것을 완성합니다.

기술적 해법은 제법 많이 바뀌었습니다.

하지만 원칙은 바뀌지 않았습니다.

첫 줄의 코드부터 보안과 개인정보 보호가 자리 잡기를 원했습니다

나는 보안, 개인정보 보호, 그리고 컴플라이언스 분야를 참 좋아합니다.

그 일들이 재미있습니다.

네, 이런 걸 진짜 좋아하는 사람도 있더라고요. :)

나는 CISSP(국제공인 정보시스템 보안전문가) 시험을 치르고 자격까지 취득했습니다. 사이버 보안의 8개 분야를 망라하는 시험으로, 제품 매니저보다는 전업 보안이나 IT 전문가들이 훨씬 더 흔히 취득하는 자격증입니다.

그래서 직접 제품을 만들 기회가 생겼을 때, 보안을 제대로 구현해야 한다는 일종의 책임감을 느꼈습니다.

하지만 수년간 기업 환경에서 일하며 매번 아쉬웠던 패턴이 하나 있었습니다.

시스템을 만든다. 모든 걸 연결한다. 데이터를 수집한다.

개인정보 보호와 보안은 늘 나중에 생각할 문제였습니다.

하지만 그 시점이 되면 이미 수많은 중요한 결정들이 내려진 후입니다. 그 상태에서 아키텍처를 변경하는 것은 비용이 너무 많이 들고, 때로는 경제적으로 불가능해지기도 합니다.

Health Mirror는 그 순서를 뒤집어볼 수 있는 기회였습니다. 처음부터 아주 단순한 질문 하나를 던지며 시작했습니다.

"이 데이터를 굳이 휴대폰 밖으로 내보낼 필요가 있는가?"

출시 전, 우리는 스스로 개인정보 보호 및 보안 점검을 진행했습니다. 아무도 강요하지 않았지만, 실제 구현된 기술과 개인정보 처리방침, 그리고 우리가 사용자에게 안내하는 내용이 서로 어긋나지 않기를 바랐기 때문입니다.

몇 달 동안 이런 방식으로 제품을 만들어왔기에 서로 잘 부합할 거라 믿을 만한 이유는 충분했지만, 마지막 점검을 통해 틈새로 놓친 것이 있는지 확인하고 싶었습니다.

'일주일 만에 만든 앱'을 완성하기까지 걸린 6개월

첫 프로토타입이 나오고 앱을 정식으로 출시하기까지, 그 사이에는 수많은 우여곡절이 있었습니다.

하지만 그 과정에서 가장 놀라웠던 건 바로 이 사실이었습니다.

AI는 마법처럼 모든 정답을 건네주지 않았습니다. 다만, 내가 '다음 문제'에 도달하는 시간을 엄청나게, 정말 엄청나게 줄여주었을 뿐입니다.

첫 번째 모델이 왜 틀렸는지 깨달을 만큼의 머신러닝을 배웠고, 첫 번째 앱이 왜 아직 진짜 앱이 아닌지 깨달을 만큼의 모바일 엔지니어링을 배웠으며, 내가 애착을 갖던 디자인을 언제 바꿔야 하는지 알아채기에 딱 필요한 만큼의 아키텍처를 배웠습니다.

그리고 셋이서 이해되지 않는 문제에 부딪힐 때마다, 함께 조사하고, 우리의 가정을 의심하고, 새로운 것을 배워가며 다시 시도했습니다.

"일주일 만에 작동했다"던 그 앱이 사람들이 실제로 다운로드받아 쓸 수 있는 제품이 되기까지는 결국 6개월이 걸렸습니다. 물론 그 기간 동안 나는 풀타임 회사 일도 계속하고 있었습니다.

내 Softmax는 Sigmoid가 되었습니다.

하나였던 AI 파트너는 둘이 되었습니다.

전적으로 휴대폰 안에서만 돌아가던 아키텍처에는 의도적으로 아주 조그맣게 설계된 클라우드 서비스 하나가 추가되었습니다.

그리고 나의 실험은 하나의 제품이 되었습니다.

올해 2월, 처음 생각했던 모습과는 상당히 다른 여정입니다.

앞으로 무슨 일이 벌어질지 미리 다 알지 못해서, 다행이었다고 생각합니다. :)