프론트 환경 vs 백엔드 환경

ding·2024년 12월 16일

앞선 포스트에서 가상환경의 개념에 대해 공부하면서, 프론트엔드만 해왔던 나에게는 크게 이해되는 부분이 없었다. 프론트적 마인드에서 생긴 궁금증들과 이에 대한 답변을 공유하고자 한다.

Q1.
프론트처럼 프로젝트별로 package.json에 의존성을 명시하는 것처럼 백엔드에서도 프로젝트별로 설정을 따로 하면 되는게 아닌가?
A1.
프론트엔드에서는 package.json 파일에 프로젝트 의존성을 명시한다. 이러한 의존성은 프로젝트 폴더 내부에 있는 node_modules 디렉토리에만 설치된다. 이 방식으로 인해 각 프로젝트는 독립적인 의존성 관리가 가능하다.
반면, 백엔드 Python에서는 기본적으로 전역 환경을 사용한다. 따라서 Python에서는 프로젝트마다 독립된 site-packages(Python의 라이브러리가 설치되는 디렉토리)을 제공하기 위해 가상환경이 필요하다.

Q2.
Python만 전역환경을 사용하는건지, 다른 백엔드 언어들도 다 가상환경이 필요한건지?
A2.
Python과 Python 기반의 웹 프레임워크인 Django와 같은 언어들은 전부 의존성 격리를 위해 가상환경이 필수적이다.
반면, Java나 Node.js 등과 같은 언어는 전역 환경이 아니라 프로젝트 수준에서 의존성을 관리하도록 설계되었으므로 가상환경을 별도로 설정하지 않아도 된다.

Q3.
venv, pyenv, virtualenv 등의 설치나 활성화 command가 다르다는 것 외의 차이점?
A3.
venv

  • 가장 기본적인 가상환경 도구
  • 간단한 가상환경을 생성하고 사용하는 데 적합하다.
  • 장점
    • 별도의 설치가 필요 없다.
    • 대부분의 가상환경 필요성을 충족한다.
  • 단점
    • 기능이 제한적이다.
    • Python 버전 관리가 필요하다면 추가 도구가 필요하다.
  • 프로젝트가 복잡하지 않고, 단일 Python 버전으로 간단히 가상환경을 생성하고 관리하고 싶을 때 사용
    virtualenv
  • 더 강력한 가상환경 도구
  • venv의 기능을 확장한 형태로, 더 많은 옵션과 유연성 제공
  • 여러 Python 버전 간 가상환경 관리를 더 쉽게 할 수 있다.
  • 장점
    • Python2 지원
    • 다양한 커스터마이징 옵션 제공
    • 더 빠른 가상환경 생성 속도
  • 단점
    • 별도의 설치 필요
    • Python 버전 관리 기능은 없음
  • Python2를 사용하는 프로젝트가 있는 경우, 더 빠르게 가상환경을 생성해야 할 때 사용
    pyenv
  • Python 버전 관리 도구
  • 여러 Python 버전을 설치하고 관리할 수 있음
  • 장점
    • 프로젝트마다 다른 Python 버전을 사용할 수 있음
    • 다양한 Python 버전을 쉽게 설치, 변경, 전환 가능
  • 단점
    • Python 버전 관리에 초점이 맞춰져 있으므로, 가상환경만 필요한 경우에는 적합하지 않다.
  • 다양한 Python 버전을 사용해야 하거나, 프로젝트마다 다른 Python 버전을 요구할 때, 팀이나 프로젝트에서 특정 Python 버전을 강제해야할 때 사용
    pyenv-virtualenv
  • Python버전 관리와 가상환경 관리를 동시에 처리 가능
  • 장점
    • 프로젝트마다 Python 버전과 가상환경을 함께 설정 가능
    • pyenv와의 통합 덕분에 더 강력하고 유연한 환경 관리 가능
  • 단점
    • 설치와 설정이 복잡
  • 프로젝트마다 Python 버전과 가상환경을 모두 격리해야 하는 경우 사용

이상 백엔드 멍충이의 자가질의응답이었습니다..

0개의 댓글