ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 시스템이해 :: 환경구성에 따른 프로그램 오류
    IT/Common sense 2020. 7. 6. 09:37

     

    코드로 작성된 프로그램는 시스템에 Deploy 된다.

    이때, 개발서버와 달리 프로그램 실행에 오류를 맞이하는 경우가 종종 있다.

     

    보통 몇가지 이유로 나뉘지만, 초보자들이 놓치는 가장 놓치기 쉬운 예시를 작성해본다.

     

     

    1. 파일권한 :: No permission / Not allowed / Can`t read / Can`t access

     

    기본적으로 파일권한은 현재 사용자의 권한을 따르게 된다.

    만약 A 라는 유저에 의해 파일이 설치되거나 작성되거나 또는 업로드되었다면

    기본적으로 A 라는 유저의 권한을 따르게된다.

    하지만 대게 A 라는 유저는 시스템유저가 아니기에 실행에서 오류를 발생시킨다.

    Global 하거나 바이너리 라이브러리 (ex: /usr/bin ) 와 같은 시스템 라이브러리에 권한이 없을 수도 있으며,

    접속하는 사용자 (ex: 웹의 경우 apache:apache ) 의 권한과 달라, 해당 프로그램 파일을 접속 사용자가 사용하지 못하게 된다. 그렇기에 우리는 접속루트의 아이디과 그룹으로 해당 파일권한을 관리해주어야 한다.

     

     

    2. 버전의존성 :: Version mismatched / No library for

     

    파일권한 다음으로 많이 발생하는 문제이다.

    Java라는 언어의 경우 이식성이 장점이다. OS별 실행요건에 덜 예민하다는 점이다.

    반대로 대부분의 언어는 OS에 예민하고, 더 나아가 라이브러리에 대한 의존성 또한 존재한다.

    의존성관리툴이 존재하는 이유이다.

    Java는 Maven, Python은 Conda, PHP는 Composer 등 라이브러리를 패키지화해서 의존성을 관리한다.

    점차 MDD ( Model Driven Development ) 기반의 구현방식이 상용화되기에 이를 인지하고 있다면,

    버전을 매칭시키는 것이 중요하다는 걸 이해할 수 있다.

    이러한 버전을 매칭시키는 이유는 언어의 버전별 제공되는 기능과 작성법에서 발생하고,

    그 버전에 맞게 라이브러리가 생성되기 때문이다.

     

    3. 경로오류 :: Relative Path / Absolute Path

     

    대게 상대경로는 프로그램 파일의 기준이 아니라 실행되는 프로레서의 위치의 기준을 따른다.

    예를 들어 C드라이브의 파일이 D드라이브의 파일을 Import 하여 사용한다면

    최초 실행이 C드라이브의 파일을 메모리적재하였기 때문에 D드라이브 파일이 상대경로로 작성한 것은

    C드라이브파일 기준에서 이해되고 해당 경로를 찾다가 에러가 발생할 수 있다.

    여기에서 실행시 상대경로를 언어별로 재해석하게 되는 것을 생각할 수 있다.

    실제로 프로그램에서 파일을 로드할 경우, 상대경로는 해석하는 시간이 필요하기에

    절대경로보다 로드시간이 더 소요된다. 이는 성능적인 부분이기에 개발상황에서는 상대경로가 더 편하게 이용된다.

    하지만 상대경로는 파일의 위치가 아닌 프로세스의 위치로 계산될 수 있다는 것을 감안해야한다.

     

     

     

    'IT > Common sense' 카테고리의 다른 글

    개발공부 :: 참조사이트  (0) 2020.07.10
    산업군 분류 [ SI / SM / R&D / SP ]  (0) 2020.06.28

    댓글

Designed by Tistory.