Searching...
한국어
English
Español
简体中文
Français
Deutsch
日本語
Português
Italiano
한국어
Русский
Nederlands
العربية
Polski
हिन्दी
Tiếng Việt
Svenska
Ελληνικά
Türkçe
ไทย
Čeština
Română
Magyar
Українська
Bahasa Indonesia
Dansk
Suomi
Български
עברית
Norsk
Hrvatski
Català
Slovenčina
Lietuvių
Slovenščina
Српски
Eesti
Latviešu
فارسی
മലയാളം
தமிழ்
اردو
Building Secure and Reliable Systems

Building Secure and Reliable Systems

Best Practices for Designing, Implementing, and Maintaining Systems
by Heather Adkins 2020 555 pages
Technology
Engineering
Technical
듣기

가지 주요 요점

1. 프레임워크는 애플리케이션 전반에 걸쳐 보안과 신뢰성을 강화합니다

프레임워크는 코드 재사용을 가능하게 합니다: 특정 기능이나 특징에 영향을 미치는 모든 보안 및 신뢰성 측면을 고려하는 대신, 개발자는 특정 빌딩 블록만 맞춤화하면 됩니다.

표준화된 보호. 프레임워크는 여러 애플리케이션에서 공통 보안 및 신뢰성 문제를 해결하는 일관된 접근 방식을 제공합니다. 인증, 권한 부여, 오류 처리와 같은 중요한 기능을 중앙 집중화함으로써, 프레임워크는 일관되지 않은 구현에서 발생할 수 있는 취약성의 가능성을 줄입니다. 이 접근 방식은 도메인 전문가가 안전한 빌딩 블록을 설계하고 개발할 수 있게 하여, 프레임워크를 사용하는 모든 팀이 혜택을 받을 수 있습니다.

생산성 향상. 프레임워크를 사용하면 개발자는 보안 및 신뢰성 기능을 재발명하는 대신 비즈니스 로직에 집중할 수 있어 생산성이 높아집니다. 프레임워크는 종종 모니터링, 로깅, 성능 최적화를 위한 내장 도구를 제공하여 개발 프로세스를 더욱 간소화합니다. 이러한 표준화는 프로젝트 전반에 걸쳐 공통 패턴이 일관되게 적용되므로 코드 보안 및 신뢰성을 이해하기 쉽게 만듭니다.

2. 코드 설계의 단순성은 보안과 유지보수성을 향상시킵니다

YAGNI 코드를 피하면 신뢰성이 향상되고, 단순한 코드는 보안 버그가 적어지고 실수할 기회가 줄어들며, 사용되지 않는 코드를 유지보수하는 데 소요되는 개발자 시간도 줄어듭니다.

복잡성 감소. 단순한 코드는 이해하기 쉽고, 검토 및 유지보수가 용이합니다. YAGNI (You Aren't Gonna Need It) 원칙을 따르고 과도한 엔지니어링을 피함으로써, 개발자는 더 견고하고 안전한 시스템을 만들 수 있습니다. 단순한 코드는 잠재적인 고장 지점이 적고 숨겨진 취약성이 포함될 가능성이 적습니다.

유지보수성 향상. 정기적인 리팩토링과 기술 부채 해결은 시간이 지남에 따라 코드 단순성을 유지하는 데 중요합니다. 이 지속적인 프로세스는 복잡하고 이해하기 어려운 코드의 축적을 방지하여 보안 및 신뢰성 문제를 초래할 수 있습니다. 린터 및 코드 건강 지표와 같은 도구는 팀이 개선할 영역을 식별하고 높은 코드 품질 표준을 유지하는 데 도움을 줄 수 있습니다.

3. 강한 타입과 정화는 일반적인 취약성을 방지합니다

강한 타입을 사용하면 컴파일러가 포착하지 못하는 유형의 오류로부터 코드를 보호할 수 있습니다.

타입 안전성. 강한 타입은 런타임이 아닌 컴파일 타임에 오류를 포착하여 많은 일반적인 취약성을 프로덕션에 도달하기 전에 방지합니다. 다른 컨텍스트에 대해 특정 타입을 사용함으로써 (예: HTML 콘텐츠에 SafeHtml, URL에 SafeUrl), 개발자는 설계에 의해 보안 속성을 강화할 수 있습니다. 이 접근 방식은 SQL 인젝션이나 크로스 사이트 스크립팅(XSS)과 같은 취약성을 도입하기 훨씬 어렵게 만듭니다.

입력 검증. 적절한 입력 정화는 보안 취약성을 방지하는 데 중요합니다. 사용자 입력을 처리하기 위한 전용 라이브러리와 프레임워크를 사용함으로써, 개발자는 모든 데이터가 민감한 작업에 사용되기 전에 적절히 검증되고 정화되도록 할 수 있습니다. 여기에는 다음이 포함됩니다:

  • 사용자 생성 콘텐츠의 특수 문자 이스케이프
  • URL 및 파일 경로의 검증 및 정화
  • 모든 입력에 대한 엄격한 타입 검사 시행

4. 단위 테스트는 개별 구성 요소의 동작을 검증합니다

단위 테스트는 일반적으로 엔지니어링 워크플로의 일부로 로컬에서 실행되어 개발자가 코드베이스에 변경 사항을 제출하기 전에 빠른 피드백을 제공합니다.

세분화된 검증. 단위 테스트는 개별 소프트웨어 구성 요소의 동작을 고립된 상태에서 검증하는 데 중점을 둡니다. 이 접근 방식은 개발자가 개발 초기 단계에서 버그를 잡을 수 있게 하며, 각 구성 요소가 통합되기 전에 올바르게 작동하는지 확인합니다. 효과적인 단위 테스트 관행에는 다음이 포함됩니다:

  • 실제 코드와 함께 또는 그 전에 테스트 작성 (테스트 주도 개발)
  • 정상 및 엣지 케이스 모두를 커버
  • 의존성을 고립시키기 위한 목업 및 스텁 사용

지속적인 피드백. 단위 테스트를 개발 워크플로에 통합함으로써, 팀은 회귀 및 의도하지 않은 부작용을 빠르게 잡을 수 있습니다. 이 지속적인 피드백 루프는 코드 품질을 유지하고 새로운 버그의 도입을 방지합니다. 자동화된 CI/CD 파이프라인은 모든 코드 변경 사항에 대해 단위 테스트를 실행하여 개발자에게 즉각적인 피드백을 제공합니다.

5. 통합 테스트는 시스템 전반의 상호작용을 평가합니다

통합 테스트는 개별 단위 및 추상화를 넘어, 데이터베이스나 네트워크 서비스와 같은 추상화의 가짜 또는 스텁된 구현을 실제 구현으로 대체합니다.

시스템 수준 검증. 통합 테스트는 시스템의 다양한 구성 요소가 함께 작동하는 방식을 평가하여, 단위 테스트에서 명확하지 않을 수 있는 문제를 발견합니다. 이러한 테스트는 데이터베이스 및 API와 같은 외부 의존성과의 상호작용을 포함하여 시스템이 전체적으로 올바르게 작동하는지 확인하는 데 도움을 줍니다. 통합 테스트의 주요 고려 사항에는 다음이 포함됩니다:

  • 현실적인 테스트 환경 설정
  • 테스트 데이터의 안전한 관리
  • 비동기 작업 및 타이밍 문제 처리

커버리지와 속도의 균형. 통합 테스트는 시스템 동작에 대한 귀중한 통찰력을 제공하지만, 일반적으로 단위 테스트보다 느리고 리소스를 많이 소모합니다. 팀은 포괄적인 통합 테스트와 빠른 피드백 루프를 유지하는 것 사이에서 적절한 균형을 찾아야 합니다. 위험 평가를 기반으로 선택적 통합 테스트를 수행하는 전략은 개발 속도를 희생하지 않고 테스트 커버리지를 최적화하는 데 도움이 될 수 있습니다.

6. 동적 분석 도구는 런타임 오류와 취약성을 감지합니다

동적 프로그램 분석은 소프트웨어를 실행하여, 잠재적으로 가상화되거나 에뮬레이트된 환경에서 테스트 이상의 목적을 위해 소프트웨어를 분석합니다.

런타임 오류 감지. 동적 분석 도구인 산티타이저는 정적 분석이나 일반적인 테스트로는 명확하지 않은 다양한 런타임 오류와 취약성을 감지할 수 있습니다. 이러한 도구는 컴파일 시 코드에 런타임 검사를 추가하여 다음과 같은 문제를 감지합니다:

  • 메모리 누수 및 버퍼 오버플로
  • 사용 후 해제 오류
  • 데이터 경합 및 교착 상태
  • 정의되지 않은 동작

성능 고려 사항. 동적 분석 도구는 귀중한 통찰력을 제공하지만, 성능에 상당한 영향을 미칠 수 있습니다. 팀은 이러한 도구를 야간 빌드나 전용 테스트 파이프라인의 일부로 실행하여 철저한 분석과 개발 속도 간의 균형을 맞춥니다. 동적 분석에서 얻은 통찰력은 팀이 버그 수정의 우선순위를 정하고 전체 코드 품질을 향상시키는 데 도움을 줄 수 있습니다.

7. 퍼즈 테스트는 엣지 케이스와 예기치 않은 입력을 발견합니다

퍼징은 서비스 회복력을 테스트하는 데 유용할 수 있습니다.

자동화된 입력 생성. 퍼즈 테스트는 대량의 무작위 또는 반무작위 입력을 생성하여 버그와 취약성을 발견합니다. 이 기술은 수동 테스트로는 놓칠 수 있는 엣지 케이스와 예기치 않은 동작을 찾는 데 특히 효과적입니다. 퍼즈 테스트는 다음을 식별하는 데 도움을 줄 수 있습니다:

  • 메모리 손상 문제
  • 입력 검증 결함
  • 서비스 거부 취약성
  • 파일 형식 또는 네트워크 프로토콜의 구문 분석 오류

지속적인 퍼징. 퍼즈 테스트를 지속적인 통합 파이프라인에 통합하면 팀이 시스템의 새로운 취약성을 지속적으로 탐색할 수 있습니다. 코드베이스가 진화함에 따라 퍼징은 변경 사항으로 인해 도입된 회귀 또는 새로운 문제를 발견할 수 있습니다. libFuzzer 및 AFL(American Fuzzy Lop)과 같은 도구는 다양한 유형의 소프트웨어에 대해 퍼즈 테스트를 구현하는 것을 더 쉽게 만듭니다.

8. 지속적인 검증은 지속적인 시스템 회복력을 보장합니다

신중하게 설계된 테스트 스위트는 동일한 작업을 수행하는 소프트웨어의 다양한 부분의 정확성을 평가할 수 있습니다.

능동적인 회복력. 지속적인 검증은 전통적인 테스트를 넘어 다양한 조건에서 시스템을 지속적으로 실행합니다. 이 접근 방식은 시간이 지남에 따라 시스템이 실패와 공격에 대해 회복력을 유지하도록 돕습니다. 지속적인 검증 기술에는 다음이 포함됩니다:

  • 카오스 엔지니어링 실험
  • 정기적인 재해 복구 훈련
  • 자동화된 보안 스캔 및 침투 테스트
  • 현실적인 부하 조건에서의 성능 스트레스 테스트

진화하는 위협 모델. 시스템이 성장하고 진화함에 따라 새로운 취약성과 실패 모드가 나타날 수 있습니다. 지속적인 검증은 팀이 이러한 도전에 앞서 나갈 수 있도록 도와줍니다. 이 프로세스에는 위협 모델 업데이트, 테스트 시나리오 수정, 실제 사건 및 근접 사고에서 얻은 교훈을 통합하는 것이 포함되어야 합니다.

Last updated:

리뷰

3.9 out of 5
Average of 100+ ratings from Goodreads and Amazon.

안전하고 신뢰할 수 있는 시스템 구축은 평균 평점 5점 만점에 3.90점을 받으며 다양한 평가를 받고 있다. 독자들은 특히 대규모 조직을 위한 보안 및 신뢰성 원칙에 대한 포괄적인 다루기를 높이 평가한다. 많은 이들이 이 책을 교육 및 참고 자료로 유용하다고 생각한다. 그러나 일부는 책의 구조, 장황함, 그리고 때때로 명확성이 부족하다고 비판한다. 이 책은 보안과 신뢰성 개념을 통합한 점에서 칭찬받지만, 구글 중심적이라는 점도 지적된다. 일부 챕터는 너무 이론적이거나 상세하다고 여겨지는 반면, 다른 챕터는 매우 실용적이다. 전반적으로, 이 책은 보안 전문가와 SRE에게 추천된다.

저자 소개

고교 시절 촉망받는 야구선수였던 저자는 연습 중 동료의 야구 배트에 얼굴을 정통으로 강타당하는 큰 사고를 당했다. 이 사고로 얼굴 뼈가 30조각이 났고, 왼쪽 눈이 튀어나와 실명 위기까지 왔으며, 심정지가 세 번이나 일어났다. 걸을 수조차 없었던 저자는 절망에 빠지는 대신 지금 당장 할 수 있는 아주 작은 일이라도 찾아 그것을 반복하자고 마음먹는다.

헤더 애드킨스는 사이버 보안 및 정보 기술 분야에서 뛰어난 전문성을 가진 전문가이다. 저자로서 그녀는 업계에서의 광범위한 경험을 바탕으로 안전하고 신뢰할 수 있는 시스템에 관한 문헌에 크게 기여해왔다. 애드킨스는 구글에서의 중요한 역할로 잘 알려져 있으며, 보안 관행의 개발 및 구현에 중요한 역할을 해왔다. 그녀의 전문성은 위험 관리, 사건 대응, 보안 엔지니어링 등 다양한 분야에 걸쳐 있다. 애드킨스는 글을 통해 대규모 기술 환경에서 얻은 모범 사례와 통찰을 공유하여 다른 조직들이 보안과 신뢰성을 향상시킬 수 있도록 돕고자 한다.

0:00
-0:00
1x
Create a free account to unlock:
Bookmarks – save your favorite books
History – revisit books later
Ratings – rate books & see your ratings
Listening – audio summariesListen to the first takeaway of every book for free, upgrade to Pro for unlimited listening.
Unlock unlimited listening
Your first week's on us
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 5: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Sep 26,
cancel anytime before.
What our users say
“...I can 10x the number of books I can read...”
“...exceptionally accurate, engaging, and beautifully presented...”
“...better than any amazon review when I'm making a book-buying decision...”
Compare Features
Free Pro
Read full text summaries
Listen to full summaries
Unlimited Bookmarks
Unlimited History
Benefits
Get Ahead in Your Career
People who read at least 7 business books per year earn 2.3 times more on average than those who only read one book per year.
Unlock Knowledge Faster (or Read any book in 10 hours minutes)
How would your life change if we gave you the superpower to read 10 books per month?
Access 12,000+ hours of audio
Access almost unlimited content—if you listen to 1 hour daily, it’ll take you 33 years to listen to all of it.
Priority 24/7 AI-powered and human support
If you have any questions or issues, our AI can resolve 90% of the issues, and we respond in 2 hours during office hours: Mon-Fri 9 AM - 9 PM PT.
New features and books every week
We are a fast-paced company and continuously add more books and features on a weekly basis.
Fun Fact
2.8x
Pro users consume 2.8x more books than free users.
Interesting Stats
Reduced Stress: Reading for just 6 minutes can reduce stress levels by 68%
Reading can boost emotional development and career prospects by 50% to 100%
Vocabulary Expansion: Reading for 20 minutes a day are exposed to about 1.8 million words per year
Improved Cognitive Function: Reading can help reduce mental decline in old age by up to 32%.
Better Sleep: 50% of people who read before bed report better sleep.
Can I switch plans later?
Yes, you can easily switch between plans.
Is it easy to cancel?
Yes, it's just a couple of clicks. Simply go to Manage Subscription in the upper-right menu.
Save 62%
Yearly
$119.88 $44.99/yr
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.