새해들어 내가 알고 있는 내용들을 공유해보면 어떨까?하는 생각이 들어 블로그를 시작해 봤다. 먼저 이번 글은 윈도우, 우분투, Mac을 개발환경으로 고민하고 있는 관리자나 개발자에게 도움이 되었으면 해서 작성했고, 개발환경 구성과 관련된 내용을 이어서 올리려 한다.
1. 다시 윈도우 개발 환경으로
십여년 전에 윈도우를 개발환경으로 주로 사용할 때에는, 회사에서 사용하는 모든 프로그램을 PC에 설치해서 개발환경을 만들고, 프로젝트 마다 다른 환경으로 만들기 위해 설치와 삭제를 반복하다 보니, 윈도우가 손상되어 다시 설치해야 하는 일이 많아 졌다. 그래서 안쓰는 데스크탑 컴퓨터에 우분투(Ubuntu Desktop)를 설치하고 개발 환경으로 만들어 사용하기 시작했는데, 우분투는 업데이트를 하면 한글설정이 깨어지기 일쑤이고, 심지어 마우스며, 사운드 같은 디바이스 연결이 손상되어 다시 설정하는데 시간을 낭비하곤 했었다.
그래서, 미국에서 공부할 때부터 봐왔던 Mac pro를 구매하고 사용해 봤더니, 프로그램을 설치하는데 드는 시간도 줄어들고, OS가 깨지거나 수리하는데 드는 시간이 거의 없어졌다. 나중에는 가족들도 설득해 모두 Mac으로 옮겨갔는데, 이제는 윈도우가 불편해서 쓰기 힘들다고 Mac을 고수하고 있다.
문제는 4,5년전부터 딥러닝(Deep Learning)이 활성화되면서 Nvidia그래픽카드가 설치된 컴퓨터나 Jetson을 개발보조 환경을 사용하게 되었는데, 2년 전 시간에 쫓기면서 CNN프로젝트를 하게 되면서 Nvidia RTX 3060그래픽 카드가 설치된 노트북을 구매하면서 다시 윈도우로 복귀하였다. 처음엔 프로젝트만 끝나면 Mac으로 돌아갈 예정이었지만, 아직 윈도우를 사용하고 있다. 왜 마음이 바뀐걸까?
2. 개발자의 고민
개발을 효율적으로 하기 위해서 개발자는
- 개발장비 관리(H/W를 제외하면 주로 OS에 대한 관리)
- 개발을 위한 필요한 S/W(개발언어, 라이브러리, 품질관리 도구, 등)의 관리
- 통합개발환경(IDE, 보다 쉽게는 에디터)관리
- 소스코드(개발 산출물) 관리
를 효과적으로 할 수 있어야 한다. 2번째부터 4번째까지는 회사에서도 내부 관리도 하고, 전문 도구들이 지속적으로 나오고 있는데, 첫번째 내용은 대부분 개발자 또는 관리자가 결정해야 할 문제이다. 그래서, 이 첫번째 고민에 대해 나의 지난 경험을 먼저 공유해 보고자 한다.
2. 나의 Mac 예찬
처음 구매할 때, 가격만을 보면 Mac가격이 좀 높다는 생각은 든다. 처음 맥북을 고민할 때는 새로운 OS에 사용법도 모르는데 이쁘기는 하지만 굉장한 부담이다. 하지만 지금까지 사용해 보니, 소프트웨어 비용, 유지보수 비용과 업무에서 사용하는 기간을 고려해 보면, 지금까지는 윈도우 노트북보다 훨씬 저렴한 것 같다. 개인적으로 이유를 정리해 보면
- OS 업그레이드 비용이 없다.
물론 OS가 업그레이드 되는 일은 자주 없다. 윈도우즈 ME (1년), 윈도우즈 Vista (2년 미만), 윈도우즈 8 (3년 미만)을 제외하면 5년에서 10년 주기로 한번씩 업그레이드를 했다. 업그레이드 비용으로 보통 10만원 전후의 비용을 지불해야 하지만, 이전에 컴퓨터를 교체하는 일이 더 많았다.
Mac은 해마다 OS를 업그레이드 한다. 물론 OS의 메이저버젼 업그레이드는 최근까지 없었는데 3년 전부터는 정책을 바꿔 메이저버젼을 올리고 있다. 어찌 되었든, 기능에 대한 많은 변화가 2~3년 마다 일어나고 있으며, 모두 무료이다. 개발과는 상관없지만 윈도우의 Office에 해당하는 Page, Keynote, Number등도 2013년 부터 모두 무료이고, 솔직히 Office보다 훨씬 편하다. 이것만 돈으로 환산하더로도 맥북가격에 대해 다시 생각하게 된다.
- xNix 프로그램이 대부분을 많은 변경없이 돌아간다.
개발에 필요한 대부분의 프로그램이 기본적으로 설치되는 Linux도 Unix에서 출발했고, Mac OS도 Unix에서 출발하다 보니 기반 기술이 다른 윈도우즈에 비해 호환성이 좋아 Brew나 Port같은 패키지 관리자만 설치하면 쉽게 설치치하고 관리하는 것이 가능하다. 나도 우분투 개발환경(Ubuntu Desktop)에서 사용하던 많은 프로그램들은 힘 안들이고 Mac으로 옮겨왔다. 화면(GUI)를 가지는 프로그램은 사실 디자인이 좋지는 않지만, 커멘드라인으로 사용할 수 있는 많은 무료프로그램(예를 들어 ImageMagic)을 가져올 수 있어서, 윈도우에서는 구매해야 했던 기능들을 쉽게 무료로 사용할 수 있다.
- 노트북을 오래 사용한다.
요즘은 좀 달라졌지만, 예전에는 노트북을 포함하여 윈도우 PC를 만드는 회사에서 전략적으로 컴퓨터 교체시기를 줄여 수익을 창조하려고 한다는 것은 공공연한 비밀이였다. 그래서 3년만 쓰면 컴퓨터가 느려지고 프로그램이 느려지고 윈도우가 동작하지 않는 현상이 발생하곤 했다. 아마 애플(Apple)이 사용자가 많은 윈도우 PC에 비해 미미한 수준인 Mac 시장을 확대하기 위해 사용한 차별화 전략의 하나일 수도 있겠지만, Mac은 이러한 현상이 없어, 개인적으로 맥북을 윈도우 노트북에 비해 몇 배 오래 사용하고 있고, 아직도 가족들은 8년전에 산 맥북을 내가 새로 산 윈도우 노트북 못지 않게 잘 사용하고 있다.
3. 그래도 윈도우를 쓰게 된 이유
- 딥러닝 개발 가성비가 좋다.
맥북이 M2를 사용하면서 성능이 얼마나 개선되었는지 모르겠지만, 내가 소유한 옛날 맥북을 포함하여, 아직은 맥북만으로 딥러닝 모델을 개발하는 것은 불편함이 많은 것 같다. 게다가 장기간 학습테스트를 해야 하는 딥러닝 모델개발의 경우 Nvidia나 AWS의 AI클라우드 만으로 개발하는 것은 비용이 많이 든다.
그래서 Nvidia의 Edge단 개발 장비인 Jetson Xavier를 학습용으로 사용해 봤는데, 사용에도 익숙치 않은 헤드레스 환경이고 속도도 RTX16xx수준으로 느리지만, 전기사용량이 15W정도로 24시간 학습을 돌려도 전기세 같은 추가 비용문제가 없기 때문에, 학습속도가 문제가 되지 않는다면 괜찮은 선택이 될 수 있다.
하지만, 노트북을 살 당시 프로젝트는 학습속도와 모델의 실시간 예측속도가 중요한 변수이어서, 개발 테스트용으로 RTX3600이 탑재된 노트북을 선택하였는데, 한달 사용 후 전기 사용량이나 모델 학습속도 면에서 만족스러운 가성비를 얻을 수 있었다.
- 가상환경 기본으로 제공한다.
예전부터 써오던 VMware는 속도는 빠르지만 player라도 상용이어서 회사에서 사용하거나 또는 돈을 버는 목적으로는 사용하는 것은 금지되어 있다. Oracle이 인수한 Virtualbox는 윈도우, 우분투, Mac에서 모두 사용가능하다. 하시코프(HashiCorp)사의 Vagrant를 사용하면 Docker처럼 명령어로 간단하가 설정파일을 만들고, 구성을 변경해서 바로 생성, 삭제하는 등의 손쉬운 운영이 가능하다. 그런데, 운영체제까지 영향을 주는 프로그램을 깔아야 한다. CNN을 하면서 nvidia에서 제공하는 CUDA를 케라스(Keras), Pytorch와 동작하게 하면서 설치, 삭제를 반복하다가 예전처럼 윈도우를 다시 설치할 뻔 했다. 역시 읜도우는 마이크로소프트가 아닌 프로그램을 자주 설치하고 삭제하는 일을 잘 감당하지 못하는 것 같다.
그런데 마이크로소프트 Hyper-V가 기본으로 탑재되어 있는 것을 알게 되었다. Home버전 이외에는 기본적으로 제공하며 Home버전에서도 기능을 활성화 할 수 있다.
물론, 요즘은 Docker를 사용해서 환경을 구성하는 것이 일반적이다. 나도 MySQL, PostgreSQL, MongoDB같은 개발용 프로그램들을 Docker로 구성하는 것을 좋아한다. 가끔씩 torrent를 사용할 때도 docker를 이용하여 내 컴퓨터를 외부에 노출시키지 않고 사용한다.
하지만 GUI가 포함된 또 하나의 OS가 필요할 때도 있고, docker로 분산하지 않고 하나의 독립된 개발 테스트 환경을 만들거나, 외부에 노출하지 않고 자유롭게 뭔가를 하고 싶을 때 윈도우에 기본 내장된 Hyper-V가 개인적으로는 좋은 선택인 것 같다. 비록 Mac에 최적화된 Parallels처럼 빠른 GUI환경을 제공하지는 않지만, 윈도우에서는 가장 안정적인 선택인 것 같다.
- 노트북 가격이 저렴하다.
예전에는 맥북을 사용할 때 개발용으로는 맥북에어를 잘 선택하지 않았기 때문에 맥북프로(Macbook pro)기종으로 14인치 이상 구매하게 되면 200만원을 쉽게 넘어갔다. 애플에서 확인해 보니 지금도 가격은 다르지 않은 것 같다. 내가 구입한 RX3060와 8 core/16 thread CPU가 탑재된 15인치 게이밍 노트북은 인터넷에서 120만원에 구매했고, 15만원을 들여 메모리를 16G로 올리고, M.2 PCIe용 SSD 1T를 추가했다. 예쁘지도 않고 밧데리도 2시간 정도 밖에 가지 않지만, 책상에 앉아서 개발용으로 쓰기에는, 300만원을 들여 맥북프로를 구매했을 때 느낌과 비교해서, 나쁘지 않은 환경이다.
최근에는 마이크로소프트도 H/W성능을 높이도록 유도하기 보다는 멀티 디바이스 통합에 더 집중하는 것 같아, 2년이 지났지만 성능 저하를 전혀 느끼지 못하고 있다. 오히려 윈도우 11로 가면서 더 빨라졌다고 하는데, 나는 아직 무료 업그레이드 버튼을 누르지 않아 체험하지는 못했다. 이 상태이면 맥북처럼 5년 뒤에도 지금처럼 쓸 수 있지 않을까? 희망해 본다.
- 게임이 가능하다.
회사에서 처음 맥북을 개발용으로 나눠 줬더니, 일부 개발자가 맥북에서 게임을 하려고 시도한 적이 있다. 보안이 엄격한 대기업이 아니면 대부분의 개발자는 개발용 노트북을 개인용도로도 사용하는 것이 일반적이니 당연히 스팀(Steam)게임도 시도해 본 것 같다. 하지만 Mac에서 할 수 있는 게임을 매우 제한적이다. 개인적으로도 일반적인 웹, 앱 개발에서는 업무용으로 맥북이 더 좋다고 생각한다.
RTX 3060이 장착된 노트북은 안되는 게임이 없는 것 같다. 다른 프로그램과 함께 돌리지만 않으면, 게임 데스크탑 못지 않은 성능인 것 같다. 개인적으로 집에서 자기개발을 위해 사용한다면, 은색으로 빤짝이는 예쁜 맥북보다, 딥러닝을 포함한 모든 개발 환경을 테스트 해 볼 수 있고, 모든 게임이 무리 없이 돌아가는 게임용 노트북이 나쁘지 않은 것 같다.
다음 글부터 실제 개발환경을 구성하는 방법을 설명해 보겠다.
'내 생각' 카테고리의 다른 글
Agile SCRUM 프로젝트 관리를 위해 Jira를 바꾸면 어떨까? (10) | 2024.11.07 |
---|---|
클라우드 네이티브, 마이크로서비스 아키텍처(Cloud native MSA) (2) | 2024.08.12 |