웹 개발자를 위한 대규모 서비스를 지탱하는 기술 서평

데이터 구조, 메모리, OS, DB, 서버 / 인프라

대규모 서비스

코드숨 스터디 ( 2023.05.08 ~ 2023.06.19) 7주간 스터디를 진행했다. 대규모 서비스에 관한 책답게 14명의 인원으로 호기롭게 시작했다. 책을 읽고 모여서 이야기하고 싶은 부분, 중요하다고 생각하는 부분들을 모아 이야기를 나눴다. 인원이 많아 조를 나눠 진행했고 나뉜 조에 따라 내용과 분위기가 달라졌다. 대규모로 하다 보니 내가 생각했던 스터디 방향과 달라졌다. 또 집중되어 모두 참여하는 분위기가 아니고 어느 순간 누군가 들은 청중이 되었다. 강의식 스터디를 지양한다. 발표식 스터디도 지양한다. 말하는 사람은 얻어 갈 수 있다. 하지만 듣는 사람들은 얻어 간다는 착각에 빠진다. 그런 스터디를 하고 싶지 않았다. 내 나름의 교육철학이다. 다음 스터디는 다시 소소한 스터디의 본질로 돌아가 소규모로 집중된 스터디를 만들려고 한다.




이 책은 굉장히 오래된 책이다. 굉장히라고 하기엔 11년도 책이지만, 프로그래밍 세계에서는 오래되었다고 봐도 된다. 이 오래된 책이 아직도 인기 있는 데에는 이유가 있다고 생각이 들었다.

대규모 서비스를 지탱하는 기술을 소개한다. 어떤 코드를 알려주는 것이 아니다. 우리가 대규모 서비스를 운영하기 위해 고려해야 하는 것들을 알려준다. CPU 부하는 어떻게 할지, I/O 부하는 어떻게 할지, DB는 어떻게 관리할지 등등. 지금은 해당되지 않는 다소 옛날의 이야기라고 생각하는 개발자들도 많을 것이다. 그것들을 해결할 새로운 기술들이 등장했다. 책에서 나오는 여러 문제점들을 해결한 기술들도 많다. 이 책에서 이야기하는 대규모의 기준도 지금은 훨씬 넘어버렸다. 파티셔닝을 최후의 수단으로 사용하라고 이 책에서는 말하지만 요즘에는 파티션이 필수인 시대가 되었다. 그만큼 데이터량은 어마어마해졌고, 대규모 서비스로 전환되는 속도는 10년 전과는 차원이 달라졌다. 그럼에도 불구하고 이 책에서 이야기하고자 하는 것에 집중해야 한다. 그것은 본질이다.

자동으로 관리해 주는 서비스들이 많아졌다. 그것들은 또 꽤 안정적이고 편하다. 그래서 os, db, cpu 등을 적당히 돌아가도록 만들어도 서비스는 문제없이 돌아간다. 아니 문제없이 돌아간다고 착각에 빠지게 한다. 그 착각은 문제를 알아채지 못하는 코드를 작성하게 되고 점점 품질이 떨어지는 상황이 될 수 있다. 중요한 것은 원인 파악과 그 원인에 맞는 해법이다. 지금 만들고 있는 서비스에 맞는 os, db, 알고리즘 등이 필요하며 그것들이 최적화되었을 때, 대규모 서비스를 지탱하는 기술이 된다.

이 책에서는 추측하지 말고 계측하라고 나온다. 어느 부분에서 부하가 있는지 추측하지 말고 계측해야 한다. 병목을 찾고 제거해야 최적의 성능을 끌어내고 자원을 효율적으로 쓸 수 있다. cpu에 부하가 생기는 이유는 여러 가지이다. 프로그램이 잘못돼서, 규모가 커져서 등의 이유 말이다. 하지만 이런 원인을 찾지 않고 cpu에 자동 관리 툴을 써버린다면 본질적 원인은 그대로 묻히게 된다. 언젠가는 터질 시한폭탄을 계속 가지고 가겠다는 말과 같다. 문제를 적절히 관리해 주는 툴을 찾지 말고 문제를 찾아야 한다. 그리고 해결해야 한다. 그러기위해선 알아야한다. 뭐가 문제인지.

서비스가 어떤 종류의 것이냐에 따라 대규모 전략은 달라진다. 속도와 안정성을 모두 제공할 수는 없다.

우리는 선택해야 하고 집중해야 한다. 선택하기 위해서는 해결하고자 하는 문제에 대해 알아야 한다. 명확하게 알아야 안정적이고 최적화된 서비스를 제공할 수 있다.

results matching ""

    No results matching ""