스택오버플로우는 왜 터졌을까?
2021년 06월 08일 오후 7시 경, 열심히 공부하던 와중 카톡 하나를 보게 됐다.
갑자기..?
점심 때까지만 해도, 열심히 구글링 하며 스택오버플로우에 몇 번이나 들어갔었다. 진위 여부를 파악하기 위해 직접 들어가봤다.
진짜 터졌다…스택오버플로우가 터질 줄은 전혀 몰랐다.
반신반의하며 확인해봤는데, 503 에러가 대문짝만하게 보인다… 지난 4월 1일, 스택오버플로우는 April Fool’s Day 장난을 쳤었다. 복사, 붙여넣기를 하려면 돈을 내야 한다는 어처구니 없는 장난이었다. 참고로 난 10초만(?)에 알아차렸다(반대로 10초 동안은 뇌정지). 당시 스프린트 QA를 하고 있던 중이었는데 *”헐,,스택 오버플로우 이제 복붙하려면 돈 내야 된대요,,”*라 했더니 모든 개발자 분들이 당혹스러움을 감추지 못 했다. 복붙 멈춰!
그만큼 큰 이슈라는 생각이 들었다. 아무튼 당황하던 와중에, CNN을 포함한 주요 언론사, 트위치 등 대형 서비스들이 전부 멈췄다는 소식도 전해 들었는데, 순간 이전에 있었던 비슷한 이슈 하나가 떠올랐다.
이는 left-pad
라는 11줄 짜리 코드로 이루어진 작은 npm 패키지의 의존성이 거대한 npm 패키지인 바벨까지 이어져 있었고, left-pad
패키지가 삭제되서 그 거대한 서비스들이 모두 다운된 것이었다.
비슷한 이슈면 큰 문제이겠지만, 상당히 흥미로운 주제였다. 곧바로, 에러 페이지로 돌아가서 에러 메시지를 자세히 읽어보았다. Guru Mediation, cache-maa, Varnish cache server…모르는 단어 투성이었지만, 뭔가 캐시가 잘못된 거라고 유추해볼 수 있었다. 일단 Guru가 뭔지 찾아봤으나 뭔지 모르겠고, Guru Mediation을 찾아보니 다음과 같이 수정된 검색어로 검색되었다. 복붙했는데…
일단, 위키백과가 최상단 검색결과에 떠서 확인해보니 Commodore Amiga라는 컴퓨터에서 충돌이 발생했을 때, 표시되는 오류 알림으로 시작하여 지금은 다양한 소프트웨어에서 사용되는 문구라고 한다. 그 중, Varnish라는 소프트웨어에서도 사용된다고 한다. Varnish는 아까 오류 페이지에서 봤던 단어이다. 여기까지 와서 생각해보면, Varnish라는 소프트웨어에 문제가 생겨서 오류가 발생했다는 것을 알 수 있다(Mediation은 그냥 오타인가..?).
Varnish가 뭔지 찾아보니 무거운 웹사이트를 위한 HTTP 가속기(HTTP Accelerator)라고 한다. 캐싱 서버, 프록시 서버 정도는 들어봤지만, HTTP 가속기는 처음 들어봤다. 무지성 웹 가속기는 그냥 캐싱해서 웹사이트 접근시간을 낮추는 역할을 하는데, 일반적으로 알려진 Nginx, Apache처럼 캐싱 서버도 웹 가속기에 포함된다고 한다. 그 외에도 클라이언트에 설치될 수도 있고, 네트워크 하위 계층에 직접 설치될 수도 있다고 한다. Varnish는 Nginx나 Apache와 같은 웹서버 웹 가속기와는 달리, HTTP 가속기로 설계되어, 다른 프로토콜은 제외하고 오직 HTTP 가속에 특화되어 있다고 한다.
Varnish는 CNN, 가디언, 뉴욕 타임즈, 레딧 등에서 사용하고 있다고 알려져 있는데, 이들 모두가 터졌으니 Varnish에 문제가 있다고 생각할 수 있었다. 근데 생각해보면, 얘는 소프트웨어인데..? 그 때, 또 하나의 카톡이 왔다(ㅋㅋㅋ). GitHub도 터졌다고 한다..!
보다시피 GitHub은 완전히 터진게 아니었다. 모양새를 보니 CSS가 적용되지 않았는데..이걸 보고 CDN 서버 중 하나가 터지지 않았을까 유추했다. Varnish랑 연관지어 생각해보면, 어떤 CDN 제공업체가 Varnish를 이용하는 상품을 제공하고, 이 서버가 터진게 아닐까 생각해볼 수 있다
이후, 몇 시간이 지나고 야식 먹으며 구글링을 해보니 관련된 기사들을 많이 찾을 수 있었다. 예상했던 것처럼 Varnish 기반으로 CDN 서비스를 제공하는 Fastly라는 회사가 있었고, CDN 서비스에 장애가 있었다고 한다. 한 시간 정도 되어 복구되긴 했지만, 그 동안의 피해는 크지 않았을까 싶다. 또 오늘 사건으로 파이어베이스 호스팅도 다운됐다. 구글은 GGC도 직접 구축했는데, 왜 호스팅 서비스에는 다른 서비스를 사용하는지도 궁금하다.
여러 모로 많은 생각이 드는 사건이다. 물론 left-pad
사건과는 살짝 다르지만, 한 개의 CDN 서비스에 의존하여 줄줄이 무너지는 웹사이트들을 보면, 나 하나 쯤은 이란 생각은 절대 해서는 안 될 것 같다. 이 글을 보는 모든 이가 스스로 큰 영향력이 있다고 생각하며 좋은 개발 문화를 만들어가면 좋겠다고 희망하며 포스팅을 마친다.