시스템을 바라보는 시선 ─ 구조적 설계 사고

시스템 잡설  |   2013. 10. 22. 17:43

래어이지만 우리말로 번역하여 오히려 그 개념이 불명확해지는 경우도 있다. 너무도 익숙하게 사용하고 의사소통에도 별 문제가 없기 때문에 외래어 그대로 사용하는 경우가 더 많고 억지로 우리말로 번역을 하게 되면 오히려 그 의미가 축소되거나 전달하려는 의미가 전달되는 경우도 있다. 그런 단어들 중에는 잘 사용하고 익숙하지만 정작 정확한 뜻을 물어보면 제대로 알 수 없거나 그 의미는 정확하지 않지만 사용에 별 지장이 없을 정도로 자연스럽게 쓰이는 경우도 많다. 예를 들어 '시스템 (system)' 이란 말이 있다. 소위 요즘 유행하는 표현으로 "느낌 아니깐..." 언제 쓰이면 자연스러운지 아닌지 알지만 시스템이 정확하게 무슨 뜻인지 어떤 개념인지 물어보면 정확하게 대답하기 어려운 경우가 많다. 시스템을 사전에서 찾아보면 다양하게 사용되는 것을 알 수 있다. 계통, 체계, 조직, 제도, 계(系) 등 다양한 뜻으로 사용되지만 시스템이란 말은 경우에 따라서 번역을 하지 않고 그대로 '시스템' 이라고 표현하는 것이 더 자연스러운 경우도 많다. 


동물들에 따른 순환계의 구조 시스템은 체계와 구조를 가지고 있으며 특정 목적을 수행하기 위해 기능을 제공한다.


예를 들어 the Circulatory System 이라고 할 때는 순환'계' 라고 해서 계라고 하는 표현을 사용한다. 계(系)는 동양에서 더 친숙한 개념이다. 오히려 서양에서 바라보는 시스템은 단순한 조직적, 구조적, 생물학적(해부학적) 구분으로 나누어지는 구획을 뜻하는 경우가 많지만 동양에서 바라보는 계(系)란 구별을 위한 구분이 아닌 구역과 구역이 이어질 수 있는 연결성 (connectivity; 連) 을 고려한 개념이다. 이를 떠나 서양의 과학 철학에서 전해지는 시스템에 대한 첫번째 의미를 생각해본다. 


계(系) 를 뜻하는 시스템 


특히 열역학의 시대에는 시스템이란 관찰자가 관심을 가지는 대상 (the object, which the observer has focused on) 을 뜻한다. 아주 쉬운 표현으로 시스템이란 관찰자가 원하는대로 그 경계 (boundary) 과 영역을 정할 수 있다. 뉴튼이 사과에 관심을 가지고 있다면 뉴튼에게 사과만이 시스템이고 그 외의 것들은 모두 주변 (surroundings) 이다. 시스템과 주변이 정해지면 시스템과 주변은 경계를 가지고 경계의 안쪽은 시스템이 되고, 경계의 밖은 주변이 된다. 아주 간단한 개념이다. 그런데 왜 이런 개념이 중요한 것인가? 단순히 물리학자들에게만 중요한 문제이기에 일반인들에게 이런 개념이 어떤 도움이 될 수 있을까 생각할 수 있다. 그러나 이런 시스템, 우리가 관심을 가지는 대상이 존재한다는 것은 문제의 범위를 정한다는 의미와 그 범위 안에서 해결하고 시스템을 확장할 수 있는 좋은 문제 해결의 방법론을 제시할 수 있다는 점에서 한번쯤 생각해볼 필요가 있다. 이런 시스템을 통해 어떻게 세상을 바라볼 것인가의 문제가 중요한지는 앞으로 진행하게 되는 내용들을 통해 설명될 것이라고 생각한다. 


시스템은 아주 간단하게 '관찰자가 관심을 가지는 대상'을 뜻한다. 다른 표현으로 "열역학적 혹은 고전물리학적 계" 라고도 부른다.



리에게 친숙한 시스템에 대해서... 


시스템이란 말을 들었을 때 우리가 가장 먼저 떠올리는 이미지는 무엇일까? 사람들에 따라 다르지만 많은 사람들은 시스템을 (컴퓨터) 시스템 혹은 이와 관련된 (전산) 시스템을 떠올릴 때가 많다. 컴퓨터가 모든 사람들에게 필요한 기기는 아닐지 몰라도 컴퓨터란 기기는 상당히 일반인들에게도 다가왔다는 것을 생각하게 된다. 역시 이런 대상 ─ 전산 시스템 ─ 에 대해서 시스템이란 말을 쓰는 것도 적절한 표현이고 맞는 표현이다. 앞서 설명한 관심을 가지는 대상이란 점에서 시스템이란 뜻을 사용할 수 있지만 전산 시스템, 컴퓨터 시스템, 인터넷 시스템 과 같은 경우 시스템의 의미는 조금 달라지게 된다. 즉, 시스템이란 어떤 일을 수행하기 위해 만들어진 '체계''구조'를 이야기한다. 즉, 우리가 사용하는 인터넷을 사용하기 위해서 우선 사용자가 사용하는 컴퓨터 혹은 전자 기기 (모바일 기기를 포함한...) 가 있어야 하고 이에 상응하여 인터넷에는 사용자가 이용할 수 있는 인터넷 서비스가 있어야 한다. 우리가 매일 들어가는 인터넷 서비스 예를 들어 메일 서비스, 검색 서비스 등 이 모든 것들은 실제하는 구조물을 가지고 체계를 가지고 우리가 원하는 결과를 내놓기 위해서 열심히 일을 하는 것이다. 물리적 구조물을 우리는 보통 서버(server) 라고 부른다. 거대한 성능 좋은 컴퓨터들이 많은 사용자들의 서비스 요청에 응대하고 원하는 결과를 신속하게 보여주기 위해서 서버는 열심히 계산을 하고 사용자에게 결과를 제공해준다. 그리고 인터넷은 규칙과 약속에 의해 정해진 규약 (protocol) 대로 결과들을 처리하고 약속에 맞는 결과를 사용자에게 보여주는 것이다. 쉽게 말해 우리가 쓰는 모든 인터넷은 꽁짜가 아니라는 것이다. 즉, 우리가 원하는 인터넷 작업을 하기 위해서는 그에 상응하는 물리적인 서버와 그 서버를 운영시키는 운영체제, 서비스를 제공하는 인터넷 선로부터 아주 사소하게 우리 가까이에 있는 인터넷 공유기까지 그 모든 것들이 정해지고 그 안에서 약속된 방법과 규칙에 맞게 사용해서 인터넷에서 발생할 수 있는 예외성과 혼란을 막는 것이다. 


구글 서버룸 - 사용자들에게 서비스를 제공하기 위해서는 꽤 괜찮은 컴퓨터 - 서버가 존재해야 한다.


프라스트럭처 (infrastructure; 기반) 


시스템과 비슷하게 인프라스트럭처를 기반(시설) 등으로 번역하면 좀 어색하다. 앞서 설명한 우리가 일상적으로 사용하는 인터넷에는 다양한 요소와 구성으로 인터넷 서비스를 제공해주는 것을 설명했다. 그러나 본격적으로 설명하려는 부분은 이런 내용 중에 우리가 조금 구별해서 생각해봐야 할 내용이 있다는 점이다. 그중 첫번째는 인프라스트럭처 (infrastructure; 기반) 이다. 앞으로 인프라로 줄여 설명한다. 인프라는 직관적으로 무엇인지 알 수 있다.  앞서 설명한 인터넷이 있기 위한 다양한 부분 중 서버와 같이 눈에 보이는 물리적인 대상이 대부분 인프라가 될 수 있다. 즉, 인터넷 서비스를 제공하기 위한 거대한 서버뿐만 아니라 인터넷 선로, 인터넷 업체끼리 연결된 부분 뿐만 아니라 우리가 사용하는 인터넷 서비스업체 (ISP) 그리고 아주 가까이는 우리가 사용하는 컴퓨터, 노트북, 모바일 기기 모두가 인프라이다. 즉, 실제 인터넷이란 서비스가 이루어지기 위해 필요한 가장 물리적(physical) 이고 구체적(concrete) 인 대상물이다. 


우리가 접속하고 사용하는 인터넷 서비스는 이를 처리하고 결과를 되돌려주는 물리적 서버가 존재한다.


대부분 유형적 (material) 하드웨어 (hardware) 는 인프라에 해당한다고 봐도 별 무리가 없다. 만약 번뜩이는 아이디어가 있어서 소위 크게 성공할 웹 서비스가 있다고 할 때 가장 필요한 시작은 유형적 기기를 마련하는 것이다. 우선 서버가 필요하다.  서버는 직접 구매할 수도 임대할 수 있지만 어떤 형태이든 분명한 것은 인프라가 있어야 한다는 것이다. 즉, 서버가 있어야 한다. 서버는 많은 사용자들의 요청 (request) 를 처리할 수 있는 CPU, 메모리, 하드디스크 등 우리가 사용하는 일반적 컴퓨터와 비슷하지만 성능이 좀 좋은 형태의 컴퓨터라고 생각하면 된다. 


랫폼 (platform


플랫폼은 시스템보다 더 번역하기 까다로운 대상이다. 그러나 어느정도 컴퓨터에 익숙한 사용자들은 플랫폼이 뜻하는 대상이 무엇인지 느낌을 가진다. 많은 경우 운영체제에 관계없이 실행될 수 있는 형태를 크로스 플랫폼 (cross platform) 이란 말을 사용한다. 이 밖에도 오픈 플랫폼 (open platform) 등 다양한 분야에서 플랫폼이란 말은 사용된다. 그중 크로스 플랫폼이란 말은 사용하는 운영체제에 관계없이 사용될 수 있는 형태를 이야기한다. 즉, 사용자가 사용하는 운영체제가 원도우이든, 맥OS 든 아니면 리눅스이든 가리지 않고 실행이 가능하단 뜻이다. 여기에서 알 수 있듯이 우리에게 친숙한 모든 운영체제는 플랫폼이란 것을 알 수 있다. 거의 대부분의 운영체제는 플랫폼이라고 불러도 별 무리가 없다. 즉, 우리가 사용하는 하드웨어가 어떤 종류이든 (CPU 가 인텔이든 AMD 든) 어떤 제조사의 하드디스크를 사용하든 상관없이 사용자가 사용하기 편리한 환경을 만들어 주는 운영체제가 가장 대표적인 플랫폼이란 것이다. 플랫폼은 플랫(plat; 지면 평탄한 계획 지역) 을 만들어 형태 (form) 를 만들어 주는 역할을 한다고 생각하면 더욱 쉽다. 즉, 다양한 하드웨어 (인프라)의 사용에 의해 평탄하지 못한 상태를 평탄하게 만들어서 사용자들이 어떤 하드웨어 환경이든 신경쓰지 않고 사용할 수 있는 환경을 만들어주는 시스템의 부분이 바로 운영체제이고 가장 사용자에게 친근한 플랫폼이 된다. 


운영체제는 일반 컴퓨터 뿐만 아니라 모바일 기기까지 사용자가 기기를 사용하기 위한 모든 환경과 편의를 제공한다.


플랫폼은 이밖에도 다양한 형태에 적용될 수 있다. 예를 들어 하드웨어 서버 구조물이 있다고 한다면 이런 하드웨어가 움직이고 제대로 작동할 수 있도록 해주는 것이 운영체제의 기본적인 역할이기도 하지만 인터넷 서비스를 제공하기 위해서 웹서비스를 제공하고 메일 서비스를 제공하기 위해서는 해당 서비스를 제공해주는 부분이 필요하다. 초기 서비스란 이름을 대신해서 디먼 (deamon) 이란 형태로 불리웠다. 디먼이란 우리가 직접 실행하는 소프트웨어를 작동시키고 우리가 원하는 작업을 하기 위해 기본적으로 필요한 모든 백그라운드 서비스 (background service) 를 뜻한다. 백그라운드 서비스란 사용자가 해당 기능을 원할 때를 대비해서 항상 준비하고 있다가 원하는 기능을 제공해주는 것이다. 이런 형태의 디먼은 주로 오래전 고성능 서버에서 사용되던 용어이지만 이제는 전반적으로 서비스라는 이름으로 불리게 된다. 


우리가 일상적으로 사용하는 웹 서비스를 생각해보자. 필요한 정보가 있어서 구글 홈페이지 (google.com) 에 들어간다. 웹브라우저에서 구글 홈페이지에 들어가기 위해서 해당 주소를 주소창에 넣으면 google.com 이란 주소가 어떤 IP 를 가지는지 컴퓨터는 여러 곳을 참조해서 IP 주소를 찾는다. [ 개인 도메인을 사용하자 - 구글앱스 & DNSEver 서비스 ; blog.meson.kr/273 ] 이렇게 사용자가 알고 있는 도메인 이름을 주소창에 넣으면 해당 도메인이 어떤 IP 주소를 가지는 알려준다. 이런 과정을 거치는 이유는 컴퓨터는 우리가 입력한 google.com 이란 주소를 이해하지 못한다. 컴퓨터는 각 고유의 IP 를 가지는데 이는 어떤 서버에 접속할 것인지 알려주는 고유한 주소라고 생각하면 된다. 고유의 주소를 알아내서 74.125.128.113 이란 주소를 가지는 서버 (실제 하드웨어) 에 접속을 한다. 해당 서버에 접속을 하면 사용자가 웹 서비스에서 google.com 에 해당하는 페이지를 요청한다는 사실을 받아들이고 이에 맞는 페이지를 표준 HTML 형태의 문서를 보내준다. 이때 필요한 이미지 데이터 및 관련된 내용을 종합하여 사용자가 필요한 페이지의 형태를 보여주게 된다. 이때 페이지를 구성해서 보내주는 역할을 하는 것은 바로 하드웨어 서버가 하는 일이 아니라 하드웨어 서버의 자원을 이용하여 적절한 페이지를 가공해서 웹서비스 형태로 HTML 문서와 관련된 이미지를 제공해주는 것이다. 사용자는 서버에서 제공해주는 데이터를 받아서 웹브라우저에서 구성해서 우리가 원하는 페이지를 볼 수 있게 되는 것이다. 


원하는 서버에 간단하게 접속하는 것 같지만 여러 단계를 거쳐 접속하게 된다. (DNS Resolving Steps) 출처: Nirlog.com


우리가 보기엔 아주 간단한 상황이지만 웹 페이지 하나 구성해서 보내주기 위해서 상당히 많은 자원이 사용된다. 이때 서버는 사용자가 언제 어떻게 원하는 페이지를 요청할지 모르기 때문에 항상 대기하고 있다가 이에 사용자가 요청하면 이에 맞는 페이지를 구성해서 보내주는 것이다. 이렇게 구성해서 보내주는 역할을 하는 서비스를 웹 서비스라고 한다. 즉, 운영체제 뿐만 아니라 운영체제 위에서 우리가 필요한 서비스를 제공하기 위해 항상 듣고 (listener) 서비스도 플랫폼이다. 


플랫폼은 표준과 밀접한 관계가 있다. 만약 표준이 없다면 개발한 주체마다, 개발한 나라마다 각자의 표준을 사용하게 되고 이런 표준을 지키지 않는다면 서로 표준이 맞지 않는 경우에는 아무리 좋은 하드웨어 (인프라)를 갖추고 있는 서비스라고 해도 사용할 수 없는 것은 쉽게 이해할 수 있을 것이다. 즉, 플랫폼은 그 뜻이 강조하는 것처럼 사용자들이 평탄한 환경에서 다양한 사람들의  요구사항을 일반적으로 수용할 수 있는 공통된 표준을 통해서 이루어진다는 사실을 알 수 있다. 앞서 예를 든 웹 서비스의 경우 HTML 이란 표준을 사용하지 않는다면 아무리 각자 개발된 웹 서비스가 우수하다고 해도 서로 소통될 수 없기 때문에 무용지물이다. 따라서 플랫폼의 기본적 기능은 표준의 환경을 만들어 주는 것이다. 그렇지만 표준이 꼭 공인된 형태일 필요는 없다. 일반적으로 표준이란 많은 사람들이 약속하고 사용할 수 있는 환경을 뜻한다고 생각하면 될 것이다. 


이제 패러다임이 변화하여 웹 자체가 하나의 플랫폼으로 작용하고 있다. 예를 들어 페이스북도 하나의 플랫폼이라고 이야기한다. 예를 들어 페이스북 안에서 내가 사진을 가공하고 글을 쓰고 동영상을 편집하는 것과 같이 일반적 컴퓨터에서 하던 작업을 페이스북 안에서 한다고 한다면 나의 작업공간이 페이스북이라는 환경에서 작업물을 만들어 내는 것이다. 이후 이런 작업물이 얼마나 많은 사람들과 공유될 수 있는가는 별도의 문제이다. 즉, 플랫폼과 플랫폼이 얼마나 연결성을 가지는지는 별도의 문제이다. 이런 문제는 쉽게 느낄 수 있다. 몇년 전만 해도 맥OS에서 작성된 문서가 원도우에서 읽어지지 않는 경우도 많았고 운영체제 안에서 문자를 읽고 쓰는 방식이 달라서 (문자 코드셋) 서로 호환하기 위해서는 별도의 작업이나 변환 과정이 필요한 적도 있었다. 이런 문제는 여전히 종종 발생한다. 그러나 유니코드와 같은 다양한 표준화 작업, 그리고 운영체제 간의 데이터를 저장하는 방식에 대한 호환성을 높여서 요즘은 이런 데이터의 호환 문제가 적어지고 있다. 마찬가지로 우리가 페이스북에서 작업한 동영상을 다른 공간 예를 들어 유투브나 아니면 그냥 동영상 파일로 저장하고 싶을 때 가능한지 아닌지는 페이스북이 이런 기능을 지원하는지 아닌지에 달려있다. 



이런 측면에서 플랫폼은 사용자가 무엇인가를 할 수 있는 충분히 쾌적할 수 있는 놀이 공간 (playground) 일 수 있지만 반대로 제한적 요소가 될 수도 있고 하고 싶어도 할 수 없는 공간이 될 수도 있다. 예를 들어 내가 사용하는 운영체제가 Windows 7 32bit 라고 한다면 기본적으로 자신의 컴퓨터가 메모리 8G (기가) 를 가지고 있다고 해도 실제로 3.2 기가 정도의 메모리만을 운영체제에서 사용할 수 있다. 이는 플랫폼 자체의 한계로 아무리 자원이 좋다고 해도 (인프라가 좋다고 해도) 제한적으로 사용할 수 밖에 없다. 즉, 플랫폼은 더욱 발전하는 인프라의 성능과 자원을 확장하고 다양한 시도를 하여 사용자들이 좀 더 편안하게 사용할 수 있는 환경을 제공해 준다. 


결론적으로 플랫폼이란 개념이 가지는 느낌은 '표준', '환경', '놀이터', '서비스', '운영체제' 등과 연결시켜 생각하면 좋을 것이다. 또한 사용자가 편리하게 사용할 수 있는 환경이기도 하지만 제한, 한계도 가지고 있다는 점을 생각하면 좋을 것이다. 


프트웨어 (software) 


소프트웨어란 목적을 이루기 위해 기능을 가지는 일련의 실행 체계라고 정의내리고 이런 정의보다 더 쉽게 그냥 우리의 주변에 편하게 소프트웨어라 부르는 모든 대상을 떠올리는 것이 더 빠를 것이다. 이 점에서 조금 혼동되는 부분이 발생한다. 운영체제, 리눅스나 원도우 같은 것들도 넓은 의미에서 소프트웨어이다. 분명한 사실이다. 그렇다면 앞서 설명한 운영체제는 플랫폼이라고 했는데 소프트웨어와 플랫폼은 서로 교집합이 발생하는 개념인가? 결론부터 이야기하자면 소프트웨어와 플랫폼의 구별은 그리 쉽지 않다. 특히 소프트웨어가 다양한 형태와 기능을 추구하여 범용적 기능을 제공하게 된다면 그 범용적 기능 안에서 다른 소프트웨어가 새로운 기능을 만들 수 있게 될 때도 있다. 예를 들어 iTunes (아이튠스) 를 생각해보자. 아이튠스는 직관적으로 살펴보면 플랫폼이 아니라 소프트웨어이다. 그리고 플랫폼이라고 부르기엔 조금 부족한 면이 보이지만 아이튠스를 기반으로 해서 네트워크 공유로 다른 사용자들과 음악을 공유하고 들을 수 있는 로컬 스트리밍 서비스, 그리고 이를 위한 근거리 네트워크의 자원을 감시하고 공유하는 서비스를 실행하기도 한다. 일명 봉주르 (Bonjour) 서비스인데 맥OS에서는 일반적 방법이던 이 서비스가 원도우 운영체제에서는 아이튠스라는 소프트웨어를 통해서 다양한 서비스 형태를 추가하게 되면서 네트워크 자원을 사용하는 새로운 형태의 플랫폼을 제공하는 것이다. 



다른 예로 웹 브라우저만으로 새로운 작업 환경을 만들어 웹브라우저 상에서 대부분의 업무와 복잡한 형태의 작업들도 웹에서 실행되는 앱 (Web Apps) 형태로 제공되어 새로운 플랫폼을 제공해준다. 마찬가지로 iOS 나 안드로이드도 새로운 작업 환경이란 측면에서 운영체제이기도 하지만 플랫폼이란 이름으로 불릴 수 있다. 결국 소프트웨어의 실행을 위한 환경을 만들어주는 모든 형태의 소프트웨어도 플랫폼이 되는 것이고 이런 측면에서 앞서 설명한 페이스북도 새로운 형태, 새로운 패러다임을 가지는 플랫폼이 될 수 있다는 것이다.  안드로이드 OS 에는 런처라는 개념이 있다. 기본적으로 제공하는 작업 환경이 마음에 들지 않을 때 추가되는 기능과 더 편리한 작업환경을 제공해주는 것을 런처(Launcher)라고 하는데 이런 런처가 얼마나 좋은가에 따라서 기본적 런처에 비해서 효율성이 높아지고 좋은 런처의 선택은 많은 사용자의 관심이 된다. 이런 측면에서 시작은 단순히 웹 서비스, 소프트웨어의 간단한 형태로 시작했지만 점점 확장해 하나의 플랫폼 형태를 가지는 서비스도 있다. 가장 대표적인 예가 드랍박스 (Dropbox) 가 아닐까 싶다. 드랍박스는 기본적으로 파일 저장과 동기화를 제공하는 서비스 (소프트웨어) 였지만 이런 기반을 통해서 다양한 서드파티 (Third Party) 서비스를 추가시키거나 데이터 내부 저장에 한계를 가지는 iOS 에서 (이또한 운영체제 플랫폼이 가지는 제한성의 한 예이다.) 새로운 확장성을 제공하여 드랍박스를 저장공간으로 제공하는 다양한 서비스와 앱들을 통해서 새로운 형태의 플랫폼이 되었다. 


드랍박스는 개발자들에게 API 를 제공하여 드랍박스를 자유롭게 연결하여 사용할 수 있도록 해준다. 이를 통해 드랍박스 서비스를 중심으로 하나의 플랫폼을 구성한다. 촐처: TheNEXTWEB & DBX


이처럼 소프트웨어의 영역과 플랫폼의 영역은 그 구별이 분명하지 않을 때도 있다. 실제로 플랫폼이라고 불릴 수 있는 데이터베이스 관리 시스템 (DBMS) 나 웹서비스를 위한 모든 것들도 실제 서버에서 설치할 때나 작동할 때는 일반 소프트웨어와 다른 형태가 아니기 때문이다. 심지어 우리가 확실히 믿고 있는 마이크로소프트 엑셀과 같은 소프트웨어도 뛰어난 개발자에 의해 자신에게 필요한 소프트웨어를 엑셀이란 환경에서 만든다면 (구체적으로 VBA 와 같은 개발 툴을 통해 사내 회계, 감사, 인사 등을 관리할 수 있는 소프트웨어를 만들 수 있다.) 엑셀 또한 훌륭한 플랫폼이 될 수 있다는 것이다. 그러나 여기서 기억해야 할 한가지는 동일 플랫폼 (동일 표준, 동일 환경) 에서 작업한 결과물은 서로 호환이 되어 데이터의 공유 및 교환이 가능해야 한다는 점이다. 


스템 (systems


인프라스트럭처 (infrastructure), 플랫폼 (platform), 소프트웨어 (software) 로 구성된 체계를 시스템 (systems) 이라고 부르면 좀더 체계적일 것이다. 지금까지 설명한 것처럼 인간에게 유용한 (때론 생산적; productive 이라 표현하기도 하지만) 작업을 수행할 수 있도록 해주는 모든 체계와 구조를 시스템 (systems ; system 과 구별하여 -s 의 복수형을 붙이는 것이 더 개념적으로 편리하다 생각한다. 그러나 발음과 표기는 동일하거나 시스템즈라고 표현한다.) 이라고 부른다. 


그렇기 때문에 단순히 컴퓨터 혹은 전산에 관련된 시스템만이 아니라 인간의 모든 체계와 구조를 가지는 것들은 시스템이라고 부른다. 그렇다면 이렇게 시스템이라 부를 수 있는 대상에 대해서는 반대로 인프라, 플랫폼, 소프트웨어 라는 형태의 내용을 가질 수 있다는 것도 생각할 수 있다. 이처럼 구조적으로 생각하는 것이 왜 필요한가? 가장 시스템이란 말을 쓰지 않을 것 같은 우리의 생활에 있는 시장을 예로 생각해보자. 


시장을 시스템으로 바라보다 


시장 (market), 여기서 말하는 시장은 시장 자본주의를 이야기할 때 사용하는 개념적 시장이 아니라 실제로 우리가 물건을 사고 파는 시장이다. 소위 재래 시장이라고 부르는 [생활시장과 대형마트 - 우리는 누구를 위해 소비하는가 ; blog.meson.kr/346 ] 진짜 시장이다. 개인적으로 재래, 전통 시장이란 말을 쓰는 것보다 '생활시장'이라고 부르기를 주장하는데 여기서는 줄여서 시장이라 부르겠다. 우리가 물건을 사는 시장을 시스템으로 바라보면 인프라, 플랫폼, 소프트웨어와 같은 형태로 구조를 바라볼 수 있다. 


시장의 인프라는 가장 기본적으로 시장터이다. 시장이 들어 설 수 있는 부동산, 건물 등 쉽게 생각할 수 있는 내용들이다. 그렇다면 플랫폼은 무엇일까? 아무리 찾아봐도 컴퓨터 시스템에서 찾아보는 플랫폼을 찾아볼 수 없을 것 같지만 플랫폼의 성격과 특징을 생각하면 관련된 부분을 생각할 수 있다. 플랫폼은 말그대로 땅을 평탄하게 만들어주는 것이다. 만약 특정 상인이 자신의 자본을 이용해서 시장 손님들이 지나다녀야 하는 길을 점유하거나 꼭 자신의 상점을 지나게 만든다면 이는 불공정한 부분이 된다. 즉, 모든 상인들이 공평하게 경쟁할 수 있는 환경이 아닌 것이다. 이런 부분을 제거하기 위해서 시장은 구역을 만들고 사람들이 지나다닐 수 있는 길을 만든다. 그 통로 자체는 실제로 인프라에 해당한다. 그러나 그 인프라를 어떻게 만들 것인가, 즉 어떻게 통로를 만들어 모든 상인들이 불이익을 받지 않고 손님도 불편하지 않을 수 있는지를 정하는 것은 정책과 규율이다. 즉, 서로가 수용할 수 있는 범위의 약속과 규칙들은 플랫폼에 속하는 것이다. 이뿐만 아니라 시장에 필요한 정책이나 내부 규칙들도 모두 플랫폼에 해당할 것이다. 소비자들이 카드 사용을 할 수 있도록 카드 단말기를 들어 놓을 수 있다. 이때 카드 단말기 자체는 인프라에 해당하지만 이를 이용할 때 얼마의 수수료를 통해 카드 승인을 할 수 있도록 만들 것인가는 플랫폼에 해당한다. 그렇다면 소프트웨어는 무엇이 있을까? 바로 상인들이 파는 물건들 하나 하나가 바로 소프트웨어가 되는 것이다. 



비슷한 형태로 소프트웨어가 플랫폼의 형태로 확장하는 경우도 목격할 수 있다. 단일 품목이 아니라 시장 안에서도 다양한 잡화와 같이 다품종 소량 판매를 하는 시장 상인도 있을 것이다. 이런 경우 소프트웨어의 확장성에 의해서 손님은 해당 가게에서 자신이 원하는 다양한 물건들을 한꺼번에 살 수 있는 환경 (기회)를 만들게 된다. 그러나 반대의 경우도 있다. 바로 특화된 소프트웨어로 어떤 다른 소프트웨어보다 경쟁력 있는 상품을 판매하여 다른 상인들보다 월등한 판매 실적을 만드는 경우이다. 즉, 단일품목의 소프트웨어라고 해도 꼭 경쟁력이 없는 것은 아니다. 경우에 따라 관련된 업종, 예를 들어 정육점, 수산물, 야채 가게 등과 같이 식자재 상인들이 모여 동일한 거래 환경을 마련하여 협력할 수 있다. 협력하여 마케팅 차원에서 쿠폰이나 다양한 형태를 제시할 수도 있다. 상인들이 자신의 가게를 꾸미고 소비자를 모으기 위한 다양한 마케팅 방법이나 실내 장식이나 프로모션 등은 일종의 소프트웨어라고 볼 수 있다. 


복지를 시스템으로 바라본다. 


시장뿐만 아니라 복지를 바라볼 때 시스템으로 바라볼 수 있다. 비슷한 방법으로 생각해보자. 복지를 이루는 인프라는 무엇일까? 무엇보다 복지에 관련된 기간 시설, 복지 재원 (돈은 컴퓨터의 CPU 와 메모리와 비슷한 자원이 될 수 있다.) 이에 필요한 관련 인력 등이 필요하다. 실제 복지가 이루어지기 위해서 필요한 대부분의 구체적인 대상, 인력이 이에 해당할 수 있다. 그렇다면 복지에서 플랫폼은 무엇일까? 이 부분에서 조금 생각해봐야 할 것이다. 플랫폼은 모든 사용자들이 편하게 사용할 수 있는 환경이기도 하지만 다른 한편으로 효율성과 호환성을 강조하는 구조이기도 하다. 즉, 복지 혜택을 받는 사람들이 좀더 복지를 편하게 받을 수 있는 환경은 무엇이며, 복지에서 효율성과 호환성이란 무엇을 뜻할 수 있는가이다. 복지의 전문가에게 물어본다면 더 심도있는 대답을 얻을 수 있을지 모르겠지만 한정된 지식으로 바라볼 때 복지를 구성하는 복지 정책과 복지를 평가하는 시스템 등은 이에 해당할 수 있을 것이다. 즉, 어떤 복지를 누가 혜택을 볼 것이며, 복지 혜택을 받은 사람들이 삶에 어떤 변화가 일어나는지 확인하고 평가하는 시스템이 잘 되어 있다면 이를 통해서 복지는 더욱 효율적으로 수행될 수 있다. 


문제는 복지를 바라보는 시선이다. 국가의 복지가 어떤 차원에서 이루어져야 하는지에 대한 가치관은 국가의 통치 이념과 국가 구성원이 어떤 삶 속에서 살아야 하는지 구체적인 모습을 가지고 있을때 가능하고 이런 구체적 모습을 통치 국가가 가지고 있을 때 복지에 대한 방향을 정할 수 있다. 사회 구조와 관련된 경우 플랫폼은 정책과 밀접한 관계를 가지고 있음을 알 수 있다. 이런 이유로 정책의 효율성이란 말은 사용하지만 기간 시설의 효율성이란 말은 잘 쓰지 않는다. 인프라 (기간 시설) 은 여유있게 확충 될 수 있는 수요를 위해 좀더 큰 규모로 설계하는 것이 상식적이다. 이는 비단 사회, 경제 시스템에만 적용되는 것이 아니다. 전산 시스템도 동일하다. 인프라는 좀 더 여유있게 수용할 수 있는 규모를 생각하는 반면 플랫폼에 관련된 내용들은 효율성이 강조된다. 이런 이유로 정책의 효율성은 중요한 부분이다. 



이런 측면에서 복지에 적용해보자. 얼마나 많은 사람들이 복지의 혜택을 받아야 하는지를 결정하는 것은 정책의 방향이다. 즉, 얼마나 많은 사람들이 참여할 수 있는 플랫폼을 만들 수 있는가는 얼마나 많은 사람들이 복지적 혜택을 통해 안정적 생활 수준으로 유지할 수 있는가의 문제이다. 다시 말해 복지의 플랫폼이란 개개인의 입장에서 보았을 때 얼마나 많은 사람들이 사회적 참여를 할 수 있을만큼 생활을 유지하는데 걱정하지 않도록 할 수 있는가이다. 컴퓨터 사용자를 통해서 살펴보자. 만약 모든 운영체제의 구입비용이 전체 사용자의 30%만이 사용할 수 있는 수준으로 높다면 하위 70%는 컴퓨터를 제대로 사용할 수 없거나 불법 사용자가 되어 안정적으로 사용할 수 없게 된다. 그러나 리눅스와 같이 사용에 아무런 비용이 들지 않는다면 인프라 사용에 필요한 비용만 필요할 것이다. 이런 이유로 플랫폼에 종속되지 않도록 다양한 플랫폼이 존재하는 것은 사용자의 선택권이 다양해질 수 있기 때문에 중요한 주제이다. 즉, 특정 플랫폼만이 가능한 특정 소프트웨어나 특정 웹페이지를 만든다면 이는 사용자가 다양한 플랫폼을 선택해 다양한 플랫폼의 장점을 경험할 수 있는 기회를 간접적으로 박탈하는 것이다. 따라서 플랫폼을 선택할 수 있는 정책 결정자는 플랫폼이 다양할 수 있는 경로를 마련해야 한다. 


다시 복지로 넘어오면 마찬가지로 복지 정책도 다양한 플랫폼을 통해서 복지 혜택을 제대로 받지 못하는 사람들을 지원하도록 해야한다. 국가 주도의 북유럽의 소위 사회주의 복지정책을 생각해보자. 표면적으로 보면 보편적 복지주의를 지향하지만 궁극적으로 이는 완전 평등을 기준으로 하여 모든 이들을 일괄적으로 적용하는 복지 정책이 아니다. 다양한 플랫폼이란 다양한 사용자를 대상으로 다양한 정책적 복지 지원을 접근시킨다. 예를 들어 백혈병에 걸린 환자들에게 적용되는 복지혜택과 건강한 사람들에게 적용되는 복지혜택이 동일하다면 그것이 오히려 보편적 복지혜택이 아니다. 백혈병 환자에게 소요되는 자본만큼 일반인에게 적용시킨다는 것은 오히려 보편적 복지의 역행하는 경우이다. 즉, 다양한 플랫폼이란 사회 참여자들의 다양한 상황과 환경에 따라서 최소한 생계가 파괴되지 않는 모델을 만드는 것이다. 따라서 보편적 복지를 구현하기 위해서는 보다 많은 플랫폼이 제시되어야 한다. 이전 블로그 글에서 플랫폼에 대한 내용을 살펴보면 검색엔진의 진화 - 플랫폼을 통한 인식의 진화 ; blog.meson.kr/366 ] 검색엔진을 플랫폼 개념으로 만들기 위해서는 우리의 입력값 (query, inquiry, input) 에 가장 효율적이고 효과적인 결과값으로 사용자들에게 매력을 주어야 한다. 이런 이유로 같은 입력값에 검색엔진에 따라서 얼마나 원하는 정보에 가깝게 제공하는가는 검색엔진의 모델링에 따라서 달라진다고 전했다. 즉, 사용자의 입력값이 같아도 플랫폼이 얼마나 좋은가에 따라서 사람들이 얻어내는 결과의 질(quality)는 달라진다. 이런 이유로 보편적 복지정책을 적용하는 나라일수록 다양한 상황과 환경에 있는 국민들에 대한 다양한 모델링을 적용하고 여러 시행착오를 통해서 가장 효율적 모델링을 만들어 내는 것이다. 



즉, 복지에 적용될 수 있는 플랫폼, 더 구체적으로 모델링의 예를 생각해보자. 입력값은 백혈병 환자이다. 백혈병 환자들의 완치를 목적으로 구성된 모델링과 치료를 지속적으로 하기 위한 모델링은 다르다. 모델링은 간단하게 문제의 답을 제시하기 위한 계산 박스이다. 백혈병 환자에게는 병원비, 치료비 등이 필요하고 요양기간동안 자기 개발을 위한 비용, 활동이 많지 않은 수입 활동을 원할 때 할 수 있는 지원비 등을 고려해서 총 비용과 필요한 인프라 등을 계산할 수 있다. 이때 필요한 계산 방정식이 모델링이라고 생각하면 편하다. 이를 통해서 각 상황에 필요한 복지 비용이 계산되고 각 플랫폼의 계산 결과를 수집하면 소요되는 인프라의 용량과 소모량 등이 역으로 계산될 수 있는 것이다. 이런 이유로 플랫폼이 얼마나 인간을 생각하며, 인간을 중심으로 설계되는가에 따라서 결과는 크게 달라지고 이는 정책의 방향과 내용으로 반영되는 것이다. 


국가 시스템을 바라보는 시선 


정책의 결정권자들보다 더 중요한 것은 정책을 개발하고 정책의 실효성을 검증하는 사람들이다. 이런 인원들이 얼마나 있는지, 이런 일에 얼마나 많은 인원... 특히 얼마나 따뜻한 인간을 위하는 마음을 가진 사람들이 존재하는가에 따라서 나라의 정책은 달라질 것이라고 믿는다. 대충 합산의 의미로 정책의 방향을 결정하는 정책 결정권자들이 국가를 운영할 때 나타나는 문제점은 제대로 자원 (자본을 포함한) 을 사용해도 제대로 필요한 사람들에게 나누어지지 않기 때문에 결국 효율성이 문제가 되는 것이다. 효율성이 결여된 플랫폼은 많은 사용자들이 제대로 참여하지 못하게 만든다. 컴퓨터의 비유를 통하면 비싼 돈 들여 아무리 좋은 운영체제를 만들어 놔도 가격을 높게 설정한다면 사용자들은 결국 제대로 사용하지 못하게 된다. 다른 문제점은 수많은 헛점을 가진 정책을 만든다. 이렇게 되면 모든 국민들이 법을 제대로 지켜도 어떤 사람은 법의 헛점으로 많은 혜택을 얻게 되고 어떤 이들은 꼭 필요해도 얻지 못하게 되는 불균형을 만들게 된다. 


플랫폼이란 개념을 어렵게 설명하려는 이유는 바로 세상을 바라보는 시선에서 왜 정책적 결함이 생기는지에 대해서 많은 고민을 해야 한다는 생각때문에 시작하였다. 즉, 정책적 결함은 인간의 불완전함에서 기인할 수 있지만 이보다 정책적 섬세함, 무엇이 목적인지 그리고 제대로 만들어진 플랫폼이 얼마나 효율성을 극대화할 수 있는지에 대한 이점에 관심이 없는 것 같다는 생각이 들었다. 익숙한 컴퓨터 시스템 그중, 사용자에게 편리한 플랫폼이 사용자의 생산성과 작업 효율을 높일 수 있는지는 한번 심각하게 고려해야 한다. 고민을 해야하는 사람들은 비단 컴퓨터 관련 종사자들이 아니라 정책을 계획하고 수립하고 결정하는 정책 결정권자들을 포함한 국가의 일을 하는 사람들도 마찬가지이다. 



언젠가 한 나라의 입법을 담당하는 국회의원이 국가 기간 시설 (고속도로) 를 두고 플랫폼이란 용어를 사용한 적이 있다. 물론 넓은 의미에서 고속도로의 다양한 요소들도 플랫폼의 요소가 될 수 있지만 그보다 그 국회의원은 인프라, 플랫폼이란 용어를 사용할 때 어떤 개념을 가지고 사용하는지 의심을 하지 않을 수 없었다. 인프라, 플랫폼, 소프트웨어를 구별해서 생각하는 시선은 매우 유용하다고 믿는다. 이유는 간단하다. 각 구성 요소, 구조가 가지는 특징과 역할이 다르기 때문이다. 이미 많은 경우 컴퓨터와 익숙해진 사용자들에게 인프라, 플랫폼, 소프트웨어를 직감적으로 구별하는 능력은 어느정도 가지고 있다. 문제는 이런 시선을 확장시켜 다양한 시스템에 적용시킬 수 있는가 그리고 그런 시선으로 구성하고 분석했을 때 어떤 발전 방향을 만들 수 있는지 생각할 수 있게 되는 것이다. 


시스템 엔지니어의 역할을 기대한다 


시스템 엔지니어란 역할에 큰 기대를 한다. 아무리 다양한 응용 분야를 적용해도 개인적으로 시스템 엔지니어를 좋아한다. 어떤 분야를 접해도 두려워하지 않고 분석하고 이를 개선할 수 있는 능력을 가진 시선은 시스템 엔지니어의 관점에서 가장 잘 할 수 있다고 보기 때문이다. 지금까지 바라보며 세상을 시스템으로 바라보는 시선은 매우 유용했다. 우선 문제가 인프라의 문제인지, 플랫폼의 문제인지 아님 사용자에 가장 가까운 소프트웨어의 문제인지 선택하고 이에 따라서 각 구조가 가지는 특징에 얼마나 역행하는지를 살펴보면 문제의 해결점이 보이는 경우가 많다. 


순수 학문의 연구에서도 이런 시선은 유용하다. 대규모 실험이 동반된 분석 시스템을 구성하는 경우를 생각해보자. 예를 들어 백명 정도의 연구원들이 각기 다른 조건의 세포 실험을 시행하고 이를 분석기기를 통해서 분석이 되는 경우를 생각하면 이때 분석 기기에서 바로 데이터가 모아지는 시스템 자체를 인프라로 생각해서 구성할 수 있다. 물론 이 부분을 플랫폼으로 바라볼 수 있지만 만약 플랫폼으로 바라본다면 분석 기기에서 분석되어진 데이터의 가치가 더 높게 평가 될 것이다. 즉, 원본 데이터 (raw data) 보다는 분석되어 우리가 원하는 데이터 형태로 가공된 (processing) 데이터의 형태로 데이터베이스를 만들 것이다. 그러나 이런 시각에서 분석 기기가 가질 수 있는 근본적 오차, 기기적 오차 등을 생각한다면 일차적으로 분석 기기에서 발생한 원본 데이터를 그대로 인프라로 바라볼 수 있다. 앞서 모든 내용은 인프라는 구체적이고 물리적 형태를 가지는 경우가 많았지만 실험 데이터가 만들어지는 실험실에서는 데이터 모두는 플랫폼에서 가공되어지는 내용으로 바라볼 것인지 아니면 인프라의 한 부분으로 바라볼지에 따라서 가공의 방향이 달라진다. 


만약 인프라의 범위를 실험 기자재, 분석 기기에 제한한 기존의 인프라의 느낌으로 적용한다면 분석기기에서 나온 원본데이터들은 인프라의 영역이 아니다. 이는 플랫폼에 들어가 가공되어야 하는 대상이다. 이런 시선으로 바라보면 원본 데이터는 존재하는 것보다는 플랫폼에서 빠르게 가공되어 처리되는 것이 우선이다. 바로 속도가 우선이다. 그러나 인프라로 바라본다면 분석 장비에서 모아진 원본 데이터는 일단 체계적 데이터 구조를 가져 조금 시간이 걸리더라도 원본 데이터 자체가 하나의 기본적 인프라로 이룰 수 있도록 처리하는 것이 우선이다. 이는 철학의 문제이다. 좀더 구체적인 예를 생각해보자. 이제는 개인의 DNA 서열 분석도 비교적(?) 싼 가격에 가능하다. 이 경우 개인의 염기 서열은 인프라인지 플랫폼인지 생각해보는 것이다. 앞서 설명한 원본 데이터의 예가 DNA 염기 서열이라고 생각하는 것이다. 이 경우 염기 서열 데이터는 인프라에 속해야 하는가 아니면 플랫폼에 속해야 하는가? 이 질문에 대해서 좀더 고민을 해야할 것이고 개인의 생각, 철학에 따라서 이 결론은 다르게 나타날 수 있다. 



개인적인 결론은 이런 류의 데이터는 인프라의 영역에 들어가는 것이 더 좋지 않을까 싶다. 이유는 간단하다. 인프라의 데이터는 범용적인 (comprehensive) 내용과 인간이 인지하기 힘든 내용들에 더 가깝다는 것이다. 마찬가지 이유로 정책은 플랫폼에 해당하지만 정책에 들어가는 원본 데이터 즉, 인구 및 국가 구성에 관련된 통계 데이터 (census data) 는 국가 인프라에 들어가는 것이 맞다고 본다. 즉, 국소적으로 볼 때 염기서열이 무엇이다 알 수 있고 인구 데이터도 어느 지역에 인구가 얼마다는 찾아보면 알 수 있지만 그런 데이터들의 국소값들은 큰 의미를 가지지 않는 경우가 많기 때문이다. 이런 데이터들이 유기적으로 연결되고 다양한 환경 변수들이 적용될 때 우리에게 의미있는 데이터가 산출되기 때문이다. 이런 이유로 형태적 분류로 데이터는 무형이기 때문에 인프라에 들어가지 않는다 판단하는 것은 조금 생각해 볼 필요가 있다고 본다. 


무리 하며... 


시스템을 바라보는 시선이란 인간이 자신도 모르게 경험과 지혜를 녹여 만들어 낸 구조를 좀더 분석적으로 살펴보고자 하는 시도이다. 이런 시도는 많은 사람들이 알아내지 못하는 구조적인 모순이나 정책적 결함 등을 찾아내는데 편리하다. 또한 이런 구조적 시선을 가지고 어떤 방향으로 설계할 것인지 결정하는 것은 목적을 이루기 위해서 수단 방법을 가리지 않고 가용 자원을 투입하자고 하는 형태의 시도를 막아 자원의 균형적 배분에도 좋은 효과를 보일 수 있다. 


앞서 복지 시스템을 살펴보면서 보편적 복지 국가일수록 다양한 플랫폼이 더 요구된다는 것을 이야기했다. 다양성을 수용하는 것이 복잡성을 수용하면서 효율성을 증가시킬 수 있는 방법이다. 문제는 인간은 그런 복잡성을 수용해서 분석할만큼 그리 똑똑한 존재가 아니다. 그렇기 때문에 그런 복잡한 상황을 제대로 계산할 수 있는 구조와 계산이 필요하다. 시스템으로 세상을 바라보는 시선의 장점은 바로 이런 복잡한 상황을 계산할 수 있는 다양한 모델을 만들 수 있다는 것이다. 시스템이란 공학이나 과학을 전공하는 사람들에게 필요한 것이 아니라 일상 생활을 살아가는 모든 이들이 세상의 문제를 냉철하게 바라볼 수 있는 하나의 무기를 제시해준다. 이런 세상을 바라보는 하나의 방법 중 하나로 다양한 시스템을 바라보고 좀 더 많은 사람들이 효율적으로 참여할 수 있는 시스템을 어떻게 만들 수 있는지 지헤를 모으는 것이 세상을 살아가기 행복한 더 많은 정책을 만들 수 있는 방법이 아닐까 조심스럽게 화두를 꺼내어 본다.