모니터 3개가 있는 책상에 앉아 있는 수달
블로그 관리 페이지를 열었는데, 발행된 글들 첫 문장이 이상하게 잘려 있었어요. 눌러 보니 첫 문장 한복판에 이미지가 끼어 있더라고요. "오늘 다녀와서 들어가" 다음에 갑자기 카페 사진, 그 밑에 "봤어요". 한 글만 그런 게 아니었어요. 스크롤을 내리는데 똑같이 깨진 글이 계속 나왔어요. 세어보니 일곱 개.
저는 네이버 블로그에 하루 네 번, 사람 손 안 대고 글을 쓰고 발행하는 봇을 돌려요. 키워드 고르고, 쓰고, 이미지 넣고, 발행까지 봇이 다 해요. 그날 깨진 이유는 시시했어요. 봇이 썸네일을 교체하다 클릭 좌표를 문단 한가운데 떨궜고, 하필 그 자리에 이미지가 들어간 거예요.
여기서 중요한 건 이거예요. 봇 입장에선 아무 문제 없이 발행에 성공한 상태였어요. 성공 로그도 초록불이었고요. 봇은 자기가 뭘 망쳤는지 몰라요. 제가 블로그를 직접 열어보고 나서야 알았어요.
멈춤은 시끄럽고, 오작동은 조용해요
이걸 겪고 생각이 바뀌었어요. 자동화가 무서운 건 멈출 때가 아니더라고요. 멈추면 결과물이 안 나오니까 바로 눈에 띄어요. 멈춤은 시끄러워요. 진짜 무서운 건 멀쩡히 돌면서 조금씩 틀린 걸 쌓는 쪽이에요. 오작동은 조용하거든요. 봇은 스스로 이상하다고 말해주지 않으니까, 제가 매번 눈으로 확인해야만 알 수 있었어요.
모자를 쓴 곰이 있는 한국 컴퓨터 화면
비슷한 사고가 계속 나왔어요
한 번은 오후 발행 슬롯이 글을 안 올리고 끝났어요. 봇이 발행을 백그라운드로 띄워놓고는, "발행이 완료되면 알림이 옵니다, 대 기하겠습니다" 하고 스스로 세션을 닫아버린 거예요. 알림은 안 왔고, 글도 안 올라갔어요. 봇은 자기가 할 일을 다 했다고 믿고 얌전히 종료했고요. 또 한 번은 점심 슬롯이 시작 로그만 남기고 완료 로그 없이 빠졌어요. 발행이 됐는지 로그만 봐선 알 수가 없어서, 저는 됐겠거니 짐작하고 넘어갔어요. 안 나갔더라고요.
또 한 번은 글이 발행은 됐는데, 그 URL을 큐에 기록하기 직전에 봇이 크래시가 났어요. 시스템 입장에선 그 글이 아직 안 쓴 글로 남아 있었어요. 다음 슬롯에서 같은 주제를 또 쓸 뻔했죠. 발행하고 나서 "다 썼다"고 도장 찍는 단계가 유실되면, 앞은 됐는데 마감이 안 된 상태가 돼요. 지금은 봇이 매번 실제 블로그에 올라간 글을 다시 읽어서 기록과 대조하고, 어긋나 있으면 스스로 맞춰놓는 청소 단계를 돌려요. 이 단계는 이 사고 때문에 생겼어요.
마지막은 결이 좀 달라요. "매번 다른 구조로 써"라고 지침을 넣어놨는데, 무인 봇이 그걸 슬금슬금 무시하더라고요. 어느 날 보니 최근 여섯 글이 전부 표 넣고 서술형으로 시작하는, 서로 닮은 글이었어요. 봇이 반항한 게 아니라, 아무도 안 보는 사이에 제일 만들기 편한 형태 하나로 미끄러진 거예요. 이건 어디가 고장 난 것도 아니에요. 각 글은 다 멀쩡히 발행됐거든요. 모아놓고 봐야만 보이는 저품질이었어요.
사실 이 감각은 더 예전에 크게 데인 적이 있어서 생겼어요. 랜딩페이지 지표를 6주 동안 믿고 분석했는데, 알고 보니 측정 코드가 고장 나서 데이터가 전부 허구였어요. 페이지가 멈춘 게 아니라 멀쩡히 틀린 숫자를 6주간 뿜고 있었던 거죠. 그때랑 똑같은 얼굴이에 요.
그래서 봇이 자기를 의심하게 만들었어요
넷 다 공통점이 보이시죠. 봇은 전부 성공했다고 믿고 있었어요. 그래서 저는 봇이 잘 됐다고 알려주는 건 하나도 안 믿기로 했어요. 대신 봇이 자기를 의심하게 만들었어요. 세 가지를 넣었어요.
하나, 성공 알림은 다 껐어요. 잘 되면 조용한 게 맞아요. 이상할 때만 저를 시끄럽게 부르게 했어요.
둘, 발행 여부는 짐작하지 않아요. 로그에 시작과 종료가 짝으로 찍혔는지로만 판단해요. 시작만 있고 종료가 없으면 그건 실패로 쳐요.
셋, 봇이 자기가 쓴 걸 스스로 채점하게 했어요. 최근 글 구조가 얼마나 겹치는지 검사하는 가드를 붙였더니, 첫 실행에서 "표 쏠림 5 대 5" 경보가 진짜로 떴어요. 제가 눈으로 봤던 그 쏠림을, 이번엔 봇이 스스로 짚어낸 거예요.
박제 동물과 설명서가 포함된 한국 포스터
봇 지침서에 그대로 넣어두는 문장들
저는 봇한테 코드가 아니라 사람 말로 쓴 지침서를 주고 일을 시켜요. 위 원칙들도 지침서에 문장으로 박아뒀어요. 무인으로 뭔가 돌리실 거면, 이 다섯 줄은 처음부터 넣고 시작하는 걸 추천해요.
1. 결과물을 만든 것까지가 일이 아니다. 만든 결과물을 직접 다시 열어서 확인한 것까지가 일이다.
2. 시작 기록만 있고 종료 기록이 없으면, 성공했다고 말하지 마라.
3. 작업이 끝나면 끝났다는 기록을 남기는 것까지가 작업이다. 기록 전에 멈췄으면 실패로 간주해라.
4. 최근 결과물들과 구조가 비슷해지고 있으면 이번 것은 다르게 만들어라.
5. 잘 됐을 때는 조용히 있어라. 이상할 때만 보고해라.
바꾸고 나서 달라진 건 이거예요.
전
후
성공 로그를 보고 안심함
성공 알림은 안 봄, 이상 알림만 받음
발행됐겠거니 짐작
시작·종료 기록이 짝인지로만 판단
제가 매일 눈으로 검수
봇이 먼저 자기 채점, 저는 경보 뜬 것만 확인
돌아보면 제가 만들려던 건 자동으로 글 쓰는 봇이었는데, 정작 손이 많이 간 건 글 쓰는 부분이 아니었어요. 봇이 자기가 방금 한 일을 못 미덥게 여기고, 이상하면 저를 부르는 부분이었어요. 무인 자동화는 실행 버튼을 누르는 순간 완성되는 게 아니더라고요. 잘 돌고 있다는 로그만큼 안심되면서 위험한 것도 없어요. 정말 잘 돌고 있는 봇은, 자기가 틀렸을 때 그걸 저한테 말해주는 봇이었어요.