HOME > Detail View

Detail View

(파이썬을 활용한) 소프트웨어 아키텍처 : 견고하고 확장 가능한 애플리케이션 아키텍처 설계 (Loan 2 times)

Material type
단행본
Personal Author
Pillai, Anand Balachandran 김영기, 역
Title Statement
(파이썬을 활용한) 소프트웨어 아키텍처 : 견고하고 확장 가능한 애플리케이션 아키텍처 설계 / 아난드 발라찬드란 필라이 지음 ; 김영기 옮김
Publication, Distribution, etc
서울 :   에이콘,   2021  
Physical Medium
651 p. : 삽화 ; 24 cm
Series Statement
에이콘 소프트웨어 아키텍처 시리즈
Varied Title
Software architecture with Python : design and architect highly scalable, robust, clean, and high performance applications in Python
ISBN
9791161754857
General Note
색인수록  
Subject Added Entry-Topical Term
Software architecture Python (Computer program language)
000 00000nam c2200205 c 4500
001 000046065768
005 20210126165714
007 ta
008 210126s2021 ulka 001c kor
020 ▼a 9791161754857 ▼g 93000
040 ▼a 211009 ▼c 211009 ▼d 211009
041 1 ▼a kor ▼h eng
082 0 4 ▼a 005.133 ▼a 005.12 ▼2 23
085 ▼a 005.133 ▼2 DDCK
090 ▼a 005.133 ▼b P999 2021z2
100 1 ▼a Pillai, Anand Balachandran
245 2 0 ▼a (파이썬을 활용한) 소프트웨어 아키텍처 : ▼b 견고하고 확장 가능한 애플리케이션 아키텍처 설계 / ▼d 아난드 발라찬드란 필라이 지음 ; ▼e 김영기 옮김
246 1 9 ▼a Software architecture with Python : ▼b design and architect highly scalable, robust, clean, and high performance applications in Python
260 ▼a 서울 : ▼b 에이콘, ▼c 2021
300 ▼a 651 p. : ▼b 삽화 ; ▼c 24 cm
490 1 0 ▼a 에이콘 소프트웨어 아키텍처 시리즈
500 ▼a 색인수록
650 0 ▼a Software architecture
650 0 ▼a Python (Computer program language)
700 1 ▼a 김영기, ▼e
830 0 ▼a 에이콘 소프트웨어 아키텍처 시리즈
900 1 0 ▼a 필라이, 아난드 발라찬드란, ▼e
945 ▼a KLPA

Holdings Information

No. Location Call Number Accession No. Availability Due Date Make a Reservation Service
No. 1 Location Science & Engineering Library/Sci-Info(Stacks1)/ Call Number 005.133 P999 2021z2 Accession No. 121256256 Availability In loan Due Date 2021-08-30 Make a Reservation Available for Reserve R Service M

Contents information

Book Introduction

파이썬이 애플리케이션의 아키텍처 작업에 얼마나 적합한지를 설명하며 시작한다. 아키텍처에 중요한 요구사항과 이들을 결정하는 방법을 이해할 수 있다. 또한 아키텍트가 비즈니스 요구사항을 만족하는 제품을 만드는 데 도움이 되는 유지보수성/재사용성, 테스트 용이성, 확장성, 성능, 사용성, 보안성 같은 다양한 아키텍처의 품질 요구사항을 완전히 이해하게 될 것이다.

데브옵스, 지속적인 통합과 같은 기법을 사용해 애플리케이션을 더 견고하게 만드는 방법을 살펴본다. 애플리케이션에 객체지향 기법을 언제 사용하고, 언제 사용하지 말아야 하는지를 이해하게 될 것이다. 또한 미래를 생각해 비즈니스 성장에 비례해 확장 가능한 애플리케이션을 설계할 수 있다.

파이썬의 세부사항을 이해하는 데 도움이 되며, 고객의 예상에 부응하는 동시에 고객의 예상을 뛰어 넘는 중요한 설계 결정도 할 수 있을 것이다.

★ 이 책에서 다루는 내용 ★

■ 올바른 아키텍처 속성을 갖는 프로그램 작성
■ 엔터프라이즈 아키텍처 패턴을 사용한 웹 확장성 문제 해결
■ 파이썬 관점의 디자인 패턴 이해
■ 파이썬 성능 테스팅 도구의 최적화 방법
■ 파이썬을 이용한 원격 환경 및 클라우드 환경으로의 코드 배포
■ 안전한 애플리케이션을 위한 파이썬의 아키텍처 작성법

★ 이 책의 대상 독자 ★

엔터프라이즈 애플리케이션에 경험이 있는, 아키텍트가 되려는 파이썬 개발자에게 적합하다. 애플리케이션의 효과적인 청사진을 만들기 위해 파이썬을 이용하려는 소프트웨어 아키텍트도 커다란 효과를 볼 수 있을 것이다.

★ 이 책의 구성 ★

1장, '소프트웨어 아키텍처의 원칙'에서는 소프트웨어 아키텍처가 갖는 주요 사항을 소개한다. 아키텍처 품질속성과 아키텍처의 배경이 되는 원칙을 간단하게 설명한다. 소프트웨어 아키텍처 원칙과 기본 속성을 파악하는 데 탄탄한 기반이 된다.
2장, '변경 가능하고 가독성 있는 코드'에서는 작성 개발에 관련된 아키텍처 품질속성인 변경 용이성과 가독성을 다룬다. 아키텍처 품질속성인 유지보수성과 애플리케이션의 테스트를 위한 코드를 파이썬으로 작성하는 전술을 이해할 수 있게 된다.
3장, '테스트 용이성 - 테스트 가능한 코드 작성'에서는 아키텍처 품질속성인 테스트 용이성과 테스트 용이성을 위해 파이썬 애플리케이션의 구조를 잡는 방법을 배운다. 테스트 용이성과 소프트웨어 테스팅의 다양한 관점을 학습하고 테스트 가능한 애플리케이션을 파이썬으로 작성하기 위해 이용할 수 있는 다양한 라이브러리와 모듈을 익힌다.
4장, '좋은 성능은 보상이다!'에서는 성능 관점에서 파이썬 코드를 작성하는 방법을 다룬다. 성능을 최적화하는 시기에 아키텍처에서 품질속성은 물론 성능 관련 지식도 갖추게 된다. 소프트웨어 수명주기에서 성능 최적화를 하는 시기도 알게 된다.
5장, '확장 가능한 애플리케이션 작성'에서는 확장 가능한 애플리케이션의 중요성을 이야기한다. 애플리케이션의 확장성을 달성하는 다양한 방법을 설명하고 파이썬에서 사용하는 확장성 관련 기법을 알아본다. 확장성의 이론적 측면과 업계의 모범 사례도 배운다.
6장, '보안- 안전한 코드 작성'에서는 아키텍처의 보안 측면, 관련 모범 사례와 안전한 애플리케이션의 작성 기법을 다룬다. 조심해야 할 다양한 보안 문제도 짚고 넘어간다. 처음부터 파이썬으로 안전한 애플리케이션 아키텍처를 만드는 방법을 깨닫게 된다.
7장, '파이썬 디자인 패턴'에서는 실용적인 프로그래머 관점에서 각 패턴에 대한 이론적인 배경과 더불어, 파이썬에서 디자인 패턴의 개요를 다룬다. 실용적인 프로그래머에게 유용한 파이썬의 디자인 패턴 지식을 얻게 된다.
8장, '파이썬 아키텍처 패턴 고수준의 현대적인 파이썬 아키텍처 패턴을 소개한다. 고준 아키텍처 문제를 해결하기 위한 패턴들의 접근방법을 알 수 있도록 파이썬 라이브러리와 프레임워크 예제도 제공한다.
9장, '파이썬으로 애플리케이션 배포'에서는 파이썬을 이용해 올바른 방법으로 원격환경이나 클라우드에 쉽게 코드를 배포하는 방법을 설명한다.
10장, '디버깅 기법'에서는 파이썬 코드의 디버깅 기법을 다룬다. 프로그래머에게 가장 간단하면서도 매우 편리한, 그리고 전략적으로 배치된 print문에서부터 로깅과 시스템 호출(system call) 추적까지 다룬다. 이러한 기법들은 시스템 아키텍트가 팀을 이끄는 데 도움이 된다.


Information Provided By: : Aladin

Author Introduction

아난드 발라찬드라 필라이(지은이)

소프트웨어 분야의 제품 공학 소프트웨어 설계와 아키텍처 연구에 18년이 넘는 경험이 있는 공학과 기술 전문가다. 마드라스의 인도 공과대학교에서 기계공학 학사 학위를 받았다. 야후(Yahoo), 맥아피(McAfee), 인포시스(Infosys) 같은 회사의 제품 개발 팀에서 새로운 제품을 만드는 수석 엔지니어와 아키텍트 역할을 수행했다. 소프트웨어 성능 공학, 고확장성 아키텍처, 보안 및 오픈소스 커뮤니티에 관심이 있으며 때때로 스타트업에서 기술 리더 역할이나 컨설팅을 담당하기도 한다. 방갈로 파이썬 사용자 그룹의 설립자이며 파이썬 소프트웨어 재단PSF의 선임연구원이기도 하다. 현재는 예지(Yegii Inc)의 선임 아키텍트로 일하고 있다.

김영기(옮긴이)

삼성전자 네트워크 SE 그룹에서 소프트웨어 개발과 관련한 다양한 업무를 수행하고 있다. 주요 이력으로, 지능망(IN)과 모바일 애플리케이션 개발, 정적 분석과 소프트웨어 구조 분석, 소프트웨어 개발 인프라 관리 등이다. 현재는 CM 업무를 주로 수행하고 있으며 소프트웨어 개발과 관련된 조직의 개발 문화, 애자일과 데브옵스, 인프라 자동화에 관심이 많다.

Information Provided By: : Aladin

Table of Contents

1장. 소프트웨어 아키텍처의 원칙들

__소프트웨어 아키텍처의 정의
____소프트웨어 아키텍처 대 디자인
____소프트웨어 아키텍처의 여러 측면
__소프트웨어 아키텍처의 특성
____아키텍처는 구조를 정의한다
____아키텍처는 핵심 요소의 집합을 선택한다
____아키텍처는 초기 디자인 결정사항을 기술한다
____아키텍처는 이해당사자의 요구사항을 관리한다
____아키텍처는 조직 구조에 영향을 미친다
____아키텍처는 환경의 영향을 받는다
____아키텍처는 시스템을 문서화한다
____아키텍처는 패턴을 준수한다
__소프트웨어 아키텍처의 중요성
__시스템 아키텍처 대 엔터프라이즈 아키텍처
__아키텍처 품질속성
____변경 용이성
____테스트 용이성
____확장성
____성능
____가용성
____보안
____배포 용이성
__요약

2장. 변경하기 쉽고 가독성 있는 코드 작성

__변경 용이성이란 무엇인가?
__변경 용이성의 관련 측면
__가독성 이해하기
____파이썬과 가독성
____가독성 - 안티패턴
____가독성 기법
____코드의 문서화
____코딩 및 스타일 가이드라인 준수하기
____코드를 리뷰하고 리팩토링하기
____코드에 주석 달기
__변경 용이성의 기본 사항 - 응집도와 결합도
____응집도와 결합도 측정하기
____응집도와 결합도의 측정 - 문자열과 텍스트 처리
__변경 용이성을 위한 전략
____명시적인 인터페이스 제공하기
____양방향 의존성 감소시키기
____공통 서비스 추상화하기
____상속 기법 사용하기
____늦은 바인딩 기법의 사용
__메트릭 - 정적 분석을 위한 도구
____코드의 나쁜 냄새란 무엇인가?
____순환 복잡도 - 맥케이브 메트릭
____정적 체커 수행하기
__코드 리팩토링하기
____코드 리팩토링 - 복잡도 수정하기
____코드 리팩토링 - 코드의 나쁜 냄새 제거하기
____코드 리팩토링 - 스타일 및 코딩 문제 수정하기
__요약

3장. 테스트 용이성 - 테스트 가능한 코드 작성하기

__테스트 용이성 이해하기
____소프트웨어 테스트 용이성과 관련 속성
____아키텍처 측면의 테스트 용이성
____테스트 용이성 전략들
__화이트 박스 테스팅 원칙
____단위 테스팅
____실제 단위 테스팅
____nose2로 정보 알아내기
____코드 커버리지
____py.test로 테스트하기
__모의객체 생성
__문서의 인라인 테스트 - doctests
__통합 테스트
__테스트 자동화
____셀레늄 웹 드라이버를 사용한 테스트 자동화
테스트 주도 개발
팰린드롬 예제를 통한 TDD
요약

4장. 좋은 성능은 보상이다!

__성능이란 무엇인가?
__소프트웨어 성능 엔지니어링
__성능 테스팅과 측정 도구
__성능 복잡도
__성능 측정
____컨텍스트 관리자를 사용한 시간 측정
____timeit 모듈을 사용한 타이밍 코드
____시간 복잡도 확인하기 - 그래프
____timeit을 사용한 CPU 시간 측정
__프로파일링
____결정론적 프로파일링
____cProfile과 profile을 사용한 프로파일링
____프로파일링 - 통계 수집 및 보고
____서드 파티 프로파일러
__다른 도구들
____Objgraph
____Pympler
__성능을 위한 프로그래밍 - 데이터 구조
____변경 가능한 컨테이너 - 리스트, 딕셔너리, 세트
____변경이 불가능한 컨테이너 - 튜플
____고성능 컨테이너- 컬렉션 모듈
____확률론적 데이터 구조 - 블룸 필터
__요약

5장. 확장 가능한 애플리케이션 작성

__확장성과 성능
__동시성
____동시성과 병렬처리
____파이썬에서의 동시성 - 멀티스레딩
__썸네일 생성기
____썸네일 생성기 - 생산자/소비자 아키텍처
____썸네일 생성기 - 잠금을 사용하는 자원 제한
____썸네일 생성기 - 세마포어를 사용하는 리소스 제한
____리소스 제한 - 세마포어 대 잠금
____썸네일 생성기 - 조건을 사용하는 URL 비율 컨트롤러
__멀티스레딩 - 파이썬과 GIL
____파이썬의 동시성 처리 - 멀티 프로세싱
____소수 검사기
____디스크 파일 정렬
__멀티스레딩 대 멀티 프로세싱
____파이썬에서의 동시성-비동기 실행
__선점형 멀티태스킹 대 협력형 멀티태스킹
__파이썬의 asyncio 모듈
__future의 실행 완료 대기하기 - async와 await
__동시 실행되는 future 객체들 - 고수준의 동시 처리
____디스크 썸네일 생성기
____동시성 옵션 - 선택 방법
____병렬 처리 라이브러리
____Joblib
____PyMP
____프렉탈 - 만델브로트 세트
__웹 스케일링
____워크플로우 확장 - 메시지 큐와 태스크 큐
__셀러리 - 분산 태스크 큐
____셀러리를 사용하는 멘델로브 세트
____파이썬으로 웹 서비스하기 - WSGI
____uWSGI - 강력한 WSGI 미들웨어
____Gunicorn - WSGI용 유니콘
____Gunicorn 대 uWSGI
____확장 아키텍처
__요약

6장. 보안 - 안전한 코드 작성

__정보보안 아키텍처
__안전한 코딩
__일반적인 보안 취약점
__파이썬은 안전한가?
____입력 읽기
____임의의 입력 값 평가
____오버플로우 오류
____객체 직렬화
__웹 애플리케이션의 보안 문제
____서버 사이트 템플릿 주입
____서버 사이드 템플릿 주입 - 완화 전략
____서비스 거부
____크로스 사이트 스크립팅
____DoS와 XSS 공격 완화
__파이썬 보안 전략
__안전한 코딩 전략
__요약

7장. 파이썬 디자인 패턴

__디자인 패턴의 요소
__디자인 패턴의 분류
____플러그 가능한 해싱 알고리즘
____플러그 가능한 해싱 알고리즘 요약
__파이썬의 생성 패턴
____싱글톤 패턴
____상태 공유 - 보그 대 싱글톤
____팩토리 패턴
____프로토타입 패턴
____빌더 패턴
__파이썬의 구조 패턴
____어댑터 패턴
____파사드 패턴
____프록시 패턴
__파이썬의 행위 패턴
____이터레이터 패턴
____옵저버 패턴
____상태 패턴
__요약

8장. 파이썬 아키텍처 패턴

__MVC 소개
____모델 템플릿 뷰(MTV) - 장고
____장고 관리자 - 자동화된 모델 중심 뷰
____유연한 마이크로 프레임워크 - 플라스크
__이벤트 주도 프로그래밍
____select 모듈과 I/O 멀티플랙싱을 사용하는 채팅 서버와 클라이언트
____이벤트 주도 프로그래밍 대 동시성 프로그래밍
____Twisted
____Eventlet
____Greenlets과 Gevent
__마이크로서비스 아키텍처
____파이썬의 마이크로서비스 프레임워크
____마이크로서비스 예제 - 레스토랑 예약
____마이크로서비스의 장점
__파이프와 필터 아키텍처
____파이썬에서의 파이프와 필터
__요약

9장. 파이썬 애플리케이션 배포

__배포 용이성
____배포 용이성에 영향을 주는 요소들
__소프트웨어 배포 아키텍처 계층
__파이썬에서의 소프트웨어 배포
____파이썬 코드 패키징
____Pip
____Virtualenv
____Virtualenv과 pip
____재배치 가능한 가상 환경
____PyPI
____애플리케이션 패키징과 제출
__PyPA
__패브릭을 사용한 원격 배포
__앤서블을 이용한 원격 배포
__슈퍼바이저를 이용한 원격 데몬 관리하기
__배포 패턴과 모범 사례
__요약


10장. 디버깅 기법

__최대 부분 배열 문제
____‘print’의 강점
____분석과 재작성
____코드 타이밍 및 최적화
__간단한 디버깅 트릭과 기법
____단어 검색 프로그램
____단어 검색 프로그램의 디버깅 단계 1
____단어 검색 프로그램의 디버깅 단계 2
____단어 검색 프로그램의 최종 코드
____코드 블록 건너뛰기
____실행 중지
____외부 의존성에 래퍼 사용하기
____반환 값/데이터로 함수 교체하기(모의 객체 사용)
__디버깅 기법으로써의 로깅
____간단한 애플리케이션 로깅
__디버깅 도구 - 디버거 사용
____pdb로 세션 디버딩하기
____pdb 유사 도구
__고급 디버깅 기법 - 추적
____trace 모듈
____lptrace 프로그램
____strace를 사용한 시스템 호출 추적
__요약

New Arrivals Books in Related Fields