나는 웹 애플리케이션 개발자이기 때문에 운영체제를 몰라도 된다?


  모든 프로그램은 운영체제를 기반으로 하여 동작한다. 운영체제는 플랫폼이다. 최근에는 웹과
  운영체제에 대해서 이해를 함으로 인해서 프로그래밍을 할 때, 운영체제의 오류에 빠져드는 실수를 회피할 수 있는 가능성이 높아진다.


  자바는 운영체제에서 실행시킨 JVM(Java Virtual Machine)에 의해서 바이트 코드를 실행하기 때문에 운영체제의 영향을 받지 않는다고 알려져 있다(운영체제마다 약간의 차이는 있다는 생각이 들지만, 코딩하는 중에는 윈도우, 리눅스, 유닉스 에서 큰 영향은 없었다. 통합된 빌드과정과 웹서버에 코드를 배포하고 웹서버에서 구동시키는 형태였으니 그랬겠지만…).
 
  프로그래머가 직접 운영서버에다가 빌드를 하게 되는 경우가 얼마나 될까? 외부에서 접근이 가능한 서버라면 통합빌드 환경을 구축해두고서 원격배포를 할 수 있으니 크게 신경쓸 것이 그리 많지가 않다(SSH, FTP 접속, 웹서버의 설치 위치 확인, 스크립트 작성… 또 뭘 신경써야 하더라?).
  이전 프로젝트에서는 개발빌드환경을 신경쓸 필요가 없었다. 아키텍트가 개발에 필요한 웹서버 및 빌드환경을 구축해주고 알려줬기 때문에 이런 것들을 신경쓸 필요가 없었다. 로직과 기능을 개발하고 커밋하고 개발서버에서 빌드를 누르고 오류가 발생했는지 지켜보다가 정상빌드되며 개발서버에서 내가 구현한 기능이 정상동작하는지 확인하면 되었다.


  최근 공공기관에서 수주한 작은 SI프로젝트를 하면서 직접 리눅스LINUX(Redhat 6.0 Enterprise) 서버 콘솔Console로 접근해서 톰캣 서버(Tomcat 6.0)를 설치하고 jar파일을 복사하는 등의 일을 하면서 느끼는 거지만 프로그래머는 단순히 코딩만 하는 것이 아니라 운영체제를 충분히 알고 있어야 한다는 것이다. 어디가서 '리눅스 좀 씁니다, 요즘은 유닉스(맥북의 맥OS가 Unix 기반이니까)도 좀 씁니다.' 라고 이야기 했지만, 운영서버에 집접 배포본(.war)을 설치하고 구동시키는 것은 만만치가 않았다. 그나마 운영서버들이 모두 GUI를 제공했기 때문에 내가 운영체제를 쓰던 그대로 사용할 수가 있었다.


  리눅스 운영체제에서 애플리케이션이 설치되는 위치, 로그파일 생성 위치와 배포본의 압축해제 위치 등을 주의깊게 본 적이 없었는데, 이번 프로젝트를 하면서 깨달은 바가 좀 있다.
  물론 나 혼자였다면 훨씬 더 많은 시간을 들여야 했겠지만 곁에서 알려주시는 멘토가 있으셨기에 훨씬 수월하게 일을 처리할 수가 있었다. 우리 회사에서 진행하는 솔루션들도 이런 과정을 직접 프로그래머가 진행해야할 상황이 될 가능성이 높으니 이런 경험은 성장을 위한 좋은 밑거름이 되지 않을까?


  '프로그래머라면 자신이 사용하는 개발환경의 운영체제를 스스로 구축하고 사용하는 것을 피하지 않아야 한다.'고 생각한다. 꽤 많은 시간이 소요되는 작업이지만, JDK가 어떻게 설치되고 JDK_HOME의 위치가 어떻게 설치되는지, 경로를 설정할 때 ';'(윈도우)을 써야하는지 ':'(리눅스, 유닉스)을 써야하는지는 알아야 하지 않을까?

  1. 이 글을 쓰기 '무.섭.게' 개발서버에 임의적으로 설치한 오라클 서버 때문에 개발서버 접근이 안되는 문제가 생겼다.
    ... 그리고 그 문제가 생긴 원인을 찾고 응급조치를 하는데 너무 오랜 시간이 걸렸다.

    어설프게 배우면 안된다.

Java 에서 제공하는

자바를 비롯한 언어가 가지고 있는 특징에 대해서 이해하기 위해서는 사양설명서(Specification, 줄여서 Spec)를 읽는 만큼 효과적인 것이 있을까...?

하지만, 전부 영어다! 당연하지. 자바를 비롯한 언어들의 대부분이 영어권에서 개발되었으니까 말이다.

개발자에게 영어란 피할 수 없는 숙명과 같다. 피하지 말고 즐기자. 그래서 아침 저녁 출퇴근 길에 굿모닝팝스를 들으며 귀를 열어보려 시도하고 있다.

 

JVM 의 위치

출처 : http://download.oracle.com/javase/6/docs/

Java_SE_6_Documentation_-_Google_크롬_005.png

자바는 윈도우, 리눅스, 유닉스, MacOS 등 다양한 환경에서 실행될 수 있는 멀티플랫폼 언어라고 한다. 이는 각 운영체제 환경에서 실행되는 JVM이 존재하기 때문이며, 특별한 경우를 제외하고는 일반적인 언어들의 경우 별도의 수정없이 서로다른 운영체제에서 실행이 가능하다는 장점을 가지고 있다. 또한 웹서버 운영환경에서 개발환경으로 Java를 기반으로 하는 WAS들이 널리 보급되면서 국내외적으로 많은 사용자와 개발자를 보유하고 있는 강력한 영향력을 가진 언어이기도 하다.

이 글은 스프링노트에서 작성되었습니다.

+ Recent posts