장인정신과 아름다움 (새 탭에서 열림)

Linear는 서비스 마비 수준의 DDoS 공격을 단순한 보안 위협이 아닌, 시스템 전반의 기술 부채를 해결하고 성능을 극한으로 끌어올리는 기회로 삼았습니다. 공격자가 악용한 비효율적인 쿼리와 아키텍처의 약점을 근본적으로 개선함으로써, 사건 종료 후 Linear는 공격 전보다 훨씬 더 빠르고 안정적인 서비스로 거듭났습니다. 이는 보안 대응이 단순히 방어벽을 세우는 것을 넘어 시스템의 기초 체력을 강화하는 과정임을 시사합니다.

DDoS 공격의 양상과 초기 대응의 한계

  • 단순한 네트워크 트래픽 과부하가 아니라, 데이터베이스에 과부하를 주는 고비용 API 호출을 집중적으로 노린 정교한 애플리케이션 계층(L7) 공격이었습니다.
  • IP 차단이나 속도 제한(Rate Limiting) 같은 전통적인 방어 수단은 공격자가 패턴을 지속적으로 변경함에 따라 '두더지 잡기'식의 한계에 부딪혔습니다.
  • 공격이 지속되는 동안 시스템의 가장 느린 부분들이 병목 현상을 일으키며 전체 서비스 중단으로 이어지는 과정을 목격했습니다.

데이터베이스 성능 최적화와 쿼리 개선

  • 공격자가 검색 및 필터링 기능을 악용한다는 점에 착안하여, 실행 계획(Query Plan) 분석을 통해 인덱스가 제대로 작동하지 않던 지점들을 대대적으로 수정했습니다.
  • 특히 '소프트 삭제(Soft Delete)' 처리를 위한 필터 조건이 쿼리 성능을 저하시키는 주요 원인임을 파악하고, 이를 최적화하여 데이터 조회 속도를 획기적으로 높였습니다.
  • Postgres 데이터베이스의 불필요한 Full Table Scan을 제거하고, 가장 빈번하게 호출되는 엔드포인트의 응답 시간을 밀리초 단위로 단축했습니다.

동기화 엔진 및 아키텍처 재설계

  • Linear의 핵심인 오프라인 우선(Offline-first) 동기화 아키텍처에서 발생하는 오버헤드를 줄이기 위해 동기화 로직을 전면 재검토했습니다.
  • 클라이언트와 서버 간의 데이터 상태 비교 프로세스를 효율화하여, 동일한 작업을 수행할 때 발생하는 CPU 및 메모리 점유율을 대폭 낮췄습니다.
  • 결과적으로 인프라를 증설하지 않고도 이전보다 몇 배나 많은 동시 요청을 처리할 수 있는 구조적 회복 탄력성을 확보했습니다.

보안 사고는 시스템의 가장 취약한 고리를 드러내는 가혹한 테스트 베드가 될 수 있습니다. Linear의 사례처럼 공격에 단순히 방어적으로 대응하기보다 시스템 내부의 효율성을 높여 '공격의 가성비'를 떨어뜨리는 전략은, 보안과 성능이라는 두 마리 토끼를 잡을 수 있는 탁월한 접근 방식입니다. 성능 최적화가 곧 최선의 보안 대책이 될 수 있다는 점을 시사합니다.