나의 Apple M1, 사용기(MacBook Air, 16G)

나의 Apple M1, 사용기(MacBook Air, 16G)

tl;dr

  • 가벼운 무게, 긴 사용 시간
    • 가볍고, 적당한 규모의 프로젝트는 충분히 개발 가능
      • 가벼운 규모란 3rd party 패키지나 라이브러리를 전혀 사용하지 않는 것
      • 적당한 규모란 잘 알려진 3rd party 패키지나 라이브러리를 사용하는 것
  • 개발 직군으로 현업에서 사용하고자 한다면 아래 사항을 참고 할 것
    • Android Studio에서 개발하는데 많은 불편함이 따르니, Android의 개발자는 대기
    • 3rd party 라이브러리의 경우 주의가 필요
      • Python의 Pillow, iOS의 Firebase 등은 현재(2021.05.09)까지 문제 발생

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

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

누군가는 휴식을 위해서 컴퓨터 켠다고 하는데, 나는 휴식을 위해서 컴퓨터를 종료한다. 회사에서 온 종일 개발을 하기 위해서 컴퓨터를 사용하다 보니 집에선 될 수 있으면 컴퓨터를 잘 사용하지 않는다. 심지어 집에 오면 핸드폰을 손에 잡지 않는다. TV에서 넥플릭스를 보거나 PS4를 등을 주로 사용한다.

회사 업무(논문과 강의?) 중 대부분은 외세 침략에 맞서서 표준을 무시하고 있는 HWP를 사용하기 때문에 macOS 기반의 기기를 사용해서 업무를 진행 할 방법이 없다. 업무 외적으로 필요한 코드나 개인적인 일로 인해서 개발을 진행하는 경우 2019년에 구매한 MacBook Pro 16"iMac 2017에서 진행하고 있다. 심지어 MacBok Prot 16"은 기업의 최고 기술 책임자(CTO) 버전으로 구매했기 때문에 향후 5년 정도는 Unix like system를 구매할 일이 있을까 싶었다. 2025년까지 컴퓨터를 더 구매할 일이 있을까 싶었다.

펜층이 두터운 16"

Cliché

그러던 어느날, ARM 기반 MacBook 성능이 기존 MacBook Pro 16" 보다 좋거나 비슷할것 같다는 루머를 접했다. 내가 MacBook Pro 16"를 가지고 있어서 그럴 수도 있지만, 루머라 생각했다.

설마 ARM이 Intel을 능가할까?

MacRumors에서 제공하고 있는 2020년 11월 11일 기사는 믿기 쉽진 않지만, 나름의 설득력을 가진 벤치마크를 공개했다. MacRumors의 벤치마크를 마냥 믿을 순 없지만, 무시할 수도 없었다.

Intel의 CPU 성능에 많은 의문이 제기되고 있었다. CPU의 생산 원가 절감 때문인지 공정을 개선하는 과정에서 발생한 기술적인 문제인지 알 수 없지만, 결론적으로 말해서 CPU 성능이 생각보다 좋지 않다. 아무리 Intel CPU의 성능이 좋지 않다고 하지만, ARM 보다 성능이 떨어질것으로 예상되지 않았다. ARM의 경우 저전력에 초점을 맞춰져 있고 MS의 경우 ARM 기반 하드웨어와 OS를 출시했지만 호환성 문제로 인해서 실용성이 낮다는 평가가 지배적이다.

무엇보다 Apple에서 만든 CPU가 Apple Silocn M1이다. 이름에서 알 수 있드이 1세대라는 점을 고려해보면 높은 성능을 기대하긴 쉽지 않다.

Apple에서 만드는 대부분의 1세대 제품은 사용자/구매자를 혼란스럽게 만든다. Apple에서 출시하는 대부분의 1세대 제품은 놀랍긴 하지만 원숙하진 않다. 그래서 많은 Apple 사용자들이 우스개 소리로 1세대는 거른다라고 말하는 이유다. 기존의 Apple 행보, 사용자/구매자의 적당한 펜심이 결합하면 아래와 같은 의식의 흐름이 예상된다.

  1. 듣기 좋은 루머와 각 종 유출 정보를 통해 약간의 기대감을 높여감
  2. 자신도 모르게 결제가 진행되고, 배송이 완료되고 조금 있으면 2세대 루머가 돌기 시작
  3. 역시, 1세대는 걸렀어야 해!라고 외치면서 1세대 제품에 적응
  4. 나도 모르게 적응 했기 때문에 2세대에 대해서 환상을 가지고 다시 기대감을 높여감
  5. 역시 2세대부터지!라고 말하며, 다시 [1]을 반복하고, n+1세대를 기다림

Apple의 1세대 제품은 정말로 '관망'하고 구매해야 한다는 것을 경험적으로 알게 된다.

하지만...

너무 좋은데? 정말이야?

2020년 11월 11일에 올라온 기사에 따르면 MacBook Air는 싱글 코어 약 1,700점, 멀티 코어 약 7,400점이다. 싱글코어 기준 기존 iMac 27", MacBook Pro 16" 보다 무려 400점 이상 더 높은 수치다. 단순히 400점이지만, 비율로 따지자면 약 30%이상의 성능 향상이다. 전혀 다른 아키텍처를 사용하는 x86 CPU라는 점을 무시한다고 해도, M1의 성능이 Intel에 비해서 매우 높다는 점은 확실하다.

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

이후, YouTube를 통해서 언박싱이 올라오고 1~2주 실제 사용한 사용기들이 업로드 되면서 M1 MacBook Air에 대한 루머가 사실로 밝혀졌다. 대부분이 벤치에서 보여준 드라마틱한 성능 향상은 아닐 수 있다고 했지만, 우리가 생각하는 것보다는 충분히 높은 성능을 보장한다고 했다. 무엇보다 성능에 대해서 극찬을 했다. 심지어 램은 8기가로 충분하다는 사용기도 올라왔다.

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

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

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

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

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

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

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

가벼운 무게를 기반으로 오래 사용할 수 있는 macOS 제품이라는 점은 굉장히 매력적이다. M1이 Intel 기반의 x86가 아니라는 점에서 오는 약간의 불편함(혹은 내면의 두려움)은 예상되었다. 당연히 해결책이 있을 것으로 기대했는데, 그것이 Rosetta 2라는 것이다.

예전에 나는 IBM에서 만든 CPU를 사용한 PowerBook 이라는 전혀 파워롭지 않은, 문자그대로 거지같은 노트북을 사용했었다. 그러던 어느날, Apple이 갑자기 CPU를 IBM에서 Intel로 변경하면서 나에게 제시한 것이 Rosetta라는 제품이었다. Rosetta는 빅 엔디안(big endian)-스몰 엔디안(small endian) 문제로 x86에서 실행 불가능한 PowerPC용 프로그램을 실행시켜준다. 실행만 시켜주는 것이 목적인 것처럼 실행 속도는 전혀 신경쓰지 않은 제품이다. OS X Lion에서 삭제된다.

Rosetta를 계승했다는 생각에 처참했다. 'brew' 없이는 프로그램 설치도 못하는 입장에서 x86을 지원하지 않는다는 점은 개발에 사용이 불가능하다는 뜻이다. 하지만 Rosetta 2에 대해서 다들 우호적이었다. 대부부느이 x86 제품을 실행할 수 있고, 거의(!) 대부분의 소프트웨어가 속도 저하를 느낄 수 없을만큼 잘 실행된다는 사용기와 후기가 계속해서 올라왔다.

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

그래서 생각이란 하기 시작했다.

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

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

왔다! 왔어!

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

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

Terminal.appRosetta를 적용하자

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

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

묻지말고 설치해!

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

모든 툴체인의 시작은 brew다. brew가 설치가 안되면 일단 iTerm2가 설치가 안되기 때문에 터미널조차 불편하다. 그렇다고 서버를 Django를 두고 swift로 작성할 순 없는 일이다. 내가 이 컴퓨터로 할 수 있는게 SwiftUI 밖에 없다는 생각에 망했다 싶었다. 난 생각이란걸 하기로 했고, 심지어 해결책도 찾았다.

생각먼저하자

일단 이런 문제가 발생한 이유는 Rosetta가 작동하지 않았기 때문이다. '그렇다! 로제타는 왜 작동하지 않는가?' 구글에 물어보니 해당 프로그램을 로제타로 사용하도록 설정해야 된다고 했다. '그냥 알아서 실행 좀 하지!'라고 생각했지만 내 마음속의 진심이 Apple에 닿을리가 없기에 직접 설정했다.

그럼에도 불구하고, 이걸 내가 설정하는게 말이되나 싶었지만, 받아들였야 했다. 괜히 1세대가 아니다. 여튼, 찾고 찾아서 터미널에 로제타를 적용하는 방법을 접하고 아래 그림과 같이 로제타를 사용할 수 있도록 옵션을 설정하였다.

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

동작한다!

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

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

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

App? 걱정하지 말자

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

알고보면 전부 Intel임

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

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

가끔 '이 프로그램은 왜 M1을 지원하지 않을까?'라고 말한다. M1의 경우 Rosetta의 성능이 좋아서 굳이 M1을 지원하지 않아도 잘 작동하기 때문이다. 그리고 M1 사용자가 늘어난다면 자연스럽게 지원될 것으로 예상된다.

근력없는 개발자들이여, MacBook Air를 구매해도 좋다. 단,JVM을 기반으로 한 언어를 사용한다면 아래 글을 계속 읽어보자.

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

JVM은 잘 작동한다. 초기 JetBrain의 프로그램들은 사용이 힘들만큼 이상하게 작동한다. 키보드 입력이 한걸음뒤에 있는 것 같았다. 입력 딜레이가 심해서 사용히 힘들었다. 어느날 Toolbox가 업데이트 되더니, M1을 지원하기 시작했다.

마법같이 모든 것이 잘 작동하기 시작했다. Spring Boot도 잘 동작했고, Kotlin도 잘 동작했다. PyCharm도 잘 작동했고, 안될 것 같았던 DataGrip도 잘 작동했다.

Screen-Shot-2021-05-09-at-10.37.44-PM

그런데 뭔가 허전했다. 고민끝에 임포스터를 찾았다. 우리의 친구, Android Studio가 M1을 지원하지 않고 있다. 여러가지 사정에 의해서 아직 M1을 지원하지 않는듯 했다. IntellJ 버전을 조금만 높이면 충분히 지원은 할 수 있는 것 같았고, 에뮬레이터 문제는 해결 중인 것으로 확인되었다.

없네?

결론

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

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

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

  • 2021.05.09. 글의 구조 및 내용 수정