2020. 8. 26. 14:03ㆍ웹서비스
스파이 영화를 생각해보자. 스파이 영화라면 단연코 007 시리즈다. 미션 임파서블이 나오면서부터 007 시리즈는 한층 꺾이고, 킹스맨이 나오면서 코미디를 가미한 스파이 영화가 주를 이루었다. 영화 이야기를 하려고 한 게 아니다. 스파이 영화의 주무대인 악당이 있는 건물에 잠입해서 임무를 완수하는 시나리오를 생각해보자. 오션스 일레븐처럼 범죄 영화를 생각해도 좋다.
건물에 잠입하기 위해서는 무작정 찾아가서 임무를 완수하는 영화는 없다. 그렇게 해서 임수를 완수한다면 영화를 만들 이유도 없다. 일단 잠입하기 위해서는 시뮬레이션을 해봐야 한다. CCTV가 어디에 있는지 어디로 잠입 가능한지, 경비원들이 몇 명이 있는지 교대 시간이 있는지 등등 모든 상황을 고려해서 계획을 세우고 시뮬레이션으로 실수 없이 성공해야 한다.
시뮬레이션으로 발견된 상황들은 어떻게 대처해야 하는지도 미리 생각해두면 실수를 줄일 수 있다. 또한 갑자기 나타나는 돌발상황에 대해서도 대처 가능하도록 준비해야 한다. 어쨌건 실수 없이 한 번에 성공해야 한다.
시뮬레이션을 좀 더 깊게 들여다보자. 의뢰주가 돈이 많은지 잠입할 건물의 공간을 세트장으로 만들어 주었다. 여기에서 연습에 연습을 거듭해서 완벽하게 성공해야 한다. 성공하지 못하면 저세상과 마주하는 것밖에는 없다.
경비원의 시야가 닿지 않는 곳에서 입구까지의 거리와 시간을 계산하여 달리기 연습을 한다. 정해진 시간 내에 돌파해야 한다. 첫 번째, 두 번째 몇 번을 시도 끝에 시간 내에 도착할 수 있었다. 입구에서 교대시간에 잠깐 경비의 소홀함을 이용하여 멋지게 건물 입구로 들어가야 한다. 이것도 몇 번의 시도 끝에 성공했다. 마치 영화 ‘엣지 오브 투모로우'와 같은 장면이다. 시도할 때마다 기록을 했다. 현장에서 실수하면 안 되기 때문이다. 실수한 것도 일일이 기록해서 어떻게 해결했는지도 기록한다.
며칠의 연습 끝에 시간 내에서 현장에 투입될 수 있는 실력이 됐다. 한번 더 처음부터 끝까지 연습해보자. 어? 시간을 오버했다. 어디가 잘못된 건지 기록을 통해 봐야 한다. CCTV가 고장이 나서 자동으로 돌아가는 시간이 늦어 기다린 시간도 같이 늦어버렸다. CCTV를 새것으로 교체하고 다시 시도했다. 또 실패다. 실력에는 문제가 없다. 어디가 잘못된 건지 다시 한번 기록을 살펴보고 장치 중에 잘못된 부분은 고치면서 몇 번의 연습을 다시 했다.
완벽하다. 이제 현장에 투입하자. 투입되는 곳은 연회장이다. 연회장은 초대된 사람들만 들어갈 수 있어 어쩔 수 없이 잠입해야 한다. 입구부터 보안이 철저하다. 지금까지 연습한 대로만 한다면 충분히 연회장 안까지는 들어갈 수 있다. 시간을 보며 연습한 대로 정확한 시각에 맞춰 건물까지 들어오는 데 성공했다.
연회복으로 급하게 갈아입고, 연회장으로 들어섰다. 영화를 보면 왜 연회장에는 의자가 없다. 다들 서서 고상하게 와인이나 샴페인 컵을 들고 있는지 모르겠지만 여기도 그렇다. 다들 서서 삼삼오오 모여서 얘기하고 있다. 자연스럽게 4명이 모여서 떠들고 있는 곳에 합석했다. 이상하게 보이지 않으려면 그들만의 세계의 대화를 해야 한다. 이 연회는 도박계의 거물이 개최했다. 모인 사람들도 대부분 도박계에서 이름을 날리는 사람들이다. 연습할 때 도박 세계에서 주고받는 전문 용어와 대화를 연습했었다.
자연스럽게 4명과 같이 웃으면서 이야기가 진행됐다. 이제 슬슬 목적을 달성해야 한다. 서로 스스럼없는 대화가 진전되면서 목적 달성을 위해 최대한 조심하면서 질문을 던지기 시작했다. 순순히 답변을 받아내고, 이후 약속까지 만들어 그들의 아지트에 잠입할 수 있는 정보를 획득했다.
재미없는 짤막한 스토리를 읽느라 감사의 말을 전한다. 이 스토리를 개발 분야로 옮겨 생각해 보자.
잠입하기 위해 연습에 연습을 거듭했다. 연습을 하는 하는 내내 기록을 작성하고 기록을 보면서 잘 못된 부분이나 오버된 시간의 원인을 찾았다. 이를 로그(Log)라고 부른다. 로그는 ‘기록'이라는 의미를 가지고 있다. 개발된 프로그램을 실행하면 시간대별로 실행되는 순서가 빠르게 한없이 기록되어 화면 위로 올라간다. 이 로그를 보고 어떻게 동작되는지를 파악하고 데이터들이 잘 나오는지를 확인할 수 있다.
연습에서 기록을 보면서 잘못된 부분을 잡아서 바로 잡았다. 잘못된 부분을 버그(bug)라고 부른다. ‘벌레’라는 뜻이다. 얼마나 오류가 싫었으면 ‘벌레'라고 이름을 정했는지 개발을 해본 사람은 그 느낌을 안다. 버그를 발견했으면 잡아야 한다. 이를 디버그(debug)라고 부른다. ‘벌레를 없애다'라는 뜻으로 생각하면 된다.
로그를 통해 버그를 발견하고 디버그 하면서 연습에 연습을 거듭한다. 이제 실전으로 들어가 보자. 건물 안까지 잠입에 성공하고, 연회장으로 들어갔다. 여기에서 연회장은 다른 세계라고 말할 수 있다. 관련된 사람들만이 모여있는 공간으로 밖의 세계와는 동떨어진 세계다. 개발에서도 일반 사람들이 익숙하게 보는 화면이 아닌 컴퓨터 내부로 들어가 조작을 해야 한다. 컴퓨터 내부 즉 연회장을 터미널(Terminal)이라고 부른다. - 윈도에서는 cmd (커맨드 창)이라고도 부른다 - 공항 터미널을 생각해도 좋다. 공항 터미널은 다른 나라로 가는 관문이기 때문에 여기에서 이야기하는 의미와 맥락이 같다.
연회장에 들어갔으면 그들만의 언어로 대화를 해야 한다. 그들만의 언어가 아니면 의심하거나, 쫓겨나거나 최악은 총 맞아 죽을 수도 있다. 그들과 자연스럽게 소통을 해야 한다. 개발도 마찬가지이다. 그렇다고 총 맞아 죽지는 않는다. 터미널로 내부로 들어갔다면 컴퓨터 또는 프로그램과 소통할 수 있어야 한다. 고맙게도 소통할 수 있도록 대화의 물꼬를 틀어주는 가이드가 있다. 이를 CLI(Command Line Interface)라고 한다. ‘명령 줄 상호작용'이라는 의미를 가지고 있다. 컴퓨터와 상호작용할 수 있도록 명령어를 제공한다. CLI를 통해 컴퓨터와 자연스럽게 소통할 수 있다.
이제 연회장에서 다른 사람과 어울려 대화를 할 수 있게 됐다. 대화만 해서는 안된다. 대화하기 위해서 그 힘든 연습을 한 것은 아니다. 소정의 목적을 달성해야 한다. 그러기 위해서는 내 의도대로 상대방이 움직여줘야 한다. 이를 위해서는 대화의 기술이 필요하다. 원하는 것을 얻어낼 수 있는 대화 도구를 사용하여 상대방을 움직여야 한다. 개발에서도 명령을 내려 결과를 얻을 수 있는 도구가 있다. 대화 도구는 무형적이지만, 개발에서 도구는 유형적이다. 다시 말해 대놓고 명령할 수 있는 도구가 있다. 이를 콘솔(console)이라고 부른다. 콘솔을 이용하여 컴퓨터에서 원하는 결과를 얻을 수가 있다. 좀 더 쉽게 말해서 ps4, 닌텐도 스위치, xbox 게임기를 콘솔 게임기라고 부른다.
정리하면, 로그는 프로그램이 수행되는 것을 시간대별로 정리 기록하는 것이고, 디버그는 오류를 잡는 것이다. 터미널을 통해 컴퓨터에 접속하고, CLI라는 소통 가이드를 통해 컴퓨터 또는 프로그램과 소통한다. 콘솔이라는 장치를 통해 컴퓨터나 프로그램에 직접 명령할 수 있다. 개발자들이 자주 쓰는 콘솔은 크롬, 사파리 등 웹 브라우저의 개발자 모드에서의 콘솔이다.
** 터미널과 콘솔이 헷갈릴 수도 있다. 같은 의미로 봐도 무방하다.
'웹서비스' 카테고리의 다른 글
엑셀이 데이터베이스다. (0) | 2020.09.24 |
---|---|
설계가 개발의 반이다. (0) | 2020.09.06 |
프로그램 건축 (0) | 2020.08.26 |
프로젝트 개발 관리 (0) | 2020.08.05 |
품질을 높여주는 테스트 (0) | 2020.07.28 |