우리가 사용할 개발 도구(환경) - Jupyter Notebook의 특징 및 장단점
[목차]
0. 여는 말
1. Jupyter Notebook의 특징
2. Jupyter Notebook의 장점
3. Jupyter Notebook의 단점
4. 맺는 말
0. 여는 말
개발 도구(또는 환경, IDE(Integrated Development Environment))에는 수많은 종류가 있습니다.
(관련한 추가 내용들이 궁금하시다면, 아래 글의 '1. 언어와 도구에 대한 이해' 파트를 참고해 주세요 :) )
앞으로 쓸 글들에 대한 전체 로드맵
[목차] 0. 여는 말 1. 언어와 도구에 대한 이해 2. 코딩을 위한 기본기(기초체력) 3. 실전 퍼포먼스마케팅 업무에 활용 4. 맺는 말 0. 여는 말 지난 글까지 해서 '제가 왜 이 블로그를 운영하는지', 그
lifeisstruggle.tistory.com
그 수많은 것들 중 우리는 '웹(Web) 기반의 대화형 IDE'인 Jupyter Notebook (이하 주피터 노트북) 형태를 채택할 것이고, 그 중에서도 우리의 로컬 컴퓨터가 아니라 Google 클라우드 서버 위에서 코드를 실행할 수 있는 Google Colaboratory (이하 코랩)를 사용할 것입니다.
이 글을 포함하여 2개의 글에 걸쳐 주피터 노트북과 코랩에 대하여 서술하려고 하며, 이 글에서는 주피터 노트북을 중심으로 다루겠습니다.
그럼, 시작하겠습니다!
1. Jupyter Notebook의 특징
주피터 노트북은 '웹 기반' 입니다.
주피터 노트북이 다른 IDE들과 차별화되는 가장 큰 특징은 '웹 기반'이라는 점입니다.
다른 IDE들과 달리 주피터 노트북을 실행하면 웹 브라우저가 자동으로 켜지고, 거기서 'Python 3'를 클릭하여 새 notebook을 만들어 사용하면 됩니다.
(실행 과정은 아래 4개의 스크린샷 이미지들을 참고하시면 이해에 도움이 될 거에요 :) )
2. Jupyter Notebook의 장점
1. 블럭 단위로 코드 실행이 가능하다.
2. 마크다운(Markdown) 기능을 이용하여 코드가 아닌 제목, 설명 등을 추가할 수 있다.
첫째로, 주피터 노트북은 블럭 단위를 코드를 실행할 수 있습니다.
물론 다른 IDE들도 디버깅 기능을 사용하면 부분적으로 코드 실행이 가능하기는 하지만, 주피터 노트북은 자체가 학습 용도에 특화되어 있는 만큼 코드들을 블럭 단위로 가시적으로 구분할 수 있고, 블럭 단위의 코드 실행 및 수정이 용이합니다. 이러한 부분이 코딩 초보인 우리들이 학습 용도로 쓰기에는 주효한 장점이 될 것이라 생각합니다.
둘째로, 진짜 공책(notebook)처럼 마크다운(Markdown) 기능을 이용하여 코드 외 제목, 설명 등을 추가할 수 있습니다.
다른 IDE들에서도 주석 기능을 통해 설명을 추가할 수 있기는 하지만, 대부분 주피터 노트북처럼 마크다운(Markdown) 기능까지 제공하지는 않습니다. 우리는 코딩을 새로 배우는 입장인 만큼 메모하고 기록할 것들이 많게 될 텐데, 그러한 측면에서 이 또한 유용한 기능이 될 것이라 생각합니다.
3. Jupyter Notebook의 단점
1. 프로그램 개발 등 개발 전용으로 사용하기에는 부적합할 수 있다.
2. 신경쓰고 챙길 것이 많아 수고롭다. (컴퓨터 스펙, 경로 설정, 버전 관리 등)
첫째로, 실행을 위한 프로그램 개발 등 개발 전용으로는 부적합할 수 있습니다.
학습용으로 특화되어 있다는 점이 장점이자 단점이 되는 것인데, '실행을 위한 개발'보다는 '코드 실행 및 학습'에 목적과 기능이 더 맞추어져 있기 때문입니다.
하지만 우리가 (적어도 가까운 시일 내에) 개발자의 업무를 할 것은 아니기 때문에, 이 부분이 우리에게 영향을 미치는 단점이 되지는 않을 것이라고 생각합니다.
둘째로, 신경쓰고 챙겨야 할 부분들이 있어 수고로울 수 있습니다.
사실 정확히 말하면, 이것이 주피터 노트북의 단점은 아니고, 그것을 '로컬(내 컴퓨터) 환경에서 사용할 때'의 단점이기는 합니다.
내 컴퓨터 위에 프로그램을 직접 설치하는 것이다 보니, 고려해야 하는 몇 가지 요소들이 있습니다.
예를 들면,
1) 내 컴퓨터의 사양이 충분해야 하고,
사실 우리 수준에서는 이 부분이 걸림돌이 될 가능성은 낮은데, 머신러닝 등을 하다 보면 이것의 장벽을 느낄 때가 있습니다.
(속된 말로 '장비빨'을 타게 됩니다... (GPU 너무 비쌉니다 ^.ㅠ))
2) 환경 및 경로 세팅을 해 주어야 하며,
물론 기본으로 자동 세팅되고 대개 문제가 없지만, 그래도 가끔 경로 문제가 발생하는 경우가 있는데, 컴퓨터에 대한 이해도가 낮은 입장에서 해당 문제는 해결하기가 꽤나 까다롭습니다...
3) 파이썬 버전 및 각 라이브러리들의 버전을 지속 관리 및 업데이트해 주어야 합니다.
라이브러리를 여러 종류 쓰다 보면 서로 간의 '의존성(dependency) 문제'로 에러가 발생하는 경우가 있습니다.
예를 들면, A 라이브러리는 B 라이브러리 버전 1.0까지만 지원을 하는데, B 라이브러리 버전 1.1이 새로 나왔고, 내 컴퓨터에 그것으로 라이브러리 업데이트를 하면, A 라이브러리와 B 라이브러리는 호환이 되지 않게 되면서 B 라이브러리 사용 불가, 에러가 발생하는 경우가 있다는 것입니다.
위 문장이 이해가 어렵다면 아래 비유를 참고하시면 이해에 도움이 될 것입니다.
1) A는 과일주스를 만들어 파는 사람입니다.
2) A는 B 과일가게에서 과일을 매입하여 주스를 만들어 오고 있었습니다.
3) 어느 날 B 과일가게가 폐업하고 그 자리에 피자집 C가 생겼습니다.
4) A는 B 과일가게가 폐업한 줄 모르고 B 가게에 평소처럼 발주를 넣었고, 그 자리에는 이제 피자집 C가 있기 때문에 해당 주문은 정상적으로 처리될 수 없게 되면서 혼선이 발생합니다.
이러한 경우, 로컬에 가상환경(virtual environment, venv)을 목적에 따라 여러 개 생성하여 각 환경들을 다르게 세팅하고 관리하는 방법이 있기는 한데, 이 역시 꽤나 귀찮은 일이기는 합니다.
4. 맺는 말
지금까지 주피터 노트북이 어떤 것인지, 그리고 그것의 특징과 장단점에 대해 얘기해 보았습니다.
위에서 언급 드린 주피터 노트북의 장점은 그대로 가져가면서 단점 (정확히는 로컬 환경 사용의 단점)은 극복 가능한 방법이 있으니, 바로 Google에서 제공하는 코랩이라는 기능을 사용하는 것입니다. 로컬 대신 Google의 클라우드 서버 위에서 주피터 노트북을 실행하는 느낌이라고 보면 됩니다. (심지어 (조건부) 무료입니다!)
이 부분은 다음 글에서 다시 자세하게 다뤄보겠습니다.
이만 글을 마치겠으며, 이해가 되지 않거나 어려운 부분, 기타 문의 내용이 있다면 언제든 댓글로 남겨 주시면 최대한 답변드리겠습니다.
이 긴 글도 끝까지 읽으시느라 고생 많으셨고, 다음 글에서 또 뵙겠습니다!
우리들의 스트러글(struggle)하는 현생, 화이팅입니다!