Wednesday, November 27, 2013

컴퓨팅 파워에 대한 단상 ─ 기술과 인문의 결합

Leave a Comment
음 컴퓨터를 접한 때를 기억한다. 초등학교 시절 형의 컴퓨터였다. 아파트 놀이터에서 야구를 하거나 공기 탁한 아파트 지하실에서 탁구를 치는 것이 거의 대부분이었던 나에 비해, 형은 컴퓨터를 가지고 항상 바쁘게 뭔가를 하고 있었다. 온통 초록의 화면으로 움직이는 것은 아마도 컴퓨터 게임이었다. 개인 소유 개념이 강했던 가풍(?)에 형은 자신의 컴퓨터를 쓰지 못하게 암호를 걸거나 부팅이 되지 않도록 막아두었다. 그때부터 게임을 향한 집착 20%, 암호 보안을 풀겠다는 승부욕 70%, 적절한 호기심 10% 정도로 형이 부재중일 때마다 항상 컴퓨터를 켜서 게임을 하려고 했다. 사실 게임이 중요한 것이 아니라 게임을 하기 위해 시스템을 통과했다는 승리감이 더 크지 않았을까 생각한다. 그렇게 접한 컴퓨터였고 그 이후에도 형은 항상 시대의 흐름에 맞춘 첨단 제품들이 있었다. 사용하기 위해서 컴퓨터의 부팅 원리 등 기본부터 접해야 했었다. 서점에 가서 책을 읽고 어떻게 공략하면 보안을 뚫고 게임을 할 수 있을까 궁리했던 것이다.


이제는 화려한 첨단 기기들이 우리 삶에 밀접한 존재가 되었지만 그때만 해도 컴퓨터조차 없어도 충분히 즐거울 수 있는 시대였다. 사실 고백하건데 그때 해가 저무는 풍경 속에서 땀흘리며 운동하던 기억이 지금의 어떤 동영상이나 게임보다 더 오래 남아 있다는 것은 아무래도 나이를 충분히 먹어가고 있다는 반증이 될지 모른다.

컴퓨터가 없으면 많은 것을 하지 못하는 세상이 되어버렸다. 특히 수학과 과학을 바탕으로 계산 과학 Computational Science 영역을 다루고 있는 나에게 컴퓨터는 절대적으로 필요한 대상일지 모른다. 일과의 대부분은 컴퓨터와 같이 하고 항상 모바일 기기가 있어 심지어 화장실 갈때도 당연히 같이 가는 존재가 되어버렸다. 몇일이라도 이런 문명의 이기 (利器) 를 버릴려고 하면 상당한 결심이 필요하게 되었다. 어쩌면 아날로그와 디지털이란 패러다임이 교차하는 시대에 살았던 사람일 수 있다는 사실이 다행이란 생각이 들 때가 많다. 태어나자 마자 내 주변에 첨단 기기들이 가득한 세상이었다면 아날로그가 주는 의미를 생각해볼 수 없었을지 모른다. 이런 추억거리를 이야기하고 싶어서 서론이 길어진 것은 아니다. 오히려 현재 컴퓨터, 모바일 기기와 같이 우리의 삶을 변화시키는 그 많은 제품들 속에서 한번쯤 생각해야 할 문제들을 제기하고 첨단 제품을 소비하기 전에 첨단 제품이 우리를 소비해버리지 않도록 하기 위한 부분, 이런 시스템 속에서 생각해볼 수 있는 컴퓨팅 파워 computing power 란 낯설지만 가까이 있는 주제에 대해 생각해보려 한다.


제품이 무엇을 해야할지 알려줄 때 ... 

한동안 모바일 시장과 함께 관련 기술은 급격한 발전을 보였다. 그 과정에서 모바일 기기는 양대산맥으로 나누어지게 되었다. iOS 와 안드로이드 OS 이다. 개인적으로 몇년전부터 안드로이드 기기만 사용한다. 그리고 안드로이드 레퍼런스 기기(폰) ─ 제조사, 통신사를 거치면서 추가, 변형된 형태의 모바일 OS 가 아닌 적절한 표현인지 모르지만 가장 순수한 형태, 조금 거친 표현으로 당장 쓸 기능만 있는 황무지 같은 모바일 기기만 사용한다. 소위 넥서스 NEXUS 시리즈로 이름 붙어진 제품들이다. 통신사의 영향을 받지 않기 때문에 여러 나라, 지역을 다니면서 해당 지역에 사용할 수 있는 USIM 카드를 교체해서 쓰기 편하다는 장점이 있다. 그래서 많은 사람들이 열광하는 갤럭시 시리즈는 아무리 좋은 것을 주어도 쓰지는 않을 것이다. (준다면 뭐 받아서 팔아버릴 듯)

그렇다고 처음부터 안드로이드만 애용했던 것은 아니다. 기회가 되어 iOS 제품도 사용하고 적잖은 앱 구매도 했었다. 물론 그렇게 구매한 앱들은 iOS 를 떠나게 되면서 무용지물이 되어버렸다. 왜 아이폰을 쓰지 않냐고 물어보면 항상 똑같이 대답한다. "바탕화면에 텍스트 (메모) 문서를 바로가기 shortcut 로 꺼내어 놓을 수 있을 때 쓰겠다." 몇번에 걸쳐 안드로이드 UI 와 몇가지 시스템적인 차이점에 대해서 글을 쓴지 2년이 넘었가지만 iOS 가 해결해준 내용은 그리 많지 않다는 것, 그리고 핵심적으로 중요한 부분은 구현될 가능성은 거의 없어 보인다는 이유로 더 이상 iOS 를 선택하지 않았다.


─ [ 왜 안드로이드폰을 사용하는가? (UI 측면에서 바라보기) ]

─ [ Android OS over iOS (데이터 관리를 중심으로) ]


두 글을 통한 핵심은 왜 '사용자 데이터 user created data 중심' 이 iOS에서 불가능한가? 이다. 자주 사용하는 텍스트 문서 하나 바로가기로 바탕화면에 꺼내어 쓰고 싶어도 못쓰고, 결정적으로 내부 데이터 관리를 허용하지 않기 때문에 iOS 는 앱을 거치지 않고는 데이터 관리를 할 수 없다는 점이다. 특히 앱에 종속된 데이터는 앱이 사라지면 데이터도 사라지는 구조이다. 물론 절실한 필요성을 해결해주는 많은 클라우드 서비스들이 나타났지만 오프라인 작업도 개인적으로 필요하다고 느꼈기 때문에 안드로이드가 주는 장점이 더 많을 수 밖에 없다.

안드로이드가 제공하는 위젯 widgets, 바로가기 shortcuts 과 같은 기능과 데이터에 바로 접근할 수 있기에 안드로이드를 계속 쓰게 된다.

안드로이드가 제공하는 위젯, 바로가기 (shortcuts) 과 같은 기능과 데이터에 바로 접근할 수 있기에 안드로이드를 계속 쓰게 된다.

이런 선택의 과정에서 가장 불편한 다른 사용자들의 논란은 개인 취향과 기호에 맞춰 쓰는 모바일 기기를 가지고 소위 '무엇이 진리' 라며 마치 대치되는 이념 대립처럼 다투는 모습들이다. 개인 소비자 자신이 어떤 제품을 선택했다는 이유로 서로 다투고 '그런 제품을 선택한 당신의 안목은 떨어진다.' 혹은 제품의 선택이 '뭘 모르기 때문에 선택한 ...' 과 같이 개인의 능력, 자질의 문제로 확산되는 모습은 참 보기 싫은 부분이었다. 그냥 마음에 안들고 불편하면 쓰지 않고 오히려 불편한 부분은 발전시킬 수 있는 부분이 될 수 있는데 마치 진영 논리처럼 대립하는 것은 이해할 수 없는 현상이었다.


제품을 소비하는가? 제품이 소비하는가? 

온라인 대부분은 원하지 않아도 신제품에 대한 소식들이 많다. 한때는 신제품에 상당히 민감했지만 이제는 신제품이 주는 환희와 기쁨은 정말 길어야 한달도 안되는구나 매번 느끼게 된다. 어느 순간 가득한 전자 제품들을 보면서 "내가 이것 모두를 소비하는가?" 아니면 "이 제품들이 나를 소비하는가?" 생각을 하게 된다. 내가 이것을 소비 consume 하지 않으면, 제품들이 나를 소비 spend 하는가? 기본적으로 사용자가 제품을 산다는 것 purchase 은 제품을 통해 무엇인가를 하기 위한 도구이기 때문이다. 이메일, 문서, 메모 등 다양한 활동 등을 할 수 있고 게임도 그 중 하나가 될 것이다. 이처럼 전자 제품은 내가 무엇인가를 하기 위한 도구이고 중간과정이다. 전자 제품을 사는 것 자체가 목적이라면 할 말이 없지만 대부분은 제품을 '통해' 생산적인 '무엇'인가를 하기 위한 과정이 되어야 한다. 그 무엇이 업무적 내용이든, 개인적 내용이든 말이다.

그런데 어떤 제품을 소비하는가에 따라서 개인의 취향, 성격, 심지어 철학까지도 판단하려는 내용을 접할 때도 많다. 물론 프로그래밍도 학문의 영역이고 개발의 모든 단계는 철학적 고민이 존재해야 한다. 그러나 특정 제품을 소비했다고 해서 그것이 제품에 대한 철학을 공유한다는 생각은 조금 이상하게 들린다. 그런 생각들 속에서 드는 생각이 있었다.


    Philosophy is

    not a matter of what you possess,
    but a matter of what you process.

    철학은 무엇을 소유했는가의 문제가 아니라, 무엇을 실행하는가의 문제이다.  ─ [ 몽달이 ]

소비자도 왜 제품을 소비했는가에 대한 철학적 배경이 있을 수 있다. 아니면 그냥 단순히 싸기 때문에, 최신의 제품이기 때문에... 와 같이 많은 이유가 가능하다. 그러나 사실상 우리가 왜 제품을 소비하는가로 우리의 목적이 정해지는 것은 아니다. 제품을 통해 내가 궁극적으로 무엇을 하겠다는 것이 중심이 되는 내용이 더 필요하지 않을까 느낄 때가 많아진다.


그래서 인터넷에서 다수의 노트북과 다수의 모니터가 가득한데 그 주변에는 타블렛 두세개 있고 성능좋은 데스크탑이 위풍당당 놓인 사진들을 종종 볼 수 있다. 사실 더 보고 싶은 것들은 컴퓨터와 전자 제품을 통해 생산되어진 인간의 창작물을 포함해 컴퓨터를 통해 궁극적으로 해 나가는 '무엇'이다. 성능좋은 데스크탑, 노트북, 타블렛, 모바일 기기 이 정도 다 갖추고 있는 사람들이라고 동시에 모든 기기를 사용하여 뭔가를 할 수 있는 능력을 가진 사람은 전혀 없다. 예전에는 무엇인가를 하기 위해 컴퓨터의 자원이나 능력이 부족해서 종종 많은 시간이 걸리고 할 수 없는 beyond capability 경우도 많았지만 이제는 컴퓨터의 컴퓨팅 파워 computing power 는 상당히 & 상대적으로 풍요로운 자원이 되어버린 상태이다. 점점 전자기기의 풍요 속에서 역설적으로 컴퓨팅 computing works 에 쓰이는 실질적 시간보다 누군가에게 소비되어 많은 기기들 중 하나로써 언제 쓰일지 간택을 기다리며 놀고 idle 있는 기기들이 많아진다는 것은 흥미로운 사실이다.


컴퓨터는 컴퓨팅 할때가 즐겁다. 

전자 기기들에게 각자 이름을 붙여준다. 연구용 서버로 쓰이는 컴퓨터 (실질적으로 슈퍼 컴퓨터라지만...) 는 몽상이, 핸드폰은 몽손이, 그리고 워크스테이션으로 쓰는 노트북이 몽달이 (어쩌다 저쩌다 본 블로그의 애칭이 되어버렸지만...) 로 이름을 붙여주고 (물론 영어 이름도 있다.) 사용한다. 지금 쓰는 노트북은 약 6년 전 인텔 (intel) Core2Duo 라는 CPU 를 가지고 있다. 현재 제품보다 한참 전 세대의 CPU 이다. 그러나 사용하는데 큰 문제도 없고 오히려 사람들이 쓰는 최근의 노트북보다 실행속도나 여러가지 측면에서 더 빠를 때도 많다. 컴퓨터 성능을 위해 부팅 속도를 이야기하지만 아무리 부팅 속도가 빨라도 자주 사용하는 프로그램이 실행하는데 느리거나 사용함에 따라 점점 느려진다고 하면 빠르다고 할 수 있을까? 컴퓨터는 기본적 성능이 어느 정도인가도 중요하지만 기본적 성능 (자원; resources 주로 CPU, 메모리, 캐시, 내부클럭 속도 등) 을 얼마나 효과적effective, 효율적 efficient; under optimized conditions 으로 쓰는지 여부가 더 중요한 부분이다.


막상 생각하면 워크스테이션이나 서버를 바꿀 때 가장 큰 이유는 내가 쓰고자 하는 작업(일)의 규모 scale of works; workloads 보다 컴퓨터의 자원이 부족한 경우가 많았다. 즉, 내가 하려는 작업이 컴퓨터의 CPU 나 메모리가 부족하여 더이상 계산이 안되거나 실행이 안되는 경우가 많았던 것이다. 이런 경우 더 좋은 자원이 존재한다면 바꿔서 충분히 컴퓨팅이 이루어질 수 있도록 해주어야 한다. 그래서 구형 노트북과 신형 노트북이 있을 때, 신형 노트북의 CPU 등을 고려했을 때 기존에 할 수 없던 계산 (실행) 이 가능하다면 당장 바꾸게 될 것이다. 그러나 구형 노트북도 충분히 가능하다면 어떤가? 물론 신형 노트북 자체, 신품이라는 유혹도 있겠지만 시스템을 업 job 으로 삼는 경우 시스템을 처음부터 쓰던 환경에 맞게 바꾼다는 것도 상당한 스트레스가 된다. 그렇기에 이런 시스템 이전 migration 이나 설정 deployment 이 얼마나 쉬운가도 항상 염두할 문제가 된다.

컴퓨터는 상당한 유휴 시간 idle time 을 가진다. 물론 끊임없이 쓰게 된다면 기계 자체의 수명이 단축될 수 있지만 다른 말로 하자면 우리는 컴퓨터를 충분히 컴퓨팅하는데 쓰지 않거나 쓰기엔 너무도 과한 자원을 마련해 놓고 쓰지 않는 경우도 많다. 끊임없이 컴퓨터를 일하게 하는 것이 가장 효율적이겠지만 막상 시킬 내용이 없는 경우가 더 많기 때문이다. 개인 사용자의 게임을 위해 열심히 그래픽 처리하고 계산하는 과정의 CPU 나 유럽입자물리 연구소 (CERN) 에서 한해 만들어지는 수십 페타바이트 (petabyte = 1,000 terabyte = 1,000,000 gigabyte) 를 처리하는 CPU 나 근본적으로 차이는 없다. 생각보다 충분한 컴퓨팅 자원을 가지고 있다는 점은 부인할 수 없을 것이다.


컴퓨터의 발전은 누가 기여하는가? 

6년동안 노트북을 바꾸지 않았지만 작업에는 별 문제가 없는 이유는 그만큼 작업의 내용이 한정되었기 때문이기도 하다. 기술적 발전을 누가 선도했는가라고 묻는다면 시장에서 퇴출되지 않기 위해 노력하는 많은 전자 부품 제조회사들이라 대답하겠지만, 시장은 빠른 속도를 왜 요구하는가 묻는다면 조금 내용이 달라질 것이다. 만약 나와 같이 6년전 CPU 만으로 충분히 워크스테이션 작업이 가능해서 노트북을 바꾸지 않는 소비자들만 있다면 노트북 소비는 그리 큰 동력을 얻지 못했을 것이다. 이 부분에서 게임 산업을 생각하지 않을 수 없다. 게임은 계산이 많이 필요한 작업이다. 더 실감나는 게임을 위해서는 더욱 더 많은 양의 계산을 요구하기에 사용자들의 요구를 충족시키기 위해 더 복잡하고 많은 그리고 빠른 계산이 필요하고 이를 충분히 지원해줄 수 있는 CPU 와 GPU (그래픽 처리 프로세서) 및 메모리 등 하드웨어의 성능도 좋아졌다. 대부분 고성능 그래픽 카드 및 하드웨어 소비자들은 그들의 작업 내용 중 게임이 포함되는 경우가 많다. 이러한 요구는 타블렛이나 모바일 기기에서도 마찬가지일 것이다.


게임의 요구사항이 높기 때문에 게임을 제외한 나머지 영역에 대해 생각하면 6년전이나 지금이나 인터넷, 동영상 뿐만 아니라 수학적 모델링, 시뮬레이션과 같은 작업도 충분히 가능하다. 마치 자원이 부족해 계산이 안되는 시절은 이미 끝난 것이 아닌가 싶은 생각이 들 때가 많다. 일정 수준 이상의 하드웨어에서는 하드웨어가 제한 요소가 되는 것이 아니라 소프트웨어의 최적화 및 운영이 관건이 되는 지점이 생기는 것이 아닐까 싶다. 작업의 강도가 증가하여 하드웨어가 충분하지 않는 것보다 소프트웨어 자체가 문제가 될때가 많다는 것이다. 비록 하드웨어 성능이 작업의 강도보다 뛰어나지만 소프트웨어의 최적화가 안되거나 사용자 과실로 인해 비정상적으로 컴퓨터의 자원을 낭비하거나 기존의 작업이 불가능한 경우도 발생한다. 예를 들어 CPU 를 100% 로 계속 쓰게 만드는 악성 코드나 계속 저장 디스크를 액세스하게 만들어서 다른 작업을 못하게 하는 악성 바이러스 등에 감염된 경우를 생각해 수 있을 것이다.


무어의 법칙 (Moore's Law) 을 다시 생각하다. 

시뮬레이션 소프트웨어 개발 회사인 COMSOL 에서 블로그에 올린 글이다.

[ The Next Generation of Moore's Law ]

무어의 법칙 (Moore's Law) 이란 1960년대 인텔의 공동 창립자인 고든 무어 (Gordon Moore) 에 의해 발표된 내용으로 약 2년마다 컴퓨팅 파워가 두배로 증가한다는 내용이다. 1960년대 기술의 시대적 배경을 고려하면 무어의 법칙은 마치 매직 넘버를 만들어내는 법칙이었다. 지금처럼 컴퓨팅 파워가 놀라운 속도로 증가하였지만 이 무어의 법칙은 다른 측면으로 바라보게 된다. 컴퓨팅 파워가 제한 요소가 되어 계산하고자 하는 경우 작업의 규모보다 충분하지 못지 못할 때 컴퓨팅 파워가 증가하면 할수록 해결할 수 있는 문제의 영역이 증가하게 되었다. 여전히 계산의 규모가 상상도 못하게 크거나 수학적으로 풀리기 어려운 (HARD) 문제라서 NP-HARD 구조를 가진 문제들은 제외하고 시간과 자원이 충분하다면 풀리는 소위 공학적 문제 engineering problem 의 경우 컴퓨팅 파워의 증가는 중요했다.


그러나 역설적으로 작업의 규모가 어느정도 포화 saturation 하게 되지만 상대적으로 CPU 를 비롯한 프로세서의 성능은 점점 증가하는 과정에서는 작업의 규모는 크게 증가하지 않지만 처리할 자원이 늘어나게 되어 처리하는데 필요한 시간이 줄어드는 것이다. 그래프에서 제시된 트랜지스터의 개수가 정확히 컴퓨팅 파워와 비례한다고 말할 수 없지만 문제를 풀려는 소프트웨어적 구조가 비슷하다고 가정하면 이는 컴퓨팅 파워로 환원해서 동일한 문제 (작업의 규모가 일정한) 를 얼마나 빨리 풀 수 있는가를 나타낸다고 분석할 수 있을 것이다. 어느 정도 크기의 문제를 풀 수 있는가에서 얼마나 빨리 풀 수 있는가의 문제로 바뀌게 되는 것이다. 즉, 이제 프로세서의 집적도가 증가하여 컴퓨팅 파워가 증가하면 일반 소비자, 사용자들에게는 얼마나 빨리 프로그램을 실행할 수 있는가 (프로그램의 실행 = 계산이다.) 로 보이기 되기 때문이다.

많은 경우 컴퓨터가 느려지는 이유는 사용자의 부주의한 관리에서 비롯되는 경우가 대부분이다. 불필요한 프로그램이 상주해 계속해서 자원을 쓰고 있어 실제 써야하는 자원을 쓰지 못하는 것이다. 그러나 사용자는 당당하게 기계 탓을 한다. 오래되어서! 이제 바꿀때가 되었다고 믿는다. 느려진 컴퓨터를 보면 소프트웨어 혹은 운영체제 문제가 있어 느려지는 경우가 많기에 새로 운영체제를 깔면 문제없는 경우가 많다. 그러나 문제는 반복된다. 불편을 느낀 사용자는 최신 성능의 컴퓨터를 구매한다. 초반이라 별 문제가 없기도 하고 워낙 성능이 좋기 때문에 눈에 띄게 빨라진 컴퓨터에 만족한다. 그러나 역시 사용자의 습관은 여전하기 때문에 소프트웨어에 관련된 문제가 다시 재현되기 쉽다. 예전과 비교해서 실행속도는 어느정도 빠르게 유지될 가능성은 높다. 첫번째 이유는 앞서 설명한 것처럼 같은 작업을 처리하는데 소요되는 시간이 줄어들었기 때문이고 두번째는 악성 코드에 의해 낭비되는 자원이 있지만 그래도 CPU 최대 성능이 소위 깡패(?)라 낭비되는 자원에도 불구하고 작업에 필요한 실행은 어느정도 처리가 가능하기 때문이다.


모바일 기기에서 살펴보는 무어의 법칙 

이처럼 무어의 법칙은 컴퓨팅 파워를 제시했지만 다른 측면에서 보면 컴퓨팅 파워는 두가지 단계를 거칠 수 있다는 것을 보여준다. ⓐ 우선 컴퓨팅 파워 자체가 한계 요소가 되는 단계이고 어느 정도 일정한 작업의 크기에 비해 컴퓨팅 파워는 점점 증가해 작업의 규모를 뛰어 넘으면 이제는 작업 완료 시간을 얼마나 단축시켰는가의 과정으로 진행된다. 컴퓨팅 파워가 증가함에 따라 인간이 수행하는 작업의 규모는 비례하여 증가하지 않는다는 점이다.

개인적으로 사용했던 모바일 기기는 넥서스원 → 넥서스S → 갤럭시넥서스 를 거쳐 이후 레퍼런스 폰으로 이어지는데 모바일 기기로 게임도 하지 않고 수행하는 작업이 많지 않기에 평소에는 큰 불편을 느끼지 못하지만 안드로이드 판올림에 의해 운영체제가 바뀌면 하드웨어의 한계 (자원의 한계) 로 초기화 상태임에도 불구하고 느려지는 경우를 경험하게 된다. 컴퓨팅 파워가 제한 요소가 되어서 아무리 소프트웨어가 최적화되어 느려서 어떤 작업을 수행 (앱을 실행) 하는데 상당한 시간이 걸리게 된다. 이런 경우 다음 단계의 하드웨어를 선택하는 것이 현명할 것이다. 사실 앱을 실행하는 시간이 오래 걸려 속도가 느려도 그게 당연하겠다 싶어 받아들인다면 결국 인내는 모든 컴퓨팅 파워를 용서하게 된다.


주목할만한 경험은 바로 갤럭시넥서스로 바꾸면서이다. 갤럭시S → 갤럭시넥서스 로 바꾼 체감 속도에 비해 갤럭시넥서스 → 넥서스4 로 바꿀 때의 체감 속도는 그리 빠르지 않다는 점이다. 갤럭시넥서스와 넥서스4 를 쓰면 하드웨어 성능에서 발생하는 속도의 차이를 느끼기는 하지만 넥서스S 에서 갤럭시넥서스로 넘어와서 느끼는 감동(?)보다 못하다는 것이다. (한계효용 체감의 법칙?) 현재도 갤럭시넥서스를 쓰는데 불편이 없다. 넥서스S 를 쓸때 실행되던 속도를 인내하며 사용했던 것과 비교해서가 아니라 넥서스4 와 비교해서도 충분하단 뜻이다. 즉, 개인적인 체감으로 마치 갤럭시넥서스 전까지는 하드웨어 컴퓨팅 파워가 제한 요소인 상태이고 작업의 규모는 갤럭시S 보다는 다소 크고, 갤럭시넥서스보다는 작지 않은가 생각하게 된다. 이후 증가하는 컴퓨팅 파워의 하드웨어는 좀더 빠르게 실행하게 만들어주는 것이다. 물론 게임을 많이 한다면 작업의 규모는 증가할 것이다.

그런데 노트북과 모바일 기기에서 느낀 공통점은 내가 가지는 작업의 규모는 좀처럼 변하지 않기 때문에 특별히 빠른 환경이 아니라면 쓰는데 문제가 없는 단계가 발생한다는 점이다. 노트북의 경우 Core2Duo 이고 모바일 기기의 경우 갤럭시넥서스란 제품이 쓰는 CPU 가 될 것이다. 우연인지 모르지만 두 경우 모두 듀얼코어의 시작이었다. 정량적인 분석을 떠나 정성적 느낌으로는 아마도 내 작업의 규모가 이정도 CPU 자원이면 충분한 규모를 가지는 것이 아닌가 싶다.


최신의 제품을 쓰지 않을 때 얻는 장점들 

최신 제품을 자주 바꾸고 제품이 출시될 때마다 바꾸는 사람들은 새로운 기능을 쓸 수 있다는 장점을 가질 것이다. 그런데 어느 순간 특별히 나의 생산력을 증가시켜 줄 기능은 그리 많지 않다는 것을 느끼게 되면서 최신 판올림이 항상 좋은 것은 아니라고 생각하게 되었다. 오히려 과도한 컴퓨팅 파워에 의해서 개발한 소프트웨어나 프로그램이 어떤 문제가 있는지 쉽게 발견하지 못하는 경우도 있다. 예를 들어 같은 프로그램이라고 해도 서버에서 돌리면 아무런 문제없이 풀리는 경우가 있지만 워크스테이션에서 돌리면 상당히 오랜동안 시간이 걸리는 경우가 발생한다. 소위 '자원이 깡패(?) 이론'으로 분명 프로그램의 설계에 문제가 있어 컴퓨터의 자원을 쓸데없이 낭비하는 비효율적 부분이 존재해도 서버에서는 막강 자원으로 처리해버린 것이다. 경험적 정량치로 자신의 작업 규모에 비해 약 20% 정도 (1/5 정도) 컴퓨팅 파워가 좋으면 적당히 계속해서 돌리기 쉽고 50~70% 정도 좋으면 여유롭게 돌릴 수 있지 않을까 느낄 때가 많다. 즉, 프로그램이나 어플리케이션이 특정 부분에서 자원을 심하게 요구하는 이유는 원래 많이 필요할 때도 있지만 비효율적으로 프로그램이 구성되어 낭비되는 경우도 있는 것이다.


개발의 측면에서 검증하고 문제점을 확인하기 위해서는 항상 최신의 하드웨어에서 테스트하는 것이 좋지 않을 때도 많다. 특히 상업적 제품으로 많은 사람들에게 공급되어야 할 내용이라면 더욱 더 그렇다. 사용자들 모두 최신의 기기를 가지고 있지 않다. 그리고 제품을 쓰기 위해 더 좋은 하드웨어에 투자해야 한다고 할 때 그렇게 하는 경우는 많지 않다. (게임은 역시 제외시켜야 한다.) 따라서 소프트웨어의 설계 방향은 기능을 구현하기 위해 필요한 자원을 적절하게 쓰는 것도 중요하지만 낭비하여 어느정도 불편없이 쓰는 사용자에게 컴퓨팅 파워가 모자르게 되는 경험 (현상적으로는 느려진다가 될 것이다.) 을 가능하면 피해야 할 것이다. 만났던 소프트웨어 개발자 중에서 소위 실력있는 분들의 개발용 기기가 최신 기기인 경우는 별로 없었던 것은 어쩌면 이런 이유라 생각한다.

단지 최신이기 때문에 소비하는 것을 지양 (止揚) 하려 한다. 한때는 제품 발표하면 구매하였지만 이제는 사용하기 불편하지 않은 컴퓨팅 파워를 유지하려고 한다. 안드로이드 경우 판올림에 의해서 소요되는 컴퓨팅 파워가 많이 변화된다. 안드로이드의 판올림은 비슷한 시기에 하드웨어도 향상된다. 이 경우 발표되는 기기는 최신 판올림이 올라가지만 이전 하드웨어의 경우도 동일한 최신 안드로이드가 올라간다. 예를 들어 현재 발표된 넥서스5 기기에는 최신 판올림 안드로이드인 킷캣 (Kitkat; Andoird 4.4) 이 올라가는데 이와 함께 넥서스4 도 올라가게 된다. 이런 경우 넥서스4 를 중고로 구매해도 최신 안드로이드 운영체제를 쓸 수 있지만 저렴하게 쓰면서 컴퓨팅 파워도 충분하게 된다. 물론 많은 경우 어떤 기기를 선택하는가에는 생각보다 많은 사용자의 취향이 존재한다. 예를 들어 카메라 및 DMB 같은 기능가 있다. 다만 여기에 개인적인 선택의 기준을 소개하는 이유는 항상 최신 핸드폰으로 유지하지 않아도 모바일 컴퓨팅 파워도 상당 수준 올라왔음을 전하고 싶었기 때문이다.


여기서 잠깐, 안쓰는 모바일 기기의 이용 

찬밥 신세에 놓인 모바일 기기가 전원이 꺼진 체 놓인 경우가 많다. 이런 경우 적당한 컴퓨팅 파워가 되는 모바일 기기의 경우 (갤럭시넥서스 / 갤럭시S2 이상의 듀얼 코어 정도) 소형 서버로 충분히 이용할 수 있다. 전문적 지식이 있다면 운영체제에 해당하는 롬을 바꾸어서 적당한 형태의 서버로 만들 수도 있고 전문적 지식이 없다고 해도 기본 초기화 상태에서 몇개의 앱을 설치해서 서버의 역할이나 자동화 기기로 사용할 수 있다.


ⓐ SSH 서버로 사용: 리눅스를 설치하고 SSH 필요에 따라 Dynamic IP 등 필요한 서비스를 설치하면 아주 간단한 형태의 Proxy 서버 혹은 SSH 서버로 사용할 수 있다. 
ⓑ 자동화 앱을 이용: 앱 중에는 다양한 클라우드 서비스 및 네트워크 드라이브와 동기화하는 기능을 제공하는 앱들이 있다. 이런 앱들을 이용해서 주기적 혹은 변경될 때마다 동기화를 시키면 드랍박스 서비스와 같이 사용할 수 있다.  
ⓒ 이외에도 자동화 기능을 통해서 가정이나 오피스에 놓고 자동으로 작업을 수행하도록 실행할 수 있다. 어떤 의미에서 UPS 가 붙어있는 가장 작은 서버가 되는 것이다. 


기술과 인문은 어떤 역할을 해야하는가?  

잠시 정리를 하면 ...

컴퓨터, 모바일 기기는 구매나 수집이 목적이 아니라면 무엇인가 수행하기 위한 도구들이다. (1) 

개인이 하는 일의 범위와 내용에 따라서 일정의 '작업의 규모'는 정해지게 된다. (2) 

일정 단계까지는 개인의 '작업의 규모'에 모자른 컴퓨팅 파워를 가진 하드웨어를 사용한다. (3) 

충분한 컴퓨팅 파워를 가진 이후 실행 여부의 문제가 아닌 처리 시간 단축의 문제가 된다. (4)

이런 과정에 대한 적용은 컴퓨터나 모바일 기기 뿐만 아니라 일반 가전 제품에도 적용될 수 있다고 생각한다. 이런 과정은 마치 기계의 성능사용자의 작업 사이에 이루어지는 긴장감과 같은 내용이다. 어떤 제품이든 초기에는 사용자의 다양한 요구사항을 따라가지 못하거나 기술적 한계를 가지지만 어느정도 해결이 된 상태에서 추가되는 (부가되는) 기능들은 특별히 큰 빛을 보지 못하는 경우가 많다. 이는 소비자들의 심리를 제대로 파악하지 못하는 기술적 심미에 빠진 마케팅의 오판일지 모른다. 예를 들어 어느정도 핸드폰 성능이 좋아지면 많은 사람들은 입버릇처럼 이야기한다. "요즘 웬만한 건 다..." 사용자들이 이정도 정서가 만들어지면 사실상 위에서 말한 (3) 의 단계에 접어들었다고 볼 수 있다. 개인적으로 이런 단계에서 더 좋은 CPU 성능을 강조하는 마케팅 전략은 그리 효과적인 전략이 아닐 것이라고 본다. 그리고 특정 기계만 가지고 있는 기능, 예를 들어 지문인식이 있었는데 판매 실적은 그리 좋지 않았다. 기능이 좋다 나쁘다를 떠나서 대다수가 핸드폰을 가지고 수행하는 작업의 범위에서 도움이 안되는 기능이었기 때문이라고 생각한다. 즉, 아주 특별한 기술적인 기능은 몇몇 소비자를 유혹할 수 있어도 대중적 소비자를 얻기는 어렵다. 결국 대중적 소비자들은 자신의 작업 규모만 충분히 처리해줄 수 있는 수준 이상이면 이후의 결정 요소는 오히려 심미적 디자인이나 외부적인 조건이 크게 작용할 때가 많다는 점이다.


비슷한 원리로 냉장고와 같은 가전제품도 적용할 수 있을 것이라고 본다. 제품의 시장적 요구 사항이 무엇인가 그리고 어느정도 해결이 가능한지를 판단하는 것이 필요하다. 소비자의 일반적 작업 규모는 어느정도이고 작업 범위는 무엇인지에 대한 결정이 선행되어야 할 것이다. 다시 전자 제품의 영역으로 넘어오면 타블렛 컴퓨터, 웨어러블 컴퓨터와 같은 영역도 한번 적용해서 생각해볼 필요가 있다.

구글 글래스의 경우 컴퓨팅 파워는 상당히 미약한 수준이다. 그리고 제약 조건이 많다. 그러나 여기에는 다른 의미에서 적절한 컴퓨팅 파워의 증가에 따라서 할 수 있는 영역도 증가할 수 있다는 기술적 시장의 가능성을 볼 수 있는 것이다. 물론 인문학적 관점에서 구글 글래스가 가지는 미래적 가치에 대해서 생각해야 한다. 즉, 관련된 기술을 적용하는 사람들 (엔지니어, 개발자 등) 은 하드웨어의 컴퓨팅 파워에 맞춰갈 수 있는 안목이 필요하다. 아무리 뛰어난 기능을 개발해도 컴퓨팅 파워이 따라가지 못하는 작업의 영역이라면 사용자들은 짜증을 낼 것이다. 그렇기 때문에 현재의 컴퓨팅 파워에 발맞춰 항상 조금은 느린듯한 개발의 템포가 필요할 것이다. 그러나 미래의 가능성을 생각하는 경우 가능성 있는 확장 영역 (시장) 그리고 가능성 있는 기능에 대한 구상은 이미 컴퓨팅 파워가 충분해진 상황을 전제로 생각해야 할 것이다. 이 부분은 바로 기술자들이 아닌 인문학이 생각해야 할 부분일 것이다.



유지의 친구, 관리에 대해서... 

특정 서비스나 제품의 생명력이 긴 경우 기본적 수요에 대한 충족은 항상 필요조건이 된다. 그러나 얼마나 유지 maintenance 될 수 있는가는 어떻게 관리 management 를 하는가에 따라서 크게 좌우될 것이다. 관리는 단순히 잘못된 것을 고치고 필요한 부분을 수정하는 차원이 되어서는 안된다. 일반적 경우 컴퓨팅 파워가 충분해지는 경우를 생각했지만 오히려 반대의 경우도 생각할 수 있다. 의도하지 않은 경우 증가하는 사용자의 작업의 규모이다. 이미 설명했지만 대표적으로 안드로이드의 판올림이 있을 수 있다. 기존에는 잘 되던 것이 판올림에 의해 성능이 저하되는 경우가 발생할 수 있다. 인터넷 서비스는 이런 컴퓨팅 파워에 대한 철저한 분석이 가능해야 한다. 개인적으로 이런 컴퓨팅 파워의 위기를 맞이할 수 있는 가능성이 있는 서비스로 페이스북 Facebook 과 링크드인 LinkedIn 을 언급했다. [ 그래프서치 - 관계 중심형 검색엔진을 꿈꾸다 ] 페이스북은 그래픽 서치 라는 기능을 제공했지만 사실 네트워크 구조에서의 검색 조건에 따라 결과를 뽑아내는 실행 속도가 상상도 못할 정도로 떨어질 수 있다. 그런 이유때문인지 몰라도 그래프 서치는 제한된 숫자의 결과만을 출력한다. 만족할 수 없지만 그래도 컴퓨팅 파워를 고려했을 때 적절한 관리의 요소가 될 수 있다고 본다. 반면 링크드인 LinkedIn 은 이런 부분에 대한 어느정도의 대비가 되어 있는지는 확인하기 어렵다. 지켜볼 뿐이다.

결과적으로 예측하지 못한 수요에 비해 컴퓨팅 파워가 부족하면 아무리 좋은 서비스 기능이라도 서비스가 중단될 수 밖에 없다. 서버가 가지는 서비스 업타임 uptime 비율을 통해 확인할 수 있다. 서비스가 얼마나 중단없이 제공되었는가이다. 만약 충분하지 못한 컴퓨팅 파워는 서버 증설이나 다른 관리 방법등을 모색해서 해결해야 한다. 그런데 막상 근본적 원인, 예를 들어 자원 낭비가 비정상적으로 발생하면 하드웨어를 증설해도 마땅히 개선되지 못하는 경우도 많이 보게 된다. 따라서 관리의 핵심은 내부적으로 돌아가는 하드웨어의 원리와 소프트웨어의 구동 원리에 대해 이해하며 전체 시스템을 바라볼 수 있는 시스템 관리자가 필요한 것이다. 이런 시스템 관리자가 경험이 쌓이면 이후 문제가 발생하는 시스템을 컨설팅(자문)해주고 문제를 해결해주는 역할을 하게 되는 것이다.


대형 시스템이 아니라도 개인 컴퓨터도 비슷하다. 즉, 오랫동안 컴퓨팅 파워를 유지하기 위해서는 적절한 관리가 필요하다. 예를 들어 컴퓨터 내부를 청소해주는 것도 필요하다. 미국의 유명 검색 엔진 서버가 자주 죽어버려서 문제의 원인을 찾아보니 서버 내부에 쌓인 쥐똥이 문제가 된 경우가 있었다. 결국 기계이기 때문에 하드웨어의 기계적 결함은 직접적인 컴퓨팅 파워에 영향을 주게 된다. 아주 사소하게 전선이나 랜선, 통신선의 문제들도 있다. 두번째는 컴퓨터가 어떻게 작동하는지 그리고 작동 원리에 따라서 적절한 소프트웨어를 관리적 차원에서 사용하는 것이 필요하다고 본다.

Defragmentation Software: 이제는 SSD 가 많이 보급되었지만 개인적으로 대다수의 저장장치는 여전히 하드디스크이다. 컴퓨터에서 저장장치는 단순 데이터의 저장뿐만 아니라 운영하고 실질적 작업에 필요한 시스템 파일들에 대한 저장도 포함한다. 오랜동안 하드디스크는 물리적인 금속 판 위에 자기장으로 저장, 삭제, 편집이 가능한 형태이다. 즉, 우리가 2G 의 데이터를 가지고 있다면 실제 금속 판에서 2G 의 크기만큼 해당 데이터가 기록되어 있는 것이다. 하드디스크는 이를 기록하기 위해 헤더가 고속으로 왔다갔다 하면서 기록을 저장하는데 기록할 때의 헤더 위치에 따라 빠르게 저장한다. 문제는 하나의 데이터인데 물리적으로 하드디스크 여기저기 흩어진 경우가 있다. 특히 부팅할 때 하드디스크의 헤드가 움직이지 않고 그 자리에서 연속으로 읽어간다면 훨씬 빠르게 데이터를 읽어 들일 수 있을 것이다. 이처럼 하드디스크의 저장 특성을 파악하면 파일을 가능한 흩어지지 않게 잘 모아두는 것이 유리할 것이다. 이런 작업을 해주는 프로그램이 Defragmentation Software 이다.

Image Backup Software: 백업은 컴퓨팅 파워와 직접적인 연관이 없어 보일 수 있지만 개인적으로 백업 프로그램 특히 시스템 전체를 백업해서 필요할 때 복원하는 과정은 사용자가 컴퓨터를 관리하는 내용 중 위기 상황에서 얼마나 빨리 복원할 수 있는가의 문제와도 밀접한 관계가 있다고 본다. 즉, 시스템에 문제가 있을 때 새로 운영체제를 깔아 소비되는 시간동안 컴퓨팅 파워는 전혀 없다. 따라서 시스템 관리에서 가장 기본이 될 필요가 있는 부분이 바로 백업이 되어야 할 것이다.

Synchronization Software: 백업과 비슷하지만 요즘과 같이 데이터의 중요성이 부각될 때 클라우드 서비스 및 네트워크로 연결된 컴퓨팅 파워를 적절하게 사용할 수 있는 가장 효과적인 소프트웨어는 바로 동기화 소프트웨어일 것이다.

System Optimization Software: 불필요한 서비스, 불필요한 시작 프로그램 혹은 불필요한 시스템의 기능을 제거하거나 최적화하는 경우 사용될 수 있다. 사소하게 오른쪽 메뉴 버튼을 눌렀을 때 불필요한 메뉴 (context menu) 기능을 제거하거나 더이상 쓸모없는 파일이나 레지스트리 등을 청소하거나 부팅할 때 읽는 순서등을 정해 부팅 속도를 빠르게 조정할 수 있다.

Antivirus & Antimalware Software: 여전히 필수가 되어야 할 소프트웨어는 바이러스 및 악성코드를 막아주는 소프트웨어일 것이다. 컴퓨팅 파워가 아슬아슬 했던 시절에는 이런 백신 프로그램이 오히려 컴퓨팅 파워의 상당 부분을 차지해 이 자체가 악성 소프트웨어같이 역할을 했던 경험이 있을 것이다. 사실상 악성 코드의 범주에는 보안을 이유로 컴퓨팅 파워를 낭비하는 보안 프로그램도 포함시켜야 할 것이다. 사용자는 원하는 작업을 하고 싶은 것이지 원하는 작업도 못한 체 보안 소프트웨어만 돌아가는 것을 원하는 것은 아니기 때문이다. 하드웨어 성능의 급격한 향상도 있지만 이런 소프트웨어들도 적은 자원으로도 이제는 충분히 제 기능을 할 수 있게 되었다.

이 밖에도 많지만 관리를 위한 소프트웨어를 선택할 때는 해당 소프트웨어가 당장의 효과가 보이지 않는 것처럼 보이지만 왜 필요한지 컴퓨터의 기본적 구동 원리와 소프트웨어가 어떻게 컴퓨팅 파워를 유지하기 위해 도와주는지에 대한 이해를 한다면 더욱 도움이 될 것이다. 다 귀찮다면 최신의 성능 좋은 비싼 제품으로 종종 바꿔주는 것도 다른 방법일 것이다.


마무리하며... 

컴퓨팅 파워에 대한 오랜동안 모았던 생각을 쓰게 된 계기는 DNA 염기 서열 분석과 같이 시간과 자본이 필요한 작업에서도 결국 분석이 요구하는 일의 강도가 막대한 컴퓨팅 파워를 요구하였던 초기와 다르게 이제는 적정한 컴퓨팅 파워에서 적절한 알고리즘을 통해서 개인 맞춤형 DNA 분석까지 가능해지는 시대로 접어들고 있다는 현상에 주목했기 때문이다. 큰 스케일의 영역도 아주 사소해 보이는 노트북이나 모바일 기기의 영역도 결국 컴퓨터는 컴퓨팅 파워가 중요한 시금석이 될 수 있다는 생각을 하게 되었고 어느 시점에서는 더이상 하드웨어의 추가적인 투자 없이도 일상적인(반복적인) 작업이 무리가 없는 단계가 생긴다는 점을 설정하게 되었던 것 같다. 그때의 궁금증은 개인이 가지는 작업의 규모가 수렴하는 것인가? 아니면 한정된 컴퓨팅 파워에 소프트웨어의 최적화가 이루어져서 균형을 유지하는 것인가? 에 대한 내용이었다. 그리고 DNA 염기 서열 분석에 대한 컴퓨팅 파워에 대해 조사하는 과정에서 일상의 영역도 비슷한 생각으로 적용이 될 수 있을 것이라고 생각했다.


신제품으로 가득한 세상 속에서 소비하기 위해 사람들이 존재하는지, 정말 그 제품의 필요성이 있기 때문인지 소비하는 것인지에 대한 스스로에 대한 반문과 함께 어쩌면 내가 원하는 작업을 수행하기 위한 도구가 되기 위해 어떤 제품을 소비해야 하는가에 대한 질문과 컴퓨팅 파워는 접점을 가지고 있었고 그 과정에서 최신 제품이란 필요한 것을 해결해 주는 실체가 아닌 제품 생산자들이 만든 허상은 아닐까 고민도 했던 것 같다. 결국 필요한 작업을 수행하기 위한 충실한 도구가 될 때 소비에 대한 욕심도 사라지지 않을까 믿는다.

그리고 반대로 제품 개발의 입장에서 생각할 때 궁극적으로 소비자들이 필요한 제품을 만들기 위해, 기술로 세상을 바라보는 사람들과 심리학 사회학 심지어 문학까지 포함하는 인문학적 관점에서 세상을 바라보는 사람들이 인간에게 필요한 제품을 만들기 위한 역할을 생각하기 위해서 구글 글래스의 예를 통해 생각해보았던 것 같다. 시장에서 새로운 제품을 만드는 것도 중요하지만 그보다 새로운 제품의 영역을 확장시킬 때 기술적으로 적당한 템포와 인문학적 창의성을 가지는 것이 중요할 것이라 본다. 적당한 템포와 창의성은 현재의 컴퓨팅 파워가 어느 정도인지 아는 것을 통해 시작하게 될 것이다.


0 comments:

Post a Comment