아이 AI 수업은 도구 말고 누가 가르치는지부터 보자

이미지
아이들 AI 수업은 지금 누가 가르치고 있을까요. 얼마 전에 아이 학교 참관수업을 보고 왔습니다. 요즘은 수업 시간에 AI로 글을 쓰는 것 같은 걸 가르치는 모양입니다. 보고 나오면서 든 생각은 하나였습니다. 개발자 입장에서 보면 이건 아니다 싶었습니다. 처음 드는 생각도 아닙니다. 스크래치가 유행할 때도, 마인크래프트로 코딩을 가르친다고 할 때도 저는 비슷한 생각을 했습니다. 도구 이름은 그때마다 바뀌었는데, 개발자 눈에 비어 보이는 것은 매번 같았습니다. 도구가 문제였다면 도구가 바뀔 때 뭔가 달라졌어야 합니다. 세 번을 바꿔도 같은 것이 비어 있으니 도구보다 앞에 원인이 있다고 봤고, 그걸 따라가다 보니 가르치는 사람이 어디서 배워서 교실에 들어오는지에 닿았습니다. 범위를 먼저 그어 두겠습니다. 참관수업이 몇 학년 무슨 수업이었는지, 누가 가르쳤는지는 적지 않습니다. 이 글은 교실 하나나 강사 한 사람을 두고 하는 이야기가 아닙니다. 제도에 관한 사실은 원문을 열어서 확인한 것만 쓰고, 확인하지 못한 것은 제 판단이라고 밝혀 두겠습니다. 인용한 자료는 전부 2026년 9월 27일에 확인했습니다. 디지털새싹 강사는 이틀짜리 양성과정을 거쳐 교실에 들어갑니다 배경부터 짧게 적겠습니다. 소프트웨어 교육은 중학교가 2018학년도 신입생부터, 초등학교 5·6학년이 2019년부터 필수가 됐습니다( 한국일보, 2017-12-27 ). 그리고 2025년부터 적용되는 2022 개정 교육과정에서 정보 수업 시간이 초등은 17시간에서 34시간 이상으로, 중학교는 34시간에서 68시간 이상으로 늘었습니다( 정책브리핑, 2022-08-29 ). 정규 교과 안의 정보 수업은 학교 선생님이 맡습니다. 교과 밖으로 들어오는 AI 교육은 경로가 다릅니다. 대표적인 게 교육부의 디지털새싹입니다. 올해는 대학과 공공·민간기관을 대상으로 운영기관 공모를 해서 45곳을 골랐고, 이 기관들이 267종의 프로그램을 들고 학교로 직접 찾아가 8~12차시 이상씩 수업을 합니다. AI ...

AI가 만들었는데 왜 안전하다고 말할까? - 얼굴 사진을 받는 무료 도구들

요런 파일들도 다 외부로 안 나가게 안전하게 그리고 다운로드 받는 파일도 메타데이터 다 제거해서

무료 이미지 편집 도구를 공개하는 영상에 나온 말입니다. 채널을 O년 운영한 기념으로 구독자들에게 뭐라도 돌려주고 싶었다고 했고, 링크는 누구나 접근할 수 있게 열어뒀다고 했습니다. 기능 소개가 한참 이어지다가 끝자락에 이 한 줄이 지나갑니다.

지나가는 한 줄인데, 이 도구에 대해 할 수 있는 말 중에서는 제일 큰 말입니다.

먼저 경계를 그어두겠습니다. 저는 이 도구의 코드를 보지 않았습니다. 파일이 실제로 브라우저 안에서만 처리되는지 서버를 거치는지 확인하지 않았고, 그래서 이 글은 위반 사례를 적은 글이 아닙니다. 만든 사람이 코드를 읽을 수 있는 사람인지도 모릅니다. 영상에는 AI 를 썼다는 말도 안 썼다는 말도 없습니다. 기획하고, 만들라고 지시하고, 배포한 것은 본인이 한 일입니다.

궁금했던 건 다른 쪽입니다. 저 문장이 참이냐 거짓이냐는 제가 답할 수 없습니다. 제가 보는 건 그 문장을 받아 든 사람이 그걸 확인할 방법이 있느냐입니다. 이 질문은 만든 사람의 실력과 무관하게 성립하고, 실력을 따지는 것보다 훨씬 오래 남습니다.

채널 이름도 사이트 이름도 적지 않겠습니다. 이 글에 필요한 건 인용한 문장과 기능 목록이고, 이름이 들어가는 순간 글의 성격이 바뀝니다.

밝은 원목 책상 위에 인화된 사진 여러 장이 부채꼴로 겹쳐 놓여 있고, 그 위를 아무것도 인쇄되지 않은 종이 세 장이 덮고 있는데 종이 사이 틈으로 아래 사진의 일부가 드러나 있다

파일이 외부로 안 나간다는 말은 확인한 사람만 할 수 있습니다

저 한 문장이 참이 되려면 여러 개가 동시에 참이어야 합니다. 편집이 전부 브라우저 안에서 끝나야 하고, 같은 페이지에 실린 광고나 방문 분석 스크립트가 캔버스를 읽어가지 않아야 하고, 오류를 모아주는 도구가 화면을 떠서 보내는 경로가 없어야 하고, 파일을 잠깐 서버에 올려 처리한 뒤 지우는 구간도 없어야 합니다. 넷 중에 하나만 어긋나도 저 문장은 거짓이 됩니다.

그리고 넷 다 화면에는 안 보입니다. 사진을 붙여 넣으면 모자이크가 얹히고 다운로드가 됩니다. 파일이 서버를 한 바퀴 돌고 왔든 브라우저 안에서만 돌았든 화면에서 벌어지는 일은 같습니다.

이용자가 직접 확인하려면 개발자도구를 열고 네트워크 탭을 켠 채로 파일을 올려서 어떤 요청이 나가는지 봐야 합니다. 요청 하나하나가 무엇인지도 구분할 수 있어야 하고요. 그걸 하는 사람이 몇이나 될까요. 저도 두 번째 소재인 도구 모음 사이트는 직접 열어서 표기 문구까지 읽었지만, 네트워크 탭은 열지 않았습니다.

그걸 안 한 이유가 게을러서만은 아닙니다. 한 번 열어서 확인해도 그건 그날 그 배포본의 확인이라서 그렇습니다. 이 이야기는 뒤에서 다시 하겠습니다.

여기서 한 가지가 더 붙습니다. 같은 확인을, 배포하는 사람도 해야 합니다. 코드를 직접 썼든 시켜서 받았든 결과물이 파일을 어디로 보내는지는 열어봐야 알 수 있습니다. 함수 하나를 읽어서 끝나는 일이 아닙니다. 페이지에 실린 것 전부가 무엇을 하는지 봐야 합니다.

얼굴 자동 감지는 남의 얼굴을 올리라고 만든 기능입니다

영상에서 모자이크 기능을 소개할 때 화자가 사용 맥락을 직접 지정합니다.

블로그 중에 외부에서 사진 촬영 많이 하시는 분들 중에 남의 얼굴이 나올 때 일일이 모자이크 하셨던 분들

이 문장이 이 글에서 제일 중요한 인용입니다. 기능을 만든 사람 본인이 쓰임새를 정확히 알고 있다는 뜻이고, 그 쓰임새가 정의상 제3자의 얼굴이라는 뜻이기도 합니다.

얼굴 자동 감지 기능에 들어가는 입력은 내 얼굴이 아닙니다. 카페에서 찍었는데 뒤쪽 테이블에 앉은 사람이 같이 나온 사진, 행사장에서 찍었는데 옆줄 사람이 정면으로 잡힌 사진입니다. 가리려고 올리는 겁니다. 가려야 할 이유가 있으니까요.

그러니까 이 기능은 이렇게 동작합니다. 얼굴의 주인은 사진이 찍히는 것에도 동의한 적이 없고, 그 사진이 어느 사이트에 올라가는지도 모릅니다. 사진을 올리는 사람은 그 얼굴을 보호하려는 선의로 올립니다. 그리고 그 사이트가 파일을 어디로 보내는지는 올리는 사람도 모릅니다.

선의가 있는 쪽이 위험을 만들고, 위험을 받는 사람은 이 일을 알지도 못합니다. 도구의 기능 목록만 보면 모자이크는 QR 생성이나 파일명 일괄 변경 옆에 나란히 놓인 항목 하나입니다. 실제로는 성격이 다른 항목 하나가 섞여 있는 겁니다.

구조를 한 단계만 더 들어가 보면 더 분명해집니다. 얼굴을 가리려면 가려지지 않은 원본을 먼저 올려야 합니다. 순서가 그렇게 될 수밖에 없습니다. 자동 감지가 얼굴을 찾으려면 얼굴이 선명하게 보이는 상태의 파일이 필요하니까요. 그러니까 이 기능에 들어가는 입력은 언제나 최악의 버전입니다. 보호하려는 대상이 가장 선명하게 담긴 파일이 제일 먼저 올라갑니다.

메타데이터 이야기도 같은 문장에서 한 번 더 봐야 합니다. 인용한 문장 뒤쪽에 "다운로드 받는 파일도 메타데이터 다 제거해서"가 붙어 있습니다. 이건 실제로 쓸모 있는 기능입니다. 휴대폰으로 찍은 사진에는 촬영 좌표가 들어 있는 경우가 많고, 그걸 모르고 블로그에 올리면 집 주소가 같이 올라갑니다. 지워주는 게 맞습니다.

다만 그 말이 가리키는 건 내려받는 파일입니다. 올라간 원본에서 좌표가 어떻게 됐는지는 다른 질문이고, 그 질문에 대한 답은 영상에도 없고 화면에도 없습니다. 그런데 문장 하나에 붙어 있으니 같이 해결된 것처럼 읽힙니다.

못 고치는 문제와 남의 파일을 받는 문제는 다릅니다

8월에 개발자 커뮤니티 게시판의 "만들었습니다" 글 60건을 세어서 글을 하나 썼습니다. 만드는 건 딸깍 한 번이 됐는데 고치는 건 그렇지 않다는 이야기였고, 딸깍으로 만든 건 딸깍으로 복사되지만 딸깍으로 고쳐지지는 않는다로 끝냈습니다.

그 글이 다룬 위험은 만든 사람 본인의 것이었습니다. 프로젝트가 넉 달을 못 가고, 자기가 고칠 수 없는 코드를 자기가 떠안는 이야기입니다. 손해를 보는 사람과 결정을 한 사람이 같습니다. 그래서 그건 각자 알아서 감당할 일에 가깝습니다.

이번 건 그 결과물이 공개 주소를 달고 나가서 남의 파일을 받기 시작한 경우입니다. 여기서부터는 결정한 사람과 손해를 보는 사람이 갈립니다. 잘못되면 만든 사람은 사이트를 내리면 됩니다. 사진에 찍혔던 사람은 내릴 것이 없습니다.

예전에는 코드를 다룰 줄 알아야 이런 도구를 배포할 수 있었습니다

여기가 제가 이 소재를 붙잡은 이유입니다.

예전에 이런 도구를 만들려면 코드를 다룰 줄 알아야 했습니다. 파일 입력을 받고, 이미지를 디코딩하고, 캔버스에 그리고, 다시 인코딩해서 내보내는 경로를 직접 써야 했습니다. 얼굴 감지를 붙이려면 모델을 가져다 붙이는 작업까지 해야 했고요. 그 과정을 통과한 사람은 적어도 자기 코드에서 파일이 어디로 가는지 답할 수 있는 사람이었습니다.

능력 검증이 진입 조건에 딸려 있었던 겁니다. 시험을 따로 치른 건 아니었습니다. 만들 수 있는 사람만 배포할 수 있었으니 배포자는 자동으로 최소한의 확인 능력을 갖고 있었습니다. 이 구조가 오래 굴러갔기 때문에 아무도 그걸 구조라고 부르지 않았습니다.

지금은 만드는 단계만 건너뛸 수 있습니다. 기능 열세 개짜리 도구가 나오는 데 걸리는 시간이 압축됐습니다. 일괄 리사이즈, 테두리, 워터마크, 회전과 좌우 반전, 사진 분할, 배경 제거, 얼굴 자동 감지 모자이크, QR 생성, 파일명 일괄 변경, 영상을 GIF 로 바꾸는 기능, 화면 녹화, 구간별 GIF, 블로그 본문 중앙 정렬까지 한 사이트에 들어가 있습니다. 예전 같으면 이 목록 하나가 프로젝트였습니다.

건너뛴 것은 만드는 시간인데, 같이 빠져나간 것이 하나 더 있습니다. 진입 조건에 딸려 있던 확인 능력입니다. 배포는 가능해졌는데 그건 따라오지 않았습니다.

빠졌다는 게 안 보이는 이유는 이렇습니다. 확인 능력은 만드는 과정에 묻어 있던 것이라서, 그 과정이 사라질 때 같이 사라졌다는 걸 알아차릴 계기가 없습니다. 예전에는 파일 입력 처리를 직접 쓰다가 데이터가 어디로 흘러가는지 자연히 보게 됐습니다. 그 코드를 받아서 붙이기만 하면 그 장면이 통째로 없습니다. 없어진 게 아니라 애초에 지나간 적이 없는 겁니다. 그래서 본인은 무엇이 빠졌는지 찾아볼 생각을 안 하게 되고, 이용자는 그런 능력이 원래 딸려 오던 것인 줄도 모릅니다.

그런데 배포자가 하는 말의 크기는 예전과 똑같습니다. "파일이 외부로 안 나갑니다"는 예전에도 지금도 같은 무게의 문장입니다. 달라진 건 그 문장을 말하는 데 확인이 더 이상 필요하지 않다는 것뿐입니다. 말은 그대로인데 그 말을 받치던 것이 빠졌습니다.

만드는 시간은 압축됐고, 배포한 뒤의 시간은 압축되지 않았습니다.

트래픽 비용을 "뭔가 있을 것 같다고 하더라고요"로 알고 있습니다

영상에서 운영 계획을 말하는 대목이 세 번 나옵니다. 세 번 다 "많이 안 쓸 거예요"로 시작합니다. 비용을 설명할 때는 이렇게 나옵니다.

무슨 뭐 트래픽 비용인가 뭔가 있을 것 같다고 하더라고요

세 번째에는 조건이 붙습니다.

너무 혹시나 많이 쓰게 되면은 비용이 발생하던가 아니면은 구독자분들한테만 제공을 해 주던가

이 대목을 비웃으려고 옮긴 게 아닙니다. 오히려 솔직한 쪽입니다. 대부분은 이런 말을 아예 안 하고 넘어갑니다. 제가 보는 건 이 문장이 드러내는 순서입니다. 비용 구조가 운영 계획보다 뒤에 서 있습니다.

파일을 받는 서비스에서 비용은 이용자 수를 따라 붙습니다. 브라우저 안에서만 처리한다면 트래픽은 파일을 내려보내는 쪽에만 걸리고, 서버에서 처리한다면 처리 시간까지 붙습니다. 두 경우의 비용 곡선이 완전히 다릅니다. 그 차이를 알고 있으면 임계가 언제 오는지 미리 셀 수 있고, 모르면 청구서가 먼저 알려줍니다.

임계가 왔을 때의 선택지는 넷입니다. 유료로 돌리거나, 구독자에게만 열거나, 내려버리거나, 넘기는 겁니다. 영상에서는 앞의 둘을 말했습니다. 뒤의 둘은 말하지 않았는데, 실제로는 그쪽이 더 자주 일어납니다. 앞의 둘은 관리할 일이 늘어나는 선택이고, 뒤의 둘은 관리를 끝내는 선택이기 때문입니다. 구독자에게만 열려면 인증을 붙여야 하는데, 그러면 회원가입이 없다는 말이 먼저 깨집니다.

그리고 이용자는 이 계획 전체를 모르는 채로 얼굴 사진을 올립니다. 들은 말은 "써 보면서 불편한 점은 제가 계속 업데이트 드릴 거예요" 쪽입니다. 이 약속은 지킬 마음으로 한 말이 맞을 겁니다. 다만 약속의 유효 기간이 얼마인지는 말한 사람도 모릅니다. 혼자 운영하는 도구에서 가장 흔하게 일어나는 일은 조용해지는 겁니다. 댓글에 답이 늦어지고, 업데이트 간격이 벌어지고, 그러다 멈춥니다. 멈춘 사이트와 돌아가는 사이트는 겉으로 구분되지 않습니다. 둘 다 잘 열립니다.

자동 발행 기능을 뺀 판단은 3년치 운영 경험에서 나왔습니다

영상에 이런 대목이 있습니다.

자동 발행 포스팅이나 이런 걸 싹 다 뺐습니다 왜냐면은 어유징이거든요

이건 진짜 판단입니다. 자동 발행을 붙이면 사람이 몰립니다. 그게 왜 나중에 문제가 되는지 알려면 검색 엔진이 그런 패턴을 어떻게 처리하는지에 대한 경험이 있어야 합니다. 있으니까 뺀 겁니다. 기능을 더 넣는 게 아니라 빼는 쪽으로 판단한 것도 흔한 일이 아니고요.

동기를 감추지도 않았습니다. "제가 제일 싫어하는 단어가 선한 영향력입니다"라고 하고, 이어서 "저도 저를 위해서 하는게 맞습니다"라고 합니다. 그 말 바로 다음에 오는 것이 "혹시나 도움이 되셨다면 요런 거 한 번씩 클릭해 주시면"입니다. 영상에서 두 문장은 붙어 있습니다.

여기가 이 글에서 제일 조심스러운 대목입니다. 이 사람은 자기가 아는 영역에서는 판단을 하고 있고, 자기 동기에 대해서도 솔직합니다. 그러니까 문제는 성실함이 아닙니다.

다만 그 판단이 작동하는 층이 정해져 있습니다. 어떤 기능이 블로그 운영에 해로운지는 3년 동안 쌓인 경험이 답을 갖고 있습니다. 파일 처리 경로에는 그 3년이 닿지 않습니다. 해 본 적이 없는 일이니까요. 그리고 안 닿는다는 사실 자체가 화면에 안 나타납니다. 자동 발행이 어뷰징이라는 건 겪어봐서 아는데, 광고 스크립트가 캔버스를 읽을 수 있다는 건 겪어볼 기회가 없습니다. 사고가 나기 전까지는요.

성실한 사람이 자기가 모르는 층에 대해 확신에 찬 문장을 말하게 되는 구조인 겁니다. 이건 검증할 수 없는 주장이 확신으로 전달되는 구조를 따로 정리하면서 한 번 본 모양입니다. 그때는 강의 영상 여섯 편이 소재였고, 여섯 편 모두 데모에는 기술적 거짓이 없었습니다. 거짓말을 하는 게 아니라, 판정이 날 수 없는 구간에 대해 판정이 난 것처럼 말하는 것이 문제였습니다.

서버에 저장되지 않아 안전하다는 문장이 사이트 표기로 적혀 있습니다

개인 한 명의 말버릇이 아닙니다.

커뮤니티 개발자 게시판에 올라온 온라인 도구 모음 사이트를 직접 열어봤습니다. 도구가 350개를 넘고, 회원가입이 없고, PDF, 이미지, 오디오, 비디오, OCR, 스프레드시트, SEO 도구까지 분류가 갈려 있습니다. 파일을 다루는 도구 쪽에는 이렇게 적혀 있습니다.

파일이 서버에 저장되지 않아 안전한 무료

영상에서 들은 말과 같은 구조입니다. 안 나간다는 사실에 안전하다는 결론까지 붙어 있습니다.

350개라는 숫자를 보면서 생각한 게 하나 있습니다. 배포 단위는 사이트 하나인데 확인 단위는 도구 350개입니다. 도구가 하나 늘 때마다 파일이 어디로 가는지 확인해야 할 경로가 하나 늘어나는데, 이용자가 보는 표기 문구는 사이트 전체에 한 번 걸려 있습니다. 하나하나 확인했다 해도 그걸 이용자가 알 방법은 없고, 안 했다 해도 마찬가지입니다.

게시글 제목이 "2탄"이었습니다. 같은 게시판에 반복해서 올라오고 있다는 뜻입니다. 사이트 하단에는 제휴 마케팅 공시가 붙어 있습니다.

이 공시를 붙여둔 건 정직한 쪽입니다. 제가 눈여겨본 건 그게 뜻하는 운영 방향입니다. 수익이 트래픽에 걸려 있는 사이트는 트래픽을 계속 키워야 하고, 도구 모음 사이트에서 트래픽을 키우는 방법은 도구를 계속 늘리는 겁니다. 검색으로 들어오는 사람은 필요한 도구 이름을 치고 들어오니까 종류가 많을수록 유입이 늘어납니다.

그러면 확인해야 할 도구가 늘어나는 속도와 확인할 수 있는 속도가 반대로 갈라집니다. 도구를 늘리는 건 압축된 쪽 작업이고, 늘어난 도구마다 파일이 어디로 가는지 보는 건 압축되지 않은 쪽 작업입니다. 첫 번째 도구와 350번째 도구에 같은 표기 문구가 걸려 있는데, 그 문구를 받치는 작업량은 350배가 되어 있습니다.

얼굴 감지와 배경 제거는 학습된 가중치를 씁니다

기능 목록에서 성격이 다른 항목이 둘 있습니다. 얼굴 자동 감지와 배경 제거입니다. 나머지는 이미지를 자르고 붙이고 크기를 바꾸는 일인데, 이 둘은 학습된 모델이 있어야 합니다.

여기서부터는 일반론으로만 적겠습니다. 저 도구가 어떤 모델을 쓰는지 확인하지 않았습니다.

공개된 가중치 중에는 상업적 사용에 조건이 붙은 것이 있습니다. 비상업 용도로만 쓸 수 있는 것도 있고, 파생물을 같은 조건으로 공개하라는 것도 있고, 어디에 썼는지 표기하라는 것도 있습니다. 코드의 라이선스와 가중치의 라이선스가 따로 붙어 있는 경우도 흔합니다. 코드는 자유롭게 써도 되는데 가중치는 아닌 조합이요.

광고가 붙은 무료 서비스가 상업적 사용인지 아닌지는 라이선스 문구마다 다릅니다. 그리고 그 판단은 코드를 쓰는 일과 전혀 다른 일입니다. 문서를 찾아서 읽고, 어느 조항이 내 경우에 해당하는지 대조하는 일입니다.

만드는 과정이 압축될 때 라이선스 확인이 특히 잘 빠집니다. 라이브러리를 붙이는 순간에는 그게 동작하느냐만 보이고, 그 라이브러리가 어떤 조건으로 배포됐는지는 화면 어디에도 안 뜨기 때문입니다. 동작하면 넘어가게 됩니다. 조건을 어겼다는 사실은 나중에 누가 연락을 해 와야 알게 되는 종류입니다.

회원가입이 없다는 말은 개인정보를 안 받는다는 뜻으로 읽힙니다

회원가입이 없다는 말은 두 소재 모두에 나옵니다. 편의를 말한 건데, 개인정보를 안 받는다는 뜻으로 읽히기 쉽습니다.

이름과 이메일을 안 받는 건 맞습니다. 그런데 얼굴 사진은 그 자체가 개인을 식별하는 정보입니다. 회원 데이터베이스에 행이 하나도 없어도 파일이 서버를 거치는 순간 그 파일을 다루는 행위가 생깁니다. 무료라서 해당이 안 되는 것도 아니고, 개인이 혼자 만들었다고 해당이 안 되는 것도 아닙니다.

전부 브라우저 안에서 처리한다면 이야기가 달라질 수 있습니다. 파일이 이용자 기기 밖으로 안 나가면 다루는 행위 자체가 성립하지 않으니까요. 그래서 이 구분이 중요한데, 구분의 양쪽이 화면에서 똑같이 생겼다는 게 앞에서 적은 문제입니다.

배포하는 사람 입장에서 보면 이건 배포 전에 정해두고 시작해야 하는 항목입니다. 브라우저 안에서 끝내기로 정하면 그 제약을 지키면서 기능을 짜야 하고, 서버를 쓰기로 정하면 보관 기간과 삭제 시점과 접근 권한을 같이 정해야 합니다. 둘 중 어느 쪽인지 모르는 채로 배포되면 나중에 답할 수 없는 질문이 생깁니다. 그 얼굴 사진들이 지금 어디 있느냐는 질문이요.

취약점은 배포한 다음에 발견됩니다

배포 시점에 안전했느냐만 묻는 건 질문이 짧습니다. 진짜 긴 쪽은 그 뒤입니다.

의존하는 라이브러리에서 취약점이 나오는 건 늘 있는 일입니다. 중요한 건 나왔을 때 그걸 아느냐입니다. 알림을 받는 경로가 있어야 하고, 그게 내 경우에 해당하는지 판단할 수 있어야 하고, 고친 걸 다시 올릴 수 있어야 합니다. 셋 다 만드는 능력과 다른 능력입니다. 그리고 셋 다 배포한 날이 아니라 몇 달 뒤에 필요해집니다.

알림을 받는 일부터가 생각보다 앞단입니다. 내가 무엇을 쓰고 있는지 목록이 있어야 알림이 걸립니다. 만드는 과정이 압축되면 이 목록이 제일 먼저 흐려집니다. 필요한 기능을 말하면 그에 맞는 라이브러리가 딸려 들어오는데, 딸려 들어온 것이 무엇이었는지는 동작을 확인하는 순간 관심에서 빠집니다. 화면이 뜨면 거기서 시선이 멈추니까요. 나중에 어떤 패키지에 문제가 있다는 공지가 떠도, 내 사이트가 그걸 쓰고 있는지 아닌지를 답하려면 다시 열어봐야 합니다.

보안 업데이트를 오래 안 한 노후 서버에서 침해가 일어난 건을 따로 정리한 적이 있습니다. 그 건에서 제일 걸렸던 대목은 발견 시점이었습니다. 서버를 점검하다가 두 달 전에 이미 일어난 일을 발견했습니다. 두 달 동안 화면은 멀쩡했다는 뜻입니다.

파일을 받는 무료 도구도 같은 모양입니다. 뚫려도 화면은 그대로 돌아갑니다. 모자이크는 계속 얹히고 다운로드도 계속 됩니다. 이상해진 걸 알아차릴 사람이 있느냐가 전부인데, 그 사람은 로그를 볼 수 있어야 합니다.

만드는 시간이 압축돼도 이 구간은 압축되지 않습니다. 취약점이 발표되는 속도는 내가 만드는 속도와 아무 상관이 없기 때문입니다.

도구 사이트는 주소를 단 채로 다음 주인에게 넘어갑니다

트래픽이 붙은 도구 사이트는 거래됩니다. 검색에서 꾸준히 들어오는 주소는 그 자체로 값이 매겨지고, 만든 사람이 지치거나 비용이 부담스러워지는 시점과 제안이 들어오는 시점이 대체로 겹칩니다.

넘어간 다음에도 주소는 그대로입니다. 화면도 그대로고, 기능도 그대로고, "파일이 서버에 저장되지 않습니다"라는 문구도 그대로 남습니다. 브라우저 안에서 처리하던 코드가 다음 배포에서 서버로 올라가도 이용자가 보는 것은 달라지지 않습니다. 북마크해 둔 사람은 계속 씁니다.

앞에서 제가 네트워크 탭을 안 열었다고 적은 이유가 여기 있습니다. 열어서 요청이 안 나가는 걸 확인했어도, 그건 그날 그 배포본에 대한 확인입니다. 다음 주에 같은 주소에서 같은 화면을 봤을 때 그 확인이 유효한지는 다시 알 수 없습니다. 확인을 한 번 하면 끝나는 종류의 대상이 아닌 겁니다.

배포는 한 번에 끝나는 사건이 아닙니다. 그날부터 계속 이어지는 상태입니다. 라이선스도, 파일을 다루는 지위도, 취약점 대응도, 주인이 바뀌는 일도 전부 배포한 날이 아니라 그 뒤의 시간에 걸려 있습니다. 압축된 것은 그 앞쪽뿐입니다.

같은 게시판에 자기 앱이 돈이 안 된다는 숫자를 먼저 낸 글이 있었습니다

같은 개발자 게시판에 1인 개발자가 쓴 글이 하나 올라왔습니다. 아내 사진첩을 정리해 주려고 만들었다는 사진 정리 앱 이야기이고, 끝에 App Store 링크가 걸려 있습니다. 성격은 앞선 두 소재와 같습니다. 자기가 만든 것을 알리는 글입니다.

갈리는 것은 숫자를 내놓는 방식 하나였습니다. 광고에 쓴 돈을 $80.49 로 적으면서, 계정 전체로는 $100.14 인데 나머지는 다른 앱 몫이라 뺐다고 괄호로 밝혀둡니다. 광고로 산 설치가 45건이니 하나에 $1.79 입니다. 그 아래에 9월 설치 107건과 개발자 수익 $40, 설치 하나가 버는 값 $0.37 을 나란히 놓습니다. 자기 앱이 돈이 안 된다는 계산을 자기가 먼저 적고, 그래서 광고를 껐다고 썼습니다.

유입 경로를 나눈 대목도 같은 모양입니다. ChatGPT 리퍼러로 들어온 제품페이지 조회가 20건에 설치 16건, App Store 검색은 151건에 68건, 스레드는 22건에 1건이었습니다. 그러고 나서 그 아래 소제목을 "왜 그런지는 저도 확실히 몰라요"로 달았습니다. 절의 첫 줄은 "짐작만 있어요"이고, 짐작을 한 문단 적은 다음 이렇게 막습니다.

근데 표본이 20명이에요. 이걸로 뭘 단정하긴 어렵더라고요.

자기가 못 본 것도 적습니다. 광고 숫자만 들여다보느라 이 경로를 두 달 넘게 못 봤다고 썼고, 광고를 끄고 나니 App Store 검색 노출이 하루 395에서 145로 떨어진 건 예상하지 못했다고 썼습니다.

이 사람을 모범 사례로 세우려는 게 아닙니다. 같은 게시판에 같은 목적으로 올라온 홍보글이고, 다루는 대상의 무게도 다릅니다. 남의 얼굴을 받는 서비스와 자기 설치 수를 세는 앱에 걸려 있는 것은 같지 않습니다.

제가 본 건 이 글에 선이 하나 그어져 있다는 겁니다. 확인한 값은 단위까지 적고, 확인하지 못한 값은 모른다고 적습니다. 앞의 소재들에 없던 게 그 선입니다.

확인해 보지 않은 사람이 더 단정적으로 말합니다

코드에 이름을 적는 것을 다룬 적이 있습니다. 회계사의 서명란처럼, 틀렸을 때 누구 이름이 적히느냐를 본 글이었습니다.

무료 도구에는 이런 고려가 전혀 없습니다. 돈을 안 받으니 계약도 없고, 약관도 대개 없고, 문제가 생겼을 때 연락할 곳도 댓글창뿐입니다. 예전에는 그래도 됐습니다. 만들 수 있는 사람만 배포할 수 있었고, 그 사람은 최소한 자기가 무엇을 보장하고 무엇을 보장 못 하는지 구분할 수 있었으니까요. 서명란이 없어도 그 구분이 대신하고 있었습니다.

지금은 그 구분 없이도 배포가 됩니다. 그리고 보장한다는 문장은 오히려 더 선명하게 적힙니다. 확인해 본 사람은 "아마 안 나갈 겁니다"라고 말하고, 확인해 보지 않은 사람은 "안 나갑니다"라고 말합니다. 문장만 보면 뒤쪽이 더 믿음직합니다.

앞 절의 글은 반대쪽에 서 있습니다. 표본이 20명이라 단정하기 어렵다고 적은 문장은 읽는 사람을 설득하는 데 아무 도움이 안 됩니다. 그런데 그 문장이 있어서 나머지 숫자를 어디까지 믿을지 가늠할 수 있게 됩니다.

제가 무료 도구를 쓸 때 보는 것이 하나 바뀌었습니다. 만든 사람이 얼마나 성실해 보이는지는 이제 덜 봅니다. 이 화면이 틀렸을 때 그걸 누가 언제 알게 되는지를 봅니다. 남의 얼굴이 찍힌 사진을 올릴 때는 특히 그렇습니다. 그 질문에 답할 사람이 어디에도 없으면, 답을 가진 사람이 아무도 없다는 뜻이기도 하니까요.

댓글

이 블로그의 인기 게시물

아이들은 우리 게임에 들어오지 못한다

AI 부업 강의 여섯 편이 "리스크가 제로죠"라고 말했다

AI가 썼다는 브라우저 300만 줄에서 112만 줄은 남의 코드였다