
코딩하다 머리 식힐 때 딱 좋은, 램프 열로 돌아가는 알루미늄 터빈 만들기
코딩하다 지친 개발자를 위한 아날로그 힐링 프로젝트. 램프의 열기로 돌아가는 알루미늄 캔 터빈 제작기를 개발자의 시선에서 흥미롭게 풀어냈습니다.
김영태
테크리드

안녕하세요, 8년차 개발자 김테크입니다.
평소에는 쿠버네티스 클러스터 관리나 데이터베이스 쿼리 튜닝 같은 무거운 주제로 이야기를 나눴지만, 오늘은 조금 다른 이야기를 해볼까 합니다. 개발자라면 누구나 모니터 화면만 쳐다보다가 머리가 꽉 막히는 순간이 오기 마련이죠. 그럴 때 손으로 꼼지락거리며 만들 수 있는, 아주 아날로그적이면서도 공학적인 장난감 하나를 소개해드리려고 합니다.
해외 커뮤니티에서 우연히 발견한 이 프로젝트는 일명 램프 캐러셀(Lamp Carousel) 또는 캔 스피너(Can Spinner)라고 불립니다. 거창한 모터나 배터리 없이, 오로지 책상 위 스탠드 조명에서 나오는 열기(대류 현상)만으로 회전하는 조각품입니다. 서버실의 뜨거운 열기는 골칫덩어리지만, 여기서는 아주 훌륭한 동력원이 됩니다.
마치 우리가 레거시 코드를 리팩토링하듯, 다 마신 탄산음료 캔을 재활용해서 만드는 과정이 꽤나 흥미롭습니다. 주말에 잠깐 짬을 내어 만들어볼 만한 이 프로젝트의 빌드 과정을 개발자의 시선으로 정리해 드립니다.

1. 재료 준비 (Dependency Injection)
핵심 재료는 빈 알루미늄 소다 캔입니다. 캔의 옆면과 바닥면을 모두 사용할 수 있습니다. 옆면은 가공하기 쉽지만 내구성이 약하고, 바닥면은 두껍고 튼튼하지만 가공 난이도가 높습니다. 처음 시도하신다면 옆면(Side)부터 시작하는 것을 추천합니다. 마치 프레임워크를 처음 배울 때 Hello World부터 찍어보는 것과 같습니다.
그리고 회전축이 될 철사가 필요합니다. 공예용 와이어나 클립을 사용하면 됩니다.
2. 피벗 포인트 구현 (The Core Interface)
이 프로젝트에서 가장 중요한 성능 병목 구간은 바로 회전축과 스피너가 만나는 지점입니다. 마찰을 최소화해야 아주 미세한 열기에도 반응할 수 있습니다.
철사 끝을 벤치 그라인더나 사포로 아주 뾰족하게 갈아주세요. 이 부분이 뭉툭하면 마찰 계수가 높아져서 스피너가 돌지 않습니다. 마치 DB 인덱스가 잘못 걸려 쿼리 속도가 느려지는 것과 비슷합니다. 최대한 날카롭게, 마찰이 0에 수렴하도록 만드는 것이 핵심입니다.
3. 블랭크 커팅 및 성형 (Refactoring the Can)
캔을 펼쳐서 원형으로 잘라냅니다. 이때 날카로운 알루미늄 조각에 손을 다치지 않도록 주의하세요. 프로덕션 배포 중에 실수로 DB를 날리는 것만큼이나 아픈 경험이 될 수 있습니다.
중요한 건 중앙의 오목한 홈(Dimple)을 만드는 것입니다. 볼펜이나 펜치 같은 무딘 도구로 알루미늄이 찢어지지 않게 살살 눌러서 오목한 점을 만듭니다. 이 점이 바로 무게 중심(Center of Gravity)이 됩니다. 무게 중심이 맞지 않으면 스피너는 덜그럭거리거나 회전하지 못합니다. 로드 밸런싱이 깨진 서버처럼 말이죠.
4. 날개 제작 및 배포 (Deployment)
가위로 날개 모양을 오리고, 바람(열기)을 잘 탈 수 있도록 비스듬히 구부려줍니다. 디자인은 자유입니다. 터빈 모양, 프로펠러 모양, 혹은 기하학적인 모양 등 다양하게 시도해볼 수 있습니다.
완성된 스피너를 램프 위에 고정한 피벗 와이어 위에 살포시 얹어보세요. 처음에는 균형이 안 맞아서 한쪽으로 기울어질 겁니다. 무거운 쪽을 가위로 조금씩 잘라내며 밸런싱 작업을 수행합니다. 트러블슈팅의 시간입니다. 완벽하게 수평을 유지할 때까지 조금씩 튜닝해 주세요.
5. 구동 환경 (Runtime Environment)
재밌는 점은 광원의 종류에 따라 성능 차이가 난다는 것입니다. 백열전구는 열이 많이 발생해서 스피너를 힘차게 돌립니다. 반면 LED 전구는 발열이 적어서 예열 시간이 좀 필요하거나, 회전 속도가 느릴 수 있습니다. 하지만 테스트 결과 LED 램프에서도 몇 분 정도 지나면 충분히 돌아갈 정도의 열이 발생한다고 합니다.
마무리하며
이 작은 프로젝트를 보며 든 생각은, 결국 물리적인 세계나 소프트웨어 세계나 '효율성'과 '최적화'가 핵심이라는 점입니다. 마찰을 줄이고, 균형을 맞추고, 에너지를 효율적으로 사용하는 것. 우리가 매일 서버 아키텍처를 고민하는 것과 크게 다르지 않죠?
이번 주말에는 키보드 대신 가위를 들고, 머릿속 복잡한 로직을 잠시 내려놓은 채 뱅글뱅글 돌아가는 캔 스피너를 멍하니 바라보는 건 어떨까요? 때로는 그런 '멍 때리는 시간'이 우리에게 가장 필요한 디버깅 시간일지도 모릅니다.
이상, 김테크였습니다.


