Jupyter Notebook에서 확장 가능한 시스템으로의 전환 가이드
(youtu.be)PyCon US 2025 발표내용입니다.
Jupyter Notebook에서 확장 가능한 시스템으로의 전환 가이드
Jupyter Notebook은 데이터 탐색, 시각화, 교육 등 대화형 분석에 매우 유용한 도구입니다. 하지만 프로덕션 환경에 코드를 배포하고, 재사용성과 자동화, 견고성이 중요해지는 시점에는 노트북의 한계가 드러납니다. 이 글에서는 Jupyter Notebook으로 작성된 코드를 유지보수와 재현성이 용이한 확장 가능한 시스템으로 전환하는 과정과 핵심 노하우를 소개합니다.
노트북의 장점과 단점
- 장점: 코드와 텍스트를 함께 보며 결과를 즉시 확인할 수 있어 탐색적 데이터 분석과 교육에 탁월합니다. [00:03:18]
- 단점: 셀 실행 순서에 따라 변수 상태가 달라질 수 있고, 버전 관리가 어려우며, 코드의 자동화 및 재사용이 힘들어 확장성에 걸림돌이 됩니다. [00:04:24]
언제 스크립트로 전환해야 할까?
- 프로덕션 환경에 코드를 배포해야 할 때
- 다른 사람이 코드를 재사용해야 할 때
- 자동으로 코드를 실행해야 할 때
- 코드의 견고성이 중요할 때
- 노트북이 너무 복잡해졌을 때 [00:05:32]
전환을 위한 핵심 단계와 도구
1. 코드 추출 및 변환
- NBConvert & Jupytext: 노트북의 코드를 Python 스크립트로 손쉽게 추출할 수 있습니다. 특히 Jupytext는 노트북과 스크립트 간의 동기화 기능도 제공하여 유용합니다. [00:10:44]
2. 리팩토링 과정
- 기능 단위로 작업 분리: 노트북의 각 단계를 식별하고, 각 단계에 맞는 함수를 만든 후 코드를 해당 함수로 옮깁니다. [00:12:52]
- 테스트 코드 작성: 단위 테스트나 통합 테스트를 작성하여 코드의 정확성을 보장합니다. 이는 특히 복사-붙여넣기 과정에서 발생할 수 있는 오류를 방지하는 데 중요합니다. [00:13:08]
- 요구사항 및 의존성 관리: 모듈과 해당 종속성을 명확히 하여 다른 환경에서도 코드를 쉽게 실행할 수 있도록 합니다. [00:13:15]
- CI/CD 도입: CI/CD(지속적 통합/지속적 배포) 파이프라인을 구축하여 배포 과정을 자동화합니다. [00:13:15]
코드 품질 향상을 위한 추가 팁
- 일관된 코드 서식: 코드 포맷터를 사용하여 일관성을 유지합니다.
- 문서화: 코드의 목적과 사용법을 명확히 설명하는 문서화를 생활화합니다.
- 설정 분리: 설정 및 구성 정보를 별도의 파일로 분리하여 관리합니다. [00:21:11]
핵심 역량 및 사고방식 전환
- 모듈화: 코드를 재사용 가능한 모듈식 기능으로 분해하는 능력이 중요합니다.
- 자동화: 워크플로우를 자동화하여 효율성을 높입니다.
- 테스트 기반 리팩토링: 테스트를 통해 기능의 안정성을 유지하면서 코드를 개선합니다.
탐색 단계에서는 Jupyter Notebook의 유연성을 적극 활용하고, 프로덕션 코드는 견고하고 재현 가능한 자동화된 스크립트로 전환하는 사고방식을 갖추는 것이 중요합니다. [00:22:16]