"뭘 믿기 전에, 진짜 짧은 문장 하나로 엔진 전체를 증명해. 그다음 공짜로 한 번 더 말해봐."
걸어 다니는 뼈대
정규화, binding, 캐시, 복구, 오디오까지 서브시스템을 다 지어놓고 마지막에야 이어 붙일 수도 있어. 근데 그건 이음새가 어긋났다는 걸 제일 늦게 아는 방법이야. 빠른 쪽은 걸어 다니는 뼈대지. 조각들을 다듬기도 전에, 진짜 인프라 위에서, 파이프라인 전체를 처음부터 끝까지 통과하는 제일 얇은 한 줄기. Bellows의 첫 canary가 딱 그거였어. 짧은 한국어 문장 하나가 진짜 provider랑 진짜 오디오 기기를 타고 첫날에 엔진을 관통했지.
canary가 진짜로 증명한 것
파이프라인 네 단계를 실제로 다 돌렸어. 문장 하나를 정규화하고 합성해서, 나온 MP3를 검증하고, 스튜디오 출력으로 제 음질로 재생했어. mock이 아니라 진짜 방에서 나는 진짜 소리로. 그다음 잘 되는 길만이 아니라 아키텍처를 증명하는 걸 했지. 똑같은 요청을 한 번 더 쏘고, provider를 안 부르고 캐시가 맞는 걸 확인했어. 문장 하나를 두 번 말하는 걸로 합성이랑 검증이랑 재생이랑 캐시 보증을 한 번에 다 굴린 거야.
왜 진짜 canary가 mock 더미를 이기냐면
유닛 테스트는 provider랑 기기랑 파일시스템을 mock해. 하필 진짜 시스템이 깨지는 그 이음새들을 말이야. canary는 무서운 부분을 mock하길 거부해. 진짜 유료 API를 부르고, 진짜 CoreAudio 기기를 열고, 디스크의 진짜 캐시를 건드려. 그래서 제일 먼저 알게 되는 게 mock끼리 말이 맞느냐가 아니라 이음새가 버티느냐가 되지. 엔진의 진짜 provider voice ID는 내내 안 드러나. canary도 날 ID가 아니라 profile 이름으로 말하거든. 그거 빼곤 전부 진짜야.