tl;dr

  • 가볍고, 오래가는 노트북으로, 가볍게 사용하기에 더 없이 좋음
    • 여기서 가볍다 함은 요즘 제일 잘 나간다는 Python, Haskell, Elixir 등을 말함
  • 약간 규모있는 프로젝트도 가능함
    • 규모감 있다는 것은 Node.js, Go, Ruby 등을 말함
  • 개발 직군으로 생업을 유지하신다면 아래 사항을 참고하자.
    • JVM 관련 언어는 문제없지만 Air는 약간 아쉬우니 기다렸다가 더 좋은 걸 사자.
    • Android 개발자도 조금 기다렸다가 사자.

사용해야 되는 노트북이 무거우며, 무게를 줄일 생각하지 말고 근육을 키우면 된다. // 어느 DC인의 조언...

나에게 휴식은 컴퓨터를 끄는 일이고, 누군가에게 휴식이란 컴퓨터를 켜는 일이다.

우리집에 필요없는게 몇 개 있는데, 그 중에 대표적인 것인 건프라컴퓨터다. 누군가는 휴식을 위해서 컴퓨터 켠다고 하는데, 나는 휴식을 위해서 컴퓨터를 종료해야 된다. 당연하게도 집에서 컴퓨터를 사용할 일이 거의 없고, 본업인 논문은 잘 안 써지는 관계로 집에서 컴퓨터나 노트북을 사용할 일이 많이 없다.

대부분의 업무(나에겐 논문)는 외세 침략에 맞서서 표준을 무시하고 있는 HWP를 사용해야 함으로 macOS 기반의 컴퓨터를 사용해서 업무를 진행할 방법이 없다. 2019년에 출시한 MacBook Pro 16" 인치와 iMac 2017을 사용 중이기 때문에 들고다니거나, 거치할 컴퓨터가 더 필요하지 않다. 기업의 최고 기술 책임자(CTO) 버전으로 구매했기 때문에 향후 5년 정도는 시끄럽고 무거운 쇠덩어리로 포장된 Unix like system를 또 구매할 일은 없을 듯 싶었다. 결론적으로 말하자면, 컴퓨터를 또 살 일은 없다는 것이다.

펜층이 두터운 16"

Cliché

평온한 하루 하루를 보내던 어느 날, 나는 보고야 말았다. 새로운 ARM 기반 MacBook의 성능이 기존 16"보다 좋거나 비슷할것 같다는 루머를 접했다. 루머라 생각했다. 설마 ARM이 Intel을 능가할까 싶었다. 2020년 11월 11일에 MacRumors기사는 믿기 쉽진 않지만, 설득력 있는 벤치마크를 공개했다.

Intel은 원가 절감의 이유인지, 공정을 개선하는 과정에서 발생한 문제인지 모르겠지만 R&D 결과가 좋지 않은 것으로 알려졌다. 그렇다고 해서, ARM CPU에 성능이 뒤쳐질 것 같지 않았다. 그리고 ARM CPU를 제조하는 곳이 퀄컴이나 Nvidia가 아니고 Apple이라는 점, Apple Silocn M1이라는 이름에서 알 수 있드이 초기 1세대라는 점을 고려해보면, 루머가 확실해보였다.

무엇보다 Apple에서 만드는 거의 대부분의 1세대 제품은 사용자/구매자로써 약간의 고뇌를 하게 만든다. 아이패드 1세대, 아이폰 4 등을 사용한 경험에 비춰보면 뭔가 변경되는 시점에 가장 먼저 출시하는 제품에 대한 약간의 다답함이 있다. 예를 들어, 심리적 저항선이라 할 수 있는 1세대는 거른다라는 막연한 공포심과 Apple의 행보, 사용자/구매자의 펜심이 결합하면 아래와 같은 의식의 흐름이 예상되었다.

  1. 듣기 좋은 루머와 각 종 유출 정보를 통해 믿음과 설레발을 높아짐
  2. 나도 모르게 결제가 진행되고, 그 때 Apple은 2세대 루머를 흘리기 시작함
  3. 역시, 1세대는 걸렀어야 해!라고 외치면서 1세대에 적응함
  4. 나도 모르게 적응한 장점 때문에 2세대에 대해서 환상을 가지고 믿음과 설레발을 고취함
  5. 2세대를 구매, 역시 2세대부터지!라고 말하며, 다시 [1]을 반복하고, n+1세대를 기다림

여튼, 1세대 MacBook은 애매하게 느껴지고 알 수 없는 의심속에서 약간의 기대를 가지게 하는 제품이었다.

너무 좋은데? 정말이야?

2020년 11월 11일에 올라온 기사에 따르면 깡통 MacBook Air 기준으로 싱글 코어 약 1,700점, 멀티 코어 약 7,400점이다. 싱글코어 기준 기존 27" Retina 5K iMac, 16" MacBook Pro 보다 무려 400점 이상 더 높은 성능이다. 수치적으로 400점이라곤 하지만 약 30%이상의 성능향상이다. Intel과 경쟁했다는 점을 전제로 한다면, M1의 성능이 Intel에 비해서 매우 높다는 점은 확실하다.

혹시 벤치마크 프로그램에 오버피팅(Overfitting) 한걸까? 하는 의구심이 들었다. 심지어 다른 벤치마크에선 AMD Ryzen 5600X와 비슷한 싱글코어 점수를 보면서 벤치마크 프로그램의 오류가 아닐까? 생각했다. 더욱이 1세대라서 그럴리 없다.라고 약간의 심증을 가지고 벤치마크를 보고 있으면 뭔가 마뜩치 않은 지점이 가득했다. 스펙과 벤치마크에 대한 불안감이 많았다. 그 중에서 제일 큰 이유는 심리적인 것으로 '1세대가 이렇게 좋을리 없다'라는 감정이 계속해서 마음에 회전회오리슛을 날리고 있었다.

계속해서 각 종 벤치마크는 Intel과 비벼볼만하다라고 말했다. YouTube를 통해서 언박싱이 올라오고, 1~2주 정도 실제 사용한 사용기들이 업로드되면서 MacBook에 대한 루머가 사실로 밝혀졌다. 대부분이 벤치에서 보여준 드라마틱한 성능향상은 아닐 수 있다고 했지만, 우리가 생각하는 것보다는 충분히 높은 성능을 보장한다고 했고, 실제 사용에 대해선 하나같이 극찬을 했다. 심지어 16기가 모델이 필요없을 것 같다는 사용기도 올라왔다.

뭐지? 이 벤치마크는? 팀킬한거야?

무게와 성능은 등가교환이다.

Intel에 비해서 성능이 약간 부족하다는 것을 단점으로 부각하기엔, MacBook Air의 무게와 놀라운 사용시간은 내 마음을 흔들어 놓았다. 국내보다 먼저 배송을 받았던 많은 사용자들의 사용기와 나같은 신도들의 간증이 각 종 커뮤니티와 YouTube를 통해서 널리 알려지기 시작했다. 일단 사용시간이 14시간이고, 펜(fan)이 없어서 조용하고, 발열도 생각만큼 높지 않다고 했다. 최소한 들고 다니기엔 무리가 없고, 들고 다닐 목적으로 만들어진 제품이다.

우리집에 있는 16" MacBook Pro는 사용시간이 3시간 남짓이고, 펜(fan)이 많아서 그런지 자신의 존재감을 언제나 드러낸다. Android Studio만 실행해도 날자. 날자. 날자. 한번만 더 날자꾸나를 외치는 친구다. 그리고 16"를 휴대하기엔 너무 무거웠다. 3Kg 알류미늄을 들고 다니는 입장에서 허약한 나의 근력이 버텨주질 못하고 있다.

무거워서 좋은건 스피커와 노트북밖에 없는데, 두 개의 결정적인 차이는 스피커는 들고 다니지 않고, 노트북은 들고 다닌다는 점이다. 이런 모든 것을 고려해 봤을 때, MacBook Air는 매력적인 친구였다. 가볍고, 오래간다. 그리고 Intel에 비벼볼만하다. 그렇다! 이거다!

스피커와 노트북은 무거울 수록 좋다.

이유를 만들자. 사야되니까.

가벼운 무게를 기반으로 오래 사용할 수 있는 macOS 제품이라는 점에선 너무나 매력적이다. M1이 Intel 기반의 x86-64가 아니라는 점에서 오는 약간의 불편함(혹은 내면의 두려움)은 예상되었다.

옛날의 나는 PowerBook이라는 전혀 파워롭지 않은 거지같은(DVD는 언제나 말썽이었다.) 노트북을 사용했다. 그러나 PowerBook을 사용할 때는 슬프거나 힘들지 않았다. DVD가 고장나도 언제나 그렇듯이 수리하면 된다.

하지만 오늘의 나는 DVD는 없어도 brew 는 필요하다. brew 없이는 프로그램 설치도 못하는 입장에서 Intel 정확히는 x86-64를 지원하지 않는다는 점은 불안과 동시에 꺼림직했다. 예전에 MS에서 뭔가 하려다 잘 안되었다는 기사가 머리속에 남아있고, x86-64를 등지고 성공한 사례가 거의 없기도 했다.

x86-64와 ARM은 친해지기 힘들었던 것 아니야?

이럴때 우리에게 필요한 것은 성공의 사례를 찾거나, 성공할 수 있는 믿음의 공식이다. x86-64를 지원하지 않기 때문에 Apple에서 로제타(Rosetta)를 제공한다고 했다. 나는 '로제타'를 사용한 적이 있다. 그리고 오래전 일이지만, Apple에서 제공한 첫번째 로제타였다. 앞선 Apple의 클리셰를 충실히 따르자면, 이번 로제타는 쓸만해야 한다.

MacBook Air의 위험은 CPU다. 하지만 로제타는 개선버전이다. MacBook Air M1이 1세대이기 때문에 약간 불안하다고 가정하자. 그럼 이 불안감을 2로 나누면(왜? 그냥...!), 이번 선택에 대한 불안감이 많이 줄어들 것으로 예상되었다(놀라운 경험적 인사이트이지 않은가?). 즉, 망하진 않을 것 같았다. 왜냐하면 로제타가 2세대이기 때문이다(내가 생각해도 신박한 논리다!). 힘들게 이유를 만들었으니, 구매하기로 했다. 나의 구매 사유는 아래와 같다.

  1. 16" 친구에겐 미안하지만, 도저히 들고 다닐 근력이 없음
  2. (사야되니까 생각해보니) 크롬만 돌아가도 충분할 것 같음(새빨간 거짓말이지만 마음만은 그렇다)
  3. 로제타가 2세대니까, x86-64를 지원하지 않아도 될 것 같았음

2020년 12월 23일에 카드사 협찬으로 크리스마스 선물을 받았다. 협찬의 댓가는 말하지 않겠다.

왔다! 왔어!

[MacBook의 시시각각]한 달 후, MacBook Air

이건 그냥 현실이다. 매일 매일 일어날 일이다.

Terminal.appRosetta를 적용하자

처음에 해당 제품을 받고, 설정을 시작했다. 언제나 그렇듯이 Xcode를 먼저 설치한다. 윈도우 설치하고 누군가는 Steam/Epic/Origin launcher 설치 할 때 난 Visual Studio, Visual Studio Code, IntelliJ 를 설치한다. 무슨 말인가 하니, 습관처럼 Xcode를 설치했다. Xcode를 설치하니 용기가 하이브리드샘이솟아서 당장에 brew를 설치하려고 Terminal을 실행했다.

처음부터 안될지 몰랐다. 화면에 오류에 관한 내용만 출력되기 시작했다. 일단 뭔가 안된다는데 왜 안되는지 모르겠고(뭐?! brew라고? 하필?), 설치하겠다는데 아니오를 누르면 화를 내면서 너 두고보자 이렇게 말하는 것 같았다. 이런 상황에서, PC방 사용 경험(PUX)을 살려서 예, 예, 예를 누르기 시작하니 이젠 평온한 말투로 에러가 난다.

묻지말고 설치해!

거친생각과 불안한 눈빛으로 화면을 보고 생각이란걸 하기 시작했다. 일단 brew 없이는 python 없고, python 없이는 Django/flask도 없다. 그리고 brew 없이는 ruby(>=3.0)도 설치가 안되고, 더 나아가서는 node.js와 Java(>= 16)도 설치를 못한다.

모든 툴체인의 시작은 brew다. brew가 설치가 안되면 일단 iTerm2가 설치가 안되기 때문에 터미널이 불편하고, 심지어 간단한 서버는 swift로 작성해야 되는데 그건 너무 힘들다. 현재 내가 이 컴퓨터에서 사용할 수 있는게, SwiftUI 밖에 없다는 생각에 망했다 싶었지만, 난 생각이란걸 했기로 했고, 심지어 해결책도 찾았다.

생각먼저하자

문제는 로제타가 작동안하는 것 같았다. '그렇다! 로제타는 왜 작동하지 않는가?' 구글에 물어보니 해당 프로그램을 로제타로 사용하도록 설정해야 된다고 했다. '그냥 알아서 실행 좀 하지!'라고 생각했지만 내 마음속의 진심이 Apple에 닿을리가 없기에 직접 설정했다. 그럼에도 불구하고, 이걸 내가 설정하는게 말이되나 싶었지만, 받아들였야 했다. 괜히 1세대가 아니다.

여튼, 찾고 찾아서 터미널에 로제타를 적용하는 방법을 접하고 아래 그림과 같이 로제타를 사용할 수 있도록 옵션을 설정하였다.

터미널의 종류에 대해서...

동작한다!

드디어 brew를 설치하였고, 내가 작성한 블로그 기사 중에서 미래의 나를 위해서 만들어 둔 개발자를 위한 macOS(>= Big Sur) 설정을 보고 따라하기 시작했다.

일단 내가 사용하는 대부분의 프로그램이 문제없이 작동하는 것을 확인했다. 90년대는 위스키, 브랜디, 블루진, 하이힐, 콜라, 피자, 발렌타인이였다면, 21세기는 Python, Haskell, Elixir가 대세라 생각하고 당당하게 pyenv, stack, elixir부터 설치했다.

Haskell도 M1에서 문제 없이 동작한다. 이상하게 잘 동작하는 것 같아서, 의심스러웠지만 잘 되는걸로 봐서는 잘 되나보다 싶었다(잘 되면 고민하지 않기로 했다. 잘 되니까!).

App? 걱정하지 말자

사용하는 프로그램도 문제없이 작동한다. M1 기반으로 동작하지 않는 프로그램도 별다른 걱정없이 사용할 수 있다. 대부분의 프로그램을 걱정없이 사용할 수 있다. 내가 사용하는 프로그램 중에서 가장 마이너한 친구들인 LaTeX 편집기도 잘 작동한다.

알고보면 전부 Intel임

'잘'은 모르겠지만, 작동한다.

누군가 모든 프로그램이 M1에서 잘 동작하느냐 묻는다면 글쎄요? 라고 말하겠지만, 작동하는냐? 라고 묻는다면 라고 답하고 싶다. 작동한다. 최소한 내가 사용하는 범위에서 작동하지 않는게 없을만큼 잘 작동한다.

가끔 친구들이 '이 프로그램은 왜 M1으로 안 바꿔주지?'라고 말하지만, 안 바꿔도 잘 돌아가고 꾸준한 구독과 소비는 해당 프로그램의 최적화를 가속화 시켜줄테니 너무 걱정하지 않아도 된다. 그러니 왜 M1을 지원하지 않는가를 걱정하지 말고, 구독과 후원을 얼만큼 해야되는가를 걱정하자. "No Gain, No Pain"이라는 멋진 말이 있듯이 우리도 "No Money, No M1"이다.

그러니 근력없는 개발자들이여, MacBook Air를 구매해도 좋다. 단, JDK기반 언어사용자라면 글을 계속 읽어보자.

문제는 JVM이 아니라 Android Studio다.

JVM도 잘 작동한다. JVM은 잘 작동했는데, JetBrain의 프로그램들이 이상했다. 키보드 입력이 한걸음뒤에 있는 것 같았다. 한박자 쉬고, 두박자 쉴 때 동작하는 듯 했다. 그런데, 어느날 갑자기 뭘 업데이트 하더니, M1을 지원하기 시작했다. 4885를 쫒아가는 중호처럼 JetBrain팀은 엄청나게 빠른 속도로 M1을 지원하기 시작했다.

마법같이 모든 것이 잘 작동하기 시작했다. Spring Boot도 잘 동작했고, Kotlin도 잘 동작했다. PyCharm도 잘 작동했고, 안될 것 같았던 DataGrip도 잘 작동했다. 그런데 누군가 없다. 고민끝에 임포스터를 찾았다. 우리의 친구, Android Studio가 Intel에만 있다. 현재는 여러가지 사정에 의해서 아직 M1을 지원하지 않는듯 했다. IntellJ 버전을 조금만 높이면 충분히 지원은 할 수 있는 것 같았고, 에뮬레이터 문제는 해결 중인 것으로 확인되었다(이번 기회를 틈타서 SwiftUI를 잘 배워보기로 했다. M1 기반이라면 이번에 SwiftUI나 React Native를 배워보자. 뭐.. 별수 있나 안되는데...?)

없네?

그리고 Docker도 아직 지원이 원활하지 않다. 되긴 한다. 하지만 우리는 된다고 해야 할지 안된다고 해야 할지 모를 땐, 안된다고 하는게 우리 삶의 원칙 아니던가. 그러니 Docker를 사용하셔야 된다면 조금 기다려보자. Docker의 경우 Beta가 막바지인 것 같으니, 너무 걱정하지 말고 기다려보자.

마지막으로...

가벼운 무게와 장시간 사용을 필요로하는 분들에게 적합하다. 윈도우가 안되는게 단점이 될지는 모르겠지만, 윈도우 사용에 대한 의존도가 높지 않다면 대부분의 업무는 Air에서 충분히 진행할 수 있다.

Android 개발 등과 같이 생각하지 못했던 부분, Docker등과 같이 생각보다 느린 대응 때문에 조금 귀찮을 순 있지만 무게와 사용시간을 고려한다면 이 단점은 커버할 수 있을 듯 하다. 그리고 조금만 기다리면 충분히 해결될 것으로 예상된다.

무엇보다, 가벼운 Unix like system이 고민이라면 추천한다.