맥 미니로 홈서버를 구축하며 #2
💻기술/DevOps

맥 미니로 홈서버를 구축하며 #2

반응형

 

이전 글

 

 1편은 맥미니를 사게 된 결정적인 이유와, 홈서버의 목적이 기록된 글이다. 이 포스트는 지금까지 어떤 조건에서 홈서버를 운영해왔고, 대략 4년간 홈서버 3대를 돌려본 사람으로서 홈서버의 선정기준을 공유하려고 한다.

 

https://devent.tistory.com/174

 

Mac mini로 홈서버를 구축해보며 #1

사건의 발단  지난 3년간 LG 14인치 그램과 HP 노트북 2대로 홈서버를 구성했었다. 그러던 중 오랜 기간 플러그가 꽂힌 채로 배터리 과열이 생기게 되었고 결국 배터리가 부풀어 오르는 현상이 발

devent.tistory.com

 

 

 

맥 미니 서버를 구축하기 까지

 

 LG 그램 14인치로는 간단한 웹서버를 구축하는데 문제가 없었다. 그러나 동시접속자가 늘고 사이트의 트래픽이 무거워지면서 점차 부하가 생기기 시작했다. 결국에는 배터리가 부풀어서 더 이상 사용할 수 없는 상태로까지 이르게 되었다.

 

 

실제 홈서버로 사용한 그램

 

 

 기본적으로는 그램 윈도우에 내장된 IIS를 사용했다. 이후로 HP 프리도스 노트북 서버를 구매하여 그램 노트북 사망 직전까지 역방향 프록시로 웹서버를 가동했다. 다만, 여기서 문제는 그램 노트북의 역방향 프록시 성능이 최악이었던 데다가 HP 노트북 또한 그리 좋은 성능이 아니었다는 점이다. 그래서 HP 노트북에서 socketio 기반으로 소켓 통신용 웹서버를 돌리고 그램에서 역방향 프록시를 활성화한 다음 apache + letsencrypt로 SSL 세팅해주고 접속해보면 겁나 느리다

 

 말로는 이 고통을 설명할 길이 없으니 사진으로 축약해보겠다.

 

 

 사실 이 구성으로 이전까지 웬만한 서비스를 호스팅 하는 데에는 문제가 없었다. 실시간 서비스를 배포하기 이전까지는 말이다. 현재 내 기술 스택은 대부분 NodeJS로 구성되어있는데 Node와 찰떡궁합인 Socket.io를 참 애용하고 있다. 그렇다 보니 이 구성으로 실시간 서비스를 돌리다 보면 프록시를 두 번이나 거치게 되는 문제가 발생하여 상대적으로 느려질 수밖에 없다. HP 노트북은 부하를 견딜 수 있지만, 그램은 그렇지 않았기에 생긴 병목문제였다. 

 

 이런 상황에서 홈서버를 바꿔버리고 싶었지만 그러자고 다시 홈서버를 구매하기에는 AWS를 사용하는 게 훨씬 이득이었다. 심지어 마이그레이션도 용이하고 확장성도 몇 번 클릭하기만 하면 된다. 최상위 네트워크 서비스에 여러 보안 서비스를 두고 있는 AWS는 사용하지 않을 이유가 없었다. 그런 이유로 지금까지도 실시간 서비스를 돌릴 때면 AWS를 사용한다. 그러나 테스트 배포나 개발과정에서 필연적으로 테스트베드가 필요할 수도 있다. 그동안은 홈서버에서 북 치고 장구치고 다 해도 추가 비용 청구나 트래픽 요금이 정산되는 일은 없었다. 어차피 내 집인데 말이다. 

 

 이를 해결하기 위해 테스트 배포는 로컬에서만 진행하고 ngrok으로 간편하게나마 외부 테스트를 진행해왔다. 그럼에도 번거로운 설정은 언제나 골칫거리였다. 

 

 

의존성 문제 + 안정성

 

 사실상 처음부터 컨테이너 기반으로 서비스를 운영했어야 하는데 그러지를 못했다. 어쩌다 보니 명령어 한 줄만 잘 못 입력해도 전체 서비스가 날아가는 일이 허다했고, 안정성은 쥐꼬리만큼도 없었다. 갑작스레 팬이 위이이이잉 거리지를 않나, CPU 열기가 핫팩 이질 않나. 동시에 의존성 문제까지 겹쳐져 패키지 하나를 지워버리면 다른 패키지에도 문제가 발생했다. 여기에 더해 서비스마다 지원하는 버전이 각기 다른데도 한 서버에서 4개가 넘는 서비스를 동시에 돌리니 너무나도 당연한 결과였다.

 

 이를 해결하기 위해 도커를 도입했다. 각 서비스별로 의존성을 맞추지 않아도 되어서 좋았고, 특히 개발환경과 똑같은 환경으로 유지할 수 있다는 점에서 신세계였다. 누군가는 "아니 홈서버에 도커가 필요해"라고 질문할 수도 있다. 일단 홈서버를 운영하고 있다면 꼭 한번 적용해보시라. 정말 편하다.

 

 

모두를 위한 홈서버 선택 기준

 

 

1. 간단한 개발용, 정적 호스팅

 

 홈서버 필요 없다. 깃허브 page만으로도 충분히 가능하다. 집에 남아도는 노트북이 있다면 경험 삼아 구축해보는 것도 좋다.

 

 

2. 정적 파일 배포용, 간단한 동적 서비스

 

 예를 들어 코로나 대시보드 사이트나 간단한 API 시각화 서비스의 경우 1 코어 4GB 정도의 리눅스로도 충분하다. 또는 저렴한 라즈베리파이로도 구축할 수 있으니 저성능 컴퓨터로도 충분하다.

 

 

3. 간단한 커뮤니티 사이트, 블로그

 

 워드프레스나 간단한 커뮤니티 사이트를 운영하고 싶다면 적어도 시중 40~60만 원대 프리도스 노트북으로 충분하다. 물론 네트워크 상황에 따라 다르겠지만, 커뮤니티의 회원수가 적고 테스트 삼아 운영하고 싶다면 남아도는 노트북이나 PC로 구축해보는 것도 나쁘지는 않다.

 

 

4. 개발용, 이것저것 다 해보고 싶은 서버

 

 이쯤 되면 확장 가능성을 염두에 두고 구매하시는 게 좋다. 무턱대로 노트북 서버로 시작했다가 배터리나 과열, 디스플레이 고장으로 고생할 수 있다. 시중에 나와있는 저렴한 미니 PC나 일반적인 데스크톱을 추천한다.

 

 

5. 게임 서버

 

 마인크래프트나 기타 온라인 게임 서버를 운영하고 싶다면 동접 30명 이상은 그냥 호스팅 서비스를 사용하는 게 낫다. 그게 아니라 초창기 서버고 성장 가능성보다는 친구들과 즐기는 걸 원한다면 적어도 100 Mbps 정도의 대역폭 (대부분 가정용) 보통 가지고 있는 데스크톱 정도면 충분하다.

 

 

6. 실시간 지원이나 머신러닝 필요

 

 AWS

 

 

 

 

반응형