AI Briefing

LINE Android 앱의 핵심 경로를 AI로 시각화하기

·2026.04.06 11:00

주석 태그와 AI를 써서 Android 핵심 경로와 병목을 빠르게 시각화했다.

LINE OA Chat의 Chat Entry Time을 줄이기 위해, 핵심 경로에서 어떤 함수 호출이 실제로 느린지 좁혀서 확인할 필요가 있었다. 하지만 OA Chat은 비-OA Chat과 많은 로직을 공유해, 모든 경로를 수작업으로 추적하는 방식은 너무 비효율적이었다.

처음에는 호출 흐름을 텍스트로 정리했지만, 스레드 정보도 보이지 않고 실제 의미도 파악하기 어려웠다. Miro 같은 도구로 손수 다이어그램을 만들면 회의 중에는 편했지만, 컴포넌트를 더 파고들거나 코드 변경을 계속 반영하기가 어려웠다.

해결책으로 AI에게 코드 흐름을 직접 시각화시키되, 모든 것을 무작정 확장하지 않도록 주석 태그를 넣는 방식을 택했다.

  • @VISUALIZE_EXPAND: 해당 함수는 더 깊게 펼쳐서 보여달라는 신호
  • @FORK, @FORK_AGAIN, @FORK_END, @FORK_MERGE: 병렬 실행 경계를 표시
  • 외부 호출은 leaf node로 처리해 그래프 폭주를 막음

예를 들어 lifecycleScope.launch { ... collect(::initializeViews) } 같은 코드는 정적 분석만으로는 실제 스레드를 확정하기 어렵지만, AI는 변수명과 컨텍스트를 바탕으로 Main thread 가능성을 추론할 수 있었다. 또 flowWithLifecycle(...).collect()처럼 범용 호출은 건너뛰고, 주석으로 표시한 실제 관심 지점만 확장하도록 유도했다.

정확도를 더 높이기 위해 AI가 profiling log까지 다루게 했다. 각 작업의 시작과 종료 시각을 로그로 남기고, 그 결과를 다시 AI에 넣어 시간 정보가 포함된 그래프를 생성하게 한 뒤, 의심스러운 부분을 다시 주석으로 지정해 재생성하는 식이다.

결과물은 PlantUML이나 SVG로 만들 수 있었고, 내부 위키 호환성과 가독성 사이에서 균형을 보려 했다. 저자는 특히 SVG가 더 유연한 방향이 될 수 있다고 보지만, 당장은 AI가 인간 대신 반복적이고 지루한 경로 정리 작업을 빠르게 해주는 것만으로도 큰 가치가 있다고 정리한다.

이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.

요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.