WhatsApp으로 신규 사용자를 온보딩하고 만들기
인터넷을 통해 비동기적으로 신규 사용자를 온보딩하고 생성해서 여러 사용자를 동시에 처리하는 일은, 막상 해보니 이런 생각이 드는 문제였다. 내가 이걸 왜 하고 있지? 이건 웹 개발자의 일이다. 나는 데이터를 처리하고 모델을 만들고 싶을 뿐이다. 그래도 GPT-4가 들어간 Cursor 덕분에 해결해서 다행이다.
나는 조카가 자라서 이렇게 말할 때를 꽤 기대하고 있다. 여러분은 어떻게 그렇게 오랫동안 멍청한 소프트웨어와 서비스를 견뎠나요!? 왜 회사들은 사람을 좌절로 빨아들이는 것 말고는 목적이 없어 보이는 챗봇과, 다시는 전화하고 싶지 않게 만드는 자동응답 전화를 배포하는 걸까? 금방 돌아와 충분히 괜찮은 답을 주는 지능형 시스템을 한 번 맛보고 나면, 마주치는 모든 인간 상담원을 그것과 비교하지 않기가 어렵다.
나는 한동안 내 코딩 작업 흐름을 최적화하려고 했다. 마지못해 쓰던 기본값은 ChatGPT 창을 Visual Studio Code 옆에 나란히 띄워두는 방식이었지만, 세상에서 가장 믿음직한 물건은 아니다. 같은 말을 반복하는 것이 싫고, A.I.가 내 맥락을 잊는 것도 싫다. A.I.가 게을러질 때 머리를 쥐어뜯는 것과 키보드를 두드리는 것 사이에서 나는 보통 후자로 간다. 대화 하나가 너무 길어지면 정말 느려지고, UI와 소비자 제품 쪽에는 가끔 이상한 오류가 튀어나오며, 무엇보다 최악은 사용량 제한이다. 세상에, 사용량 제한이라니. 그래서 더 나은 대안을 찾고 있었다.
GitHub Copilot은 건너뛰었다. 온라인에서 추천을 많이 보지 못했고, 내가 정말 좋아한 “코드베이스와 대화하기”가 되는 것처럼 보이지 않았기 때문이다. 그래서 Gemini Advanced, LM Studio의 로컬 모델 몇 가지, VSCode에서 Continue 쓰기 등을 시도했다. 그래도 내게는 GPT-4가 여전히 동급 최고다. LM Studio와 함께 쓰는 Continue는 너무 투박해서 거의 쓰지 않았다. 그러다 최근 참석한 행사에서 한 발표자가 Cursor를 언급했다. 들어본 이름이긴 했지만 아직 써보지 않았기에 한번 시도했고, 나는 미래의 소프트웨어와 서비스가 어떻게 만들어져야 하는지 아주 잠깐 엿본 것 같다. 데이터를 일급 시민으로 대하는 A.I. 네이티브 제품으로서 말이다. 기존 작업 흐름에 억지로 끼워 넣는 것보다 훨씬 더 자연스럽고 잘 작동한다.
Cursor 덕분에 나는 마침내 WhatsApp 위에서 온보딩과 사용자 생성 기능을 완성할 수 있었다. Firestore와 FastAPI로 구동되는 무상태 설계였다. 같은 기반 모델을 쓰고 있었지만, 내 기본 세팅으로는 이 문제를 푸는 과정이 너무 고통스러워서 그냥 포기하려던 참이었다. Cursor에서는 가능했지만, 이전에 시도했던 다른 도구와 프로세스에서는 계속 제자리였을 이유로 보이는 꽤 A.I. 네이티브한 요소들이 몇 가지 있었다.
-
ReAct로 디버깅
- 나를 바로 설득한 결정적 기능이었다. A.I.가 실시간으로 생각하고, 행동하고, 관찰하는 것을 볼 수 있다는 것만으로도 내 학습에는 엄청나게 강력했다. 우리가 A.I.를 사용할 때는 흔히 우리 자신의 지식과 상상력에 갇힌다. 그래서 A.I.가 지시 하나를 받아 해결책의 공간을 탐색하는 모습을 보는 것은 정말 매혹적이고, 내 소프트웨어 공학에 필요한 사고 모델과 기본 단위를 메타 학습하기에도 훌륭했다.
-
코드베이스 색인
-
맥락 안에서의 생성과 치환
-
긴 텍스트 조각의 잘라내기와 처리
-
인터넷에 접근할 수 있는 최신 코드 라이브러리
데이터를 일급 시민으로 삼아 A.I. 네이티브 제품과 경험을 만드는 일은, 내게는 “소프트웨어가 세상을 먹어치운다”는 말이 병렬화 가능한 스테로이드를 맞고 데이터의 지수 거듭제곱까지 곱한 것처럼 느껴진다. 아마 그래서 모든 것이 그렇게 오래도록 느리고 불가능했는데, 갑자기 모든 일이 한꺼번에 터진 것인지도 모른다. 이 중 많은 것이 오래된 아키텍처이고 수십 년 전 아이디어라는 점도 흥미롭다. 다만 이제야 그것들을 돌릴 계산 자원과 인터넷 규모의 데이터가 생겼다. 모든 기반, 구성 요소, 데이터, 인프라가 Google에 있었는데도 지금까지 대중 인식에서는 그렇게 뒤처져 보였다. 완전히 새로운 패러다임이라, 나이 든 사람도 젊은 사람도 미래를 향해 만들면서 배우는 이상한 신세계다. 모든 것이 너무 빠르게 움직이고, 결국 X -> ŷ이며 그 사이에 층이 몇 개 있느냐가 달라질 뿐이다. 나는 그게 너무, 너무 흥미롭다. 4월에는 티베트에서 확률, 통계, 그리고 그냥 A.I.와 꽤 오래 앉아 있고 싶다.
오래된 습관은 쉽게 죽지 않으니, 오늘날의 많은 거대 기업도 자기 시스템에 A.I.를 덧대며 오래 살아남고 번영할 것이라고 본다. 그래도 나는 데이터가 일급 시민인 A.I. 네이티브 세계에서 빨리 살고 싶다. 그 기본 단위가 가능해지면, 더 많은 사용자 데이터로 더 좋아지는 소프트웨어나 서비스를 만들지 않는 것은 그냥 멍청한 일 아닌가? 이 A.I. 콜드콜 에이전트와 음악 만들기는 정말 미쳤다. Google이 예전에 미용실 예약을 잡아준다고 했던 A.I. 비서는 모두가 잊어버렸으니 아마 잘 안 됐던 것 같은데, 그게 마치 어제 일처럼 느껴진다. 스마트폰은 우리가 정보를 소비하는 방식을 대체로 크게 바꿨지만, 대부분의 일은 여전히 인간이 입력을 받아 자기 내부 컴퓨터로 처리하고 끝에서 출력을 내는 방식이었다. 인류 역사상 처음으로, 우리는 그 모든 비즈니스 로직을 인간 노동이라는 체화된 컴퓨터에 인코딩하는 대신 훨씬 더 확장 가능하고 재현 가능한 계산 자원을 활용할 수 있다. 어쩌면 이런 점을 곱씹어볼 가치가 있다. 이름이 있는지는 모르겠지만, 우리는 기술에는 기대치를 아주 높게 세우고 인간에 대해서는 늘 변명하는 것처럼 느껴진다. 오늘 컨디션이 안 좋아. 잠이 부족해. 상황이 힘들어. 삶을 어떻게 해야 할지 모르니 그냥 버틴다. 그러면서 동시에 기술에는 일관되고 끈질기게 그냥 작동하기를 기대한다. 그것은 완전히 합리적이다. 다만 소프트웨어를 쓰고 소프트웨어로 구동되는 서비스를 만들수록 이런 질문이 커진다. 이런 도구를 효과적으로, 규모 있게 관리하려면 밑바탕의 작동 원리를 얼마나 알아야 하는가?
나는 기술적 전문성, 커뮤니케이션, 리더십을 제대로 섞는 일이 점점 더 중요해질 것이라고 강하게 의심한다. 여기서 기술적 전문성이란, 특히 경쟁 우위를 위해 지능을 활용하는 사업에 있다면, 이런 시스템을 깊이 물고 들어가 전문가 수준으로 추론할 수 있는 능력을 뜻한다. 다만 기계가 데이터에서 패턴을 보고 예측한다는 정도만 알면 충분한지, 아니면 필요할 때 직접 손실 함수를 쓸 수 있어야 하는지에 대해서는 아직 결론을 내리지 못했다. 유연한 함수 형태, 손실 최소화, 역전파를 모른 채 어떻게 그것들이 예측 기계로서 그렇게 좋은지에 대한 좋은 직관을 만들 수 있을까? 물론 이것들을 안다고 해서 세계와 진보의 방향에 대해 더 나은 예측 모델을 만드는 능력으로 반드시 이어지는 것은 아니다. 그러니 직접 알거나, 그 역할을 맡을 다른 누군가를 믿어야 한다. 그리고 아마 당신은 그 누군가를 놓고 세계 최대 기업들과 경쟁하게 될 것이다. 커뮤니케이션과 리더십은 결국 추론과 비판적 사고가 당분간 사라지지 않는다는 뜻이다.
결국, 깊은 바닷속에 깔린 케이블을 타고 흐르는 비트와 바이트가 이렇게 많은 것을 전송하고, 이렇게 많은 것을 가능하게 하며, 정부와 기관이 때로 실패하는 곳에서도 그냥 작동한다는 것은 조금 기적 같지 않은가? 경제, 자본, 계산 자원이 함께 만나는 아름다움 아닌가? 물론 기술이 만능 해결책이라는 말도 아니고, 업계에 문제가 없다는 말도 아니다. 접근성 문제는 내가 여기에서 이야기했다. 다만 나는 잠깐 A.I.의 따뜻한 빛 속에 머물고 싶다. :)
나 역시 내 시간으로 이 공간에서 가치 있는 무언가를 만들고 싶다. 인생의 그런 일 중 하나다. 잘 되고 내가 충분히 운이 좋다면 많은 돈을 벌 수도 있고, 잘 안 되어도 어쨌든 엄청 즐거웠을 테니, 왜 안 하겠는가!?
원래 PubPub에 erniesg.pubpub.org/pub/161hmmds로 게시되었습니다.