호스팅에서 쫓겨났다

국내 한 대학 교양 과목의 작은 프로젝트를 진행하고 있다.

연구팀에서 원하는 내용을 구현해주는 작은 일이다.

개발과 함께 호스팅 관련 문제를 담당하게 되었다.

연구 연차가 3년 차에 접어들면서 총 3번의 서버 이동을 했다.

바로 직전에 CMS 만드는 회사의 호스팅을 사용했다.

어느 회사인지 밝힐 필요가 없는 게 그 회사 입장으로서는 그럴 수 밖에 없는 결정이라고 생각된다.

거쳐온 서버

이 프로젝트가 연구 재단에 소속되기 전에는 학교 서버에 올라가 있었다.

첫 번째 서버: 학교 서버

도메인 이름도 연결되어 있지 않고, IP 주소로 웹사이트가 돌아가고 있는 상황이었다.

연구를 주도하는 교수가 전 대 총장의 허락을 얻어 마련한 공간

이 프로젝트가 연구 재단을 통해 진행되기 시작하면서 도메인도 연결했다.

그리고 학생들이 사용하는 페이지를 새로 만들게 되었다.

그런데 이전에 돌아가던 페이지보다 약간의 기능이 더해지는 것이 서버 접속에 문제를 만들게 되었다.1

학교가 전산 관련 학과가 없고, 담당자도 전 담당자부터 있었던 서버라 돌아가게 두었지만, 관리를 하는 서버는 아니었던 모양이었다.

프로젝트가 진행되고 접속하는 학생 수가 많아졌다. 이 서버에서 웹사이트를 운영하는 것이 어렵게 되었다.

담당 교수는 프로젝트 진행으로 외부의 접근 통제를 요구했다. 그래서 워드프레스를 이용하게 되었는데 속도 문제가 생겼다.

그래서 다른 서버를 찾게 되었다.

두 번째 서버: 라이트 세일

서버를 찾으면서 AWS에서 라이트 세일이 출시되었다는 사실을 알게 되었다.

월 정액 요금이 국내 다른 서버보다 낮지만 기본 요금제보다 사용량이 많아지면 과금하는 방식이었다.

처음 설정한 서버 사양에서 제공하는 기본 사용량보다 많이 사용할 가능성이 없었기에 해당 요금만 내면 되는 상황이라고 판단하였다.

학교 서버에 있는 자료를 백업하고 AWS에 설정을 시작했다.

원 서버는 윈도우 서버였지만 윈도우 서버보다는 리눅스 서버가 더 익숙했기에 우분투 16.04 인스턴스를 생성했다.

처음 프로젝트를 시작한 것이 10월이었고, 몇 개월 동안 새로운 형식의 페이지를 만들어 이제 학기가 시작되면서 새 형식의 페이지로 서비스를 시작하게 되었다.

교양 과목이고 필수였기에 200명 가까운 학생이 이용하였다.

그 중 한 수업에서 70명이 동시 접속을 하니 서버가 다운되는 현상이 일어났다.

결국 평소에 사용하는데 필요 없는 사양까지 올리게 되었다.2

글을 쓰는 시점에 제공되고 있는 사양

세 번째 서버: 국내 호스팅

프로젝트 진행에 제안 관련 내용을 담기 위해 별도의 CMS를 이용하게 되었다. 이미 있는 서비스도 있었지만, 프로젝트에 참여하는 교수진이 이 서비스에 익숙하지 않았고, 이미 익숙한 서비스와 유사하게 이용할 수 있는 환경이 필요했기에 별도의 시스템을 구성할 수 밖에 없었다.

그런데 이 CMS 시스템을 이용해 관련 내용을 진행하는데, 문제가 생겼다.

업데이트가 제대로 진행되지 않는 문제인데, 업데이트만 안 되면 상관 없지만 업데이트 실패 후에 모든 페이지 접근에 오류가 생겨 학생도 접근할 수 없게 되었다.

그래서 해법을 고민하다가 CMS 만드는 회사에서 운영하는 호스팅 서비스를 이용하게 되었다.

다행히 해당 회사에서 제공하는 호스팅이 더 저렴하였고, 사양이 더 좋았다.

진행되는 프로젝트의 서비스를 이용하는 학생이 많았지만, 서비스 되는 페이지가 사용량을 많이 차지하지 않아 기본 제공량으로도 문제가 없었다.

내가 해커?

호스팅이 자꾸 죽었다

1년 요금을 미리 결제하고 사용하던 3번 째 달부터 호스팅 회사의 서비스에 문제가 생겼다.

주말 새벽에 서버가 다운된 것이다. 정확하게는 서버 접속에는 문제가 없었지만, 데이터베이스 서비스(MySQL)가 죽은 것이었다.

그 때부터 해당 회사의 문의 게시판에는 ‘서버가 느려졌다’, ‘접속이 잘 안 된다’는 등의 문의가 이어졌다.

해당 회사 담당자가 나름 빠르게 처리하려는 노력이 보였고, 이를 방지하기 위해 시스템을 보강하겠다는 공지와 함께 서버 사양을 올리는 작업이 있을 것이라는 공지가 올라왔다.

해킹의 증거

작업이 진행되고 있을 즈음 호스팅 회사에서 이메일이 왔다.

서버 장비 교체 작업 중에 사용하고 있는 계정으로 자원을 갉아먹는 서비스가 지속적으로 실행되고 있고, 이로 인해 서버 운영이 어려운 상황이 발생하고 있다는 것이다.3

그래서 이 프로그램을 실행하느냐는 것이었는데 아니라고 대답하였다.

프로젝트는 PHP로 처리되고 그 처리 내용도 문자열 처리하는 것이 전부였기에 그렇게 의심할 만한 프로그램도 아니었다. 이런 프로그램이 호스팅 서비스를 진행하기 어렵게 만들 리도 없지 않은가?

이런 내용의 이메일이 오가는 중에 회사의 대표를 통해 호스팅을 이용하는 단계부터 문의와 답변을 주고 받았으니 의심하는 것은 아니지만, 회사의 기술 부장이 해킹하려는 시도로 보이는 증거를 가지고 있다는 이상한 이메일을 받게 되었다.4

그러면서 호스팅을 이용하는 다른 회사에 피해가 계속 발생하니 환불을 해줄 테니 다른 서버로 이전해 달라는 요청을 받았다.

그래도 이전해 주세요

프로젝트 담당 연구진은 학기 말이라 학생이 시험을 마치는 2주 정도를 기다려 줄 것을 요청해 달라고 하였고, 이를 회사 측에 요청하였으나 답변은 이전과 같았다.5

다시 라이트 세일

그렇게 다시 라이트 세일로 돌아가게 되었다.

그런데 이상한 것은 다시 돌아온 서버에서는 국내 호스팅 회사에서 말하는 채굴 프로그램으로 보이는 활동이 없다는 것이다.

서버를 옮긴 뒤로 국내 호스팅 회사에서 발생한 일이 일어나지 않을 수 있는 방법을 모색하며 방화벽을 더 강화하고, 접근 IP를 주로 작업하는 PC의 IP로 제한하여 둔 것이 같은 일이 일어나지 않게 된 이유일 수도 있다.

아쉬움

하지만 아쉬운 것은 다시 라이트 세일로 이전하기 전에 국내 호스팅 회사에서 같은 조치를 취하고 해당 회사에서 공격이 멈추었다는 사실을 확인했음에도 계속 서버 이전을 요청했다는 사실이다.6

호스팅 회사는 호스팅 서비스가 주력인 회사가 아니었고, CMS 서비스를 주력으로 호스팅을 제공하는 회사라는 점이 호스팅에서 쫓겨나게 한 원인이 된 것이라는 결론에 이르게 한다.

서비스 개발 만으로 회사가 어렵사리 운영되고 있는 상황이니 별 문제가 없을 것으로 생각하고 진행하는 호스팅 서비스에서 문제가 생기는 상황은 회사 입장에서는 난감한 상황이었을 것이다.

이런 회사의 상황을 이해하고 서버를 이전하여 다른 이용자에게 어려움을 주지 않아야 한다는 이성적인 판단과는 별개로 아쉬움이 남는 것을 인간이기에 어쩔 수 없는 모양이다.

  1. 그 만큼 서버 환경이 좋지 않았다.[]
  2. 처음에는 첫 달 무료 혜택이 있는 $3.5짜리 사양(512MB, 1vCPU, 20GB SSD)으로 시작했는데, 동접자 문제로 서버가 다운되지 않는 사양으로 하나씩 올리다보니 $20짜리 사양(4Gb, 2vCPU, 80GB SSD)으로 올리게 되었다.학생들이 한 달 동안 사용하는 전송 용량은 1Gb도 안 된다.[]
  3. 서버 CPU 16개를 점유하는 서비스이고 담당자의 말로는 채굴 프로그램이 아닌가 싶다고 했다[]
  4. 주어가 생략되어 있어서 해킹 시도를 한 것이 당신이라는 뉘앙스로도 이해할 수 있는 문장이었다.[]
  5. 개인적인 생각으로도 프로젝트 진행에 차질이 있더라도 서버를 옮기는 것이 호스팅을 이용하는 다른 회사에 주는 피해를 최소화하는 것이라 생각했다. 하지만 서버 이동하는 중 큰 피해는 없었다.[]
  6. 이 부분이 제일 마음에 걸린다. 마치 내가 해커가 아니냐고 의심 받는 듯한 기분이다[]

20년 전에 배운 지식을 가지고 프로그래밍을 할 때

20년 전

20년 전에 고등학교 3학년이 되면서, 웹디자인 회사에 취업했다.

다행인진 불행인지 작은 회사였고, 먼저 있던 직원이 이직을 위해 사람을 구하는 것이어서 크게 뛰어난 실력이 아니었음에도 채용이 되었다. 가능성을 보고 뽑은 것이라고 생각하고는 기쁜 마음으로 출근했더랬다.

그 당시에는 웹 디자인과 웹 프로그래밍이 지금처럼 확실하게 구분이 되었던 분위기는 아니었던 것인지 그저 작은 회사였기에 그런 것이었는지 혼자서 디자인과 개발 업무를 다 했다. 그래봤자 웹 디자인이 전문인 회사가 아니었고 중소기업 소개 홈페이지 만드는 정도였으니 프로그래밍이라고까지 할 것이 없었다. 그저 기본적인 메뉴 동작에 필요한 자바스크립트만 작성하면 되는 정도였다.

졸업한 고등학교는 정보산업고등학교였는데, 당시로서는 시범학교로 개발에 대한 기본적인 지식을 얻고, 실습을 할 수 있는 환경이 뒷받침되었다. 게다가 개인적으로 프로그래밍에 관심이 있어서 이것 저것 언어들을 공부하고 실습해볼 수 있는 시간들을 보내었기에 채용된 회사에서 필요한 정도의 프로그래밍을 할 수 있었다.

취업된 회사에서 같이 근무하던 과장님이 창업하신다고 하셔서 그 회사에서 일을 시작했다가 1년 정도 뒤에 그만두게 되었다. 진로가 완전히 바뀌어서 전혀 다른 분야로 대학을 하고 공부를 하고 그렇게 20년 가까운 시간이 흘렀다.

작은 프로젝트

작년 말부터 프로젝트 하나를 맡게 됐다. 개인적 필요에 의해 어떤 언어를 배우려고 하는데, 강의하시는 선생님과 얘기를 하다가 해당 언어를 학습할 수 있는 사이트를 만들었으면 좋겠다는 얘기를 듣게 되었다. 사실은 그 선생님과 연결해 준 사람이 전에 웹 디자인 경력이 있다는 사실을 말한 것이었는데, 사전에 개인 업무에 크게 지장이 없는 선에서 해 드릴 수 있다고 했다.

개발하려는 웹사이트는 이미 그 선생님이 소속된 기관 서버에서 돌아가고 있었는데, HTML과 JS로 구성된 사이트였다. 하지만 기관 서버에 문제가 생기고 사이트가 정상적으로 돌아가지 않게 되어서 사실상 페이지를 새로 만들어야 하는 상황이 되었다. 그런 상황이 되니 공부를 다시 시작해야 하나 싶은 생각이 들어 검색을 해 보았는데, 생각보다 어렵지 않을 것이라는 생각이 들었다.

부트스트랩1을 이용하면 이전 사이트 수준 정도로는 금새 만들 수 있을 것이라는 생각이 들었고, 선생님께 제안하고 시간이 나는대로 필요한만큼 만들고 있다.

20년의 세월이 아무것도 아닌 것처럼 생각보다 많은 것들이 기억났다. 설명이 잘 되어 있는 페이지가 구성되어 있고, 또 필요한 기능이 그렇게 복잡하지 않기에 가능한 것일지도 모른다.

의지

사이트 제작을 의뢰하신 선생님께서 일을 조금 더 크게 확장하고 싶어하셔서 프로젝트 팀을 구성하였다. 선생님과 같이 가르치시는 선생님 몇 분과 선생님께 배운 학생 몇이 팀에 합류하였다.

각자의 영역을 나누고 일을 분배하는데 개발팀에 포함된 사람이 나 말고 하나 더 배정되었다. 이 사람은 대학에서 컴퓨터 공학을 전공했다고 한다. 그래서 개발팀에 소속되게 되었다.

처음 이 사람이 컴공과2를 나왔다고 했을 때, 궁금증은 이것이었다.

이 사람은 불가능한가?

그 당시의 컴공과에서는 고등학교에서 배우는 것보다 더 체계적인 교육을 받지 않았을까? 그래서 물어보았다.

“컴공과였으면 프로그래밍 가능하지 않아요?”라는 질문에 그는 “오랫 동안 하지 않아서”와 “그 때에도 그렇게 열심히 공부하지 않았다”였다. 이 사람도 해당 분야에서 계속 공부하지 않고, 지금은 전혀 다른 분야에서 공부하고 있었기에 그러려니 하고 넘겼으나, 지금 이 글을 쓰면서 드는 생각은 ‘정말일까?’

가끔 조카들과 놀아주는데, 둘째 녀석이 아직 어려서인지 들고 흔들고 데롱 데롱 매달려 흔들리는 것을 좋아한다. 여러 가지 일로 몸이 곤하면 피곤하다고는 하지만 놀아달라는 녀석의 눈길을 무시할 수 없어 앉아서라도 다리에 올려두고 흔들흔들해주고는 한다.

어제인가 조카에게 ‘아빠는 이런거 안 해주니?’라고 물었더니 ‘아빠는 허리가 아플까봐 안 된데요’란다. 그래서 나보다 10살 많으니 그런가보다 해서 ‘아빠는 나보다 10살 많아서 그래’라고 답변했더니 동생은 피식 웃으면서 ‘그 사람은 오빠 나이 때도 똑같은 소리 했어’였다.

체격이 좋지 않은 것도 아닌데, 왜 그럴까 생각해보면 간단하다. 원래 허리 병이 있는 것도 아니고3 아프다고 한 것도 본 적이 없다. 그런데도 허리가 아플까봐라고 아이와 놀아주지 않는 것은 그저 아이와 놀아줄 의지가 없는 것이 아닐까?

정말로 허리에 지병이 있거나 문제가 있어서라면 미안할 일이 겠지만 지금까지 상황으로 봐서는 그리 미안할 일이 아니다.

적지 않은 시간의 경력 단절이 있다면 두려움이 있을 것이고 도전한다고 해도 그만큼의 노력이 필요할 것이기에 힘이 드는 건 이해한다. 하지만 그럴 의지조차 가지지 않는다면 할 수 있는 일도 못하는게 아닐까? 피곤하고 힘이 들어도 아이와 놀아줄 의지가 있다면 그 나름대로의 방법을 찾지 않을까?

이 글을 읽고 있는 당신은 어떤가?

  1. 다른 프레임워크도 많지만 개인적으로 개념이 가장 와 닿는 것이 부트스트랩이었다[]
  2. 컴퓨터공학과의 줄임말[]
  3. 내가 알기로도 그렇고 동생이 결혼하기 전에도 후에도 그런 적이 있었다는 얘기를 들은적도 없었다[]

작은 프로젝트

졸업한 고등학교는 정보산업고등학교였고, 당시 나는 학교에서 배운 것 이상의 것들을 공부하고 싶어했다. 그렇게 공부했던 분야는 웹디자인이었다. 디자인적인 감각은 없었지만 조금의 가능성을 본 것인지 당장 인력이 급해서인지 크지 않은 회사에 들어가 약간의 경력을 쌓을 기회를 얻었다. 그것이 그 이후로 지금까지 회사에서의 경력 전부이다.

당시의 웹디자인은 개발과 디자인을 모두 아우르는 영역이었다. 따로 세분화되지 않은 영역이었다. 물론 당시에도 프로그래머와 웹디자이너는 다른 직군이었다. 그럼에도 불구하고 당시 속해 있던 회사는 지금의 스타트업에서와 같이 그닥 구분되어 있지 않았다. 아니 조금더 상세하게 말하면 영역의 구분이 없다고 하기보다 더 많은 부분까지 개인이 맡아야 했다는 것이 정확할 것이다. 실제로 스타트업에서는 어떤 지 알 수 없으니 상상에 의한 평가라도 해도 무방하다.

하지만 개인적으로는 그 때와 지금은 다소 차이를 가지는데, 그 당시에는 디자인에 더 치우쳐저 있어서 프로그래밍 영역은 사실 크게 기술적이라고 할 수 없었다. 학교에서 배운 지식을 가지고는 크게 응용할 수 없었다. 개인적으로 프로그램에 대한 이해도가 높지 않았던 탓으로 여겨진다.

지금은 그 때에 비해 디자인적인 부분보다는 프로그래밍에 치우쳐져 있는 것이 확실해 보인다. 그 때나 지금이나 크게 차이가 없는 것으로 보일 만큼 그 정도가 미미하다. 하지만 지금은 기술적으로 적지 않은 발전이 있어서 어떤 기능을 구현하는데 드는 노력이 조금 덜하다. 다시 말해 조금의 노력을 기울이면 15년 전에는 생각할 수도 없었던 부분에까지 구현이 된다는 점이다.

실제로 개인적으로 맡은 프로젝트가 있어서 검색을 하고, 구현하기 위한 문법을 배우는데는 많은 시간이 필요하지 않았다. 그렇게 시작한 프로젝트는 지금도 지속하고 있다. 언젠가 끝날 일이지만, 본업에 영향이 가지 않을 정도의 일이기에 가능한 것이다.

말 그대로 작은 프로젝트를 맡고 관심을 가지고 있던 부분을 실제로 진행하고 있다는 것은 뭐랄까 꿈의 실현 영역이라기 보다 기회를 얻은 소소한 기쁨의 영역이다. 작은 프로젝트를 통해 얻는 작은 기쁨! 정도가 이 글의 결론이 아닐까 싶다.