티스토리 뷰

에세이

지치는 것과 지키는 것

June 2018. 11. 1. 00:41

서울의 지하철은 어느 때나 붐비는 편이지만, 명절이 되면 상대적으로 한산해집니다. 어느 설날 오전의 지하철도 평소보다 빈자리가 많았습니다. 적당한 자리에 앉아서 인터넷 곳곳에 올라오는 명절 피해사례들을 읽고 있었는데 갑자기 핸드폰에 깔아 두었던 업무용 메신저가 울렸습니다. 휴일에 업무용 메신저가 울리는 것은 공포영화의 도입부에서 별로 비중 없던 캐릭터가 주변을 살펴보겠다며 혼자 나가는 것만큼이나 불길한 일이었기 때문에 저는 대범한 마음을 가지려고 노력하면서 메신저를 열고 메시지를 확인했습니다.

역시나 예상은 빗나가지 않았습니다. 메신저에는 운영 중인 서버가 다운되었다는 다급한 메시지가 가득했습니다. 바로 두통이 찾아오지는 않았지만, 두통이 찾아올 것 같다는 예감이 들었습니다. 저희 일에서 '운영'이라는 단어는 남다른 의미를 가지는데 실제로 세상에 오픈되어서 사용하는 사람이 있는 상태를 운영 상태라고 부릅니다. 그래서 운영 중인 서버는 보통 24시간, 365일 동작해야 하며 부득이하게 잠시 중단되어야 하는 경우 사전에 충분한 안내가 있어야 합니다. 사전 안내 없이 서비스가 중단되는 경우는 보통 사고라고 부릅니다.

웨이포인트를 찍어 두었던 동묘역까지는 아직 한참 남았지만 지하철에서 바로 내렸습니다. 그리고 눈앞에 보이는 가장 가까운 의자에 앉았습니다. 가방에서 노트북을 꺼내서 무릎 위에 올려놓고 다시 핸드폰을 손에 들었습니다. 메신저에는 그사이에 수십 개의 메시지가 쌓였는데, 상황을 파악하거나 사태를 해결하는 데 도움이 되는 메시지는 별로 없었습니다. 그저 이 상황이 몹시 위중하니 빨리 해결하라는 말들이 다양한 형태로 올라오고 있었습니다. 그래서 저는 디지털 네이티브 세대다운 빠른 속도로 핸드폰의 설정 앱에 들어가서 테더링 기능을 켜고 노트북의 와이파이를 핸드폰과 연결했습니다.

저의 손놀림과 다르게 살짝 느린 속도로 핸드폰과 연결된 노트북은 어쨌든 이제 세상 어디라도 갈 수 있는 상태가 되었습니다. 저희 고객들은 뉴질랜드에 있었지만, 다행히도 문제가 발생한 저희 서버는 서울 어딘가에 있었습니다. 저도 당시에는 서울에 있었지만 안타깝게도 운영 서버에 접속하기 위하여 우선 수원 쪽 서버에 접속해야 했습니다. 운영 서버에 접속하기 위한 원격 데스크탑 서버가 수원에 있었던 것입니다. 개인의 노트북에서 운영 서버에 바로 접속하면 안 된다는 규칙 때문이었는데, IT시스템은 가끔 이렇게 규칙을 위해서 효율성을 희생해야 할 때가 있었습니다.

노트북의 운영체제 위에 가상 데스크탑을 띄우고, 다시 거기에서 원격 데스크탑에 접속했습니다. 원격 데스크탑은 내 노트북의 입력을 수원 쪽 서버에 있는 운영체제에 전달해주고, 그 운영체제의 출력을 다시 제 노트북에 표시해주는 프로그램으로 그 출력이 그림의 형태로 전달되기 때문에 정보 유출 사고에 매우 강하다는 장점이 있지만 인터넷 회선의 속도에 따라 가끔 느리게 동작한다는 단점이 있습니다. 지금은 LTE를 통해 원격 데스크탑에 접속했으므로 원격 데스크탑은 메신저에서 울려 퍼지는 사안의 심각성에 비해 굉장히 느긋하게 동작했습니다. 저는 일상생활에서는 레이백 정도의 느낌으로 살짝 느긋한 사람이지만 일할 때는 살짝 박자를 빠르게 타는 성격을 가지고 있는데, 원격 데스크탑의 느릿느릿한 속도는 이미 일상을 벗어나 업무 모드로 변경된 저에게 참 괴롭게 다가왔습니다.

그냥 메신저 못 본 척하고 도서관에 가거나 집으로 돌아가서 좀 더 쾌적한 인터넷 환경에서 접속할까. 방향을 틀어서 회사에 출근할까. 아니면 근처에 와이파이 접속할 만한 곳이 있을지 찾아볼까 잠시 고민했었는데 아무래도 대화방에 '지금 뭐가 문제인 것 같고 고치는데 시간이 얼마나 걸릴 것 같습니다'라는 대답을 빨리해드리는 것이 좋을 것 같았습니다. 물론 고치는 데 오래 걸린다고 대답하면 분위기가 싸해지겠지만, 최소한 뭐라도 해봤다고 해야 좀 더 넓은 모니터와 좋은 키보드, 빠른 인터넷 환경에서 문제를 해결할 시간을 벌 수 있을 것 같았습니다.

그래서 메신저에 '제가 확인해보겠습니다'라는 말을 남기고 느릿한 원격 데스크탑에서 다시 운영 서버에 접속했습니다. 회사가 아니라 지하철역에서 접속하는 것이라 리스크가 많은 상황이었는데, 다행히도 운영 서버의 IP주소와 계정 비밀번호를 외우고 있어서 큰 문제없이 붙을 수 있었습니다. 회사였으면 20초가 안 걸렸을 서버 접속 과정을 5분에 걸쳐서 하고 있으려니 다소 조급한 기분이 들었습니다. 실제로 상황이 급할 때는 급한 마음을 가지지 않아야 차분하게 문제를 해결할 수 있을 거로 생각하고 있었는데, 막상 급한 상황이 되니까 마음이 마음대로 움직이지 않았습니다. 그래서 저는 제 마음이 마음의 길로 떠나는 것을 배웅하며 그동안의 혹독한 업무로 몸에 각인된 기계적인 명령어 루틴을 생각 없이 치기 시작했습니다. 너무 자주 쳐서 거의 외워버린 명령어를 타이핑하는 작업은 마치 척수 반사로 손이 움직이는 듯한 기분을 느끼게 해 주었습니다.

우선 운영 서버에 들어가서 가장 먼저 로그를 확인했습니다. 제가 가진 가장 큰 의문은 이거였습니다. 운영 서버는 예상치 못한 사고에 대비해서 같은 서버를 최소 종류별로 2개 이상 실행시켜둡니다. 하나가 죽더라도 다른 하나가 계속 동작하면서 시간을 벌어주도록 말입니다. 세간의 인식과 다르게 서버는 그렇게 쉽게 죽는 존재가 아니기 때문에 서버 2개에서 동시에 문제가 생길 확률은 생각보다 그렇게 높지 않습니다. 하지만 제가 확인한 로그에서는 서버 2개가 모두 비정상적인 동작을 하고 있었습니다. 예고되었던 두통이 살짝 찾아오는 느낌이었습니다.

그래도 보고는 해야 했기에 메신저에 짧게 현재 상황을 남겼습니다. '웹 서버 두 개 모두 애플리케이션 서버 쪽 로드밸런서를 찾지 못하고 있습니다. 원인은 모르겠습니다' 원인 찾기가 쉽지 않을 것 같다고 하고 싶었지만 그러지 않았습니다. 대신 스크롤을 올려서 언제부터 문제가 생겼는지 로그를 확인했습니다. 그리고 예상치 못한 내용을 확인했습니다. 적어도 23시간 전부터 서버에 문제가 있었던 것입니다. 23시간 전에 두 서버에서 동시에 문제가 발생하여 모두 기능을 상실했습니다. 그리고 저희 고객들은 사이트에 접속할 수 없었던 것이지요. 대화방에서는 1분 1초가 급한 것 같은 분위기가 가득했는데 이미 사이트가 다운된 지 23시간이나 되었다니 살짝 배신감 느끼는 기분이었습니다.

물론 문제를 해결하기 위해서는 원인을 파악해야 합니다. 하지만 저는 숙련된 엔지니어였기 때문에 원인 파악 없이 문제를 해결할 수도 있었습니다. 그래서 저는 물 흐르는 듯한 타이핑으로 2개 서버를 모두 재부팅한 뒤 살짝 떨리는 심정으로 로그를 주시했습니다. 이내 2개의 서버가 모두 정상적으로 애플리케이션 서버와 연결되어서 동작한다는 로그가 올라오기 시작했습니다. 그래서 운영 중인 웹 사이트에 접속하니 정상적으로 화면이 표시되었습니다. 혹시나 해서 테스트 계정으로 로그인하여 이리저리 눌러보니 별문제 없는 것 같았습니다. 대화방에 '문제 해결했습니다'라고 남기고 훌쩍 떠나면 멋있을 것 같다는 생각이 들어서 그렇게 했습니다. 지하철 벤치에서 노트북을 두드리고 있으려니 자존감이 많이 떨어졌었거든요. 뭐가 문제였냐는 말이 계속 올라오길래 '잘 모르겠습니다. 그냥 껐다 켰습니다'라고 이야기하고 들어오는 지하철을 타고 다시 공부하러 갔습니다.

명절임에도 도서관에는 공부하는 학생들이 많았습니다. 다들 열심히 사는구나 라고 생각했다가 그렇다면 나도 열심히 사는 게 아닌가 생각이 들어서 살짝 뿌듯한 기분이 들었습니다. 자리를 잡고 회사 일과는 별 상관이 없는 공부를 하고 있었는데 메신저에 알림이 많이 떠 있었습니다. 그래서 들어가 보니 장애 보고를 몇 시간 내에 해야 하니 원인을 좀 찾아서 알려달라는 말이 계속 올라오고 있었습니다. 슬슬 아파지기 시작하는 머리를 꾹꾹 누르면서 다시 한번 운영 서버에 접속했습니다.

쾌적한 인터넷 환경에서 접속한 덕분에 그래도 원하는 것들을 빠르게 찾을 수 있었습니다. 로그가 가리키고 있는 현상은 분명했습니다. 두 개의 웹 서버가 두 개의 애플리케이션 서버와 서로서로 연결하기 위해 저희는 하나의 로드밸런서를 사이에 두어서 중매쟁이 역할을 수행하도록 하였는데, 웹 서버도 애플리케이션 서버도 별다른 문제가 없었지만 웹 서버는 로드밸런서를 갑자기 찾지 못하기 시작했고, 그래서 애플리케이션 서버와 연결되지 못했습니다. 제 머리를 아프게 한 것은 웹 서버와 애플리케이션 서버는 모두 제가 관리하고 있었던 것이었지만 로드밸런서는 신청해서 사용하고 있었던 것이기에 거기에 무슨 일이 있었는지 로그를 확인하기 어려웠다는 것입니다.

그래서 웹 서버의 로그를 유심히 살펴보고 여러 메시지를 검색해본 결과 대강의 상황을 정리할 수는 있었습니다. 로드밸런서는 가끔 IP주소를 바꾸고 바뀐 주소를 DNS에 등록해주는데 안타깝게도 저희 웹 서버는 좋은 성능을 위해서 한 번 받아온 IP주소를 캐시 해둔 뒤 다시 DNS 서버를 호출하지 않았던 것입니다. 로드밸런서는 두 개의 IP를 가지고 있었는데, 정말 드물게도 두 개의 IP주소를 모두 변경했고 - 아마도 명절이라서 무슨 작업 같은 것이 있었나 봅니다 - 저희 웹 서버는 애플리케이션 서버로 찾아가기 위한 길을 잃어버렸습니다. 그리고 제가 그 웹 서버를 재기동시켜서 구원의 손길을 내려주자 웹 서버는 새로운 IP주소를 받아와서 정상적으로 동작하게 된 것입니다. 물론 저는 공학 분야에 오래 종사한 덕에 '문제가 생기고 잘 모르겠으면 일단 껐다 켜라'라는 진리를 믿고 있었고 본능적으로 서버를 껐다 켠 것이었지만 결과적으로는 그것이 올바른 조치가 되었습니다.

이런 요지로 상황을 보고하자 이내 '그러면 로드밸런서 IP가 또 바뀌면 서버가 다운되는 것 아니냐'라는 말이 나오기 시작했습니다. '예, 또 두 개의 IP가 동시에 바뀌면 한 번에 서비스가 중단될 수 있습니다'라고 정직하게 대답하자 그러면 안 된다고 방법을 찾아보라는 것입니다. 여러 가지 방법은 있겠지만 휴일에 할 만한 방법은 아니었기에 '지금은 확실한 해결책을 찾기 어렵습니다'라고 대답하자 잠시 대화방 분위기가 안 좋아졌습니다. 그래서 결국 저는 '명절 연휴 내내 제가 노트북을 항상 들고 다닐 테니 사이트 다운되면 전화 주세요'라고 대답할 수밖에 없었습니다.

실제로 저는 잘 때도 노트북을 옆에 두고 잤지만, 다행히도 서버가 다시 다운되는 일은 없었습니다. 명절이 끝난 뒤 다른 부서들의 협조를 받아서 문제 상황을 확실하게 파악하고, 해결 방법을 찾아내었습니다. 물론 서비스의 예고 없는 중단이라는 안 좋은 상황이 있기는 했지만 어쨌든 이런 경험이 있었기에 저희는 새로운 지식을 얻게 되었고 서버를 조금 더 안정적으로 운영할 수 있게 되었습니다.

이게 모두가 만족할 수 있는 아름다운 결말일까요?

대충 일이 수습되고 나서 조용히 따지듯이 여쭤보았습니다. 그러니까 조곤조곤 이야기하고 싶었다는 이야기고, 실제로는 그러지 못했다는 말입니다. 우리가 이렇게 일하는 것이 맞나요? 언제나 마음 졸이면서, 평일 밤이건 주말이건 노트북을 항상 가지고 다니면서, 핸드폰 데이터 다 안 쓰게 조심하면서, 이슈라도 터지면 죄인이 된 기분으로, 그렇게 사는 것이 맞나요? 그렇다면 저는 몇 달도 못 버틸 것 같은데요.

저는 얌전한 성격이었기에 평소에 이런 말을 해본 적이 없었고, 그래서인지 말이 매끄럽게 나오지 않아서 속상했습니다. 하지만 저는 좋게 좋게 저를 달래고 아무 일도 없었던 것처럼 끝나는 것이 무서웠습니다. 다행히도 저는 이럴 때는 다소 강하고 버릇없게 말하는 것이 효과적이라는 이론을 가지고 있었습니다. 그리고 한 시간 뒤, 제 버릇없이론은 귀납적으로 증명되지 않고 귀류적으로 증명되었습니다. 그러니까 버릇없이 행동하면 상황을 더 악화시키기만 한다는 사실을 증명한 것이지요.

자리로 돌아오자 어마어마한 두통이 저에게 찾아왔습니다. 다행히도 책상 한쪽에 진통제가 굴러다니고 있었습니다. 성인 기준 두 알을 물 없이 삼키고 나서 목에 뭐가 걸린 듯한 기분을 참으며 지끈거리는 머리로 생각을 조금 해봤습니다. 다른 사람들의 인생에 도움이 되는 일을 하는 것은 정말 기분 좋은 일이 맞죠. 자아와 타아를 모두 충족시켜주는 일이잖아요. 그러기 위해서 어느 정도 희생하는 것도 기분 좋게 감수할 수 있는 일이지요. 잃는 것보다 얻는 것이 크다면요.

우리는 누군가에게 상처를 주면서까지 이루어내야 할 만큼 대단한 일을 하고 있지 않아요. 세상을 더 좋게 만드는 것이요? 누군가를 살려내는 일이요? 우리가 그렇게 대단한 일을 하고 있는 것이라면 누가 좀 너네 대단한 일 하고 있다고 이야기해 줬으면 좋았을 텐데 저희가 들은 말은 너네 사람이 너무 많으니 좀 줄이라는 말밖에 없었네요. 그러니까 일 하는 사람들은 그 대단치도 않은 일 때문에 상처 받는 일이 없어야 하는 거예요. 그러기 위해서 제가 할 수 있는 일이 몇 가지 있었죠. 이번 달 월급으로 더 가벼운 노트북을 사고, 다음 달에는 무제한 데이터 요금제로 바꾸면 되는 거죠. 술은 서버 주소와 비밀번호를 잊어버리지 않을 정도로만 마시고, 항상 업무용 메신저와 오는 전화를 놓치지 않게 긴장하고 있으면 됩니다. 불면증과 싸우다가 만신창이가 된 상태로 간신히 잠든 지 30분 뒤라고 해도요.

이렇게 생각하면 마음이 조금 편해질까요?

머릿속은 두통과 후회, 미안함과 화남이 섞여서 아주 난장판이었습니다. 그렇게 한참을 있다가 약효가 들었는지 어느 순간부터 차분해질 수 있었습니다. 그래서 차분하게 생각했습니다. 맞아. 누구도 상처 받는 일은 없어야 한다고. 그리고 거기엔 나도 포함된다고. 이번처럼 힘 빠지는 일이야 회사에서 항상 있는 일이지만, 지난 일 년간 힘내는 법을 모르고 살았으니 결국 방전되는 순간이 왔다고. 거기에 메모리 효과가 발생해서 이전의 에너지 레벨을 찾기 어려워진 것이라고. 논리적으로 개연성 있는 설명을 찾아내서 저는 무척 만족스러웠어요. 역시 갑작스럽게 찾아온 두통에는 흡수가 빠른 연질형 캡슐로 된 진통제를 먹은 것이 정답이었다고 생각하며 차분하게 마음의 결정을 내리고 다음 행동을 할 수 있었습니다.

한 달 뒤, 저는 만나는 사람들에게 '저 부서 옮겼어요'라는 근황을 이야기할 수 있게 되었습니다. 그럴 때 지친 표정이나 목소리로 말하지 않으려고 무지 애썼습니다. 제가 생각하기에 아직 세상에는 옳고 바른 것들과 소중한 것들이 조금 남아있었는데 제가 먼저 지쳐버리면 그것들을 지킬 수 없을 테니까요.

'에세이' 카테고리의 다른 글

non-breaking space  (0) 2018.11.24
Everybody hates me  (0) 2018.11.07
자율출-퇴-근제  (0) 2018.10.22
그림자와 그늘의 차이에 대해  (2) 2018.10.09
Artificial Insomnia  (0) 2018.09.24
댓글