Usenix ATC '06 생중계 #3: 픽사가 SW를 개발하는 방법

권순선의 이미지

금요일의 마지막 세션은 픽사(Pixar) 애니메이션 스튜디오에서 소프트웨어를 총괄하고 있는 VP가 나와서 픽사가 어떻게 소프트웨어를 개발하는지, 어떤 어려움이 있고 어떻게 문제를 해결했는지 등에 대해서 발표했습니다.

평면적으로 기술하려니 좀 지루한 감이 있어서 몇가지 특기할 만한 사항을 위주로 가상의 인터뷰 형식으로 써 보겠습니다.

Q: 픽사는 어떤 회사인가요?
A: 픽사는 소프트웨어 회사가 아닙니다. 픽사는 애니메이션을 만드는 곳이고, 애니메이션의 경쟁력은 기본적으로 탄탄한 스토리에서 나오기 때문에 좋은 스토리를 만드는데 가장 많은 노력을 합니다. 전체적으로는 700여명의 직원들이 함께 일하고 있는데 이중 75명 정도가 애니메이터이고 소프트웨어 개발자는 100명 정도 됩니다. 개발자 한명당 평균 4대의 컴퓨터 시스템이 지급되지요.

Q: 소프트웨어가 중심이 아니라니 소프트웨어 개발자들에겐 그다지 좋은 직장이 아니라는 얘기 같은데요?
A: 음...다시한번 말씀드리지만 픽사는 소프트웨어 회사가 아닙니다. 애니메이션과 같은 창조적인 작업에는 각 프레임마다 아트 디렉터가 원하는 것이 계속 변합니다. 소프트웨어 개발자는 애니메이터를 보조하는 것이 기본적인 역할이라고 생각하시면 되겠고, 실제로 각 프레임이 어떻게 보일지 결정하는 사람은 소프트웨어 개발자가 아니기 때문에 요구사항이 수시로 바뀝니다. 예를 들면 같은 장면이라도 주인공이 이렇게 움직였으면 좋겠다... 저렇게 움직였으면 좋겠다... 하는 요구사항이 계속 바뀌죠. 마치 영화감독이 마음에 드는 장면을 찍기 위해서 몇번이고 '컷!'을 외치는 것처럼 말이죠.

Q: 픽사에서 사용하고 있는 소프트웨어는 대략 어떤 것이 있나요?
A: 저희가 in-house로 개발해서 사용중인 것은 매우 다양합니다. 렌더맨 등의 기본적인 SW 이외에도 각종 효과(effect)들을 표현하는 필터들, 애니메이터가 편리하게 작업을 할 수 있게 해 주는 GUI들 등등... 아주 다양합니다.

Q: 주로 어떤 언어와 어떤 툴을 사용하시는지, 코드의 양은 얼마나 되는지요?
A: 저희는 특정한 언어나 특정한 툴을 고집하지 않습니다. C/C++은 물론이고 Tcl/Tk, Python 등등... 매우 다양합니다. 가장 많은 부분을 차지하는 것은 C/C++인데 C 코드가 대략 32만 5천 라인 정도, C++ 코드가 대략 170만 라인 정도 되고 파일 수로 치면 7500개 정도가 됩니다. GUI로는 Qt를 사용하고 있습니다. purify, gdb 등 디버거들도 다양하게 사용합니다. 하여튼 매우매우 다양합니다.

Q: 사용하는 OS와 하드웨어는 주로 어떻게 되나요?
A: 토이 스토리 시절에는 SGI 머신을 주로 사용했습니다만 최근에 끝낸 'Cars'에는 인텔 기반 머신 위에서 리눅스로 작업했습니다.

Q: 이미 잘 사용하던 시스템이 있었는데 굳이 OS도 바꾸고 하드웨어도 바꾸어야 할 이유가 있었나요?
A: 비용 때문이죠. ^^ SGI 머신 한 대를 사려면 대략 15000불 정도가 듭니다. 그런데 어느날 어떤 엔지니어가 인텔 기반의 델 머신을 1000불 정도에 사 와서 SGI와 비슷한 성능을 낼 수 있다는 것을 보여 주었습니다. OS를 바꾼다는 것은 그전에 사용하던 소프트웨어를 모두 포팅해야 한다는 것을 의미했는데 처음에는 아주 어려울 줄 알았습니다. 그런데 누군가 렌더맨을 일주일만에 포팅해서 리눅스 위에 올렸는데 그럭저럭 돌아가는게 아니겠어요! 더 좋은 애니메이션을 만들기 위해서는 시간이 갈수록 더 많은 컴퓨팅 파워가 필요하기 때문에 비용절감이 매우 절실했습니다. 그리고 이렇게 리눅스로 전환이 가능했던 것은 저희가 소프트웨어를 개발할 때 처음부터 portability를 염두에 두고 작업을 해 왔기 때문입니다. GUI로 Qt를 사용하고 있는 것이 그 한 예가 되겠죠. C++ 코드가 가장 많은 것도 같은 이유입니다.

Q: 요즘은 컴퓨팅 파워가 어느 정도나 필요한가요?
A: 곧 개봉할 'Cars'에서는 토이 스토리 시절에 비해서 300배의 CPU time을 소모했습니다. 그러니 이걸 모두 SGI 머신으로 작업했더라면 원가가 너무 많이 들어서 돈을 많이 못 벌었겠지요. ^^

Q: 여기 나오신 게 마치 새 영화 홍보하시려고 나오신 것 같은데...
A: 맞습니다! 눈치채셨군요. Cars 많이 보러 오세요... ^^;;

Q: 인터뷰에 응해 주셔서 감사합니다. 픽사 애니메이션 스튜디오가 현재 직면하고 있는 소프트웨어 관련 이슈가 있다면 어떤 것이 있는지 궁금한데 그것은 2부에서 질문 드리지요. 'Cars'로 돈 많이 버시기 바랍니다. 그럼 이만~~

댓글

죠커의 이미지

Cars가 기대되는 군요.

- CN의 낙서장 / HanIRC:#CN

멤피스의 이미지

우와. 300배라니 정말 놀랍습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.