- Published on
블로그 개발일지 4
- Authors
- Name
- JaeHyeok CHOI
- none
우여곡절
블로그 개발을 한지 꽤 많은 시간(2~3주) 후 글을 작성한다.
v1.1 버전으로 완성된 블로그를 내가 갖고 있던 라즈베리파이3 B+ 에 올리기 위해서 여러 환경 설정을 해준 후 yarn을 통해 블로그 프로젝트에 사용되는 패키지들을 다운로드 해주었다.
이 때 까지만 해도 큰 문제가 없겠거니 했지만 아주 큰 오산이었다.
첫 번째 문제 - SWC
Failed to load SWC binary for linux/arm
Next.js가 라즈베리파이의 ARM 아키텍처에서 SWC 바이너리를 찾지 못하는 에러다. Next는 SWC를 사용하여 더 빠르게 컴파일 될 수 있도록 설계되었다. 하지만, ARM 환경에서는 SWC의 바이너리 지원이 제한적일 수 있다.
해결 방안에는 두 가지가 있다고 한다.
- Babel 사용
- SWC 바이너리 설치 시도
두 번째 선택지는 SWC에서 라즈베리파이3를 위한 바이너리를 만들었어야 해결되는 부분이라서 이것은 논외.
그럼 Babel을 사용하는 방안이다.
module.exports = {
swcMinify: false,
}
SWC 사용을 비활성화 하여 Babel을 사용하는 부분으로 적용하고자 하였으나, 무슨 연유에서인지, 똑같은 에러만 내뱉고 전혀 동작하지 않는다.
대안
좋다. SWC가 ARM Linux에 대한 지원을 하지 않아서 발생한 문제라고 한다면, 다음 대안은 Docker. Docker 컨테이너를 사용하면 CPU 아키텍처와 상관없이 동작하는 애플리케이션을 만들 수 있다.
두 번째 문제
사실 이 문제 때문에 시간이 가장 오래 걸렸다. 결론부터 말하자면, 메모리 문제였다. 라즈베리파이3 B+ 모델의 RAM은 1GB 이다. OS 올라가고 기타 다른 프로그램들과 Docker를 사용하게 되면 남은 메모리는 몇 백 MB일 것이다.
푸념
꼴에 임베디드 좀 안다고 최적화 최적화를 외치면서 라즈베리파이에 내 블로그 프로젝트를 올리면 멋지겠지? 라는 생각에 올릴 생각만하고 앞으로만 달리다가 이 꼴이 났다. 진작부터 프로그램의 전체 메모리 사용량을 알고 설계 했다면 이런 선택을 하지 않았을 것이다.
NextJS의 메모리 사용량은 2GB의 메모리 환경에서는 힙메모리 사용량이 1.5GB까지 사용할 수 있다고 한다.. 따라서 라즈베리파이3 에서는 NextJS 프로젝트를 실행 시키기가 어렵다..
결론
이 결론을 내는데 까지 3일 가까이 걸렸다. 그래서 라즈베리파이5 를 구매하여 SSD HAT을 붙여 사용하고자 하였다. 하지만, 그 가격이 15만원 상당이었고, 요즘 유행하고 있는 N100 미니 PC의 가격 또한 15원 선이었다. 128GB SSD에 16GB 램 까지 붙여 있는데, 똑같은 15만원? 게다가 N100은 이미지 처리까지 할 수 있는데? 라는 생각에 결국 N100 미니 PC를 구매했고, 전력 소모 또한 시간당 3W 차이 이길래 고민없이 선택했다. 알리에서 주문한 거라 1주일 정도 걸렸고, 그 동안에 ALINX 사의 보드를 가지고 이것저것 공부하면서 놀았다.