애자일 소프트웨어 아키텍트의 길 [소프트웨어의 지속적인 설계를 통한 진화]
- 원서명Becoming an Agile Software Architect: Strategies, practices, and patterns to help architects design continually evolving solutions (ISBN 9781800563841)
- 지은이라제시 RV(Rajesh RV)
- 옮긴이김모세
- ISBN : 9791161756875
- 35,000원
- 2022년 10월 28일 펴냄
- 페이퍼백 | 408쪽 | 188*235mm
- 시리즈 : 소프트웨어 아키텍처, 애자일
책 소개
요약
아키텍처 설계자와 조직에게 고객의 요구를 만족하기 위한 지속적인 가치 흐름을 제공할 수 있도록 아키텍처를 점진적으로 개발하는 새로운 애자일 방식을 소개한다. 또한 애자일 아키텍처의 다양한 측면과 전통적인 아키텍처와의 차이에 관해 살펴본다. 책의 후반에서는 애자일 아키텍트의 책임, 그리고 애자일 업무 흐름에 맞춰 아키텍트의 위치를 적절히 조정하고 가치를 더할 수 있는 방법에 관해 살펴본다. 실제 예시로 아키텍처 의사 결정 백로그, 최종 책임 순간, 가치 전달, 변화를 위한 아키텍트 만들기, 데브옵스, 진화적인 협업과 같은 개념들을 익힐 수 있다.
이 책에서 다루는 내용
◆ 애자일 개발에서 아키텍트의 의무는 무엇인지 이해한다.
◆ 도메인 주도 설계와 마이크로서비스 같은 아키텍처 스타일을 이해한다.
◆ 전통적인 아키텍처의 문제점과 솔루션 개발 방법을 이해한다.
◆ 가치와 데이터 주도 아키텍처의 원칙을 이해한다.
◆ 아키텍트의 관점에서 데브옵스와 지속적인 전달을 발견한다.
◆ 린 애자일 문서화와 거버넌스를 도입한다.
◆ 개인적 특성, 대인 관계 특성을 개발한다.
◆ 조직적 차원의 기민함을 달성하기 위한 트랜스포메이션을 찾아내고 이끈다.
이 책의 대상 독자
현재 애자일 개발 프로젝트를 진행 중이거나 애자일 소프트웨어 전달 업무를 수행하고자 하는 아키텍트를 위한 책으로, 특정한 방법론에 국한되지 않는다. 애자일 아키텍처 전략과 린 애자일 마인드셋을 바탕으로 애자일 아키텍트의 역할을 이해하고자 하는 시니어 개발자 또는 아키텍트가 되기 위한 여정에 이제 막 들어선 이들에게 도움이 될 것이다.
이 책의 구성
1장, ‘애자일 아키텍트의 렌즈로 들여다보기’에서는 이 책을 더욱 쉽게 이해할 수 있도록 프레임워크와 탐색 도구를 제공한다.
2장, ‘애자일 아키텍처 - 애자일 전달의 근간’에서는 애자일 아키텍처의 개념과 원리를 소개하고 이를 전통적인 아키텍처와 비교한다.
3장, ‘애자일 아키텍트 - 성공의 핵심’에서는 애자일 아키텍트의 역할과 책임을 강화하는 다양한 메타포를 소개한다.
4장, ‘애자일 엔터프라이즈 아키텍트 - 전략과 코드의 연결’에서는 애자일 소프트웨어 개발에서의 현대 엔터프라이즈 아키텍트의 의무를 살펴본다.
5장, ‘애자일 솔루션 아키텍트 - 진화하는 시스템의 지속적 설계’에서는 애자일 소프트웨어 개발 프로젝트에서 솔루션 아키텍트가 활용할 수 있는 운영 기법들을 알아본다.
6장, ‘새로운 일하는 방식을 통한 가치 전달’에서는 애자일 전달 환경에서 성공하기 위해 아키텍트에게 필요한 테크닉을 살펴본다.
7장, ‘패턴과 테크닉을 활용한 기술적 기민함’에서는 기술적 기민함을 달성하기 위한 다양한 패턴과 프랙티스들을 소개한다.
8장, ‘데브옵스와 지속적인 전달을 통한 흐름 가속화’에서는 데브옵스와 지속적인 전달에서의 아키텍트의 중요성을 살펴본다.
9장, ‘품질 속성을 이용한 품질 아키텍처 만들기’에서는 팀이 고객에게 고품질의 제품을 전달하기 위해 사용할 수 있는 다양한 품질 모델과 도구 및 접근 방식을 알아본다.
10장, ‘협업을 통한 린 문서화’에서는 문서화의 대안적인 접근 방식들을 소개하고, 꼭 필요한 문서의 개념을 살펴본다.
11장, ‘린 애자일 거버넌스의 조력자로서의 아키텍트’에서는 애자일 소프트웨어 개발에서 거버넌스(Governance)를 둘러싸고 있는 미신을 타파하고 린 거버넌스 원칙을 소개한다.
12장, ‘조직적 기민함 만들기’에서는 업무 흐름에 맞게 조직을 설계해야 하는 필요성에 관해 살펴본다.
13장, ‘문화와 리더십 특성’에서는 아키텍트로서 가져야 할 새로운 개인적 특징과 대인 관계적 특징을 소개하고 변화의 필요성에 관해 알아본다.
상세이미지
목차
목차
- 1부. 애자일 세상에서의 아키텍처
- 1장. 애자일 아키텍트의 렌즈로 들여다보기
- 2장. 애자일 아키텍처 - 애자일 전달의 근간
- 참조 자료
- 애자일 소프트웨어 개발로의 여행
- 애자일 소프트웨어 개발
- 린과 애자일은 다르다?
- 애자일 소프트웨어 개발이 주는 5가지 이익
- 애자일 개발 아키텍처와 전통적인 아키텍처 - 과연 모순인가?
- 연속체로서의 아키텍처
- 전통적 개발 방식은 초반에 아키텍처를 만드는 노력을 요구한다
- 애자일 아키텍처 - 애자일 프랙티스를 이용한 아키텍처 만들기
- 속도와 지속 가능성의 균형
- 사전 아키텍처를 어느 정도 구현해야 하는가?
- 애자일 아키텍처의 원칙
- 아키텍처는 집단적 노력을 요구한다
- 아키텍처는 지속적이다
- 아키텍처는 린하며 효율적이다
- 조기에 자주 아키텍처를 테스트하고 학습한다
- 아키텍처가 기민함을 가능케 한다
- 엔터프라이즈 애자일 프레임워크 비교
- Scaled Agile Frameworks(SAFe)
- Disciplined Agile(DA)
- Large-Scale Scrum(LeSS)
- 애자일 아키텍처 성숙도 측정하기
- 스노우 인 더 데저트의 교훈
- 애자일 아키텍처 도입 시 핵심 문제 우회하기
- 애자일 아키텍처 프로세스 흐름과 포스터
- 정리
- 더 읽을거리
- 2부. 애자일에서의 아키텍트의 역할 전환
- 3장. 애자일 아키텍트 - 성공의 핵심
- 참조 자료
- 아키텍트를 둘러싼 환경의 도전 이해하기
- 너무 많은 역할이 명확함을 손상시킨다
- 아키텍트들은 전달을 늦춘다
- 자기 조직화된 팀들이 아키텍트 배제 운동에 찬성하는 이유
- 우연한 아키텍트의 탄생
- 애자일에서도 꼭 필요한 아키텍트 - 역할 수행의 주체
- 애자일 아키텍트 - 부재, 자원, 지정, 전담
- 애자일 아키텍트의 다양한 역할
- 애자일 아키텍트가 갖춰야 할 핵심 기술
- 애자일 아키텍트의 행동과 의무
- 애자일 아키텍트의 행동 변화
- 애자일 아키텍트의 도전적인 의무
- 다양한 확장 프레임워크에서의 아키텍트의 역할
- Scaled Agile Framework
- Disciplined Agile
- Large Scale Scrum
- 스노우 인 더 데저트에서의 교훈
- 정리
- 더 읽을거리
- 4장. 애자일 엔터프라이즈 아키텍트 - 전략과 코드의 연결
- 참조 자료
- 린 애자일 엔터프라이즈 아키텍처에서 변화의 필요성
- EA 프레임워크는 기업을 설명하는 데 집중한다
- 도시 계획의 메타포는 더 이상 유효하지 않다
- EA는 아무 목적 없이 운영한다
- 현재 상태를 파고드는 것은 악이다
- EA는 본래 의도에서 동떨어져 있다
- 가치를 먼저 보이는 것은 함정이다
- 엔터프라이즈 아키텍트는 비기술적이다
- 원칙과 의무 이해하기
- 애자일 엔터프라이즈 아키텍트를 위한 성공 원칙
- 애자일 엔터프라이즈 아키텍트의 의무
- EA 저장소 - 사금 문제
- 엔터프라이즈 아키텍트 측정
- 애자일 프레임워크에서의 엔터프라이즈 아키텍트의 역할
- SAFe에서의 엔터프라이즈 아키텍트의 역할
- DA에서의 엔터프라이즈 아키텍트의 역할
- LeSS에서의 엔터프라이즈 아키텍트의 역할
- 스노우 인 더 데저트의 엔터프라이즈 아키텍트
- 엔터프라이즈 아키텍트 프로파일
- 포트폴리오 흐름의 이해
- 정리
- 더 읽을거리
- 5장. 애자일 솔루션 아키텍트 - 진화하는 시스템의 지속적 설계
- 참조 자료
- 솔루션 아키텍트 - 애자일 팀의 일벌
- 솔루션 아키텍트의 마인드셋 - 잠망경의 전문가
- 엔터프라이즈 아키텍트와 솔루션 아키텍트의 역할 중첩
- 가치를 최대화하고 흐름 방해를 제거한다
- 비즈니스 가치에서 출발하기
- 지속 가능한 품질에 집중하기
- 반려 사이클 줄이기
- 리드타임 최소화하기
- 재작업 줄이기
- 솔루션 아키텍트의 의무
- 의도적 아키텍처 개발하기
- 창발적 설계 준비하기
- 지속적 진화를 가능케 하기
- 솔루션 아키텍트의 성공 측정하기
- 정리
- 더 읽을거리
- 3부. 성공적인 애자일 아키텍트가 되기 위한 필수 지식
- 6장. 새로운 일하는 방식을 통한 가치 전달
- 참조 자료
- 비즈니스 가치 이해하기
- 아키텍처의 가치를 보이기는 어렵다
- 아키텍처 관련 활동을 비즈니스 백로그와 연결하기
- 아키텍처의 비즈니스 가치 결정하기
- 우선순위에 따른 역량 할당하기
- 업무를 투명하게 나타내기
- 개발보다 한발 앞서기
- 실용주의 마인드셋으로 일하기
- 최종 책임 순간 이해하기
- 최종 무결성 이용하기
- 리스크 주도 및 비용 주도 접근 방식 사용하기
- 반점착성 보장하기
- 옵션을 열린 상태로 유지하기
- 가설 기반 솔루션 이용하기
- 실제 옵션 이론 이용하기
- 셋 기반 동시 엔지니어링 이용하기
- MVA를 이용한 조기 가치 전달하기
- 기술 부채 관리하기
- 정리
- 더 읽을거리
- 7장. 패턴과 테크닉을 활용한 기술적 기민함
- 기술적 탁월함을 통해 기민함을 증폭하기
- 소프트웨어 장인 정신 도입하기
- 기술적 기민함을 통해 품질 향상하기
- 패턴과 테크닉을 활용한 기술적 기민함 만들기
- 변화에 대응하는 아키텍처 만들기
- 단순함을 통한 기술적 기민함 주도하기
- 설계에 의한 고립을 통한 진화
- 레거시 현대화 아키텍처
- 엔지니어링 탁월함을 통해 좋은 코드 개발하기
- 코딩 원칙, 기법, 패턴 적용하기
- 좋은 코딩 프랙티스
- 지속적인 리팩터링
- 12요소 원칙
- 엔터프라이즈 통합 이해하기
- 테스트 가능성을 고려한 개발하기
- 테스트 주도 개발
- 클라우드를 활용해 인프라스트럭처를 소프트웨어처럼 다루기
- 풀스택 진단을 활용해 모든 것을 모니터링하기
- 점진적 개선을 통한 산출물 기반 모니터링
- 제품 중심 모니터링으로의 이동
- 관측 가능한 시스템 구축하기
- 정리
- 더 읽을거리
- 기술적 탁월함을 통해 기민함을 증폭하기
- 8장. 데브옵스와 지속적인 전달을 통한 흐름 가속화
- 데브옵스 문화 포용하기
- 데브섹옵스를 이용한 보안성 개선하기
- 사이트 신뢰성 엔지니어링과 만나기
- 지속적인 전달을 통한 흐름 활성화하기
- CD를 통해 얻을 수 있는 이익
- 지속적인 전달을 위한 아키텍처 만들기
- 지속적인 전달의 효과 측정하기
- 레거시 애플리케이션을 위한 지속적인 전달 구현하기
- 지속적인 통합 도입하기
- 개발 및 소스 코드 관리 개선하기
- 품질 보증 자동화하기
- 자동으로 운영 환경에 배포하기
- 잠정 출시를 통해 조기 피드백 받기
- 피처 플래그를 사용해 선택적으로 피처를 출시하기
- 주문형으로 출시하기
- 카나리 릴리스를 활용해 점진적으로 출시하기
- A/B 테스팅을 활용해 피드백을 조기에 수집하기
- 주문형 출시를 위한 이키텍트 만들기
- 설계를 통한 시스템 보호하기
- 정리
- 더 읽을거리
- 데브옵스 문화 포용하기
- 9장. 품질 속성을 이용한 품질 아키텍처 만들기
- 소프트웨어 품질 이해하기
- 시스템 사고를 통한 품질 개선하기
- 구축하고 적응하기 전략을 이용해 점진적으로 품질을 적용하기
- 품질을 내재해 낭비를 제거하기
- 품질 속성 모델 도입하기
- 품질 속성을 문서화하기
- 확장된 애자일 접근 방식을 사용해 품질 속성 구체화하기
- 품질 속성 시나리오 사용하기
- 애자일 소프트웨어 개발에서 품질 수명 주기 이용하기
- 품질 속성 발견하기와 다듬기
- 이해관계자들을 품질 속성에 정렬시키기
- 품질 속성 워크숍 진행하기
- QAS 다듬기 및 제시하기
- 모델링과 시뮬레이션
- 아키텍처 트레이드오프 적용하기
- 아키텍처 트레이드오프 분석 기법 사용하기
- 솔루션 아키텍처 리뷰 기법 사용하기
- 품질 속성 개발하기
- 시스템 품질 평가하기
- 품질 확인을 개발에 통합하기
- 피트니스 기능 사용하기
- 웰 아키텍티드 프레임워크를 이용해 평가하기
- 정리
- 소프트웨어 품질 이해하기
- 더 읽을거리
- 10장. 협업을 통한 린 문서화
- 문서화를 통해 지식 유지하기
- 문서화의 목적을 이해하기
- 전통적인 문서화 방식의 문제점
- 린 애자일 문서화 방식 이용하기
- 문서화를 위한 진화적인 협업
- 필요한 만큼만 최소한으로 문서화한다
- 어느 정도의 문서화가 충분한가?
- 문서화 원칙 지키기
- 소프트웨어 아키텍처 문서화하기
- 아키텍처 문서화를 위한 다양한 방법
- 스노우 인 더 데저터의 문서화 생태계
- 모델 기반 소프트웨어 엔지니어링 적용하기
- 정리
- 더 읽을거리
- 11장. 린 애자일 거버넌스의 조력자로서의 아키텍트
- 아키텍처 거버넌스 이해하기
- 전통적인 거버넌스의 문제점
- 린 애자일 거번스를 이용해 기민함 제공하기
- 린 애자일 거버넌스 포용하기
- 린 애자일 거버넌스의 원칙
- 린 거버넌스의 이점
- 자율성과 기민함의 균형 이루기
- 의사 결정의 탈중앙화 수준 결정하기
- 골디락스 거버넌스 구현하기 - 사례 연구
- 아키텍처 의사 결정 문서화하기
- 심리적 안전함 보장하기
- 아키텍처 의사 결정의 품질 측정하기
- 정리
- 더 읽을거리
- 아키텍처 거버넌스 이해하기
- 4부. 개인적 특징과 조직적 영향
- 12장. 조직적 기민함 만들기
- 비즈니스 기민함과 IT 기민함의 관계 만들기
- 비즈니스와 IT의 가치 흐름 이해하기
- IT에서의 가치 흐름 개선하기
- 가치 중심으로 사람을 조직하기
- 조직과 팀을 만들어야 할 필요성 확인하기
- 흐름을 식별하고 분해된 흐름에 따라 팀을 조직하기
- 시스템을 흐름에 할당하기
- 흐름 팀에 자율성을 부여하기
- 역량 중심 팀 vs. 흐름 중심 팀
- 팀 조직화 검증하기
- 흐름 팀 안에서의 팀 구조화하기
- 실천 커뮤니티 만들기
- 차세대 IT로 이동하기
- 정리
- 더 읽을거리
- 비즈니스 기민함과 IT 기민함의 관계 만들기
- 13장. 문화와 리더십 특성
- 변화의 필요성 이해하기
- 고성과 조직의 문화 살펴보기
- 고성과 팀의 행동 이해하기
- 올바른 리더십 선택하기
- 아키텍트에게 필요한 개인적 특성
- 대가를 바라지 않는 전폭적인 지원
- 존중, 평등, 겸손
- 웰빙 관리를 위한 마인드풀니스
- 새로운 지식을 얻기 위한 호기심
- 긍정적인 사고에 기반한 성장 마인드셋
- 헌신에 대한 내적 동기
- 새로운 기회를 탐색하는 창의성
- 개인의 가치를 보호하는 자존감
- 감정적인 연결을 위한 공감
- 주의 확보를 위한 경영진으로서의 존재
- 아키텍트에게 필요한 대인 관계 특성
- 집단적인 오너십을 위한 협업하기
- 갈등 해결을 통해 더 나은 품질의 산출물 얻기
- 스토리텔링을 이용해 더욱 잘 소통하기
- 경쟁력 확보를 위한 재능 양성하기
- 더 나은 결과를 위해 동기 부여하기
- 사례를 통한 이끌기와 서번트 리더십 보이기
- 피드백을 통해 지속적인 개선하기
- 심리적 안전함을 통한 신뢰와 투명성 확보하기
- 멀티플라이어를 만들어 변화를 이끌기
- 보살핌을 통한 소속감 기르기
- 정리