객체를 지향하는 세상

2021. 6. 30. 23:51

공원에 왔습니다. 발걸음이 뜸한, 도시 귀퉁이의 작은 공원에 당신은 서 있습니다. 넓지는 않지만 나름 갖출 건 여실히 갖춘 공원입니다. 놀이터도 있고, 음수대도 있습니다. 맑은 날씨 아래 공원을 빙 둘러 핀 색색의 꽃을 보니 마음이 누그러집니다. 공원 안쪽에 작은 건물이 있네요. 화장실일까요? 컨테이너 하나 정도의 크기로 보입니다. 당신은 천천히 걸어갑니다. 가까이 다가가자 화장실 표시가 보입니다. 화장실 안에 들어선 당신은 수도꼭지를 돌려 물을 틉니다.

여기서 질문입니다. 물이 나올까요?


당연히 나올 거라고 생각하는 사람도 있고, 반신반의하는 사람도 있겠습니다. 별 기대를 품지 않는 사람도 더러 있을 거라 생각합니다. 각자가 평생 경험해 온 공공 장소의 운영 행태에 따라 답이 달라지겠지요. 한국에서 평생 살아 온 저에게는 당연히 물이 거칠게, 하지만 거리낌 없이 쏟아져 나오는 풍경이 먼저 펼쳐집니다. 뜨거운 물은 나오지 않겠지만, 차가운 물은 무더위를 식히기에 아쉬움이 없을 만큼 시원할 거예요. 어쩌면 화장실에 들어선 순간 머리 위의 센서가 반응하고는 불이 켜지며 유명한 클래식 음악이 흘러 나올 지도 모르겠습니다. 모차르트의 아이네 클라이네 나흐트뮤지크나 쇼팽의 녹턴 제2번 내림마장조 같은 곡이요.

저와 비슷하게 생각한 사람들은 아마 이런 공공 장소의 시설이 늘 잘 작동하는 모습만 보아 왔겠지요. 행여 문제가 있더라도 어설프게나마 이용이 가능하고, 불편을 드려 죄송하니 어서 빨리 고치겠다는 조잡한 통지문을 보지 않고서는 마음이 편하지 않겠지요. 그런데 그런 기대는 어디서 온 걸까요?

익숙한 도심의 근린공원, 그 안에 서 있는 화장실 건물. 이것만으로 '오늘 처음 온 곳이지만 이 화장실은 꾸준히 관리되고 있으며 잘 작동할 것이다' 하고 믿는 거잖아요. 이 신뢰, 즉 지자체같은 담당 기관과 시설을 이용하는 개인 사이의 신뢰를 가만히 생각해 봅니다. '그 자리에 있는 것은 그 자리가 맡은 임무를 잘 수행해야 한다'는 것이 철칙이고, 이걸 달성하지 못하는 게 사과해 마땅한 일인 거지요.

이제 생각을 돌려 봅니다. 화장실의 수도꼭지는 물이 잘 나와야 합니다. 공원은 깨끗이 청소되어 있어야 하고 구석에는 쓰레기통도 하나 있어야 하겠습니다. 여기까지 걸어 오셨나요? 보도블럭으로 잘 포장된 길을 따라서요? 분명 누군가의 지난한 노력이 만든 평평한 보도블럭 보도 위로 지금껏 수만 걸음이 굴러갔겠지요. 버스를 타고 왔을 수도 있겠습니다. 정해진 노선을 따라 정해진 시각에 정해진 위치에 들르는 버스를 타고요. 공공 영역뿐만이 아닙니다. 점심을 먹었던 식당의 점원은 생글생글 웃으며 극진한 존댓말로 당신을 모셨고, 공원을 찾느라 길을 물었던 생면부지의 행인마저 열심히 손짓을 해 주었습니다.

일상을 조각조각으로 쪼개 관찰해 보면 우리는 상당 부분을 '서비스'에게 위임하고 있습니다. 서비스란 단순히, 제가 원하는 일을 해 주는 걸 말하지요. 공공 장소가 예쁘게 관리되는 것도, 가게에서 주문을 하는 것도, 우편함에 밀어 넣은 작은 종이가 원하는 이에게 닿을 거라 기대하는 것도 모두 서비스이지요. 서비스가 다루는 일은 점점 많아지고 있습니다. 서비스를 운영함에 따른 대가가 있기 때문이지요. 빨래, 요리, 수송, 보관, ……. 우리의 삶은 어쩌면, 마이크로서비스를 조합해서 새로운 기능을 제공하는, 또 하나의 서비스일 지도 모릅니다. 방금의 문장이 생소하신가요? 최근 IT 업계에서 활발히 채용하는 소프트웨어 패러다임을 슬쩍 끼워 넣어 보았습니다.


프로그래밍을 오래 하다 보면 '객체 지향(object-oriented)'이라는 표현을 자주 접합니다. '객체'가 가리키는 건 그 타자화된 모호한 철학적 개념과 얼추 비슷합니다. '지향'이라는 말에는 여러 뜻이 있지요. 저라면 "객체 간의 상호작용으로 모든 것을 표현한다"로 운을 떼겠습니다. 세상에는 수많은 개체 혹은 객체가 독립돼 존재하고, 이들이 상호작용할 때 생기는 복잡한 현상으로 프로그램의 동작을 설명할 수 있다는 거예요. 사람도 수많은 부분으로 되어 있어 이들이 긴밀히 상호작용하여 기능 혹은 목적을 달성하지요. 그런 사람을 다시 객체로 놓는다면, 사람 간의 상호작용이 우리 사회를 이루고 있다고도 할 수 있고요. 객체 지향 패러다임을 도입한 프로그램에서는 이를테면 사용자 하나하나와 그들이 올린 게시글과 댓글 등이 각각의 객체가 되기에 "사용자가 게시글을 수정한다"와 같은 동작이 구체적인 코드로 표현됩니다.

경우에 따라서는 객체와 함께 '인터페이스'(interface)의 개념도 쓰입니다. 인터페이스는 객체와 비슷하지만, 달성하고자 하는 기능에 보다 초점을 맞춘 개념입니다. 예를 들어 면허가 있는 사람은 웬만한 승용차를 운전할 수 있는데, 이는 모든 승용차들이 핸들, 페달, 기어와 같은 공통된 조작을 가지고 있기 때문입니다. 그 외의 기능은 승용차마다 달라서, 어떤 차는 음악을 틀 수 있고 어떤 차는 어두워질 때 자동으로 전조등이 켜지지만, 순전히 운전에 필요한 기능만을 놓고 본다면 '운전 가능한 탈것'으로 통칭할 수 있는 셈이지요.

이 '인터페이스'가 일상 생활 속의 '서비스'와 일맥상통합니다. 가게에 들어가서 국수를 한 그릇 주문할 때 우리에게 중요한 것은 '국수를 주문하면 국수가 나온다'는 기능뿐이지, 면 뽑는 기계가 고장이 났다든가, 요리사 분이 아직 신입이라 미숙하다든가 하는 것은 묻지를 않고 알고 싶지도 않습니다. 화장실이 멀쩡히 서 있다면 그 안의 시설이 잘 작동하는 것이 당연하지, 이를 관리하기 위해 사람들이 얼마나 주기적으로 방문하고 어느 정도의 보수를 누구에게 받아 가며 관리해야 하는가 등의 복잡한 질문은 당장 당신에게 필요치 않습니다. '새벽에 물건을 받아보고 싶다'라는 결과적 기능만을 취하고 나면 그 서비스 안에서 일어나는 일은 굳이 궁금해 하지를 않지만, 대개 잘 알려 주지도 않습니다.

그렇기 때문에 이 '서비스', '인터페이스'가 제 기능을 제공하지 못할 때 사람들은 적잖이 당황합니다. 한낱 서비스에게 부대 사정이란 없으니까요. 주문한 음식이 늦게 나오고, 택배 배송이 늦어지고, 기상 예보가 틀리고, 버스와 지하철이 늦고, 물웅덩이를 밟아 옷이 젖고, 도서관이 휴무이고, 억울한 일을 신고했지만 감감무소식이고, ……. 프로그래밍에서라면 용납할 수 없는 일이지요. 인터페이스를 구현할 거라면 반드시 제 기능을 다하도록 구현하는 게 기본이니까요. 마치 스마트폰의 앱을 조작하듯, 현실 세계의 모든 서비스도 무오류하고 안정적으로 동작해야 하는 겁니다. 그것이 서비스니까요.

그렇지만, 그렇지만 그렇게만 살아가는 세상이라고 한다면 마음이 무거워집니다. 인터페이스는 허구의 개념이고, 서로의 약속에 불과해요. 인터페이스의 실체는 없어요. 인터페이스 자리에 넣을 수 있는 것은 오직 객체뿐입니다. 메모리의 주소와 공간, 그러니까 피와 살을 가지고 당당히 존재하는 객체만이, 이 세상에 존재하는 모든 것을 대표해요. 그렇기 때문에 인터페이스 지향이 아니라 객체 지향인 거예요.

우리가 살아가면서 이용하는 수많은 서비스도 결국 객체에 기반합니다. 피와 살을 가지고, 이름과 기억을 가지고 있는 개개인이라는 객체의 노력이 한 곳에 모여, 완전무결한 서비스라는 허무한 약속을 애써 지켜나갑니다. 그렇지만 사람은 부족하기에 때로는 실수를 하고 때로는 몸이 아파서, 때로는 마음이 힘들고 정신이 없어 끝내 서비스의 약속을 이루지 못할 때도 있습니다. 그렇지만 그 사람, 그 사람들의 잘못으로 치부하는 건 각박합니다. 애초 질문이 잘못됐어요. 사람에게 그런 것을 바라는 게 옳을까요? 오류가 없는 사람만이 살아남을 수 있는 세상에 살고 싶으신가요? 오류가 없는 완벽한 '서비스'를, 한 순간도 포기하지 않고 자기의 몸과 마음을 다해 구현할 자신이 있으신가요?

그럼에도 불구하고 세상은 인간에 불과한 우리를 점점 세분화된 서비스에 밀어넣고 있는 듯해 서글픈 마음이 드는 요새입니다.

'' 카테고리의 다른 글

2021-07-18  (0) 2021.08.04
객체를 지향하는 세상  (1) 2021.06.30
  • 프로필사진
    최지원2021.07.08 00:31

    어릴 때 살던 곳에서는 공원의 수도꼭지에서 물이 나온다는 기대가 없었어요. 어째선지 모래로 막혀있곤 했죠. 서울에서 살게된 뒤로는 모든 것이 동작할 거라는 신뢰를 갖게 되었습니다. 도시 곳곳에 꼭꼭 숨겨진 사람들이 서비스가 돌아가도록 매일 봉사하고 있기 때문이겠죠.

    본문의 질문을 생각해봤는데, 약간 냉혈한 같기도 하지만 ^.^;; 오류 투성이의 사람은 역시 믿을 수 없어요. 하지만 시스템은 그걸 보완할 수 있죠. 하드디스크로 RAID를 구성하는 것처럼요. 뭔가를 졸라매고 참고 노력한다고 될 게 아니라 사람이란 건 약하고 고장날 수 있다는 걸 인정해야지 서비스도 잘 돌아간다고 생각해요.

    소프트웨어 공학의 개념을 세상에 빗대는 건 참 재밌어요. 무척 그럴듯하니까요. 근데 왜 그럴까요? 소프트웨어로 세상의 문제를 풀려면 세상을 모사해야 하기 때문에?

    (트위터 하다가 문득 남서님이 생각나서 검색해서 들어왔어요.)