책 소개
본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약
클라우드가 대중화되면서 솔루션 아키텍트의 역할이 더욱 부각되고 있으며 많은 소프트웨어 개발자, 시스템 엔지니어 및 기타 IT 전문가들이 솔루션 아키텍트가 되기 위해 노력하고 있다. 솔루션 아키텍트가 되려면 어떤 준비가 필요할까? 이 책은 솔루션 아키텍트를 준비하기 위한 방법과 전략에 대한 안내서다. 클라우드 개념과 기술 뿐만 아니라 인정받는 솔루션 아키텍트가 되기 위해 필요한 소프트 스킬에도 중점을 두고 있다. 특정 기술, 서비스에만 초점을 맞춰 기술을 향상하는 데 도움을 주며, 다양한 서비스를 활용한 설계 원칙과 패턴을 보다 근본적으로 이해할 수 있는 내용들을 제공한다. 또한 솔루션 아키텍트가 하는 일을 더욱 효율적으로 할 수 있는 다양한 방법에 대한 가이드를 제공한다.
추천의 글
“종종 기술을 업그레이드하거나 솔루션즈 아키텍트가 되고자 진로를 변경하려는 사람들을 보곤 한다. 저자는 수년간의 경험을 이 책에 담아 현재의 역할에서 기술을 향상시키려는 사람, 향후 기술을 탐색하는 사람이 쉽게 읽을 수 있도록 썼다. 솔루션즈 아키텍트의 기능과 역할 소개부터 시작해 기술과 트렌드를 다루기 전에 설계 패턴이나 마이그레이션 전략도 설명한다. 클라우드 시대에 자신의 기술을 갈고 닦고자 하는 신규 또는 기존 솔루션즈 아키텍트를 위한, 모든 핵심 영역을 다룬 책이다.”
—라제시 세스(Rajesh Sheth)
/AWS 메시징 및 스트리밍 제너럴 매니저
“확장성, 재사용성, 가용성, 접근성, 비용, 보안 등에 대한 아키텍처를 포함해 클라우드 컴퓨팅 시대의 다양한 기능을 이해하기 위한 가이드다. 모범 사례와 패턴을 공유하는 데 이보다 더 총체적인 접근 방식을 본 적이 없다. 저자들은 경험한 것으로 이 책을 저술했으며 경험이 풍부한 아키텍트뿐만 아니라 장차 아키텍트가 되려는 사람들도 참고할 필요가 있다.”
—로한 카마카(Rohan Karmarkar)/
AWS 솔루션 아키텍처 디렉터
“나는 개인적으로 개발 팀 리더에서 솔루션즈 아키텍트가 되는 이 여정을 겪었고 이는 저자도 마찬가지였다. 우리는 항상 도움이 될 수 있는 핸드북이 있기를 원했다. 이에 업계의 큰 격차를 메우고자 저자는 개인적인 경험과 학습을 바탕으로 다양한 배경을 가진, 모든 사람이 읽을 수 있는 매우 상세한 책을 만들었다. 성공적인 솔루션즈 아키텍트가 되고 무한한 가능성이 있는 새로운 세상을 여는 데 도움이 되는 매우 중요한 지식을 발견할 수 있기 때문에 이 책을 읽고 항상 유용한 참고 자료로 간직할 것을 강력히 추천한다.”
—카말 아로라(Kamal Arora)/
AWS 시니어 솔루션즈 아키텍트
이 책에서 다루는 내용
◆ 엔터프라이즈 환경에서 솔루션즈 아키텍트의 다양한 역할 탐색
◆ 핵심 설계 원칙과 패턴을 구현해 고성능의 비용 효율적인 솔루션 구축
◆ 아키텍처 보안을 구현하고 가용성을 높이기 위한 적절한 전략 선택
◆ 클라우드를 활용한 레거시 애플리케이션의 현대화
◆ 빅데이터 처리, 머신러닝, IoT, 양자 컴퓨팅을 이해하고 이를 현대적 아키텍처에 적용하는 방법
◆ 데브옵스 사고 방식을 통합해 협업을 촉진하고 운영 효율성을 높이며 프로덕션을 간소화하는 방법
이 책의 대상 독자
소프트웨어 개발자, 시스템 엔지니어, 데브옵스 엔지니어, 아키텍트, IT 업계에서 일하는 팀 리더로서 솔루션 아키텍트가 돼 안전하고 신뢰할 수 있으며 고성능이면서 비용 효율적인 아키텍처를 설계하고자 하는 사람을 대상으로 하는 책이다.
이 책의 구성
1장, ‘솔루션 아키텍처의 의미’에서는 솔루션 아키텍처가 무엇인지 알아보고 그 중요성을 정의한다.
2장, ‘조직에서의 솔루션 아키텍트’에서는 다양한 유형의 솔루션 아키텍트 역할과 조직 구조에 적합한 방식을 설명한다.
3장, ‘솔루션 아키텍처의 특성’에서는 확장성, 탄력성, 재해 복구, 접근성, 사용성, 보안, 비용과 같은 솔루션 아키텍처의 다양한 특성을 살펴본다.
4장, ‘솔루션 아키텍처 설계 원칙’에서는 확장성 있고 탄력적이며 고성능인 아키텍처를 만들기 위한 아키텍처 원칙을 설명한다.
5장, ‘클라우드 마이그레이션과 하이브리드 클라우드 아키텍처 설계’에서는 클라우드의 이점과 클라우드 네이티브 아키텍처 설계에 대한 접근 방식을 설명한다.
6장, ‘솔루션 아키텍처 설계 패턴’에서는 계층, 마이크로서비스, 이벤트 기반, 큐 기반, 서버리스, 캐시 기반, 서비스 지향 패턴과 같은 다양한 아키텍처 설계 패턴을 예제와 함께 알아본다.
7장, ‘성능 고려 사항’에서는 대기 시간, 처리량, 동시성과 같은 애플리케이션 성능 개선의 필수 속성에 대한 이해를 제공한다.
8장, ‘보안 고려 사항’에서는 워크로드 보안에 적용할 수 있는 다양한 설계 원칙을 설명한다.
9장, ‘아키텍처 안정성 고려 사항’에서는 아키텍처를 안정적으로 만드는 설계 원칙을 설명한다.
10장, ‘운영 우수성 고려 사항’에서는 애플리케이션의 운영 우수성을 달성하기 위한 다양한 프로세스와 방법을 알아본다.
11장, ‘비용 고려 사항’에서는 비즈니스 민첩성과 결과에 대한 위험 없이 비용을 최적화하는 다양한 기술을 설명한다.
12장, ‘데브옵스와 솔루션 아키텍처 프레임워크’에서는 애플리케이션 배포, 테스트, 보안에서 데브옵스의 중요성을 살펴본다.
13장, ‘솔루션 아키텍처를 위한 데이터 엔지니어링’에서는 빅데이터와 분석 아키텍처를 설계하는 방법을 설명한다.
14장, ‘머신러닝 아키텍처’에서는 머신러닝과 모델 평가 기술에 대한 세부 정보를 알아보고 다양한 머신러닝 알고리듬에 대한 개요를 제공한다.
15장, ‘사물 인터넷 아키텍처’에서는 IoT와 IoT 아키텍처의 다양한 구성 요소를 알아본다.
16장, ‘양자 컴퓨팅’에서는 실제 사용 사례에서 양자 컴퓨팅의 동작을 설명한다.
17장, ‘레거시 시스템 재설계’에서는 레거시 시스템의 다양한 과제와 현대화를 살펴본다.
18장, ‘솔루션 아키텍처 문서’에서는 해당 문서에서 수용해야 하는 다양한 세부 사항 및 구조와 함께 솔루션 아키텍처 문서를 설명한다.
19장, ‘더 나은 솔루션 아키텍트가 되기 위한 소프트 스킬’에서는 솔루션 아키텍트가 역할을 성공적으로 수행하는 데 필요한 다양한 소프트 스킬을 알아한다.
목차
목차
- 1장. 솔루션 아키텍처의 의미
- 솔루션 아키텍처란 무엇인가?
- 솔루션 아키텍처의 진화
- 솔루션 아키텍처가 중요한 이유
- 솔루션 아키텍처의 혜택
- 비즈니스 요구 사항과 산출물의 품질 문제 해결
- 최고의 기술 플랫폼 선택
- 솔루션 제약과 문제 해결
- 자원과 비용 관리 지원
- 솔루션 제공과 프로젝트 수명 주기 관리
- 비기능적 요구 사항 해결
- 퍼블릭 클라우드의 솔루션 아키텍처
- 퍼블릭 클라우드란?
- 퍼블릭 클라우드, 프라이빗 클라우드, 하이브리드 클라우드
- 퍼블릭 클라우드 아키텍처
- 클라우드 네이티브 아키텍처
- 퍼블릭 클라우드 업체와 서비스 종류
- 요약
- 2장. 조직에서의 솔루션 아키텍트
- 솔루션 아키텍트의 역할 유형
- 제너럴리스트 솔루션 아키텍트의 역할
- 엔터프라이즈 솔루션 아키텍트
- 솔루션 아키텍트
- 테크니컬 아키텍트
- 클라우드 아키텍트
- 아키텍트 에반젤리스트
- 전문 솔루션 아키텍트
- 인프라 아키텍트
- 네트워크 아키텍트
- 데이터 아키텍트
- 머신러닝 아키텍트
- 보안 아키텍트
- 데브옵스 아키텍트
- 제너럴리스트 솔루션 아키텍트의 역할
- 솔루션 아키텍트의 책임 이해
- 사용자 요구 사항 분석
- 비기능적 요구 사항 정의
- 이해관계자의 참여와 협력
- 다양한 아키텍처 제약 처리
- 기술 선택
- 개념 증명과 프로토타입 개발
- 솔루션 설계와 구축
- 출시 후 운영과 유지 보수 보장
- 에반젤리스트처럼 일하기
- 애자일 환경에서의 솔루션 아키텍트
- 왜 애자일 방법론인가?
- 애자일 선언문
- 애자일 프로세스와 용어
- 스크럼 세레모니
- 애자일 도구와 용어
- 애자일과 워터폴
- 애자일 아키텍처
- 요약
- 솔루션 아키텍트의 역할 유형
- 3장. 솔루션 아키텍처의 특성
- 스케일 확장성과 탄력성
- 확장 시 용량 딜레마
- 아키텍처 확장
- 정적 콘텐츠 확장
- 서버 플릿 탄력성
- 데이터베이스 확장
- 고가용성과 복원력
- 내결함성과 리던던시
- 재해 복구와 비즈니스 연속성
- 확장성과 재사용성
- 사용성과 접근성
- 휴대성과 상호 운영성
- 운영 우수성과 유지 보수
- 보안과 규정 준수
- 인증과 권한
- 웹 보안
- 네트워크 보안
- 인프라 보안
- 데이터 보안
- 비용 최적화와 예산
- 요약
- 스케일 확장성과 탄력성
- 4장. 솔루션 아키텍처 설계 원칙
- 워크로드 확장
- 예측 확장
- 사후 대응적인 확장
- 탄력적인 아키텍처 구축
- 성능을 위한 설계
- 교체 가능한 자원 사용
- 불변의 인프라 구축
- 카나리 테스트
- 불변의 인프라 구축
- 느슨한 결합
- 서버가 아닌 서비스를 생각하기
- 요구 사항에 맞는 스토리지 사용
- 데이터 기반 설계
- 아키텍처 제약 사항 극복
- MVP 방식 채택
- 보안 강화
- 자동화 적용
- 요약
- 워크로드 확장
- 5장. 클라우드 마이그레이션과 하이브리드 클라우드 아키텍처 설계
- 클라우드 네이티브 아키텍처의 장점
- 퍼블릭 클라우드 선택
- 클라우드 마이그레이션 전략 수립
- 리프트 앤 시프트 마이그레이션
- 리호스트
- 리플랫폼
- 재배치
- 클라우드 네이티브 접근 방식
- 리팩터
- 재구매
- 유지나 폐기
- 유지
- 폐기
- 리프트 앤 시프트 마이그레이션
- 클라우드 전략 선택
- 클라우드 마이그레이션 단계
- 워크로드 탐색
- 정보 분석
- 마이그레이션 계획 수립
- 애플리케이션 설계
- 클라우드로 애플리케이션 마이그레이션 수행
- 데이터 마이그레이션
- 서버 마이그레이션
- 통합, 검증, 전환
- 라이브 마이그레이션 전환
- 클라우드 애플리케이션 운영
- 클라우드에서 애플리케이션 최적화
- 하이브리드 클라우드 아키텍처 생성
- 멀티클라우드 접근 방식
- 클라우드 네이티브 아키텍처 설계
- 요약
- 더 읽을거리
- 6장. 솔루션 아키텍처 설계 패턴
- 멀티계층(멀티티어) 아키텍처 구축
- 웹 계층
- 애플리케이션 계층
- 데이터베이스 계층
- 멀티테넌트 SaaS 기반 아키텍처 구축
- 상태 저장과 상태 비저장 아키텍처 설계 구축
- 서비스 지향 아키텍처의 이해
- SOAP 웹 서비스 아키텍처
- RESTful 웹 서비스 아키텍처
- SOA 기반 전자상거래 웹 사이트 아키텍처 구축
- 서버리스 아키텍처 구축
- 마이크로서비스 아키텍처 구축
- 실시간 투표 애플리케이션 참조 아키텍처
- 큐 기반 아키텍처 구축
- 큐 체인 패턴
- 작업 관찰자 패턴
- 이벤트 기반 아키텍처 구축
- 게시자/구독자 모델
- 이벤트 스트림 모델
- 캐시 기반 아키텍처 구축
- 3-티어 웹 아키텍처에서 캐시 배포 패턴
- 분산 패턴 이름 변경
- 캐시 프록시 패턴
- 프록시 재작성 패턴
- 앱 캐싱 패턴
- Memcached와 Redis
- 회로 차단기 패턴 이해
- 격벽 패턴의 구현
- 유동 IP 패턴 생성
- 컨테이너로 애플리케이션 배포
- 컨테이너의 장점
- 컨테이너 배포
- 컨테이너 기반 아키텍처 구축
- 애플리케이션 아키텍처에서 데이터베이스 처리
- 고가용성 데이터베이스 패턴
- 솔루션 아키텍처에서 안티패턴 방지
- 요약
- 멀티계층(멀티티어) 아키텍처 구축
- 7장. 성능 고려 사항
- 성능을 위한 아키텍처 설계 원칙
- 지연시간 줄이기
- 처리량 향상
- 동시성 처리
- 캐싱 적용
- 성능 최적화를 위한 기술 선택
- 컴퓨팅 방식의 선택
- 서버 인스턴스의 선택
- 컨테이너를 통한 작업
- 서버리스 전환
- 스토리지의 선택
- 블록 스토리지와 SAN에서의 작업
- 파일 스토리지와 NAS에서의 작업
- 객체 스토리지와 클라우드 데이터 스토리지에서의 작업
- 데이터베이스의 선택
- 온라인 트랜잭션 처리
- 비관계형 데이터베이스
- 온라인 분석 처리
- 데이터 검색 기능 구축
- 네트워크 성능 개선
- DNS 라우팅 전략 정의
- 로드 밸런서 구현
- 오토스케일링 적용
- 컴퓨팅 방식의 선택
- 성능 모니터링의 관리
- 요약
- 성능을 위한 아키텍처 설계 원칙
- 8장. 보안 고려 사항
- 아키텍처 보안을 위한 설계 원칙
- 인증과 권한 부여 구현
- 모든 곳에서 보안 적용
- 폭발 반경 줄이기
- 항상 모든 것의 모니터링과 감사
- 모든 것을 자동화
- 데이터 보호
- 보안 사고 대응
- 아키텍처 보안을 위한 기술 선택
- 사용자 ID와 액세스 관리
- 페더레이션된 ID 관리와 싱글 사인온
- 커버로스
- 마이크로소프트 액티브 디렉터리
- AWS 디렉터리 서비스
- 액티브 디렉터리와 구글 ID 페더레이션
- 보안 검증 마크업 언어(SAML)
- OAuth와 OpenID 커넥트
- JWT
- 웹 보안 처리
- 웹 애플리케이션 보안 취약점
- 웹 보안 완화
- 애플리케이션과 애플리케이션 인프라 보안
- 애플리케이션과 운영체제 강화
- 소프트웨어 취약점과 보안 코드
- 네트워크, 방화벽, 신뢰할 수 있는 경계
- 침입 탐지 시스템(IDS)과 침입 방지 시스템 (IPS)
- 데이터 보안
- 데이터 분류
- 데이터 저장 시 암호화
- 데이터 전송 시 암호화
- 사용자 ID와 액세스 관리
- 보안과 규정 준수 인증
- 클라우드의 공동 책임 모델
- 요약
- 아키텍처 보안을 위한 설계 원칙
- 9장. 아키텍처 안정성 고려 사항
- 아키텍처 안정성을 위한 설계 원칙
- 시스템이 자가 치유 되게 만들기
- 자동화 적용
- 분산 시스템 생성
- 용량 모니터링과 추가
- 복구 검증 수행
- 안정적인 아키텍처를 위한 기술 선택
- 복구 시간 목표와 복구 시점 목표 계획
- 데이터 복제
- 동기식 복제와 비동기식 복제
- 복제 방법
- 재해 복구 계획
- 백업과 복원
- 파일럿 라이트
- 웜 스탠바이
- 다중 사이트
- DR에 대한 모범 사례 적용
- 클라우드로 안정성 향상
- 요약
- 아키텍처 안정성을 위한 설계 원칙
- 10장. 운영 우수성 고려 사항
- 운영 우수성을 위한 설계 원칙
- 수작업의 자동화
- 자주 발생하고 되돌릴 수 있는 변경 만들기
- 장애 예측과 대응
- 실수로부터 배우고 다듬기
- 운영 설명서 업데이트 유지
- 운영 우수성을 위한 기술 선택
- 운영 우수성을 위한 계획
- IT 자산 관리
- 구성 관리
- 운영 우수성의 기능
- 시스템 상태 모니터링
- 경보와 장애 대응 처리
- 운영 우수성 향상
- IT 운영 분석
- 근본 원인 분석
- 감사와 보고
- 운영 우수성을 위한 계획
- 퍼블릭 클라우드에서 운영 우수성 달성
- 요약
- 운영 우수성을 위한 설계 원칙
- 11장. 비용 고려 사항
- 비용 최적화를 위한 설계 원칙
- 총 소유 비용 계산
- 예산과 예측 계획
- 수요와 서비스 카탈로그 관리
- 지출 추적
- 지속적인 비용 최적화
- 비용 최적화 기법
- 아키텍처 복잡성 감소
- IT 효율성 향상
- 표준화와 거버넌스 적용
- 자원 비용 태그 지정
- 비용 사용과 보고서 모니터링
- 퍼블릭 클라우드의 비용 최적화
- 요약
- 비용 최적화를 위한 설계 원칙
- 12장. 데브옵스와 솔루션 아키텍처 프레임워크
- 데브옵스 소개
- 데브옵스의 이점 이해
- 데브옵스 구성 요소 이해
- 지속적인 통합/지속적인 배포
- 지속적인 모니터링과 개선
- 코드로서의 인프라
- 구성 관리
- 데브섹옵스 소개
- 데브섹옵스와 CI/CD 결합
- CD 전략 구현
- 인플레이스 배포
- 롤링 배포
- 블루-그린 배포
- 레드-블랙 배포
- 불변 배포
- CI/CD 파이프라인에서 지속적인 테스트 구현
- A/B 테스트
- CI/CD용 데브옵스 도구 사용
- 코드 편집기
- 소스코드 관리
- 지속적인 통합 서버
- 코드 배포
- 코드 파이프라인
- 데브옵스 모범 사례 구현
- 클라우드 기반의 데브옵스와 데브섹옵스 구축
- 요약
- 13장. 솔루션 아키텍처를 위한 데이터 엔지니어링
- 빅데이터 아키텍처란?
- 빅데이터 처리 파이프라인 설계
- 데이터 수집
- 데이터 수집을 위한 기술 선택
- 클라우드에 데이터 수집
- 데이터 저장
- 데이터 저장을 위한 기술 선택
- 구조화된 데이터 저장소
- NoSQL 데이터베이스
- 검색 데이터 저장소
- 비정형 데이터 저장소
- 객체 스토리지
- 블록체인 데이터 저장소
- 스트리밍 데이터 저장소
- 데이터 저장을 위한 기술 선택
- 데이터 처리와 분석 수행
- 데이터 처리와 분석을 위한 기술 선택
- 데이터 시각화
- 데이터 시각화를 위한 기술 선택
- 빅데이터 아키텍처 설계
- 데이터 레이크 아키텍처
- 레이크하우스 아키텍처
- 데이터 메시 아키텍처
- 스트리밍 데이터 아키텍처
- 빅데이터 아키텍처 모범 사례
- 요약
- 14장. 머신러닝 아키텍처
- 머신러닝이란 무엇인가?
- 데이터 과학과 ML 관련 작업
- ML 모델의 평가: 과적합과 과소적합
- 지도 및 비지도 머신러닝 알고리듬
- 클라우드 환경에서의 머신러닝
- 머신러닝 아키텍처 설계
- 준비와 레이블링
- 선택과 빌드
- 트레이닝과 튜닝
- 배포와 관리
- 머신러닝 추론 아키텍처
- 머신러닝 작업
- MLOps 원칙
- MLOps 모범 사례
- 딥러닝
- 요약
- 15장. 사물인터넷 아키텍처
- 사물인터넷이란?
- IoT 아키텍처 구성 요소
- IoT 장치 관리
- 마이크로컨트롤러 장치 관리
- 마이크로프로세서 장치 관리
- IoT 장치 연결과 제어
- IoT 데이터 분석
- IoT 장치 관리
- 클라우드 환경에서의 IoT
- 산업용 IoT 솔루션 구축
- 커넥티드 팩토리 IoT 아키텍처
- 디지털 트윈 구현
- 요약
- 16장. 양자 컴퓨팅
- 양자 컴퓨터의 빌딩 블록
- 큐비트
- 중첩
- 얽힘
- 양자 컴퓨터의 작동 메커니즘
- 양자 게이트
- 파울리 게이트
- 아다마르 게이트
- 기타 양자 게이트
- 양자 회로
- 양자 게이트
- 양자 컴퓨터의 종류
- 실생활에서의 양자 컴퓨팅
- 클라우드에서의 양자 컴퓨팅
- 요약
- 양자 컴퓨터의 빌딩 블록
- 17장. 레거시 시스템 재설계
- 레거시 시스템의 과제
- 사용자 요구를 따라가기 어려움
- 유지 보수과 업데이트 비용 증가
- 기술과 문서의 부족
- 기업 보안 문제에 취약
- 다른 시스템과의 비호환성
- 시스템 현대화의 이점
- 시스템 현대화 전략 정의
- 레거시 애플리케이션 평가
- 현대화 접근 방식 정의
- 레거시 시스템 현대화 기술 살펴보기
- 캡슐화, 리호스팅, 플랫폼 재편성
- 리팩터링과 리아키텍팅
- 재설계와 교체
- 레거시 시스템에 대한 클라우드 마이그레이션 전략 정의
- 문서화와 지원
- 퍼블릭 클라우드를 통한 메인프레임 마이그레이션
- 독립 실행형 애플리케이션 마이그레이션
- 공유 코드가 있는 애플리케이션 마이그레이션
- 독립 실행형 API를 사용한 애플리케이션 디커플링
- 공유 라이브러리를 사용한 애플리케이션 디커플링
- 메시지 큐를 사용한 애플리케이션 디커플링
- 요약
- 레거시 시스템의 과제
- 18장. 솔루션 아키텍처 문서
- SAD의 목적
- SAD의 관점
- SAD의 구조
- 솔루션 개요
- 비즈니스 컨텍스트
- 개념적 솔루션 개요
- 솔루션 아키텍처
- 정보 아키텍처
- 애플리케이션 아키텍처
- 데이터 아키텍처
- 통합 아키텍처
- 인프라 아키텍처
- 보안 아키텍처
- 솔루션 구현
- 솔루션 관리
- 부록
- 솔루션 아키텍처에 대한 IT 조달 문서
- 요약
- 19장. 더 나은 솔루션 아키텍트가 되기 위한 소프트 스킬
- 프리세일즈 스킬 습득
- C-레벨 경영진에게 프레젠테이션하기
- 소유권과 책임
- 목표 및 주요 결과로 전략 실행 정의
- 크게 생각하기
- 유연성과 적응력
- 설계 씽킹
- 코딩 실습에 참여해 빌더되기
- 지속적인 학습으로 더 나아지기
- 다른 사람의 멘토가 되기
- 기술 에반젤리스트 및 사고 리더 되기