윈도우 서버에서 리눅스 서버로의 감상

나는 리눅스 서버가 익숙치 않다.

국내에서의 교육용 내지는 서버 OS로 윈도우 서버를 많이 선택해온 실정도 있었던 터라, 익숙해 질 계기가 부족했던 것도 사실이지만 그렇다고 해도, 내 개인적인 탐구심과 노력이 리눅스가 익숙해지기 까지의 과정에 도달하지 못했던 것도 인정한다.

물론 리눅스로 서버를 운용해본적도 있으며, 가상 머신 내지는 서브 OS 로도 여러번 사용해왔지만, 메인 OS로 사용할만큼, 그리고 업무에 적극 사용할만큼 익숙하지 못했던 건 반성해야 될 부분이라고 생각한다.

윈도우 서버를 개발 해올 때에도, 여러가지 작업을 쉘 기반으로 이전해오며 리눅스처럼 사용하려 노력은 했지만, 막상 리눅스로 서버를 운용할 자신이 쉽게 생기진 않았다.

그러던 중, 이전까지의 메인 서버 언어였던 C++을 대신해, ruby on rails를 이용해 개발하다보니, 어쩔 수 없이 (윈도우 머신에서의 최적화는 무한도전에 가까울 만큼 동작하지 않는 gem이 많다. 딱 개발머신으로써만 사용해야 되는 수준) 리눅스 적응 프로젝트에 돌입했다.

앞에 글에서도 언급했듯 선정한 서버는 cent os다.

리눅스 자체가 오픈소스 정책 기반이다보니 forking 되어 여러가지 OS가 개발되고 있고, 그렇다보니 이제와서는 장단점마저 뚜렷해진 경향이 있었다. 그에 대해서는 아래 블로그를 참조했다.

리눅스의 종류와 선택

리눅스 배포판 - 위키백과

  이 중 cent os를 선택한 계기는 바로 RHEL을 그대로 반영하는 무료 OS라는 점이다. 그리고 fedora의 혁신성과는 반대로 안정성이 높다.(fedora가 잔버그가 많기로 유명하다)

나는 개인적으로 여러번 써왔고 익숙한 ubuntu를 고르려 했으나, cent os를 선택하게 된 계기는 역시나 안정성이었다.

최신 버전의 갱신 주기가 잦고, 패키지가 빠르게 갱신되는 ubuntu에 비해 업데이트는 느리지만 그만큼 안정적인 버전이 도입된다.

이는 패키지 오류로 인한 시행 착오를 줄여주는 핵심 키워드 이기 때문에 cent os를 선택했다.

그렇게 cent os를 세팅하며 장벽에 대한 몇가지 생각이 들었다.

대소문자 구분

  • 으… 윈도우가 편의를 위해 용인해준 것이 결국엔 문제가 됐다.
  • 리눅스에서 개발하고 싶을만큼 발견하는데 시간도 걸리고, 크리티컬 할 수 있는 요소.

쉘 기반으로 사용하는 것에 대한 거부감

  • 다행히 나는 이 부분에선 극복했었던 상황.

패키지 버전 충돌 문제. [예를 들어 rails만 해도 ruby 버전에 따라 다르게 동작함. rbenv에서 버전 강제후 bundle update 해주어야 함]

  • 이 문제에 대한 이해는 윈도우에서도 dll 지옥을 겪어봤다면 납득 가는 문제중 하나일거라고 생각함.

권한 문제

  • 서비스로 구동할때와, daemon으로 구동할때의 권한차이.
  • 헌데 이문제도 윈도우도 같다… 윈도우 서비스로 구동할때와 쉘이나 gui로 구동할 때의 실행 계정과 권한에 차이가 있다.

서버마다 반복되는 세팅 작업

  • 쉘기반이라 이건 그냥 극복이 되는 문제 아닌가?
  • docker를 이용하거나 각종 세팅 스크립트를 짜놓고 구동 시켜도 충분히 해결되는 문제이기는 함.

그래도 가끔 필요하다 싶은 GUI 기반 작업에 대한 고뇌

  • 몇가지 해결책을 제공하고 있는듯 하다. 웹 기반으로 UI를 제공한다거나, port 개방을 통해 GUI 기반 OS에서 원격 제어를 허용하는 등의 방식으로. [postgresql만해도 세팅 후 포트 개방 후, 윈도우에서 제어하면 좀 더 편하게 제어할 수 있다.]
  • 데스크탑 모드로 설치해서 서버로 구동하는 것은 반대. [메모리 사용량만해도 10배 이상 차이나는 경우가 많다. 기본적으로 SSH로만 사용하는 것을 권장한다]

그럼 남는 것은…? 현재 게임 머신으로써의 의미를 제외하고나면, 윈도우 머신을 굳이 써야 할 의미가 없다.

개발 머신 자체가 맥인것도 고민해봤으나, 굳이 프로그래머는 맥일 필요도 없다고 생각한다.

애초에 많은 오픈소스의 기반이 리눅스다.

아니 적어도 서버 머신 하나는 리눅스로 설치해두고, 여러 개발자가 접속해 관리하며 익숙해질 필요는 충분히 있다고 생각한다.

물론 나의 경우만해도, 윈도우 서버로 대체 할 수 없는 개발 플랫폼을 선정했기 때문에 적응된 부분이지만, 적응하고 보니 그 장벽이 그리 높지 않다는 확신이 든다.

우선 생각보다 그리 어렵지 않고, 여러모로 효율적이다. 

특히 스크립트 기반 환경이다보니 자동화를 안하면 극도로 번거로운 작업이 많다. (쉘 명령어를 외워야 한다거나, 특정 프로그램 설치 위치가 중구난방이라 찾기 어렵다거나 하다면 윈도우 서버때보다 훨씬 번거로울 수도 있는 것도 사실이니까) 

하지만 자동화를 해놓으면 윈도우보다 편해지고, 스크립트만 잘 정리하고, 설치위치에 대한 룰만 잘 정하고 사용한다면 엔지니어적으로 잘 관리된 환경을 만나볼 수 있다. (사용하다보면 리눅스가 얼마나 프로그래머스러운 판단들로 내부 시스템을 구성해놓았는지 알 수 있을 것이다.)

이상 윈도우 프로그래머의 리눅스 적응기였다.

Comments

comments powered by Disqus