지난 세기의 후반기는 단 하나의 기술혁명으로 대표됩니다. 바로 소프트웨어 혁명입니다. 규소라는 물질에 전자를 프로그래밍하는 능력은 한때 우리가 상상도 하지 못했지만, 지금은 세상의 작동 방식을 완전히 바꾸어 놓은 많은 기술과 산업, 회사들을 가능케 했습니다. 반면 이번 세기의 전반기에는 또 다른 소프트웨어 혁명이 큰 변화를 가져올 겁니다. 바로 생체 소프트웨어 혁명입니다. 이 혁명은 생체라는 물질을 생화학적으로 프로그래밍하는 능력에서 비롯될 겁니다. 그러면 우리는 생물학의 성과를 이용해 새로운 치료법을 개발하고, 손상된 생체 조직을 복구하며, 결함 있는 세포를 재프로그래밍하거나, 프로그래밍 가능한 생화학적 운영체제를 설계할 수도 있습니다. 우리가 이를 실현할 수 있다면, 또 반드시 실현해야겠지만, 기존의 소프트웨어 혁명이 빛바랠 만큼 굉장한 여파를 미칠 겁니다. 생체 소프트웨어는 제약, 농업, 에너지 산업등 IT와 직접적인 연관성이 없는 수많은 분야에까지 막대한 변화를 가져올 것이기 때문입니다. 프로그래밍 가능한 식물을 상상해 봅시다. 이 식물은 질소를 더 효과적으로 고정하고, 유행하는 곰팡이균에 저항하며, 일 년에 한 번 대신 두 번씩 열매를 맺어 수확량을 두 배로 늘릴 수도 있습니다. 이는 농업의 양상을 완전히 바꾸어 점점 증가하는 세계 인구의 식량 소비량을 충당할 수 있는 방법이 될 것입니다. 이번에는 프로그래밍 가능한 면역체계를 상상해봅시다. 분자 단위로 제작된 생화학적 도구들이 당신의 면역체계를 도와 질병을 감지하고, 제거하며, 또는 예방할 수도 있습니다. 이는 의학의 양상을 완전히 바꾸어 점점 증가하고 고령화되는 세계 인구의 건강을 지킬 방법이 될 것입니다. 이미 생물 소프트웨어를 실현시킬 수 있는 많은 도구가 있습니다. CRISPR 기술을 통해 유전자를 정밀히 조작할 수 있고, 유전 부호를 개별 염기 수준에서 고쳐쓸 수 있으며, DNA로부터 실제 작동하는 합성 회로를 만들어낼 수도 있습니다. 하지만 이 도구들을 언제, 어떻게 사용해야 하는지는 여전히 시행착오를 통해 배울 수밖에 없습니다. 이를 위해서는 높은 전문성과 다년간의 경험이 필요합니다. 이 분야의 실험결과들은 찾아보기 힘들며 불행하게도 많은 경우 재현하기도 어렵습니다. 게다가, 우리는 생물을 연구할 때 각각의 기관에만 너무 주의를 기울이곤 합니다. 하지만 누구나 알듯이, 깃털만 따로 연구해서는 절대 새들이 나는 원리를 이해할 수 없습니다. 그래서 생체 프로그래밍은 아직 컴퓨터를 프로그래밍하는 것처럼 간단치 않습니다. 문제를 더 악화시키는 건, 여러분과 제가 매일 프로그래밍하는 기계적인 시스템이 생체 시스템과 별로 공통점이 없다는 겁니다. 기계적인 시스템과 다르게, 생체 시스템은 스스로 발생하고, 스스로 자신을 구성하며, 분자단위에서 작동합니다. 또 이런 분자단위의 상호작용은 대개 뚜렷한 거시적인 결과를 만들어냅니다. 생체 시스템은 스스로를 복구할 수도 있습니다. 예를 들어, 집에서 키우는 작은 식물, 여러분이 자꾸만 물 주기를 잊어버리는 그 화분을 생각해봅시다. 여러분이 알아차리지 못해도, 이 식물은 매일 잠에서 깨어 자신의 자원을 어떻게 배분할지 결정해야 합니다. 성장해야 할까요, 광합성해야 할까요, 아니면 씨앗을 만들거나 꽃을 피워야 할까요? 이 결정은 각 기관이 아니라 전체 개체 수준에서 이루어져야 합니다. 하지만 식물에게는 결정을 내릴 뇌가 없기 때문에, 잎 세포만으로 문제를 해결해야 합니다. 잎 세포들은 환경에 반응해 전체 개체에 영향을 미칠 결정을 내려야 합니다. 그러니 이 세포들에는 어떤 프로그램이 내장되어 있어, 입력되는 신호에 반응해 자신이 무엇을 할지 결정하는 것이 분명합니다. 세포들이 서로 협동해 전체 개체를 키워내려면 이 프로그램은 분산 방식으로 작동해야 합니다. 이 생물학적 프로그램, 생물학적 연산을 우리가 규명해낼 수 있다면 세포들이 어떻게, 왜 어떤 일을 하는지 훨씬 잘 이해할 수 있을 겁니다. 생물학적 프로그램을 이해하면, 무언가 문제가 생겼을 때 그걸 디버깅할 수 있습니다. 또는 이 프로그램들을 모방해 생체의 생화학적 연산능력을 온전히 활용하는 합성 회로를 설계할수도 있을 겁니다. 이런 비전에 대한 열정이 저를 수학과 컴퓨터 과학, 생물학의 접점을 연구하도록 이끌었습니다. 저는 생물학을 컴퓨터 과학의 관점에서 바라봅니다. 세포가 무엇을 연산하는지, 어떻게 생물학적 프로그램의 비밀을 밝혀낼 수 있을지 묻습니다. 캠브릿지 대학교에 있는 마이크로소프트 연구소의 동료들과 함께 이 문제를 연구하기 시작했습니다. 저희는 어떤 독특한 세포에 내장된 생체 프로그램을 이해하고자 했습니다. 바로 배아줄기세포입니다. 배아줄기세포는 아직 분화가 일어나지 않은 원시 상태라는 점에서 특별합니다. 이 세포는 자신이 원하는 어떤 세포로던 변할 수 있습니다. 뇌세포, 심장 세포, 뼈 세포, 간 세포, 분화를 마친 어떤 세포로든지요. 배아줄기세포를 구별 짓는 이 만능성은 과학계의 상상력에 불을 지폈습니다. 배아줄기세포의 잠재능력을 활용할 수 있다면 의학적으로 강력한 도구가 될 것이기 때문입니다. 배아줄기세포가 어떤 세포로 분화할지 스스로 선택하는 과정을 밝혀내면 우리는 이 세포를 사용해 감염되거나 손상된 조직 복구에 필요한 세포를 만들어낼 수 있을지도 모릅니다. 하지만 이런 비전을 실현시키는데는 몇 가지 문제가 존재합니다. 그 중 하나는, 배아줄기세포가 수정 후 단 6일 후에 나타난다는 점입니다. 그러고는 하루 이틀만에 사라져버립니다. 이미 서로 다른 방향으로 분화를 시작해 성인의 몸을 구성하는 각종 기관들을 구성하기 시작한 것이죠. 하지만 세포운명은 우리가 예상했던 것보다 더 가소적인 것으로 밝혀졌습니다. 13년 전 쯤에, 몇 명의 과학자들이 정말 놀라운 발견을 했습니다. 약간의 유전자를 성인 세포, 예를 들어 여러분의 피부 세포에 삽입해서 다시 원시 상태로 되돌릴 수 있다는 걸요. "재프로그래밍"으로 알려진 이 기전을 통해 줄기세포를 만병통치약으로 활용하는 미래를 상상해볼 수 있습니다. 환자의 세포를 채취해 분화 전의 원시 상태로 되돌려서 환자에게 필요한 세포라면 무엇이든, 뇌세포든 심장 세포든 만들 수 있을 겁니다. 하지만 지난 10년간의 노력에도 불구하고, 세포 운명을 바꾸는 방법을 찾는 연구는 여전히 시행착오의 연속입니다. 성공적인 실험 방법을 찾아낼 때도 있지만, 그 숫자는 여전히 불충분하고, 우리는 그 방법들이 어떻게, 왜 좋은 결과를 가져오는지 잘 이해하지 못합니다. 줄기세포를 심장 세포로 분화시키는 방법을 찾아냈다고 해도, 그 발견은 줄기세포를 뇌세포로 분화시키는 방법에 대해서는 아무 것도 알려주지 않습니다. 그러니까 우리는 배아줄기세포에 내장된 생물학적 프로그램을 이해하고 싶었습니다. 생체 시스템이 수행하는 연산을 이해하려면, 먼저 정말 간단한 질문을 하나 던져야 합니다. 그 시스템이 무엇을 해야 할까요? 컴퓨터 과 학에는 소프트웨어와 하드웨어가 무엇을 해야 하는지 규정하기 위한 여러 기술이 있습니다. 어떤 프로그램을 작성할 때, 다시 말해 소프트웨어를 코딩할 때 우리는 그 소프트웨어가 올바르게 작동하기를 바랍니다. 다양한 기능을 빠르게 수행하기 바라고, 버그가 없기를 바랍니다. 버그는 큰 문제를 일으킬지도 모릅니다. 그래서 개발자가 프로그램을 작성할 때는, 여러 명시 사항을 기록해 둡니다. 이것이 바로 프로그램이 해야 할 일입니다. 두 숫자의 크기를 비교하는 일일 수도 있고, 숫자들을 오름차순으로 정렬하는 일일 수도 있습니다. 개발자에게는 프로그램이 자신의 명시 사항을 만족하는지, 즉 해야 할 일을 잘 해내는지 자동으로 확인해 주는 기술이 있습니다. 같은 맥락에서 저희는 실험실에서 얻는 관측 결과, 측정값들이 생체 프로그램이 무엇을 해야 하는지에 대한 명시 사항에 해당하는 것이라 생각했습니다. 저희는 이 새로운 종류의 명시 사항을 부호화하는 방법만 찾으면 되었습니다. 실험실에서 유전자들을 오랫동안 관찰해보니 유전자 A가 활성화되어 있을 때는, 유전자 B나 유전자 C도 활성상태에 있다는 걸 발견했다고 합시다. 그러면 이 관측 결과를 논리 언어를 사용해서 수학적 표현으로 옮겨 적을 수 있습니다. 만약 A라면, B 또는 C이다. 물론 현실은 이만큼 간단하지 않습니다. 이 예시는 그저 설명을 위한 겁니다. 하지만 더 풍부한 논리 표현을 사용하면 서로 다른 여러 실험에서 검증된, 복수 유전자와 단백질의 시간에 따른 행동을 부호화할 수 있습니다. 이렇게 관측 결과를 수학적 표현으로 바꾸면, 이 결과가 유전자 사이의 상호작용을 기술하는 특정 프로그램의 결과와 모순이 없는지 판별할 수 있습니다. 이 작업을 위한 도구를 저희가 개발했습니다. 이 도구를 사용해 관측 결과를 수학적 표현으로 부호화하고, 부호화한 관측 결과를 모두 설명해주는 유전자 프로그램을 찾아낼 수 있었습니다. 이후 저희는 같은 도구를 사용해 배아줄기세포에 내장된 유전자 프로그램을 이해하고 세포를 분화 전의 원시상태로 되돌리는 방법을 찾고자 했습니다. 이 도구는 사실 세계 곳곳에서 소프트웨어 검증을 위해 일상적으로 활용되는 솔버(풀이 프로그램)를 기초로 개발되었습니다. 배아줄기세포를 관찰하며 기록한 50개에 달하는 명시 사항들을 이 도구를 사용해 부호화해서 그 모두를 설명할 수 있는 첫 번째 분자 프로그램을 찾아내는 데 성공했습니다. 이것 만으로도 충분히 큰 성과입니다, 그렇죠? 서로 다른 수 많은 관측 결과에 빠짐없이 부합하는 가설을 찾는 작업은 결코 주먹구구식으로 이루어질 수 없습니다. 여러분 손가락이 아무리 많더라도요. 문제를 여기까지 해결했으니 한 걸음 더 나가봅시다. 밝혀진 유전자 프로그램을 바탕으로 아직 실험하지 않은 조건에서의 배아줄기세포의 행동을 예측하는 겁니다. 저희는 유전자 프로그램을 컴퓨터로 옮겨서 시뮬레이션 해보았습니다. 그 결과를 실험실에서 직접 검증해본 결과 저희가 찾아낸 프로그램의 예측은 매우 정확했습니다. 이 프로그램은 세포의 역분화 과정을 손쉽게, 효과적으로 가속시키는 방법을 알려주었습니다. 어떤 유전자를 표적으로 해야하는지, 또 어떤 유전자가 역분화 과정을 저해할지도요. 이 프로그램은 유전자들이 활성화 되는 순서도 예측해냈습니다. 저희의 접근 방식은 세포 활동의 숨겨진 작동 원리를 밝혀내는 데 아주 성공적이었습니다. 이 방법은 줄기세포를 연구하는 데만 적용될 수 있는 것이 아닙니다. 더 범용적으로, 세포가 수행하는 연산을 유전자 간 상호작용의 관점에서 이해하게 해주는 도구라 말할 수 있습니다. 어느 건물에나 쓰일 수 있는 벽돌인 셈입니다. 이 분야에는 새로운 접근 방식이 절실히 필요합니다. 생물학적 연산을 더 폭넓게, DNA에서 세포 간 정보 교환에 이르는 다양한 수준에서 이해하기 위해서요. 이런 근본적인 이해가 뒷받침 되어야만 생물학을 안정적이고 예측 가능한 방식으로 활용할 수 있습니다. 아직 생체 프로그래밍을 위해서는, 다른 도구와 언어도 개발되어야 합니다. 실험 생물학자와 컴퓨터 과학자 모두 생물학적 기능을 설계하고 그것을 컴파일해 세포의 기계어, 즉 생화학적 정보로 바꿀 수 있어야만 생체 프로그램을 작성할 수 있습니다. 생체 소프트웨어 컴파일러라고 부를 만한 도구인데, 자랑스럽게도 제가 속한 마이크로소프트 팀에서 개발 중에 있습니다. 큰 도전이라는 표현으로도 부족할 만큼 어려운 과제이지만, 만약 실현된다면, 컴퓨터와 생체 소프트웨어 사이를 잇는 마지막 다리를 놓게 될 겁니다. 더 넓은 관점에서, 생체 프로그래밍이 가능하려면 이 분야에서 학문 간 교류가 원활히 이루어져야 합니다. 물상 과학과 생명과학이 이어지고, 각각의 분야를 연구하는 과학자들이 공통의 언어를 갖고 함께 일하며 과학적 질문을 공유할 수 있어야 합니다. 미래를 볼 때, 지금의 거대 소프트웨어 기업들과 우리가 일상적으로 사용하는 첨단 기술들이 실리콘 마이크로칩에 처음 프로그래밍을 시작했을 때는 상상조차 하지 못했던 것들이었음을 기억할 필요가 있습니다. 전산생물학이 연 기술 발전의 가능성에 대해 지금부터 생각해본다면 그 미래를 실현시키기 위해 우리가 무엇을 해야할 지 알 수 있을 겁니다. 한 가지 염려스러운 것은 이런 기술이 오남용될 수 있다는 점입니다. 프로그래밍 가능한 면역세포의 가능성에 대해 말하려면 동시에 면역 체계를 회피하도록 설계된 세균의 가능성에 대해서도 고려해보아야 합니다. 그런 세균을 만드려는 사람이 있을지도 모릅니다. 그나마 위안이 되는 것은, 과학자들에게는 별로 해당하지 않는 이야기지만, 생물이 다루기 까다로운 대상이라는 점입니다. 그래서 생체 프로그래밍이 여러분 뒷마당에서 쉽게 할 수 있는 일은 아닙니다. 하지만 이 분야가 아직 시작 단계에 있기 때문에, 우리는 경각심을 갖고 나아가야 합니다. 정면으로 힘든 질문을 던지고, 필요한 안전장치를 마련하며, 그 일환으로 연구 윤리에 대해 고민해봐야 합니다. 어떤 생명 기능까지 설계해도 되는지 규제가 필요할지도 모릅니다. 이를 위해서는 생명윤리에 대한 연구가 우선되어야 합니다. 과학의 눈부신 발전 가능성에 마음을 뺏겨 윤리가 뒷선으로 밀려서는 안 됩니다. 이 여정의 종점, 궁극적인 보상은 농업에서 의학, 에너지 산업, 재료공학, 심지어 컴퓨터 과학에 이르는 다양한 분야의 혁신적인 생산성 향상과 혁신적 응용 기술들이 될 겁니다. 언젠가는 지구 전체가 지속 가능한 친환경 에너지만으로 생활할지도 모릅니다. 식물들이 수백만년 전부터 하던 것처럼 기존의 태양광 패널과는 비교할 수 없는 효율로 태양에너지를 이용할 수 있다면요. 식물이 태양광을 그렇게 효과적으로 흡수하는 양자 간 상호작용을 기술하는 프로그램을 찾아내면 그 프로그램을 바꿔 써, 차세대 태양광 전지의 재료가 되는 물질의 DNA 합성 회로를 설계할 수 있을지도 모릅니다. 지금도 이 주제의 기초 연구를 진행 중인 과학자들이 있습니다. 적절한 지원과 투자가 뒷받침된다면 10년에서 15년 내에 실현될 수도 있습니다. 지금 우리는 한 기술 혁명의 시작점에 있습니다. 식물이 오래 전부터 수행해 온 생물학적 연산에 대한 이해는 이 혁명의 아주 중요한 첫 단계입니다. 이것이 실현된다면, 우리는 생체 소프트웨어를 구동하는 운영체제의 시대로 진입할 겁니다. 감사합니다. (박수)