저주받은 지식

1 month ago 14

  • Immich 개발 과정에서 습득한 저주받은 지식 목록 공유임
  • 다양한 소프트웨어 및 인프라 환경에서 발견한 예상치 못한 문제점을 정리함
  • EXIF 메타데이터, YAML 공백 처리, PostgreSQL 등 도구와 언어별 문제점 언급함
  • 일부 문제는 보안, 플랫폼 호환성, 오픈소스 의존성과 직접적으로 연결됨
  • 개발자라면 주의해야 할 실제 사례와 원인에 초점을 맞춤

개요

Immich 개발 팀이 프로젝트를 진행하며 겪은, 다시는 알고 싶지 않은 저주받은 지식을 공개함. 이는 실제 서비스 개발 및 운영 중 여러 도구, 언어, 플랫폼에서 직접 경험한 예상치 못한 함정과 문제를 나열한 목록임.

저주받은 지식 목록

  • 2025년 6월 4일

    • Zitadel의 Actions는 저주받은 기능임
    • Zitadel이 제공하는 커스텀 스크립팅 기능은 JS 엔진 기반이나, 정규식의 네이밍 캡처 그룹을 지원하지 않아 한계가 드러남
  • 2025년 5월 30일

    • Microsoft Entra는 PKCE를 지원하지만, 이를 OpenID discovery 문서에 명시하지 않아
    • 이로 인해 있는 기능이 클라이언트에서 감지되지 않는 문제 발생함
  • 2025년 5월 5일

    • 이미지를 설명하는 EXIF 메타데이터의 크기 정보는 실제 이미지와 다를 수 있음
    • 이 차이로 인해 크롭, 리사이즈 작업에서 오류 발생함
  • 2025년 4월 1일

    • YAML의 공백 처리는 예측과 다르게 동작하는 경우가 많음
    • 포매팅에 민감하여 의도와 다르게 내용이 해석되는 위험성 있음
  • 2024년 9월 20일

    • Windows의 숨김 파일은 "w" 플래그로 열리지 않음
    • SMB의 "hide dot files" 옵션과 조합하면 파일 탐색 및 처리 혼란이 커짐
  • 2024년 8월 7일

    • Bash 스크립트에서 캐리지 리턴(CRLF) 문제 발생 가능성 있음
    • Git이 체크아웃 시 자동으로 LF를 CRLF로 변환하면 스크립트 실행에 오류 유발함
  • 2024년 8월 7일

    • Cloudflare Workers에서의 fetch는 https를 명시해도 기본으로 http가 적용됨
    • 이로 인해 리다이렉션 루프 등 네트워크 관련 문제 야기함
  • 2024년 7월 21일

    • 모바일의 GPS 공유는 앱에 위치 권한 없을 때 GPS 정보가 이미지에서 조용히 제거됨
    • 위치 기반 서비스 정확성, 프라이버시에 영향 있음
  • 2024년 7월 3일

    • PostgreSQL의 NOTIFY는 트랜잭션 내에서만 동작함
    • socket.io의 postgres-adapter와 같이 사용할 경우 5초 주기로 WAL 기록이 발생해 부하 유발함
  • 2024년 7월 3일

    • npm 스크립트 실행 시 마다 npm 레지스트리에 http 요청을 보냄
    • 따라서 헬스 체크를 스크립트로 하면 비효율적
  • 2024년 6월 28일

    • JavaScript 커뮤니티 내 일부 사용자가 "하위호환성" 명분으로 50여개의 패키지 의존성 강제 추가
    • 이 패키지들은 모두 해당 사용자가 관리함
  • 2024년 6월 25일

    • bcrypt 구현체는 문자열 앞 72바이트만 사용함
    • 그 이후 문자는 무시되므로 긴 비밀번호가 무의미해짐
  • 2024년 1월 31일

    • JavaScript Date 객체는 연도와 날짜는 1부터, 월은 0부터 인덱싱함
    • 혼동하기 쉬운 구조임
  • 2024년 1월 9일

    • Node.js v20.8 이전, --experimental-vm-modules 옵션을 사용하는 CommonJS 프로젝트에서 ES 모듈이 다시 CommonJS 모듈 불러올 때
      • segfault(세그폴트)로 Node.js가 크래시되는 문제 발생함
  • 2023년 12월 28일

    • PostgreSQL의 매개변수 제한은 65,535개임
    • 대량 데이터 집합의 벌크 인서트에서 성능상 한계 초래함
  • 2023년 6월 26일

    • Secure Contexts에서만 사용 가능한 웹 API 있음
    • 대표적으로 클립보드 API 등은 https 또는 localhost 환경에서만 작동함
  • 2023년 2월 23일

    • TypeORM의 remove 구현체는 입력값에 직접 영향을 줌
    • 원본 객체 id 속성까지 삭제해버림

결론

이러한 저주받은 지식은 실제 서비스 개발 및 운영 환경에서 빈번히 마주칠 수 있는 함정임. 개발자라면 각 도구, 프로그래밍 언어, 환경 별로 숨어있는 제약과 이슈를 미리 파악함으로써, 효율적인 문제 해결 및 안정적인 서비스 개발에 도움이 됨.

Read Entire Article