Fall in IT.

Jupyter Notebook을 사용하면 웹브라우저에서 파이썬 코드를 실행시킬 수 있다? 본문

기타

Jupyter Notebook을 사용하면 웹브라우저에서 파이썬 코드를 실행시킬 수 있다?

D.Y 2024. 12. 15. 12:11
반응형

Jupyter Notebook을 사용하면 웹브라우저에서 파이썬 코드가 동작한다.

적어도 겉으로 볼때는 그래보인다.

 

어떻게 동작하는걸까? 궁금해서 알아본 내용을 정리한다.

Q. 웹브라우저는 파이썬을 실행시키는 환경이 없는데 어떻게 파이썬 코드를 실행시킬 수 있을까?

A. 결론부터 말하자면, Jupyter Notebook은 웹브라우저에서 파이썬 코드가 실행되는 것이 아니라 로컬에서 실행되는 Jupyter 서버를 통해서 웹브라우저에서 작성한 파이썬 코드를 실행시키고 실행 결과를 웹브라우저에 보여주는 것이다.

Jupyter Notebook의 동작 방식을 간단하게 보면,

  1. 사용자가 브라우저에서 Python 코드를 작성하고 실행 버튼을 누른다.
  2. 브라우저는 HTTP 또는 WebSocket을 통해서 Jupyter 서버에 전달한다.
  3. Jupyter 서버는 커널에게 코드를 전달한다.
  4. 커널이 파이썬 코드를 실행하고 결과를 서버로 반환한다.
  5. 서버가 결과를 다시 웹브라우저로 전송한다.
  6. 브라우저는 이 결과를 UI로 표시한다.

Q. 그렇다면, Jupyter Notebook 안에 파이썬 실행환경(인터프리터)을 가지고 있는건가?

A. 엄밀히 말하면 아니다. Jupyter Notebook은 로컬 컴퓨터에 있는 Python 인터프리터를 연결해주는 Python 커널을 가지고 있다. 즉, 이 커널은 로컬 컴퓨터에 설치된 Python 인터프리터를 사용해 코드를 실행시키는 것이다.

Jupyter 서버

  • 사용자의 요청(코드 실행, 파일 열기 등)을 처리하는 중앙 허브 역할을 한다.
  • 웹 브라우저와 HTTP 또는 WebSocket으로 통신한다.
  • 사용자로부터 전달된 Python 코드를 커널에 전달한다.

Jupyter 커널 (Kernel)

  • 커널은 Python 서버의 요청을 받아 Python 인터프리터를 통해 코드를 실행하고 결과를 반환한다.
  • 여러 언어 커널을 지원한다.
  • 즉, Python 커널은 Python 코드를 실행하는데 필요한 실행 엔진이다.
  • Jupyter 서버와 커널은 ZeroMQ 프로토콜을 사용하여 메시지를 주고 받는다.

Jupyter Notebook에서 Python 코드 실행의 상세 흐름

  1. Jupyter 서버와 웹 브라우저 통신
    1. 사용자가 Jupyter Notebook UI에서 코드를 작성하고 실행 버튼을 누르면 브라우저는 코드를 HTTP 요청 또는 WebScoket을 통해 Jupyter 서버로 전송한다.
  2. Jupyter 서버와 커널 통신
    1. 서버는 해당 요청을 적합한 커널에 전달한다.
  3. 커널에서 Python 코드 실행
    1. 커널은 로컬 컴퓨터의 Python 인터프리터를 사용해 코드를 실행한다.
    2. 커널 실행 중 생성된 출력, 에러 메시지 또는 실행 결과를 커널에 의해 캡쳐된다.
  4. 결과 반환
    1. 커널은 실행 결과를 Jupyter 서버로 전달한다.
    2. 서버는 이를 웹 브라우저로 전송한다.
  5. 결과 표시
    1. 브라우저는 서버로부터 받은 실행 결과를 Notebook 셀 아래에 표시한다.

Q. 그렇다면, 로컬에 Python 인터프리터가 설치되어 있지 않다면 Jupyter Notebook을 통해서 Python 코드를 동작시키지 못하나?

A. 그렇다. Python 커널은 Python 인터프리터를 필요로 하기 때문에 인터프리터가 없으면 실행이 불가능하다. Jupyter Notebook은 자체적으로 Python 인터프리터를 포함하지 않는다.

그러나, 일반적으로 Jupyter Notebook을 설치하려면 Python이 필요하다. (pip install notebook 명령어를 실행하려면 Python이 설치되어있어야 한다.)

따라서, Python 없이 Jupyter Notebook만 설치하는 상황은 거의 없다.

Q. Jupyter Notebook에 Python 실행환경 자체가 포함되어있다면, 학교에서 Python을 교육할때 훨씬 수월할 수 있을 것 같은데?

A. 물론 가능하다. 대안으로 Docker 또는 클라우드 기반의 Jupyter를 사용하면 된다.

그렇게 하지 않은 이유는,

  1. 유연성과 확장성 문제 예를들어, 다양한 Python 버전을 사용할 수 없게 되고 모두 포함하면 시스템이 복잡해지고 비대해질 수 있다.
  2. 배포 크기와 유지보수 문제
  3. 클라우드 및 컨테이너 환경 활용 가능 Jupyter 서버에 Python 포함 이라는 문제는 Docker 환경으로 이미 해결이 가능한 문제이다.
  4. Miniconda는 Python 인터프리터와 가상 환경 관리 도구를 포함하기 때문에, 결과적으로 "Python 없는 환경"에서도 Python 실행 환경을 제공한다.
반응형
Comments