GRE 학원이 끝난 김에, 한 하루정도는 뭔가 개발적인 것을 하고 싶었다. 물론 그동안 개발을 안한 것은 아닌데 뭔가 그동안 개인적으로 너무나도 하고싶었던 작업을 딱 하나 골라서 작업해보기로 했는데, 작년부터 계속 생각하던 윈도우 서버의 리눅스화였다.
사실 나는 NT 4.0부터 윈도우와 함꼐 해왔었다. IIS 4부터 썼으니 정말 친숙하긴 하다. 그다지 ASP.NET과 친하진 않지만 자의반 타의반으로 ASP.NET을 다뤄왔었고, 한 5년전까지는 C#을 했었으니깐. 그러다 정말 어쩌다 보니 자바개발자로 전향하던 5년전, 스프링 2.0이 한창 유행했을 시절 자바개발자가 된것까진 좋았으나 문제는 서버의 구조.
더 거슬러 올라가 내가 첫 자바 프로젝트를 했던 2006년에는 JSP와 빈즈로 구성된 모델 1.0정도의 작품을 유지보수 했었는데, IBM xseries 360 서버에 윈도 2000 + Apache + Tomcat + MySQL 3 정도로 구성되었던 기억이 난다. 이를 기반으로 역시 2009년에 스프링으로 작업할 때에도 서버가 윈도 2003 R2 + Resin(혹은 톰켓+아파치) +Oracle 이었다. 정말 이상하게도 이런 기반으로 계속 작업을 해왔었는데 윈도우 기반에 아파치+톰켓을 올려 작업을 한 프로젝트가 족히 15개 정도는 되는 것 같다.
어쨌든, 뭐 스스로 이해하기로는 톰켓이 서블릿이나 자바단을 처리, 아파치(정확히는 Apache HTTP Server)가 다른 리소스(HTML, 이미지, CSS, JS등)를 처리한다는 정도로 이해를 하고 넘어갔었는데, 차츰 이해가 가지 않는 부분은 왜 굳이 윈도의 강력한 IIS를 놔두고 따로 WAS를 깔아다가 돌리는지, 것도 왜 꼭 윈도우야 하는지 그부분이 이해가 가지 않았다.
한번은 WebSphere + AIX 로 된 서버를 만질 기회가 있었는데 거기도 역시 AIX가 설치되어 있었다. 음.. 아무리 생각해도 이건 우리나라 SI에서 견적 뻥튀기를 위해 괜시리 비싼 OS나 WAS를 사용한 것이 아닐까 싶기도 하다. 혹은 돈주고 OS를 사서 IBM이나 MS, 레드햇 등에게 유지지원을 받고 그 대가로 서버 안정성에 대한 책임을 떠넘기는 정도가 아닐까. (가끔 제대로된 SM체계에서는 IBM등에서 기술자가 수시로 와서 보안 SW를 업데이트 해주고 점검해주는 등을 해줬다.) 하지만 금융권이나 의료권 이외에 그렇게 크게 해주는데를 본 적이 없었다.
어쨌든, 내 불만은 좌우간 나한테 있다. 지금은 혼자서 유지보수를 하는데 굳이 옛날 방식을 익숙하다는 이유로 고수해야 하는 것일까, 어차피 내년에 외국으로 나간다면 AWS등의 IaaS로 서비스를 옮겨서 SM를 해야할텐데, 그렇다면 윈도우보다는 리눅스가 낫지 않을까.. 뭐 사실 속도도 불만족스러웠고, 해서 이참에 옮기기로 결심했다.
그래서 모두 까발랐다. 일단 백업을 해야하니깐.. 솔직히 서버관리자 입장에서 위의 사진만큼 무책임한 것이 어딨겠나 싶겠지만, 일단 새벽에 작업했으니 양해를 (…) 그리고 일반 PC처럼 보이지만 나름 사양은 괜찮게 세팅해 둔 것이다. 중소규모의 회사에서 뭐 저정도면 엄청난 급이지.. 라고 개인적으로 생각한다. 냉각쿨러나 180mm 펜도 여러군대 설치해뒀고 왼쪽에 보이는 서버랙에서 통풍도 활발히 되고 있고 UPS까지 있다.
위는 WAS에 들어가는 SSD와 HDD. SSD는 SW용도, 하드는 보통 웹 루트로 사용된다. 원래 하나 더 있어서 RAID2로 구성해 뒀는데 하나가 망가져서..(레이드로 하길 잘했지..;) 수리중이다.
위는 WAS서버의 내부. 12GB램에 모두 방열팬을 장착하고, 잘만 수냉 쿨러를 입혔다. 근데 잘만 냉각쿨러, 쉽게 신뢰가 안간다. 사실 아래서 볼 DB서버에도 수냉 쿨러를 입혔다가 제작년에 계속 꺼지는 초유의 사태가 발생해서 DB서버는 공냉으로 바꿨다. 보드는 RAMPAGE 3을 사용하는데, 지금보니 5까지 나왔네.. 아마 올해 내로 RAMPAGE 5+32GB+Xeon으로 가던지 할 것 같다. 일단은 위의 사양대로도 솔직히 뭐 남아돈다.
위는 DB서버의 모습. 그냥 뭐 평범하다. 굳이 사양에 치중하지 않았다.
다만 DB서버는 벨로시 랩터를 달아놨다. 근데 지금보니 랩터 엄청싸졌네.. 이때만 해도 이거 150GB인데도 50만원인가 주고 샀는데 말이다.
슉 떼내어다가 백업해주고..
저렇게 맥북으로 데이터 백업을 진행해줬다. 전체 사용하는 용량 해봤자 300GB정도밖에 되지 않았다.
이어서 뒤에있는 두대의 PC또한 백업을 진행해주고.. 참고로 한대는 Repository 및 CI용 서버, 한대는 일단 테스트 서버로 구현해 둔 것이다. 사실 리눅스를 설치하는 이유는 오픈스택을 설치해서 클라우드 환경으로 만들고 싶어서라는 목적도 있었다. 처음에는 Windows 2012 R2가 나왔다길래 이놈도 심히 고려를 해봤는데, ASP.NET개발에는 엄청나게 효과적이겠지만 이외에는 크게 뭐 달라지는 것은 없다..
그렇게 OS를 깔고, SSH열고 APACHE를 설치하고 DB서버에는 MySQL와 마리나 DB를 깔았다. 그런데 Cent OS에 yum으로 깔리는 아파치와 톰켓이 잘 물리지 않아서 TOMCAT을 물리려다가 최근 관심있는 vert.x 를 설치해 보려고 일단 보류중이다.
그나저나, 앞으로는 지금의 서버에서 어떻게 하면 성능을 보다 더 최고조로 높힐 수 있을지에 대해서 연구해 봐야겠다. 솔직히 지금까지는 서버의 큰 그림만 그려왔지, 세부적인 부분은 보지 않았다. 그런데 학교 수업을 들으며 운영체제와 Computer Architecture를 알아가며 뭔가 내가 지금 돌리고 있는 서버를 아무리 8코어니 램 12기가니 SSD니 랩터니 이렇게 한들 실제로는 이러한 부분을 제대로 활용하지 못하고 있다고 생각했다.
결국 위와 같은 부분이 전문가의 눈으로 보기에는 애들 장난처럼 보일지 모르겠지만, 서버단 프로그래머이면서 서버전문가는 아닌(이렇게 말하니 참 아이러니 하다.) 내게는 이런 소호 서버 혹은 내가 스스로 만든 서버조차 이해하지 못하면서 AWS등의 클라우드로 간다는 자체가 뭔가 이상했다. 그렇다고 PaaS는 편할 것 같긴 하지만 플렛폼에 묵여있는게 썩 마음에 들지는 않고..
좌우간 아직도 참 이세상엔 공부할께 많다. 어린시절, APM만 깔면 세상이 모두 내것인줄만 알았던 때가 어떻게 보면 그립기까지 하다. 더 공부하고, 발전해 나가야지. 라는 생각을 하며, 이번 삽질은 여기까지로 마무리한다.