← 뒤로    메인
English    ☾

우리 집으로 가자
입력 2023.01.24. 16:03 · 수정 2023.01.30. 00:32 · 라이선스
라이선스


오늘 gunh.ee 서버의 성공적인 이더넷 연결을 자축하며 쓰는 글이다.

gunh.ee에 관한 충격적인 사실이 하나 있는데 그것은 바로 이를 호스팅하는 서버가 우리집 거실 TV 뒤에 위치한 라즈베리파이라는 점이다.

21년 12월 13일 처음 전원에 연결했을 때 찍어놓은 사진

많고 많은 호스팅 서비스를 두고 왜 서버 컴퓨터를 직접 구축하는 힘든 길을 선택했냐 하면...

호스팅 서비스를 사용할 경우 그 종류는 크게 두 가지로 나뉜다: 공유 호스팅과 VPS 호스팅. 전자는 웹사이트를 개시할 수 있는 가장 저렴한 방법이고 대학교 1학년 가을학기에 연 내 첫 사이트도 이 방법을 사용했다. 문제는 저렴한만큼 활용도가 떨어진다는 것. 가장 간단한 형태의 웹사이트가 돌아가는데 필요한 프로그램은 모두 지원했지만 그 외의 것을 실행할 수는 없었다. 물론 아는 게 많이 없었던 그때의 나에겐 충분히 유용했고 주어진 프로그램으로 실컷 놀고 배웠다.

시간이 흐르고 4학년 말이 됐을 때 난 내 새로운 서버로 훨씬 더 많은 걸 해보고 싶었다. node.js로 직접 웹서버를 짜서 돌리고, API를 만들고, 웹이 아닌 다른 용도에도 써보고 싶었다. 그러려면 VPS 호스팅을 써야 했다. VPS 호스팅에서는 물리적인 기기만 나에게 없을뿐 내게 할당된 공간 안에서 어떤 프로그램이라도 설치해서 쓸 수 있었다. 1학년 때 썼던 호스팅 업체에서도 VPS 호스팅을 지원했지만 자원 할당의 유연함과 평판 등을 들어 이번에는 AWS EC2를 써보기로 했다(EC2는 가상화 정도에 있어 VPS와 다소 차이가 있다고는 하나 어쨌든 비슷).

나름 공들여 만들었던 임시 랜딩페이지

실제로 EC2 인스턴스를 만들어 도메인 연결까지 마치고 임시 랜딩페이지를 띄워놨다. 한두 달 정도가 지나고 인스턴스 사용료가 통장에서 빠져나갔다. 비용이 정확히 얼마였는지는 기억나지 않지만 감당하지 못할 수준은 아니었다. 하지만 매달 돈이 나갈 거리가 있다는 게 찜찜했고 가능하다면 이를 아끼고 싶었다. 그때 우리집에서 굴러다니던 라즈베리파이가 생각났다.

실물이 없는 소비는 아무래도 심리적 장벽이 높다

1년쯤 전에 과방에서 주워온 Raspberry Pi 3 Model B+ 2대였다. 본체가 부속 센서, 전선과 함께 상자에 담겨있고 필요한 사람 가져가라고 뚜껑에 적혀있었다. 전공 수업이나 사이드 프로젝트 마치고 남은 것들이었나보다. 그럴 생각으로 데려온 건 아니었지만 서버로서 손색이 없을 것 같았다. 성능이 구릴 건 분명했지만 어찌되었든 하나의 온전한 컴퓨터고 떨어지는 성능만큼 가만히 짱박아두기가 아깝지 않을테니까.

학기가 종강하자마자 서버 구축에 돌입했다. EC2 때보다 할 게 훨씬 많았다. EC2는 원하는 운영체제를 선택하고 포트 규칙 몇 개만 설정해주면 바로 원격 SSH 접속이 가능했는데, 라즈베리파이의 경우 주 저장소가 되는 SD카드를 포맷하고 - 우분투 이미지 파일을 받아서 부팅하고 - 네트워크 연결하고 - SSH에 포트포워딩하는 이 모든 걸 직접 해줘야 했다. 라즈베리파이에는 화면이 없는데 그렇다고 내가 외장모니터가 있던 것도 아니어서 거실 TV에다가 HDMI로 연결해놓고 바닥에 철푸덕 앉아서 작업했다. 서버가 TV 뒤에 자리잡은 것은 공유기가 가깝고 물건 이동이 잦지 않다는 이유도 있지만 SSH 연결 전까지 모든 CLI 작업을 TV를 보고 해야 했기 때문이 가장 크다.

사나흘을 거의 이거에만 매달렸다. SSL 인증서 발급해서 HTTPS 연결 뚫고 로컬에서 작성해오던 Vue.js 프로젝트 빌드해서 서버에 올리고, 마침내 아이폰으로 정상 접속을 확인했을 때 얼마나 기뻤는지 모른다.

21년 12월 18일

그때 찍어놓은 스크린캡쳐. 지금 게시물 보기 페이지와 다소 차이가 있다. 지금은 커버 이미지도, 헤더 이모지도 없다.

나는 이 사이트가 트렌디하면서도 담백하길 바랐다. 개발을 시작할 때 개인적으로 노션의 디자인이 아주 괜찮다고 생각하던 터라 노션 페이지 하나를 HTML로 내보내서 스타일시트를 싹 긁어왔다. 필요에 따라 일부 수정은 했지만 대체로 스타일을 유지하며 페이지들을 만들어나가고 있을 때 문득, 이게 담백한가?라는 의문이 들었다. 노션 페이지에 자주 등장하는 이모지들은 젊고 산뜻했지만 한편으로는 산만한 느낌을 주기도 했다. 특히 글이 주가 될 내 사이트에서는 글의 압축률을 떨어뜨리는 요인이 될 것이었다. 그래서 이모지와 이미지는 필요한 곳에만, 유채색 사용을 최대한 줄이고 페이지가 담백함을 유지하도록 계속 다듬어나갔다.

사이트를 만들면서는 조선일보 사이트의 디자인이 괜찮다고 생각했고(정치 성향과 무관) 작년 말에 뉴욕 여행하면서 들어가 본 MoMA와 휘트니 미술관의 것도 지향하는 바가 비슷하다고 느꼈다. 세 개 다 들어가보면 내가 추구하는 느낌이 어느 정도 보일 듯.

사실 위의 개발기는 이 사이트의 첫 번째와 두 번째 글에 쓸 내용이었다. 하지만 당시에 배우고 느낀 수많은 점들을 한 글에 모두 담으려고 하다보니 중간에 지쳐버려서 결국 글을 완성하지 못하고 내팽개쳐두었다. 많은 걸 망각한 지금이 되어서야 전체 과정이 앉은 자리에서 정리가 되네.

  • 참고 소스들 메모해둔 것도 그냥 여기에다 덤프해놔야겠다
⋮

요점은 이 사이트가 우리집 TV 뒤 조막만한 라즈베리파이에서 돌아간다는 거다. 즉 당신이 gunh.ee에 접속할 때마다 만들어내는 신호는 우리집을 들렀다가 당신의 기기로 되돌아간다.

...

다시 오늘로 돌아와서. 서버가 live된 이후로 블로그 글 올리는 것 외에도 꽤 많은 용도로 이 친구를 사용해왔다. 무엇보다 웹서비스 배포 시험용으로 쓰기가 아주 편리했다. 새 도메인을 파서 배포하려면 도메인 새로 사랴, 호스팅 서비스 구하랴, DNS propagation 기다리랴 이게 다 돈과 시간이었는데 gunh.ee에 서브도메인 하나만 새로 파면 이 모든 문제가 해결되는 것이었다.

WLAN에 의존하던 라즈베리파이를 이더넷으로 연결시키자는 오늘의 생각도 새 서비스를 gunh.ee에서 시험해보고자 하던 도중 든 것이다. 수많은 요청-응답을 시험해보기 전 서버 연결을 최적화하는 게 우선일 것 같았다.

사실 이더넷 전환 시도는 오늘이 처음이 아니었다. 블로그 글에 이미지 로딩 속도가 너무 느리다는 생각을 항상 하고 있었다. 처음에는 라즈베리파이 연산 속도가 느려서일거라고 생각했는데, 곰곰히 생각해보니 그것보다는 이미지 크기와 연결 속도가 문제일 것 같았다. 이미지는 아이폰에서 찍은 수 MB짜리 원본이 압축 없이 그대로 들어가고 연결은 무선이니 환장의 조합이 아닐 수 없었다. 이미지 크기 문제를 해결하려면 자동 압축 파이프라인을 만들어놓아야 하는데 그건 너무 귀찮고, 일단 연결 상태라도 개선해보고자 했다.

정상적인 상황이라면 랜선을 꼽기만 해도 자동으로 연결이 수립되어야 하는데 그렇지 못했다. ifconfig를 찍어보니 이더넷 인터페이스 자체가 리스트에 없었다. 온 구글을 뒤져보았지만 어떤 해결 방법도 나한테 적용되지 못했다. 결국 일단 WLAN 현상 유지. 그게 한두 달쯤 전이다.

상황에 변화는 없었지만 오늘 다시금 필요성을 느끼고 착수. 저번과 비슷한 방법들을 다시 시도해봤고 진전은 없었다. 최후의 수단으로 놀고 있던 다른 라즈베리파이(이하 B)를 시도해보기로 했다. 주 저장소인 SD카드만 갈아끼우면 되기 때문에 전환은 쉬웠다. 문제는 B가 이전에 서버로서 활용에 실패한 이력이 있다는 것. B는 지금 돌아가던 애(이하 A)와 달리 프로세서와 랜컨트롤러에 방열판이 달려있어서 가능하다면 B를 쓰고 싶었는데, 부팅 후 HDMI로 터미널이 안 떠서 B를 버리고 A로 갈아탈 수밖에 없었던 것이다.

때문에 B를 전원에 연결하면서도 반신반의하고 있었는데, 어라? 터미널이 이번엔 뜨네? 곧이어 기대하는 마음으로 랜선도 연결해봤는데 ! 이더넷이 잡혔다. 처음부터 되진 않았고 집에 있던 랜선 여러 개를 시도하다 보니 하나가 갑자기 됐다. 하필이면 그 랜선이 다른 곳에도 활용할 수 있는 가장 긴 놈이고, A에 어떤 문제가 있는 건지 밝혀내지 못한 건 많이 아쉽지만... 그래 뭐 어때, 돌아가면 된거야. 이제 방열판도 달려있으니 더욱 잘 됐다.

돌아가면 된거야

저장소 내용은 동일해도 라즈베리파이가 바뀌면서 MAC주소도 같이 바뀌어서일지 기기의 private IP도 172.30.1.20에서 172.30.1.77로 바뀌었다. 때문에 SSH와 HTTP 연결이 모두 막혔는데, 라우터에서 포트포워딩 설정을 수정해주니 바로 복구됐다. 예전에는 해결에 반나절 걸렸을 일이 이제는 대충 상황 파악이 되고 바로 문제를 해결할 수 있다. 이럴 때 성장했음을 느끼고 기쁘다.


랜선이 연결된 B.
우리 오래오래 가자 라즈베리파이야

#CS #웹개발 


제 뉴스레터를 구독하시면 새 글이 올라왔을 때 이메일을 받아보실 수 있습니다.


다음글: 첫사랑

이전글: 21세기 불멍


목록으로

© 2026 이건희