규도자 개발 블로그

M1칩을 단 신형 맥북 말표. 그리고 구형 맥북을 사다. 본문

잡설

M1칩을 단 신형 맥북 말표. 그리고 구형 맥북을 사다.

규도자 (gyudoza) 2020. 11. 30. 23:35

난 항상 신형 맥북에 대한 기대가 많았다. 왜냐. 이때다 싶은 타이밍에 사려고 했기 때문이다. 몇 년동안 맥북을 사려고 벼르고만 있었다. 그리고 그때가 왔다. 바로 얼마 전 Apple silicon이라는 별명을 가진 M1칩을 단 맥북 에어와 맥북프로 13인치가 발표된 그 날이었다. 나는 그 발표를 보고 결심했다. 구형을 사기로.


그래서 난 2019년형 Intell i9칩이 달린 16인치 모델을 구입하였다. M1칩을 단 맥북의 발표는 내게 확신을 줬다. 2019년형이 마지막 인텔진영 맥북이 될 것이며 앞으로의 애플 제품은 ARM 아키텍쳐를 기반으로 한 것들이 될 것이라는 확신 말이다.

 애플은 항상 선발주자였고 다른 기업들도 결국 애플과 비슷한 길을 걸어가게 될 것이다. 하지만 그게 얼마나 걸릴까? 애플은 발표에서 ARM 생태계를 구축하는 데에 2년이라는 기한을 스스로 정했다. 예전에도 애플은 이러한 전환을 이룩했기 때문에 2년 걸린다고 했으면 2년이 걸릴 것이다. 하지만 이것은 '애플의 생태계'이다. 애플에서 공식적으로 지원하는 것들에 한정된 얘기다. 하지만 개발이라는 분야가 어떻게 흘러가는가. 하루가 멀다하고 새로운 것들이 쏟아져 나온다. 그러는 와중에 중요하게 대두되는 것이 있다. 바로 호환성이다. 난 M1칩을 단 맥북은 이 '호환성'이라는 것에 대해 보장할 수 없기 때문에 포기했다.


얼마전에 있었던 일을 예로 들어보겠다. 물론 예제이므로 실제 M1칩으로 개발했을 때의 상황과는 다를 것이다. 아무튼 난 요즘 리액트 네이티브로 앱을 개발하고 있다. 그러던 와중 .env파일을 불러오는 과정이 필요했고 기존 node와는 다른 작동방식을 갖고 있는 RN에서는 따로 env를 읽어올 수 있게 하는 node package가 필요했다. 그래서 설치해서 사용했다. 이것은 오픈소스 프로젝트로 진행되고 있고 잘 작동하지만 사소한 버그(.env가 babel에 캐싱돼서 변경된 .env를 적용하려면 .env를 불러오는 js파일을 한번 변경해줘야 한다는 점)를 안고 있다. 물론 현재 M1 맥북에서는 node runtime 적용이 끝나서 기존 인텔CPU 진영의 노트북과 똑같은 동작을 보일 것이다. 하지만 만약 안된다면? 그때부터 머리가 복잡해지는 것이다. 대형 개발사에서 제공해주는 안정적인 패키지와 환경만을 이용해서 내가 원하는 기능들을 전부 구현할 수 있다는 보장이 없으므로 개발자는 안전한 환경이 필요하다는게 내 생각이다.

 물론 이것은 사소하고 간단한 기능이라 env를 js파일로 구성한다던가(정석은 아니지만) 혹은 패키지를 만들어본다던가 하는 식으로 해결해볼 수 있겠지만 '잠재된 위험'이라는 요소는 개발자가 지양해야하고, 또 수없이 많은 디버깅을 하는 이유이기 때문에 굳이? M1? 개발용도로? 라는 생각이 드는 것이다.


나도 맥북에어에 달린 M1 CPU가 벤치마크 점수로 이 맥북에 달린 i9을 때려잡는 걸 봤다. 그럼에도 불구하고 크게 메리트가 느껴지진 않는다. 기존의 앱은 로제타스톤으로 돌릴 수 있느니, 가상화를 쓰면 되느니 뭐라느니 하지만 결국 다 호환성에 대한 문제에서 발생하는 이슈들이다. 심지어 실시간으로 M1칩에서 돌릴 수 있는 어플리케이션 목록을 공유하고 있는 사이트도 있다. (https://isapplesiliconready.com/) 그리고 특히 개발자들에게 치명적인 문제로 다가오는 것이 있다. 바로 docker의 미지원이다.


11월 30일 기준 아직도 미지원이다.

로제타스톤이고 나발이고 지원이 안 된다. 그리고 서버 컴퓨터들은 여전히 x86기반이다. M1에서 동작했던 앱들이 서버에 올렸을 때 작동되지 않을 수 있다. 이것도 '잠재적인 위험'의 하나이다. 현재 안드로이드 스튜디오도 실행 불가이고 php 또한 로제타스톤으로 돌려야 한다. 이렇게 작동 방식이 다른 환경에 의존적이게 될수록 잠재적 위험은 커진다. 요즘엔 한 가지 기술이나 언어만을 이용해서 개발하지 않는다. 다양한 도구와 언어를 이용해서 하나의 어플리케이션을 제작하게 되는데 이거따로 저거따로 의존하는 환경이 달라지는 것들이 뭉쳐서 하나의 결과물을 만들어냈을 때 그것이 다른 환경에서도 잘 작동할까? 거기에 나는 의문을 갖게 된 것이다. 이것이 해결될지, 혹은 해결하는 데에 시간이 얼마나 걸릴지 알 수 없기 때문에 그냥 마음 편하게 구형을 샀다.



p.s: 약 4백만원짜리 맥북을 사자마자 바로 뉴스에서 애플의 AS갑질에 대한 이슈가 터져버렸다. 얼떨결에 나는 호갱이 되었다. ㅎㅎ...ㅠ

Comments