2P by GN⁺ | ★ favorite | 댓글 1개
  • 2020년 락다운 때 웹 개발을 시작한 Varun은 Replit과 개인 PC를 거쳐, 집에서 직접 서비스와 실험 프로젝트를 운영하는 홈랩을 구축함
  • 학교용 실시간 퀴즈 게임 Quickz, 직접 만든 소셜 미디어 플랫폼, Scratch 커뮤니티 도구처럼 실제 사용자가 있는 서비스가 늘면서 셀프호스팅 운영 경험도 함께 커짐
  • Windows 10 Pro로 시작한 첫 서버는 업데이트와 다운타임 문제를 겪었고, 2020년 11월 Ubuntu Server로 옮기며 Linux·nginx·Docker 기반 운영으로 전환함
  • Dell OptiPlex의 저장공간과 성능 한계가 드러난 뒤, 2022년 5월 중고 Dell PowerEdge R720XD를 들여 Proxmox와 Ubuntu Server VM 구조로 확장함
  • 직접 만든 Dock’n’Roll은 Replit식 빠른 배포 흐름을 자체 하드웨어와 도메인에서 재현하지만, 홈랩은 자유와 학습만큼 소음·전력·이사 같은 현실적 제약도 함께 남김

방 안의 홈랩과 운영 중인 서비스

  • Varun은 집에서 두 대의 서버를 운영함
    • 바닥의 Dell OptiPlex
    • 작은 IKEA 커피 테이블 위의 Dell PowerEdge R720XD
    • 두 서버는 빨간색과 노란색 이더넷 케이블로 연결돼 있음
  • 홈 서버에는 실험 프로젝트부터 실제 사용자가 있는 서비스까지 함께 올라가 있음
    • 수천 명의 사용자가 있는 직접 만든 소셜 미디어 플랫폼
    • 학교용 실시간 퀴즈 게임 Quickz
    • MYP Personal Project 데모 인스턴스인 플립북 스타일 애니메이션 제작·공유 플랫폼
    • Scratch 커뮤니티용 검색 엔진 같은 도구
    • 친구들을 위한 게임 서버
    • 여러 Plausible Analytics 인스턴스
    • 실험용 프로젝트를 만들고 호스팅하는 Replit 유사 도구

2020년 락다운에서 시작된 셀프호스팅

  • 출발점은 2020년 락다운 시기였고, 당시 Varun은 13세였음
  • 처음에는 정적 HTML 웹사이트로 웹 개발을 시작했고, 곧 백엔드가 필요한 더 복잡한 앱을 만들기 시작함
  • 초반 웹 앱, Discord 봇, 자동화 스크립트는 Replit에서 호스팅함
  • Minecraft 서버는 개인 컴퓨터를 계속 켜 두는 방식으로 친구들에게 제공함
  • 클라우드보다 집 서버를 택한 이유는 비용 절감보다 전체 스택 학습에 가까웠음
    • 사용자-facing 프런트엔드
    • 백엔드와 데이터베이스
    • 실제로 서비스를 올리는 서버 운영까지 직접 익히고 싶어 함
    • 본인 규모에서는 클라우드를 쓰는 편이 더 비용 효율적일 수 있다고 봄

첫 서버: Dell OptiPlex와 Windows 10 Pro

  • eBay에서 i7-3770S와 8GB RAM이 들어간 Dell OptiPlex를 구함
  • 미국에서 스위스로 배송받는 과정에서 판매자가 처음에 잘못된 RAM 용량을 보냈고, 해결까지 몇 주가 걸림
  • 익숙하다는 이유로 처음에는 Windows 10 Pro를 서버 운영체제로 계속 사용함
  • 집에 정적 IPv4 주소가 있어 웹사이트 호스팅이 더 쉽고 안정적이었음
  • 모든 서비스는 Cloudflare 뒤에 두었고, Cloudflare가 무료로 SSL, DNS, DDoS 보호로 추정되는 기능을 처리함

Windows에서 Ubuntu Server로 전환

  • 당시 Windows 10 서버 운영에는 Varun에게 몇 가지 장점이 있었음
    • 이미 Windows에 익숙했음
    • 개인 데스크톱과 비슷한 환경에서 테스트할 수 있었음
    • 집에서는 RDP로 빠르고 품질 좋은 연결을 사용할 수 있었음
    • 학교 지급 Chromebook에서는 웹 기반 접근이 필요해 Chrome Remote Desktop을 사용할 수 있었음
  • Windows 업데이트가 다운타임을 만들고 창 배치를 다시 해야 하는 일이 반복되자, 2020년 11월 Ubuntu Server로 전환함
  • 전환 전에는 시스템 전체를 빠르게 파악하는 감각을 잃을까 걱정했지만, Windows에서 코드 작성 중 명령줄에 익숙해진 덕분에 Linux 적응은 빠르게 진행됨
  • 초기 Linux 구성은 단순하지만 위험 요소도 함께 안고 있었음
    • 인터넷에 노출된 nginx가 포트 443에서 자체 서명 인증서로 HTTPS 트래픽을 처리하고 Cloudflare가 아닌 요청은 거부함
    • 24시간 온라인 상태로 두고 싶은 여러 프로젝트를 실행함
    • 프로젝트들이 공유하는 MongoDB 인스턴스 하나를 운영함
    • Minecraft Java 서버 몇 개를 실행함
    • 학교에서 서버에 접근하려고 webssh2를 노출했지만, 스스로도 매우 안전하지 않았을 가능성을 인정함
  • 서드파티 소프트웨어 설치는 의존성과 apt 저장소 추가로 빠르게 복잡해졌고, Docker가 설치와 실행을 단순화하는 도구가 됨
    • 서드파티 소프트웨어는 Docker로 실행함
    • 직접 작성한 코드는 서버에서 직접 실행함

저장공간 한계와 PowerEdge R720XD 도입

  • 약 1년 뒤 Quickz와 직접 만든 소셜 미디어 플랫폼처럼 실제 사용자가 있는 프로젝트를 운영하게 됨
  • 학교에 있는 동안 서버가 멈췄고, SSH 접속을 시도했지만 디스크 오류가 나타난 뒤 결국 잠김
  • 원인은 저장공간 부족이었고, 집에서 일부 파일을 삭제해 시간을 벌었음
  • 기존 Dell OptiPlex는 8GB RAM과 i7-3770S로 늘어난 사용량을 감당하기 어려워짐
  • 2022년 5월, 버그 바운티로 모아둔 돈을 써서 중고 Dell PowerEdge R720XD를 구입함
    • 3TB 드라이브 3개
    • DDR3 RAM 128GB
    • 전력 소모가 큰 2×E5-2690 CPU
  • 구입 전에는 공간, 소음, 전력 소모를 충분히 고려하지 않았고, iDRAC 팬 속도를 지원되지 않는 해킹으로 10% 고정해 소음 문제 일부를 줄임
  • R720XD에는 전원공급장치, CPU, NIC가 두 개씩 있고, 꺼져 있어도 원격 관리가 가능한 미니 컴퓨터 성격의 iDRAC도 있음
  • 처음에는 거실 TV 옆 커피 테이블에 서버를 올려두었고, 랙과 장착 장비는 서버 자체보다 비쌌음

Proxmox와 원격 접속 구조

  • 새 서버에서는 하이퍼바이저를 사용하기로 하고 Proxmox를 실행함
  • 대부분의 자원은 Ubuntu Server VM에 할당했고, 모든 서비스는 이제 Docker 안에서 정리돼 실행됨
  • 이 구조 덕분에 나중에 서비스를 옮길 때 모든 것을 다시 설정하지 않아도 되는 유연성이 생김
  • 별도로 Xubuntu VM인 backdoor를 운영하며 Chrome Remote Desktop을 사용함
    • 어디서든 홈 네트워크에 편한 작업 공간으로 접근할 수 있음
    • OpenVPN이나 WireGuard 같은 VPN을 설정할 수도 있지만, 이 방식은 iPad 같은 제한된 기기와 학교 공용 Wi-Fi에서도 동작함
    • 봇의 무차별 대입 시도를 걱정하지 않아도 되는 점도 장점으로 봄

Replit 경험을 자체 구현한 Dock’n’Roll

  • 여러 서버를 갖춘 뒤에도 Replit의 빠른 실험 흐름은 계속 아쉬움으로 남음
  • Replit은 일회성 프로젝트, 실험, 데모용 격리 앱을 빠르게 띄우기 좋았고, 웹 IDE에서 코드를 쓰면 즉시 웹에 공개되는 흐름이 강점이었음
  • Replit은 무료였지만 수익화를 위한 기능을 도입했고, 비활성 repl은 사용자가 없으면 비활성화되며, 무료 공개 동적 웹사이트 호스팅도 더 이상 가능하지 않다고 이해함
  • Varun은 자체 하드웨어와 직접 제어하는 도메인을 쓰기 위해 Docker 기반의 셀프호스팅 Replit 클론 Dock’n’Roll을 만듦
  • Dock’n’Roll은 단일 사용자 서비스임
    • 비공개 인터페이스 dockn.varun.ch에서 웹 앱을 코딩함
    • 결과물은 *.varunbiniwale.com 아래에서 즉시 공개 접근 가능함
  • 구성 요소는 다음과 같음
    • ExpressJS로 만든 제어판과 VSCode의 Monaco Editor 기반 웹 인터페이스
    • 프로젝트 시작 버튼이 Docker Engine API로 이미지를 빌드하고 컨테이너를 실행함
    • 프로젝트 메타데이터는 Redis에 저장함
    • 각 컨테이너의 포트 80은 Lua 플러그인으로 Redis와 통신하는 OpenResty 리버스 프록시를 통해 :project.varunbiniwale.com으로 자동 노출됨
    • /persisted/ 아래 파일은 컨테이너 재시작 후에도 유지되고 웹 인터페이스에서 확인·수정할 수 있음
    • 웹 관리자 인터페이스는 직접 만든 custom nginx auth proxy로 보호됨
  • Dock’n’Roll은 버그 헌팅에도 활용됨
    • blind SSRF와 XSS 같은 취약점을 찾는 데 쓰는 임의의 도구를 호스팅함
    • yourip.varunbiniwale.com에서 자동 생성 이미지를 제공하는 예시가 있음

홈랩의 현재와 앞으로의 제약

  • Varun은 자신의 홈랩이 조금 과할 수 있지만, 직접 소유하고 좋아하는 환경이라고 정리함
  • 언젠가 졸업 후 대학 진학을 위해 이사하게 되면 서버를 가져가지 않을 가능성이 높고, 부모님 집에서 계속 하드웨어를 돌리는 부담도 주고 싶지 않다고 봄
  • 셀프호스팅은 모두에게 맞는 방식은 아니지만, tinkerer이고 결과를 감당할 의지가 있다면 작은 셀프호스팅을 시도해볼 만하다고 봄
  • 직접 서버를 운영하며 많은 것을 배웠고, 자기 통제 아래 도구와 프로젝트를 실행할 장소를 갖는 경험에서 자유를 느낌
  • 이 구성은 때때로 스트레스를 만들고 가장 실용적인 방식도 아닐 수 있지만, 다른 방법으로는 배우기 어려웠을 많은 기술을 얻게 해줌

댓글과 토론

Hacker News 의견들
  • 나도 작은 홈랩을 가진 16살임 :)
    예전엔 모든 서비스를 클라우드에 올렸지만, 집에 1G/1G 회선이 생기고 폐기되는 기업 장비나 매립지에서 나온 하드웨어를 자선 상점이 싸게 파는 걸 발견하면서 직접 물리 서버를 운영해 보기로 함
    지금은 Proxmox를 2대의 머신과 NAS 1대, 회전식 디스크 14개에서 돌리고 있고, Minecraft 서버, 개인 프로그래밍 프로젝트, 취약점 스캐너, Telegram 봇, 친구용 VPS, Android와 macOS 빌드용 가상 머신, 저장소, 최근 추가한 1050 Ti로 하는 머신러닝 학교 프로젝트, 학교 CTF 대회 인프라까지 호스팅 중임
    참고로 이탈리아임

    • 나도 16살에 독학으로 코딩을 배운 이탈리아인이고 지금은 34살임. 물론 네 수준에는 한참 못 미쳤음
      이후 물리학을 공부하고 박사과정, 신경망 관련 박사후연구원까지 했지만, 내가 가장 중요하게 느낀 건 예전의 나 같은 젊은 사람들에게 영감을 주는 일이었고, 올해부터 이탈리아로 돌아와 고등학교 교사가 됐음
      학교에서 방과후 Python 과정도 준비 중이라, Milan에서 멀지 않고 학생들과 이야기해 볼 생각이 있다면 한번 고려해 볼 수 있음. 앞으로 잘되길 바람
    • 인터넷의 정말 멋진 점이 이런 것임. 다른 경우라면 이 두 명의 16살이 어떻게 서로를 찾았겠나?
      아니면 같은 고등학교에 다녀야 했을 것임
    • 부모님이 이 장비들을 계속 돌리는 전기요금을 꽤 부담하고 있을 듯함. 서비스에서 수익이 나지 않는다면 더더욱 그렇고
      어느 쪽이든 네 관심사를 지원해 주는 가족에게 박수를 보냄
    • 정말 멋지다. 나도 머신러닝 관련 작업을 위해 어딘가에 오래된 그래픽카드를 추가할까 생각 중인데, 방법을 먼저 알아내야 함 :)
    • 전기요금은 누가 내는지 궁금함. 서버 두 대면 한 달에 50~100달러 정도 나올 것처럼 들림
  • 내가 16살이던 2001년에 여름 알바로 모은 돈으로 Herbert Schildt의 "Teach Yourself C", 비디오 카드, Sony Trinitron을 샀음
    5장 끝에서 Herb가 다차원 배열 얘기를 이상하게 하기 시작했고, 다음 장이 문자 그대로 마법과 헛소리인 포인터라는 걸 보고 압도돼서 플랜 B, 즉 록스타 되기로 마음을 바꿈. 프로그래밍은 너무 어려웠음
    배운 건 TI-82에 프로그램을 넣어 수학 시험에서 부정행위하는 데 썼음
    몇 년 뒤 대학 첫 학기에 어떤 지도교수가 전공을 한 학기 미루고 관심 있는 여러 과목을 들어보라고 권했는데, 그게 정말 구원이었다
    첫 Java 책을 사서 파기 시작했더니 C 책보다 훨씬 접근하기 쉬웠고, 첫 수업에 갔더니 이미 수업 범위를 끝까지 읽어버린 상태였음
    그렇게 한 번 포기했다고 생각했던 길에서 지금까지 15년 넘게 이어진 여정이 시작됨
    지금도 기타를 치고 즐기지만, 음악가로서의 나는 기술자로서의 나보다 더 나아지지 못할 걸 안다

    • 포인터는 배움과 자기 개선을 사랑하게 만든 전환점이었음
      십대 때 C를 배울 때 자료마다 포인터부터 이상하고 어려워진다고 경고하던 기억이 남
      처음엔 신비롭게만 느껴졌지만 겨울방학이었고, 이해될 때까지 붙잡고 있기로 했음. 몇 시간이었는지 며칠이었는지 한 주 내내였는지는 기억나지 않지만, 딱 이해되는 순간 엄청난 만족감이 들었고 그 뒤로는 뭐든 해낼 수 있을 것 같았음
      악명 높게 어려운 Dark Souls 시리즈의 디렉터 Hidetaka Miyazaki 인터뷰에서, 기타를 치며 바레 코드를 배울 때 비슷한 경험을 했고 큰 난관을 극복했을 때의 만족감을 게임에 녹였다는 얘기를 읽은 적 있음
      정말 강력한 감각임
    • 80년대 후반 학부생이었을 때 C 포인터 때문에 한동안 많이 혼란스러웠고, 선생님들도 별 도움이 되지 못했음
      결국 포인터가 그냥 메모리 주소라는 걸 깨닫자 많은 혼란이 단순한 개념 하나로 무너졌음. 머릿속에서 어떤 느낌이었는지 아직도 기억남
      주변 동기들도 비슷한 경험을 많이 했고, 모두가 그걸 넘긴 건 아니었음
      그래서 다시 궁금해짐. 사람들은 왜 C 포인터를 그렇게 이해하기 어려워할까? 개념, 즉 간접 참조 때문인지, &*, 배열을 포인터처럼 다루는 표기법 때문인지, 아니면 다른 이유가 있는지
      대학 전에는 peekpoke 명령으로 VIC와 SID 칩을 조작하고 어셈블리어를 쓰는 데 많은 노력을 들였는데, C를 처음 만났을 때 그런 배경이 나쁘지 않았던 듯함. 당시엔 연결점을 바로 알아차리진 못했더라도 말임. 요즘의 대응물은 무엇일지도 궁금함
    • 십대 때 프로그래밍 얘기할 사람이 없어 Freenode를 돌아다니다가 ##C를 발견했던 기억이 남
      당시엔 프로그래밍 언어에 대한 기본 감각은 있었지만 거의 초보였고, C에서 인자 출력기가 왜 (null)과 상관없는 내용, 즉 envp를 출력하는지 물어봤음
      채널의 어떤 아주 친절한 사람이 참을성 있게 포인터의 기초를 이해하도록 이끌어 줬고, 그게 약 16년 전임. 이름은 더 이상 기억나지 않지만, 그때 도와준 사람에게 고맙다
    • 고등학생 때 K&R을 보다가 malloc을 구현하는 부분에서 막혔음
      포인터는 연결 리스트를 이해하는 데 필요해서 버텼는데, 그 자료구조는 1980년대에 한 번 써보고 이후로는 쓴 적이 없음
    • 처음 프로그래밍을 생 16진수(Z80)와 8진수(PDP11)로 입력하면서 시작했기 때문에, C를 만날 때쯤엔 메모리 간접 참조가 자연스러웠음
      CPU가 밑바닥에서 어떻게 동작하는지 이해하는 데는 분명 장점이 있음. 물론 요즘 대부분의 프로그래밍에 꼭 필요한지는 논쟁의 여지가 있음
  • 비싼 랙 얘기를 하는 문단 옆에 Ikea 테이블 위 서버가 있는 게 좋음. Lack Rack은 알고 있었는지 궁금함: https://web.archive.org/web/20230131031301/https://wiki.eth0...

    • 알고 있음. 다만 아직 모든 치수를 재고 맞는 나사와 테이블을 찾을 시간이 없었음
  • 재미있는 사실 하나. 내가 16살이었을 때는 200달러짜리 홈 서버를 구하는 게 5달러짜리 Digital Ocean VPS를 구하는 것보다 훨씬 쉬웠음
    여기 온라인 쇼핑 서비스인 Allegro는 사실상 Amazon과 eBay를 합친 것 같은데, 소액 수수료만 내면 착불 결제를 기꺼이 받아줌
    가입하려면 아마 18살이어야 했겠지만, 폴란드에서는 그런 제한을 실제로 신경 쓰는 사람이 없었고 나이 확인도 없었음
    반면 클라우드 서비스는 직불카드나 신용카드가 필요했고, 부모 개입 없이는 만들 수 없거나 아예 불가능했음
    Bitcoin과 암호화폐 전반에 대해 나쁜 말을 많이 할 수는 있지만, 청소년 권리 관점은 아무리 강조해도 지나치지 않음

    • 가입 나이는 18살이 아니라 13살
      그리고 부모 동의가 있으면 13살도 온라인 결제가 되는 직불카드가 딸린 무료 은행 계좌를 열 수 있음. 새로 생긴 것도 아니고, 15년 전에도 내가 갖고 있었음
    • 부모가 자녀의 소유물을 통제하는 데 찬성하지 않는다는 뜻인가?
  • 잘했다. 하드웨어와 운영체제의 기본, 때로는 기본 이상을 배우는 사람이 점점 줄어드는 느낌이 듦
    이런 지식은 PaaS로 일할 때도 매우 가치 있음. 예를 들어 NT4 시절부터 IIS, 1.x 시절부터 Apache를 다뤄본 경험은 Azure Web Sites 문제를 진단할 때 큰 도움이 됨

    • 업계에서 실제로 일하는 사람들도 모르는 경우가 있음
      약 10년 전 데이터센터에서 일할 때, 어떤 서버의 RAM 같은 하드웨어를 교체해야 했음. 그 서버를 쓰는 팀의 책임자가 서버룸에서 50야드쯤 떨어진 곳에 여러 해 앉아 있었는데, 교체하는 걸 봐도 되냐고 물었음
      서버 내부를 한 번도 본 적이 없어서 궁금하다고 했고, 심지어 집 PC 내부도 본 적이 없는 것처럼 들렸음. 그게 정말 충격이었음
      당시에는 절차가 빡빡한 것도 아니어서, 아무 날이나 수십 명 중 한 명에게 투어를 부탁하면 아무 질문 없이 보여줬을 것임. 사무실 칸막이 주변에도 이런저런 이유로 서버가 굴러다녔음
      그날 전까지는 그냥 생각해 본 적이 없었던 것뿐임
    • 대부분은 직접 조립한 PC조차 없음. 내부 구조에 대한 감각이 아주 적고, 하드웨어 소식이나 글도 충분히 따라 읽지 않음
      이런 PC도 전문 랙 서버는 아니지만 서버로 쓸 수 있고, 여전히 설정이 필요함
      이런 기초 이해와 학습 경험이 많이 사라지고 있음. HTML과 CSS는 거의 모르고 React만 아는 프론트엔드 개발자도 멀지 않았음
  • 중고 랙마운트 서버를 발견했을 때 16살은 아니었지만 꽤 어렸고, 아마 21살이었음
    2012년에 Dallas, TX에서 연 3만 달러에 건강보험도 없는 거의 생계 수준의 끔찍한 일을 하고 있었음
    비디오 인코딩 실험을 하려면 노트북보다 조금 더 강력한 게 필요했지만, 원하는 작업을 할 만큼 빠른 컴퓨터를 살 돈이 없었음. 25살쯤까지는 저축도 특히 못했음
    충동적으로 Craigslist에서 “빠르고 싼 컴퓨터”를 여러 표현으로 검색하다가 결국 “server”를 찾게 됨
    그렇게 오래됐지만 여전히 쓸 만한 랙마운트 Dell 서버를 거의 공짜 수준에 살 수 있다는 걸 알았고, 어떤 판매자가 16코어와 RAM 32GB짜리 Dell 랙 서버 두 대를 약 250달러에 팔고 있었음
    간신히 살 수 있어서 차를 몰고 가서 집어 왔고, 그게 이후 12년 동안 내 커리어 방향을 거의 정해버림

    • 랙마운트 서버에는 숨은 비용이 있음. 하나는 드론 떼 같은 소리 옆에 앉아 있어야 한다는 것, 다른 하나는 교체 부품의 기업용 가격임
      Dell은 내게 대체로 괜찮았지만, 백플레인과 다른 부품을 바로 교체해야 하는 일도 있었음
    • 세기 전환기쯤 Solaris 계약 일을 전문으로 했어서, 그때 내 홈랩은 대부분 eBay에서 산 오래된 Sun Enterprise 장비였음
      https://en.wikipedia.org/wiki/Sun_Enterprise#Entry-level_ser...
      E450도 갖고 있었고, 여기 있는 것과 비슷함: [https://en.wikipedia.org/wiki/File:SUN_Ultra_Enterprise_450....](https://en.wikipedia.org/wiki/File:SUN_Ultra_Enterprise_450.JPG)
      그 외 작은 장비와 워크스테이션도 여럿 있었고, 기억이 맞다면 E220R도 한때 있었음. 그 낡은 물건들이 다 어떻게 됐는지는 모르겠음
      어쨌든 잠재 고객을 만나기 전 면접 준비, 즉 특정 기술을 다시 갈고닦는 데 아주 유용했고, 일반 개발이나 패키징 작업에도 좋았음
    • 예를 들어 8코어 데스크톱 두 대를 쓰지 않은 이유가 있었는지 궁금함
  • 대량의 입출력, 예컨대 SAS/SATA 저장장치나 구형 PCIe 카드가 필요한 게 아니라면, 크고 시끄럽고 전기를 많이 먹는 서버를 피하는 게 생각보다 훨씬 단순함
    같은 가격대의 Mini/Micro 폼팩터 OEM PC는 보통 훨씬 최신 세대 하드웨어를 달고 나옴. 3세대 i7 대신 8세대 i5를 구할 수도 있고, 전체 성능도 훨씬 나음
    호스팅과 유지보수도 훨씬 쉬워서, ISP 모뎀 근처에 꽂아 두고 잊어버리면 됨

    • 오래된 Skylake HP Elite SFF 머신을 갖고 있음
      개조 없이 3.5인치 드라이브 두 개와 2.5인치 드라이브 하나를 넣을 수 있고, CPU 열을 바로 뒤로 빼는 덕트 구조와 80 Plus Platinum 효율의 전원공급장치 덕분에 늘 켜두는 머신으로 가성비가 아주 좋음
    • “꽂아 두고 잊어버리기”는 내가 16살 때 원하지 않았던 바로 그거였음
      나도 서버가 있었지만 HP ML 폼팩터라 피자박스형보다 소음이 적었음. ECC도 꽤 중요하고, 진짜 하드웨어 RAID는 좋은 학습 경험임
    • SATA 디스크를 정말 많이 써야 한다면 R720XD 여러 대를 이기기 어려움
      작은 무리를 가지고 있는데, 1) CPU를 비활성화하고 2) 남은 CPU를 저전압으로 돌리고 3) 원시 IPMI 바이트 시퀀스로 직접 팬 컨트롤러를 만들면 실제로 그렇게 시끄럽거나 전기를 많이 먹지 않음
      PB당 비용이 가장 좋은 대용량 저장소 해법 중 하나임. NUC와 단일 보드 컴퓨터도 여러 대 있지만, 용도가 확실히 다름
      언젠가는 잉여 Isilon 클러스터 한두 개를 사서 진정한 대용량 저장의 경지에 도달할 생각임. 여가 시간에 Ceph와 싸우기는 귀찮음
    • 라우터용으로 OpnSense를 돌리려고 오래된 Skylake 컴퓨터를 거의 쓸 뻔했음
      대신 100달러짜리 팬리스 Intel N100 마이크로 컴퓨터를 샀는데, 7W만 먹고 성능은 거의 비슷함. 전기요금 절감분으로 본전이 나올 것임
      i5-6600K가 특별히 전기를 많이 먹는 편도 아니었는데도 그럼
    • 한때 Intel 메인보드와 Atom CPU 조합을 파일 서버로 썼지만, 결국 업그레이드해야 했음. Atom 칩은 정말 별로였음
      나중에 Skylake Pentium으로 갔고, 훨씬 잘 동작함
  • 나도 예전에는 이런 아이였음. 직접 조립한 초고급 PC가 있었는데, 시대를 드러내자면 6,000달러[0]가 훨씬 넘었고, 막 나온 486DX50 기반이었다
    메인보드 RAM을 최대치로 꽂았고 아마 16MB였던 것 같지만 기억이 희미함. Turtle Beach Wave Table Synth 사운드카드와 16인치 CRT에서 1152x1024를 구동할 수 있는 비디오 카드도 있었음
    9600 모뎀 두 개, 나중엔 16.8K 모뎀 두 개로 다중 노드 BBS를 운영했음
    그 PC와 그 전의 10년 된 8088을 만지작거린 경험이 없었다면 소프트웨어 개발자가 되지 않았을 가능성이 큼
    이웃 아이를 위해 게이밍 PC를 만들어 준 적이 있는데, 4년 동안 그 아이가 자신도 모르게 아주 유능한 괴짜가 되는 걸 봤음
    게임에서 프레임률을 조금이라도 더 뽑아내려고 설정을 조정하고, 펌웨어 업데이트, 비디오 카드 드라이버, 소프트웨어 업데이트, 그리고 “PC로 게임하고 싶다”는 말이 불러오는 온갖 난장판과 싸우다 보면 지식이 우연히 많이 쌓임
    4년 동안 그 아이와 얘기하지 않다가 최근 다시 만났는데 깜짝 놀랐음. 제일 먼저 주머니에서 Flipper Zero를 꺼내고 그걸로 해 본 온갖 미친 짓을 얘기해 줬음
    내가 얘기해 본 어떤 시스템 담당자만큼이나 유능했지만, 본인은 그런 기술을 갖고 있다는 것도 모름
    너무 좋은 경험이라 내 아들에게도 콘솔에서 넘어오도록 괜찮은 게이밍 노트북을 사줬고, 지난 1년 동안 같은 일이 벌어졌음
    올해는 두 살 어린 딸이 데스크톱을 만들어 달라고 졸라서, 멋진 크리스마스와 1년치 배움과 좌절을 받게 될 예정임 :)
    아, 그리고 우리 가족도 올해 Flipper Zero를 샀음. 이웃 아이만 재미를 독차지하게 둘 수는 없음
    [0] 다른 사람들 컴퓨터를 조립해 주며 그 돈을 모았음

    • 소프트웨어 커리어 25년 차가 된 지금도 정말 놀라운 건, 내 팀의 소프트웨어 엔지니어 중 자기 컴퓨터를 가진 사람이 너무 적다는 점임
      현재 팀에서는 절반 미만임. 반면 나는 업무용 노트북 외에도 게이밍 PC, 게이밍 노트북 PC, 범용 MBP까지 여러 대 가진 이상한 사람임
      내 아들도 비슷한 경험을 했음. 컴퓨터를 배우는 데 큰 관심을 보인 적은 없지만 PC 조립은 돕고 싶어 했고, 이제는 친구들의 기술지원 담당이 됨
    • HN에 많은 사람들이 그렇듯 나도 비슷한 이야기가 있음
      몇 년 동안 내 “홈랩”에 10BASE2 동축 케이블을 둘러 치고 놀다가, 사람들이 실제로 내 장난감 놀이에 돈을 준다는 걸 깨달았음
      물론 그 돈은 다시 홈랩 장난감에 다 들어갔음
      지금은 아이가 있는 친구가 많고, 그중 일부는 십대임. 한동안 마음속에 걱정이 있었는데, 그 아이들의 기술 지식은 Wi-Fi 비밀번호를 묻고 앱에서 장난 영상 같은 걸 보는 정도에 그침
      커서 뭐가 되고 싶냐고 물으면 “인플루언서”라고 말함. 가장 기술적인 행동은 인터넷이 안 될 때 “라우터”를 재부팅하는 것이고, 두 번째 진단 단계는 인터넷이 안 된다고 소리치는 것임
      훌륭한 아이들이고 비난하려는 건 아니지만, 우리 세대가 사라진 뒤에도 불을 계속 켜둘 사람이 있을지 걱정이 있었음
      우리 때는 컴퓨터를 쓰고 인터넷에 접속하는 데 진입장벽이 컸지만, 그 덕분에 기술 인재가 폭발적으로 늘어나는 이점도 있었음
      그래서 아직도 속을 들여다보는 괴짜 아이들이 있다는 소식은 정말 반갑다
    • 나도 몇 년 뒤에 정확히 같은 길을 걸었음
      엄마의 Gateway에서 게임을 해 보려다 Pentium D로 첫 PC를 만들게 됐고, eBay에서 계속 하드웨어를 사고팔며 부품을 바꾸는 취미로 이어졌고, 결국 전기공학 학위까지 갔음
      비디오 게임도, PC 만지작거리기와 오버클럭도 없었다면 전기공학 학위도 없었음
    • 그 아이가 Flipper Zero로 어떤 멋진 일을 했는지 궁금함
    • 아이들이 몇 살인지 궁금함
  • 축하함. 나는 16살 때 486DX2-66, 28.8K 모뎀, UPS만 있었음
    다른 십대와 마음만은 십대인 사람들이 이걸 해내려면: eBay에서 중고 기업용 서버를 찾아보면 됨. HP, Lenovo, Dell, Supermicro가 보통 고를 만한 브랜드임
    구매 전에는 특정 모델의 사양 문서, 드라이버, 펌웨어를 찾아서 완전하고 쓸 수 있는 물건인지, 아니면 합리적인 비용으로 완성할 수 있는지 확인해야 함
    XenServer나 VMware ESXi로 여러 가상 머신을 돌릴 계획이면, 사기 전에 운영체제의 하드웨어 호환성 목록(HCL)에서 호환 여부를 확인해야 함
    1U 서버는 피하는 게 좋음. 2U 이상보다 작고 짧은 팬을 매우 빠르게 돌려야 해서 더 시끄러움
    CPU는 최소한 자신이 가진 컴퓨터만큼은 빨라야 함. 아니면 아주 비싼 문진이나 커다란 “Raspberry PI”가 될 수 있음: https://www.cpubenchmark.net
    Dell, Lenovo, HP 서버의 AMD CPU는 벤더 잠금이 걸린 경우가 있는 함정이 있음. 다만 가끔 판매자가 잠긴 CPU를 아주 싸게 팔아서 의미가 있을 때도 있음
    ECC RAM. 친구라면 친구에게 비 ECC RAM을 몰게 하지 않음: https://cr.yp.to/hardware/ecc.html
    SSD를 쓰는 게 좋음. 회전식 디스크는 저장소용이지 운영체제용이 아님: https://web.archive.org/web/20110831080738/http://buyafuckin...
    가능하면 이미 라이선스가 있는 iLO나 iDRAC 같은 원격 관리 기능이 있는 장비를 구하면 좋음
    받으면 아마 더럽고 긁힌 자국도 있을 테니, 밖에서 열고 압축공기로 청소해야 함
    보너스 점수: 부모를 설득해 차고에 19인치 패치 패널과 하프 랙을 설치하기 :]

    • 이 조언들은 전부 있으면 좋은 정도임. 오래된 데스크톱이나 노트북으로도 같은 일을 쉽게 할 수 있음
      오랫동안 홈랩을 했고, 중고 서버 하드웨어를 사거나 찾아다니기보다 오래된 데스크톱 부품으로 채운 랙마운트 시스템을 써 왔음. 꼭 필요한 건 아님
      ECC RAM도 저렴하게 구하고 CPU가 지원하면 유용하지만, 내 경험상 문제로서 과장된 면이 있음
      다만 2U나 3/4U 장비를 사라는 데는 동의함. 훨씬 큰 팬을 달 수 있고, 그래서 더 조용해짐
  • 90년대 초반 십대였을 때 첫 컴퓨터를 얻고 가장 충격적이었던 건 모든 컴퓨터가 서버라는 사실이었음
    컴퓨터가 랙 폼팩터일 필요도, 비쌀 필요도 없었음. Winsock과 TCP/IP만 있으면 됐고, 그게 전부였음. 내 컴퓨터는 인터넷의 다른 컴퓨터와 같았음
    그래서 이 글은 멋지지만, Node 기반 앱을 돌려 인터넷에 제공하는 데는 하드웨어가 거의 관련 없으니 하드웨어 강조가 좀 덜했으면 함
    정적 IP도 필요 없고, 동적 DNS만 알아내면 됨 :)

    • 달리 말하면, P2P 파일 공유가 절정이던 시절에는 대부분의 16살이 실제로 방 안에 서버를 두고 있었음
    • 독일 최초의 온라인 철도 경로 계획기 이야기를 다시 찾아보고 싶어지게 만들었음
      만든 사람이 직접 쓴 글이었는데, 90년대 Deutsche Bahn이 온라인에 없던 시절에도 경로 정보는 CD-ROM에 있었음
      어떤 사람이 그 CD-ROM 데이터를 가져와 두 역 사이 경로를 질의하면 반환하는 도구를 만들었음
      질의 방식이 흥미로웠는데, 그의 대학 이메일 주소로 메일을 보내면 “서버”, 실제로는 방 구석의 PC가 5분마다 이메일을 가져와 질의를 처리하고 결과를 이메일로 돌려보냈음
      안타깝게도 지금 Google과 DDG는 쓸모가 없어져서, 지난번 이 이야기를 찾으려 했을 때 시간이 정말 오래 걸렸음
    • 이런 용도라면 서버급 머신보다 비서버급 머신을 선호함
      현대적인 단일 보드 컴퓨터도 충분히 유능한 홈 서버가 될 수 있고, 훨씬 작고 조용하고 싸며 전력도 덜 먹음
    • 십대 때 얻은 가장 멋진 기술 물건 중 하나가 남는 오래된 데스크톱이었음
      처음에는 FreeBSD를 깔았고 나중에는 Linux를 깔았는데, 집에 나만의 Unix 머신이 있다는 게 놀라웠음
      강력하지도 않았고 메모리나 저장공간도 많지 않았지만, 마음대로 할 수 있는 내 것이었음
      IRC 봇을 돌리고, 내가 쓴 엉망인 Perl 스크립트를 올린 웹 서버를 운영했음. 네트워크 카드를 달고 나서는 집의 전화접속 라우터 역할도 했음
      그 머신을 만지작거리면서 정말 많이 배웠고, vim을 종료할 수 있는 능력은 그 머신 덕분이라고 봄
    • 1999년에 처음 오픈소스 소프트웨어를 공개했을 때, 아파트의 케이블 모뎀 연결과 동적 DNS를 통해 내 데스크톱 Linux 머신에서 직접 호스팅했음
      Freshmeat[1]에 올려 두고, 저녁을 먹으며 소파에서 Apache 로그가 스크롤되는 걸 지켜봤음. 내 커리어에서 가장 멋진 감각 중 하나였음
      [1] https://en.wikipedia.org/wiki/Freecode