Canonical/Ubuntu의 Rust 채택이 Rust 생태계의 ‘캐즘(cchasm)’ 돌파와 기준 고객(reference customer) 형성에 어떤 의미가 있는지, 그리고 그 과정에서 Rust 프로젝트가 마주할 과제들을 정리한다.
이 블로그는 제가 여러 가지 덜 다듬어진 아이디어를 올리는 곳입니다.
선택된 글:
2026년 2월 23일
좋습니다. Rust Nation에서 돌아왔고, (인정하건대 끔찍한) 영국식 억양 흉내로 십대 딸을 열심히 경악시키고 있습니다1. 아주 좋은 여행이었고, 유익한 대화도 많았고, 흥미로운 관찰도 몇 가지 있었습니다. 그중 몇 가지를 블로그에 써보려 하는데, 시작은 Jon Seager의 폐막 키노트 “Rust Adoption At Scale with Ubuntu”를 보며 떠오른 생각들입니다.
저는 한동안 스스로와 논쟁해 왔습니다. Rust가 과연 “캐즘을 건넜는가”? 이 용어가 익숙하지 않다면, 기술 수용 생애 주기(Technology Adoption Life Cycle)를 일종의 “대중과학(pop-sci)” 방식으로 소개하는 책에서 나온 말입니다.
답은, 당연히, 누구에게 묻느냐에 따라 다르다 입니다. 제가 가장 가까이 보는 아마존(Amazon) 내부에서는 “거의 다 건넜다”에 가깝습니다. Rust는 대규모 데이터 플레인(at-scale data plane)이나 리소스 인지형 에이전트(resource-aware agent)를 만드는 올바른 방식으로 확고히 자리 잡았고, 디바이스 및 로보틱스의 저수준 코드에서도 올바른 선택으로 점점 더 받아들여지고 있습니다. 다만 여전히 “S3의 잘난 개발자들”(혹은 어딘가)의 도구이지, 평균적인 개발에는 다소 과하다는 인식이 남아 있습니다3.
반면 안전 필수 소프트웨어(Safety Critical Software) 분야에서는, Pete LeVasseur가 최근 rust-lang 블로그 글에서 쓴 것처럼, Rust는 아직 발판을 마련하려고 애쓰는 중입니다. 성공적인 제품이 몇 가지 있기는 하지만, 업계 대부분은 초기 채택자들이 길을 닦는 것을 지켜보는 “관망” 모드입니다.
제가 Crossing the Chasm과 기술 수용 생애 주기에 관한 다른 자료들을 읽고 얻은 가장 큰 핵심은 “기준 고객(reference customer)”의 필요성입니다. 새로운 무언가를 처음 시작할 때는, 새로운 것에 끌리는 개척자(pioneer)와 초기 채택자(early adopter)를 찾게 됩니다:
초기 채택자가 구매하는 것은 [..] 어떤 형태의 변화 촉진제(change agent) 입니다. 업계에서 이 변화를 최초로 도입함으로써, 초기 채택자들은 경쟁사보다 앞서 나가기를 기대합니다. – Crossing the Chasm
하지만 기술이 성숙해질수록, 점점 더 위험을 감내할 의지가 낮은 사람들을 설득해야 합니다:
초기 다수(early majority)는 기존 운영을 위한 생산성 개선(productivity improvement) 을 구매하고자 합니다. 그들은 과거 방식과의 단절을 최소화하려 합니다. 혁명이 아니라 진화를 원합니다. – Crossing the Chasm
그렇다면 사람들이 새로운 것을 시도하도록 만드는 가장 설득력 있는 근거는 무엇일까요? 답은 “자기와 비슷한 다른 사람들이 성공한 것을 보는 것”입니다.
이 점은 아마존 사례와 안전 필수 소프트웨어 사례 모두에서 드러납니다. 네트워크 서비스에 Rust가 쓰인다는 사실만으로는, Rust가 당신 차의 스티어링 칼럼에 쓰일 준비가 되었다는 뜻이 아닙니다4. 그리고 네트워크 서비스 내부에서도, S3 같은 그룹이 Rust로 성공했다는 것은 대규모 서비스를 만드는 다른 그룹에는 설득력이 있을 수 있지만, 다음 CRUD 서비스를 Rust로 만들도록 한 팀을 설득하는 데는 충분하지 않을 수 있습니다. 솔직히 그래야 합니다! 그런 팀은 장애물을 만나기 쉽습니다.
이 모든 생각을 품은 채로, 저는 Canonical(우분투를 만드는 회사)의 엔지니어링 부사장(VP of Engineering)인 Jon Seager의 키노트를 지켜봤습니다. 과거 Lars Bergstrom이 구글 내 Rust 채택을 다룬 서사적 키노트처럼, Jon은 Canonical이 Rust를 채택하는 이유를 설명했는데, 그 메시지는 동시에 비전적이면서도 지극히 실용적이었습니다.
“비전적이면서도 지극히 실용적”이라는 표현은 _초기 채택자_에서 _초기 다수_로 건너기 위해 우리가 필요로 하는 것을 거의 교과서적으로 설명합니다. 무엇보다 올바른 결과를 전달하는 데 관심이 있지만, 그 일을 더 잘하기 위한 새로운 아이디어에도 열려 있는 사람들; 캐즘 양쪽에 동시에 설 수 있는 사람들이 필요합니다.
Jon은 Canonical이 자체 개발에서 소수의 언어에 집중한다는 점(파이썬, C/C++, Go)과, 최근 Rust를 도입해 새로운 기반(foundation) 작업의 기본 선택 언어로 쓰고 있으며, C, C++, 그리고 (일부 용도의) 파이썬을 대체하고 있다는 점을 설명했습니다.
Jon은 우분투의 역할 중 하나가 메모리 안전한 기반 유틸리티의 구축을 지원함으로써 “선순환을 만든다(pay it forward)”고 이야기했습니다. 여기서 지원은 재정적 지원과 평판(reputation) 측면 모두를 의미합니다. Canonical은 Trifecta Tech Foundation이 sudo-rs와 ntpd-rs를 개발하도록 후원하고, uutils org의 coreutils 작업도 후원하고 있습니다. 또한 우분투는 새로운 일을 시도하는 위험을 감수하고, 그것이 작동함을 증명한 뒤, 다른 이들이 그 혜택을 누리게 할 수 있습니다.
Crossing the Chasm이 초기 다수를 어떻게 묘사했는지 기억하시나요? 그들은 “과거 방식과의 단절을 최소화하려 한다”고 했습니다. 그렇다면 기존 워크플로에 그대로 끼워 넣을 수 있는(drop-in) 유틸리티보다 더 좋은 방법이 있을까요?
새로운 채택은 새로운 관점을 가져옵니다. 목요일 밤, 저는 Ernest Kissiedu가 주최한 저녁 자리5에 있었습니다6. 그곳에는 Jon Seager를 비롯해 다양한 산업의 Rust 채택자들이 있었고, Rust 재단과 오픈 소스 프로젝트 쪽 사람들도 몇 명 있었습니다.
Ernest는 그들에게 Rust에 대한 가감 없는 평가를 들려 달라고 요청했습니다. Jon은 표준 라이브러리를 작게 유지하는 정책을 재검토할 필요가 있다는 도발적인 코멘트를 했습니다. 이런 이야기는 그가 처음 한 것도 아니고, 수년 동안 계속 들어오던 이야기입니다. 그리고 저는 그가 옳다고 생각합니다! 다만 해답이 “표준 라이브러리를 크게 만들어 배포하자”는 것만은 아니라고 봅니다. 사실 이 주제는 (제가 바라건대) 다음 글의 완벽한 도입이기도 한데, 저는 그 글에서 “배터리 팩(battery packs)”7이라는 프로젝트에 대해 쓰려 합니다.
더 큰 요점은, “개척자”와 “초기 채택자”를 대상으로 하던 단계에서 “초기 다수”를 대상으로 전환하는 일은 때때로 불편한 변화를 수반한다는 것입니다:
어떤 두 채택 세그먼트 사이의 전환도 보통 견디기 힘들 만큼 어색하다. 낡은 전략이 가장 익숙해진 바로 그 시점에, 새로운 전략을 채택해야 하기 때문이다. [..] 비전가들을 상대로 한 마케팅 성공 직후, 하이테크 기업이 판매 메시지를 바꾸지 않으면 상황은 더 복잡해질 수 있다. [..] 회사는 ‘최첨단(state-of-the-art)’이라고 말하는데, 실용주의자는 ‘업계 표준(industry standard)’을 듣고 싶어할 수 있다. – Crossing the Chasm (강조는 필자)
모두가 기억하진 못하겠지만, 2016년에 Rust Platform이라는 제안이 있었습니다. 아이디어는 몇몇 크레이트(crate)를 들여와 “확장 표준 라이브러리” 같은 것으로 축복(bless)하자는 것이었습니다. 사람들은 정말 싫어했습니다. “Cargo.toml에 의존성 추가하면 되잖아? 쉽잖아.”라고 했죠. 그리고 솔직히, 그들은 맞았습니다 — 적어도 그 당시에는요.
저는 Rust Platform이, 최신 것을 원하고 최고의 크레이트를 찾는 데 부담이 없는 초기 채택자에게는 맞지 않지만, 초기 다수에게는 아주 잘 맞을 수 있는 사례라고 생각합니다8.
어쨌든 이 글에서 어떤 한 방안을 주장하려는 것은 아닙니다. 다만 우리가 익혀 온 지혜를 새로운 환경에 맞춰 조정하는 데 열려 있어야 한다는 개념을 말하고 싶었습니다. 과거에는 Rust를 업계의 의식 속에 ‘부트스트랩’하려 했고 — 우리는 그에 성공했습니다.
이제 눈앞의 과제는 다릅니다: Rust를 ‘될 수도 있는 것(what it could be)’뿐 아니라 ‘실제로 지금 있는 모습(what it actually is)’의 관점에서도 최고의 선택으로 만들어야 합니다 — 그리고 때로 이 둘은 긴장 관계에 있습니다.
저녁 자리 후반에는, 늘 그렇듯, 돈 이야기가 나왔습니다. Rust 채택이 늘면 Rust 프로젝트와 생태계에 요구되는 것도 늘어납니다. 이 점들을 어떻게 연결할 수 있을까요? 이는 제가 크게 고민해 온 주제입니다. 이 문단을 쓰면서도, 이 주제에 관해 아직 써야 할 글이 얼마나 많은지 새삼 깨닫습니다. 하지만 그날 저녁과 다른 최근 자리에서 나온 흥미로운 포인트 몇 가지를 정리해 보겠습니다.
첫째, 지원 방식은 $$만 있는 것이 아닙니다. Canonical처럼 철저히 오픈 소스 조직인 경우, 제가 가장 원하는 것은 우리 조직들 간의 더 강한 관계를 구축하는 것입니다. Rust for Linux 개발자들과의 관계를 보면, 초기에는 Rust 메인테이너들이 RfL 개발자들을 대신해 우선순위를 잡고 버그를 수정하곤 했는데, 점점 더 RfL 개발자들이 직접 고치고, Rust 메인테이너는 멘토 역할을 하고 있습니다. 정말 훌륭합니다!
둘째, $$와 관련해 제가 여러 곳에서 본 흥미로운 트렌드가 있습니다. 우리는 종종 기업이 자신들이 의존하는 오픈 소스 의존성에 투자한다고 생각합니다. 하지만 완전히 다른 자금 원천이 있는데, 오히려 더 쉽게 활용할 수 있을지도 모릅니다. 바로 Rust를 아직 채택하지는 않았지만 검토 중인 회사들을 보는 것입니다.
이런 “예비” 채택자 조직에는 종종 Rust 채택의 당위성을 만들려는 _개인_이 있습니다. 이들은 초기 채택자, 즉 “어떻게 될 수 있는지”에 대한 비전을 가진 사람이지만, 초기 다수 성향의 회사 내부를 설득해야 합니다. 그러려면 지원되어야 하는 “필수 조건(table stakes)” 기능 목록이 있는 경우가 많고, 더 나아가 이런 것들을 실제로 가능하게 만들 예산에 접근할 수 있는 경우도 많습니다.
이 점은 Rust 재단의 실버 멤버 디렉터(Silver Member Directory)인 Alexandru Radovici와 이야기할 때도 나왔습니다. 그는 많은 안전 필수 기업들이 Rust의 여러 격차를 메우는 데 쓰고 싶은 돈이 있지만, 그 돈을 어떻게 써야 할지 모른다고 했습니다. Trifecta Tech과 uutils org에 대한 Jon의 투자도 같은 성격입니다. 그는 우분투가 Rust를 더 많이 쓰는 데 장애가 되는 격차를 메우고자 합니다.
우선 Jon의 발표를 보셔야 합니다. 영국식 표현으로 말하자면 “Brilliant(훌륭하다)”.
그리고 제 또 다른 큰 생각은, 지금이 Rust에게 매우 중요한 시점이라는 것입니다. 우리는 여러 영역에서 비전가와 초기 채택자에서 실용적 다수(pragmatic majority)로 명확히 전환 중이며, 그 과정에서 우리가 늘 해 오던 방식의 일부를 바꿔야 할 수도 있음을 염두에 둬야 합니다. 아래는 Crossing the Chasm에서 제가 좋다고 느낀 문단입니다:
실용주의자에게 성공적으로 마케팅하기 위해, 꼭 실용주의자일 필요는 없다 — 그들의 가치를 이해하고 그들을 섬기기 위해 노력하면 된다. 그 가치들을 더 자세히 보면, 비전가의 목표가 양자 도약(quantum leap)이라면 실용주의자의 목표는 퍼센트 개선 — 점진적이고, 측정 가능하고, 예측 가능한 진보다. [..] 실용주의자에게 마케팅하려면 인내가 필요하다. 그들의 특정 비즈니스를 지배하는 이슈들에 능통해야 한다. 그들이 참석하는 산업별 컨퍼런스와 전시회에 직접 나타나야 한다.
이 글을 쓰며 Crossing the Chasm을 다시 읽는 것은 Rust가 어디에 있는지 이해하는 데 큰 도움이 되었습니다. 대체로, 우리는 여전히 캐즘을 건너는 중이지만, 꽤 멀리 왔다고 생각합니다. 이제 일관되게 보이는 흐름은, 초기 채택자의 “비전가” 프로필에 맞는 Rust _챔피언_들이, 실용주의적 초기 다수 성향의 회사들 내부에서 Rust를 성공적으로 옹호하고 있다는 것입니다.
오픈 소스는 이런 종류의 마케팅을 하기에 정말 놀라운 플랫폼이라고 느낍니다. 기업과 달리, 우리가 모든 것을 직접 할 필요는 없습니다. _오픈 소스는 스스로를 돕는 사람을 돕는다_는 사실을 활용해야 합니다. Rust로 큰 이득을 볼 수 있는 산업에서 비전가적 사람들을 찾고, 그들을 Rust 궤도 안으로 끌어들인 뒤, 그리고 (가장 중요하게!) 그들이 Rust를 자신의 필요에 맞게 적응시키도록 지원하고 역량을 부여해야 합니다.
마지막 부분은 뻔하게 들릴지도 모르지만, 생각보다 어렵습니다. 오픈 소스에 몸담고 있으면 모두가 환영받는 친절한 곳처럼 보입니다. 하지만 현실은, 파벌과 “구전 전통(oral traditions)”— “누구나 아는” 것들9 —로 가득한 곳이 될 때도 있습니다. 어떤 아이디어를 들고 온 사람은 ‘잘못된 단어’를 썼다는 이유로 잘릴 수 있습니다. 임의의 기여자(혹은 그냥 트롤일 수도…)가 남긴, 음, “열정적인” 코멘트를 프로젝트 리더십의 공식 입장으로 오해하기도 쉽습니다. 무례한 답변 하나면 누군가를 떠나게 하기에 충분합니다.
그렇다면 Rust가 성공하는 데 궁극적으로 가장 도움이 될 것은 무엇일까요? 오픈 소스에서의 공감. Rust가 사람들에게 어디서 도움이 될 수 있는지 찾아보고, 실제로 가능하게 만들어 봅시다. 흥미진진한 시기입니다!
저는 악센트를 정말 못한다고 악명이 높습니다. 제가 ‘상류층 영국식’을 최선을 다해 해도, 심슨의 아푸(Apu)처럼 들립니다. 그럴듯한 그리스 억양을 해 보고 싶지만, 안타깝게도 안 됩니다.↩︎
제 또 다른 “지혜의 진주”는 “임시 코드만큼 영구적인 것은 없다”입니다. 대학 졸업 후 일했던 스타트업 시절부터 하던 말인데, 경험이 쌓일수록 점점 더 সত্য라는 것이 증명되었습니다.↩︎
Russel Cohen과 Jess Izen은 작년 RustConf에서 우리 팀이 팀들이 Rust가 자신들에게 실용적인지 판단하도록 돕기 위해 무엇을 하는지에 대해 훌륭한 발표를 했습니다. 하지만 그 이후로 큰 영향을 주는 또 다른 요소는 AI입니다. AI는 오래된 시스템을 다시 쓰는 것 같은, 이전에는 상상도 못했던 프로젝트를 현실적인 범위 안으로 끌어오고 있습니다.↩︎
참고로, 차의 스티어링 칼럼에 코드가 있는지 저는 모릅니다. 지금쯤은 있지 않을까요? 파워 스티어링 같은 거, 뭐 그런 거요?↩︎
아니면 이걸 “tea”라고 불러야 하나요? 혹은 “supper”? 영국의 식사 시간대는 도무지 감이 안 잡힙니다.↩︎
Ernest와 함께 있으면 정말 즐겁습니다. 조용한 사람이지만, 이야기를 꺼내도록 설득할 수만 있다면 통찰이 많습니다. 그를 만날 기회가 있으면 꼭 그러세요! 런던에 산다면 런던 Rust 밋업에 가세요! Ernest를 찾아 자기소개하고, Niko가 보냈다고 말한 뒤, 그가 얼마나 대단한지, 그리고 그가 수년에 걸쳐 쌓아온 지혜로부터 배우고 싶다고 말해야 한다고 하세요. 그리고 그가 얼굴을 붉히는 걸 지켜보세요. 정말 귀여운 사람입니다.↩︎
제가 말하고 싶은 Battery Packs 제안은 어떤 면에서 Rust Platform과 비슷하지만, 분산형이고, 제 생각엔 전반적으로 더 낫습니다 — 하지만 제가 너무 앞서 나갔네요
Betteridge의 헤드라인 법칙에 따르면 “물음표로 끝나는 헤드라인은 _no_라는 단어로 답할 수 있다”고 합니다. 그런데 오픈 소스에 대한 Niko의 법칙2은 “’누구나’ 아는 것을 실제로 아는 사람은 아무도 없다”입니다.↩︎