프로그래머가 되기 위해서는 운영체제에 대한 이해도 필요하다.
나는 웹 애플리케이션 개발자이기 때문에 운영체제를 몰라도 된다?
모든 프로그램은 운영체제를 기반으로 하여 동작한다. 운영체제는 플랫폼이다. 최근에는 웹과
운영체제에 대해서 이해를 함으로 인해서 프로그래밍을 할 때, 운영체제의 오류에 빠져드는 실수를 회피할 수 있는 가능성이 높아진다.
자바는 운영체제에서 실행시킨 JVM(Java Virtual Machine)에 의해서 바이트 코드를 실행하기 때문에 운영체제의 영향을 받지 않는다고 알려져 있다(운영체제마다 약간의 차이는 있다는 생각이 들지만, 코딩하는 중에는 윈도우, 리눅스, 유닉스 에서 큰 영향은 없었다. 통합된 빌드과정과 웹서버에 코드를 배포하고 웹서버에서 구동시키는 형태였으니 그랬겠지만…).
프로그래머가 직접 운영서버에다가 빌드를 하게 되는 경우가 얼마나 될까? 외부에서 접근이 가능한 서버라면 통합빌드 환경을 구축해두고서 원격배포를 할 수 있으니 크게 신경쓸 것이 그리 많지가 않다(SSH, FTP 접속, 웹서버의 설치 위치 확인, 스크립트 작성… 또 뭘 신경써야 하더라?).
이전 프로젝트에서는 개발빌드환경을 신경쓸 필요가 없었다. 아키텍트가 개발에 필요한 웹서버 및 빌드환경을 구축해주고 알려줬기 때문에 이런 것들을 신경쓸 필요가 없었다. 로직과 기능을 개발하고 커밋하고 개발서버에서 빌드를 누르고 오류가 발생했는지 지켜보다가 정상빌드되며 개발서버에서 내가 구현한 기능이 정상동작하는지 확인하면 되었다.
최근 공공기관에서 수주한 작은 SI프로젝트를 하면서 직접 리눅스LINUX(Redhat 6.0 Enterprise) 서버 콘솔Console로 접근해서 톰캣 서버(Tomcat 6.0)를 설치하고 jar파일을 복사하는 등의 일을 하면서 느끼는 거지만 프로그래머는 단순히 코딩만 하는 것이 아니라 운영체제를 충분히 알고 있어야 한다는 것이다. 어디가서 '리눅스 좀 씁니다, 요즘은 유닉스(맥북의 맥OS가 Unix 기반이니까)도 좀 씁니다.' 라고 이야기 했지만, 운영서버에 집접 배포본(.war)을 설치하고 구동시키는 것은 만만치가 않았다. 그나마 운영서버들이 모두 GUI를 제공했기 때문에 내가 운영체제를 쓰던 그대로 사용할 수가 있었다.
리눅스 운영체제에서 애플리케이션이 설치되는 위치, 로그파일 생성 위치와 배포본의 압축해제 위치 등을 주의깊게 본 적이 없었는데, 이번 프로젝트를 하면서 깨달은 바가 좀 있다.
물론 나 혼자였다면 훨씬 더 많은 시간을 들여야 했겠지만 곁에서 알려주시는 멘토가 있으셨기에 훨씬 수월하게 일을 처리할 수가 있었다. 우리 회사에서 진행하는 솔루션들도 이런 과정을 직접 프로그래머가 진행해야할 상황이 될 가능성이 높으니 이런 경험은 성장을 위한 좋은 밑거름이 되지 않을까?
'프로그래머라면 자신이 사용하는 개발환경의 운영체제를 스스로 구축하고 사용하는 것을 피하지 않아야 한다.'고 생각한다. 꽤 많은 시간이 소요되는 작업이지만, JDK가 어떻게 설치되고 JDK_HOME의 위치가 어떻게 설치되는지, 경로를 설정할 때 ';'(윈도우)을 써야하는지 ':'(리눅스, 유닉스)을 써야하는지는 알아야 하지 않을까?