메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

독자리뷰

옆에 두고두고 읽어볼만한 책

9hr***

|

2022-08-28

SRE를 위한 시스템 설계와 구축

이 책은 안전하고 확장이 가능하며 신뢰할 수 있는 시스템을 설계하는 데 도움을 주는 구글의 구체적인 모범 사례를 자세히 공유한다. 또한, 보안과 안정성에 특화된 실무자의 시스템 설계, 구현 및 유지 보수에 대한 통찰력도 함께 제공하므로 그들이 경험으로 얻은 통찰을과 SRE를 지침을 익혀 안전하고 신뢰성 높은 시스템을 구축할 수 있게 한다.

  • 저자 : 헤더 애드킨스 , 벳시 바이어 , 폴 블랭킨십 , 피오트르 레반도프스키 , 애나 오프레아 , 애덤 스터블필드
  • 번역 : 장현희
  • 출간 : 2022-01-03



사이트 신뢰성 엔지니어링

 

나는 전부터 체계적이고 안정적인 시스템을 구축하는 것에 관심이 많았다. 하지만 서비스 개발 자체에는 관심이 없어서 직접 개발을 하는 것보다는 운영하면서 부딪히는 이슈들을 해결하는 것을 좋아한다. 예를 들어 학생 시절에는 마인크래프트 서버를 운영하면서 어떻게 사용자 수가 많아지면서 어떻게 서버를 확장할 수 있을지 고민도 해보고, 성능 저하가 발생했을 때 원인을 찾고 해결하곤 했다.

 

 

그 때 나는 문제를 주먹구구식으로 해결했지만, 이번에 리뷰할 [SRE를 위한 시스템 설계와 구축]은 서비스의 설계 단계부터, 구현, 유지보수 등 각 단계에서 어떻게 보안(Security)과 신뢰성(Reliability) 문제를 어떻게 예방하고 대처할지 차근차근 알려준다. 메모장과 같은 단순한 프로그램부터 복잡한 웹 서비스까지 무엇을 개발하더라도 안정성과 보안은 빠뜨릴 수 없는, 사용자와의 신뢰의 문제이기 때문에 모든 개발 조직에서 고려할 문제라고 생각한다.

 

책의 내용이 생각보다 방대한데, 그 중 인상 깊었던 몇 가지 내용을 정리해본다. 책의 내용에 깊이가 있어서 여러 번 읽어보는 것을 추천한다.

 

설계

 

이해 가능성을 위한 설계

시스템 원활하게 관리하고, 장애에 대처하려면 시스템을 최대한 단순하게 설계해야한다. 물론 성능을 위해서 복잡해지는 경우도 종종 있지만, 복잡성에는 이유가 있어야 하며 과해서는 안된다. 그렇지 않으면 문제가 발생해도 원인을 분석하기가 어려워진다. 이해하기 쉬운 설계를 위해서는 시스템을 작고 이해하기 컴포넌트로 분리해야한다.

 

범위의 변화를 위한 설계

(거의) 모든 시스템은 한 번 개발이 된 후에 멈추는 게 아니라 항상 변화한다. 새로운 기능을 추가하거나 수도 있고, 보안 취약점을 패치할 수도 있다. 하지만 단순히 코드를 바꾸고 배포하는게 아니라 코드 리뷰와 테스트로 검증하고, 단기적 변화냐, 장기적 변화냐에 따라서도 다른 전략을 취해야 한다.

 

구현

코드 작성

코드는 항상 완벽하지 않고, 취약점도 생기기 마련이다. 아무리 열심히 리뷰하고 테스트를 해도 버그가 전혀 없을 수는 없다. 그리고 모두가 해박한 보안 전문가가 되는 것은 비현실적이기 때문에, 공통적인 라이브러리를 사용해서 보안 문제를 관리할 수 있도록 하는것이 필요하다. 그리고 데이터의 타입이 단순 문자열이 아니라 잘 정의된 타입을 사용하면 더 수월하게 보안 문제를 예방할 수 있다.

 

코드 테스트

사람의 코드 리뷰는 완벽하지 않기 때문에 코드는 항상 테스트해야한다. 구글은 각각의 컴포넌트가 의도적으로 동작하는지 테스트하는 단위테스트와, 시스템 전체가 의도대로 동작하는지 통합 테스트도 수행한다.

 

그리고 정적인 테스트 뿐만 아니라 Undefined Behavior, Race Condition, Memory Leak, Memory Corruption 등 어플리케이션에서 발생할 수 있는 다양한 이상 동작들을 탐지할 수 있는 도구도 적극적으로 사용한다.



닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?