GN⁺: 냉혈한 소프트웨어
(dubroy.com)차가운 혈액을 가진 소프트웨어
- 2004년, 컴퓨터 과학 전공자인 저자가 자연사 강의를 듣는 중 교수가 냉동된 아기 물감거북을 보여줌.
- 이 거북은 냉동 상태에서도 생존할 수 있는 몇 안 되는 종 중 하나로, 저온에서 대사를 조절할 수 있는 차가운 혈액 동물임.
- 강의 동안 거북이 서서히 움직이며 생명을 되찾는 모습을 관찰함으로써 차가운 혈액 동물에 대한 이해를 깊게 함.
소프트웨어 프로젝트의 디코토미
- 소프트웨어 프로젝트도 따뜻한 혈액과 차가운 혈액 프로젝트로 나뉠 수 있음.
- 따뜻한 혈액 프로젝트는 지속적인 활동이 필요하며, 활동이 멈추면 문제가 발생함.
- 차가운 혈액 프로젝트는 활동이 뜸해도 재개할 때 이전 상태에서 바로 시작할 수 있음.
블로그의 차가운 혈액 소프트웨어
- 저자의 블로그를 구동하는 소프트웨어는 차가운 혈액 소프트웨어임.
- 12년 전에 시작된 이 프로젝트는 단순하고, 외부 서비스에 의존하지 않으며, 모든 의존성이 프로젝트 저장소에 포함됨.
- 몇 가지 작은 개선을 제외하고는 수정 없이 잘 작동하며, 앞으로도 12년간 작동할 것으로 기대됨.
GN⁺의 의견
- 차가운 혈액 소프트웨어의 개념은 프로젝트의 지속 가능성과 유지 보수성에 중요한 영향을 미침.
- 이 글은 기술 스택의 선택이 프로젝트의 생명력에 어떻게 영향을 미치는지에 대한 통찰을 제공함.
- 저자의 경험은 소프트웨어 개발자들에게 장기적으로 안정적인 시스템을 구축하는 방법에 대한 교훈을 줌.
Hacker News 의견
-
Node 및 JavaScript 생태계에서 Express 웹 프레임워크가 있음. 현재 주요 버전인 4.x.x 브랜치는 10년 이상 되었으며, 매주 1700만 번 이상 다운로드됨. 일부 기능이 부족하고 성능이 최고는 아니지만, 빠르고 안정적인 개발을 가능하게 하고 API 변경이나 보안 패치 부족 걱정 없이 장기 계획을 세울 수 있어서 많은 개발자들이 선호함. Go 언어는 넓은 표준 라이브러리와 호환성 약속 덕분에 10년 이상된 프로그램도 실행할 수 있는 더 나은 안정성을 제공함.
-
소프트웨어가 업데이트 없이도 잘 작동하는 경우는 처음부터 올바르게 만들어진 경우임. 개인적으로 사용하는 소프트웨어는 취향이 크게 변하지 않기 때문에 상대적으로 쉬움. 그러나 다른 사람들이 사용하는 소프트웨어를 작성할 때는 요구 사항이 다를 수 있고, 예상치 못한 문제가 발생할 수 있음. 예를 들어, 큰 파일 처리 시 충돌이 발생할 수 있으며, 이를 수정하기 위해 소프트웨어의 절반을 다시 작성해야 할 수도 있음. 이는 소프트웨어가 자주 변경되지 않는다고 해서 반드시 더 낫다는 주장에 대한 가장 큰 반론임.
-
Python은 지속적인 호환성 파괴 변경으로 인해 좋지 않은 예임. 반면 Go나 Java는 10년 된 코드도 현대 도구로 잘 작동함. Perl은 30년 된 코드도 여전히 잘 작동하는 더 좋은 예임.
-
IBM 메인프레임(z/OS) 작업을 하고 있음. IBM은 후방 호환성 유지 면에서 가장 뛰어남. Microsoft(Windows)가 두 번째이며, Linux(커널) ABI가 세 번째임. 대부분의 다른 시스템은 호환성 유지에 시간을 들이고 싶어하지 않는 OSS에서 흔히 발생하는 문제임.
-
의존성이 앱을 '따뜻한 피'로 만들 수 있지만, Docker나 컨테이너화는 이러한 문제를 어느 정도 해결할 수 있음. 프로젝트에 사용할 라이브러리를 선택할 때 '차가운 피'인 라이브러리인지 충분히 연구하여 선택함.
-
많은 엔지니어들이 GitHub에서 라이브러리를 찾을 때 마지막 커밋 시간을 확인함. 최근 커밋일수록 더 잘 지원된다고 생각함. 그러나 오랫동안 안정적으로 유지되고 버그가 없는 아카이브된 프로젝트를 찾는 것은 마치 중고품 가게에서 숨겨진 보석을 찾는 것과 같음.
-
자신의 사이드 프로젝트를 유지보수하고 있음. 12-13년 전에 시작하여 PHP, Laravel, Symfony로 재작성함. 프로젝트를 장기간 유지하는 방법을 배우는 데 매우 가치가 있었음. 예를 들어, Vagrant에서 Docker로, Vue + Axios + Webpack 등에서 Htmx로 간소화하는 기회를 찾음. 최근에는 PHP 8.2와 Symfony 7로 업그레이드하고 ChatGPT 기반 기능을 통합함.
-
최근 몇 년 동안의 모바일 앱이 몇 시간의 패치 작업을 필요로 하는 것에 대해 싫증남. 저자는 자신의 정적 사이트 생성기를 '차가운 피'로 묘사하며, Python 2에서 실행되는데, Python 2 설치가 점점 어려워지고 있음.
-
1994-95년에 작성한 SDK가 2017년 회사를 떠날 때까지 사용됨. ANSI C로 작성되었으며, PHP(5)로 작성한 것도 PHP 8.2에서 잘 작동함. 그러나 이러한 것들은 지루하고 화제성 지수가 낮음.
-
기사에서 언급된 것 외에도 본질적으로 안전한 위협 모델을 가지는 것이 중요함. 예를 들어, 전체 웹사이트는 공격자, 스팸 봇 등과 지속적으로 대응해야 하므로 본질적으로 '따뜻한 피'임. 반면 Tiddlywiki와 같은 정적 페이지는 웹에 올릴 필요가 없고 브라우저가 매우 안정적인 플랫폼이기 때문에 훨씬 나음.