Hacker News가 이제 Common Lisp 위에서 구동됨
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
- Lisp 언어 및 Common Lisp 개발자
- 성능 최적화와 멀티코어 환경 적용에 관심 있는 프로그래머
- Arc 언어를 사용하거나 이식하려는 개발자
- HN 아키텍처와 설계 원칙에 대해 학습하고자 하는 개발자
핵심 요약
- Hacker News는 Arc 언어에서 Common Lisp(SBCL)로 전환하여 성능 향상 및 멀티코어 지원 가능
- Clarc(Arc → Common Lisp 변환기) 도입으로 구조 체계화 및 사용자 경험 개선
- 보안상의 이유로 HN 전체 코드베이스 공개는 어려움
섹션별 세부 요약
1. 전환 목적 및 기술적 변화
- Arc 언어에서 Common Lisp(SBCL)으로 전환
- 성능 향상과 멀티코어 지원 가능성 확보
- Clarc 도입으로 인한 구조 체계화
- Arc-to-JS 변환기(Lilt) 및 Arc-to-Common Lisp 변환기(Clarc) 개발
- 기존 Arc 구현의 하위 구조 재설계
- arc0, arc1, arc2 단계로 나눠 개발
- arc2에서 전체 기능 구현, arc0/arc1에서 최소화
- HN 사용자 경험 개선
- 페이지 분할 제거, 긴 댓글 스레드 한 번에 로드
- Clarc 도입으로 멀티코어 지원 가능
2. 코드베이스 공개 및 보안 고려
- Clarc 소스 코드 공개는 용이
- 기존 Arc 버전을 Clarc로 이식 가능
- HN 전체 코드베이스 공개는 보안상 어려움
- 내부에 여러 보안 메커니즘 포함
- 공개 시 보안 메커니즘 약화 가능성
3. 성능 및 확장성 고려
- 최신 CPU 활용으로 성능 향상
- 병목은 디스크 및 네트워크 I/O
- HN은 텍스트 서빙만으로 상대적으로 용이
- 규모 확장 전에도 처리량 감당 가능
- 병목이 아닌 I/O 처리가 주요 제약 요소
4. 언어 및 커뮤니티 관련 의견
- Racket 커뮤니티의 친절한 지원
- 요청한 버그 모두 수정
- Armed Bear Common Lisp에 대한 애정
- 강력한 JVM 라이브러리 생태계
- Lisp 언어의 특성 강조
- "Worse is better" 철학 적용
- "Less is more"의 설계 원칙
결론
- Common Lisp(SBCL)과 Clarc 도입으로 HN의 성능 및 확장성 향상
- 보안 고려로 전체 코드베이스 공개는 제한적
- Arc 언어를 기반으로 한 프로젝트 개발자에게 Clarc 활용이 유리
- Lisp 언어의 설계 철학과 기술적 장점을 이해하는 것이 중요