코틀린 디자인 패턴 (고전 패턴, 반응형 패턴, 동시성 패턴을 활용해 확장성 있는 애플리케이션 개발하기 | 2 판)

코틀린 디자인 패턴 (고전 패턴, 반응형 패턴, 동시성 패턴을 활용해 확장성 있는 애플리케이션 개발하기 | 2 판)

$35.78
Description
코틀린 프로그래밍 언어와 디자인 패턴을 함께 소개한다. 먼저 코틀린의 기본적인 문법과 현대적 언어로서의 특징을 갈무리하고, 고전 디자인 패턴에서 반응형 패턴, 동시성 패턴에 이르기까지 다양한 디자인 패턴을 자세히 설명한다. 각 디자인 패턴이 해결하고자 하는 문제 상황과 그 해결책을 코틀린 코드로 설명하기 때문에 코틀린과 디자인 패턴 모두에 익숙해질 수 있다. 특히 코루틴과 여러 동시성 자료구조에 기반한 비동기 프로그래밍을 자세히 다뤄, 현대적인 반응형 소프트웨어 구현에 필요한 지식을 얻을 수 있다. 마지막으로 코틀린을 프로그래밍할 때 유의해야 할 모범 사례와 안티패턴을 정리하고, Ktor와 Vert.x 프레임워크를 활용해서 간단한 마이크로서비스를 개발하는 예시를 보여준다. 코틀린을 처음 접하는 개발자에게는 친절한 안내서가, 현대적인 디자인 패턴에 관심이 있는 개발자에게는 충실한 참고서가 돼줄 것이다.
저자

Soshin,Alexey

한국과학기술원(KAIST)에서전산학과수학을공부하고,동대학원협동분산네트워크연구실에서석사학위를받았다.IoT시스템과인공위성영상처리프로세서,웹백엔드등의개발에참여했다.좋은이름짓기와일관된코드스타일에집착하고,도전적인리팩토링을즐기며,성실한게으름을미덕으로생각한다.고객과개발자가함께행복한소프트웨어개발방법론에도관심을갖고있다.소프트웨어를통해더많은사람에게좋은가치를전할수있기를꿈꾼다.

목차

1부-고전패턴

1장.코틀린시작하기
__기술적요구사항
__기초문법과기능
____다중패러다임언어
__코틀린코드구조이해하기
____명명관례
____패키지
____주석
____HelloKotlin
__타입이해하기
____기본타입
____타입추론
____값
____비교와동등성
____함수선언
__null안전성
__코틀린자료구조복습
____리스트
____세트
____맵
____가변성
____집합자료구조의다른구현체
____배열
__제어흐름
____if조건식
____when조건식
__텍스트다루기
____문자열보간
____여러줄문자열
__반복문
____for-in반복문
____for반복문
____while반복문
__클래스와상속
____클래스
____인터페이스
____추상클래스
____접근제한자
____상속
____데이터클래스
__확장함수
__디자인패턴소개
____디자인패턴이란?
____코틀린에서디자인패턴을사용하는이유
__요약
__질문


2장.생성패턴사용하기
__기술적요구사항
__싱글톤패턴
__팩토리메서드패턴
____정적팩토리메서드
__추상팩토리패턴
____캐스팅
____하위클래스생성
____스마트캐스팅
____변수가리기
____팩토리메서드의모음
__빌더패턴
____유창한설정자
____기본인수
__프로토타입패턴
____프로토타입에서시작하기
__요약
__질문


3장.구조패턴이해하기
__기술적요구사항
__데코레이터패턴
____클래스에기능추가하기
____엘비스연산자
____상속의문제점
____연산자오버로딩
____데코레이터패턴사용시주의할점
__어댑터패턴
____기존코드에어댑터패턴적용
____실제코드에서사용되는어댑터패턴
____어댑터패턴사용시주의할점
__브리지패턴
____변경사항에다리놓기
____타입별칭
____상수
__합성패턴
____부생성자
____varargs키워드
____합성객체로이뤄진합성객체중첩하기
__퍼사드패턴
__경량패턴
____보수적으로접근하기
____메모리절약하기
____경량패턴사용시주의사항
__프록시패턴
____lazy위임함수
__요약
__질문


4장.동작패턴과친해지기
__기술적요구사항
__전략패턴
____과일무기구현하기
____일급객체로서의함수
__반복자패턴
__상태패턴
____상태패턴의50가지그림자
____큰규모의상태패턴
__명령패턴
____명령실행취소
__책임사슬패턴
__해석기패턴
____도메인특화언어
____나만의언어만들기
____접미호출
__중개인패턴
____중개인
____중개인패턴의두가지유형
____중개인패턴사용시주의사항
__기억패턴
__방문자패턴
____크롤러작성하기
__템플릿메서드패턴
__관찰자패턴
____예제:동물합창단
__요약
__질문


2부-반응형패턴과동시성패턴

5장.함수형프로그래밍소개
__기술적요구사항
__함수형프로그래밍을사용하는이유
__불변성
____불변자료구조
____공유된가변상태의문제점
____튜플
__값으로서의함수
____고차함수
____표준라이브러리에서고차함수사용하기
__it표기법
____클로저
____순수함수
____커리
____메모이제이션
__문대신식사용하기
____패턴매칭
__재귀호출
__요약
__질문


6장.스레드와코루틴
__기술적요구사항
__스레드심화
____스레드안전성
____왜스레드는값비싼가?
__코루틴소개
____코루틴시작하기
____작업
____코루틴의내부동작이해하기
____타임아웃설정하기
____분배기
____구조화된동시성
__요약
__질문


7장.데이터흐름제어
__기술적요구사항
__반응형프로그래밍의원칙
____응답성원칙
____회복성원칙
____유연성원칙
____메시지주도원칙
__집합자료구조를위한고차함수
____원소매핑
____원소필터링
____원소검색
____각원소에대해코드실행
____원소의총합
____중첩제거
__동시성자료구조소개
____순서열
____채널
____흐름
__요약
__질문


8장.동시성을위한설계
__기술적요구사항
__값지연패턴
__장벽패턴
____데이터클래스를장벽으로사용하기
__스케줄러패턴
____스케줄러직접만들기
__파이프라인패턴
____파이프라인연결하기
__팬아웃패턴
__팬인패턴
__경주패턴
____비편향select
__뮤텍스패턴
__사이드킥채널패턴
__요약
__질문


3부-디자인패턴활용의실제

9장.관용구와안티패턴
__기술적요구사항
__시야지정함수사용하기
____let함수
____apply함수
____also함수
____run함수
____with함수
__타입검사와캐스팅
__try-with-resources문의대안
__인라인함수
__대수적자료형구현하기
__제네릭에서타입실체화
__상수효율적으로사용하기
__생성자오버로딩
__null다루기
__동시성을명시적으로나타내기
__입력유효성검사하기
__열거형대신봉인클래스사용하기
__요약
__질문


10장.Ktor를이용한동시성마이크로서비스
__기술적요구사항
__Ktor시작하기
__요청라우팅
__서비스테스트하기
__애플리케이션모듈화
__데이터베이스연결하기
__엔티티생성하기
__일관성있는테스트만들기
__엔티티조회하기
__Ktor에서라우팅구조화하기
__Ktor의동시성
__요약
__질문


11장.Vert.x를이용한반응형마이크로서비스
__기술적요구사항
__Vert.x시작하기
__Vert.x에서라우팅구현하기
__버티클
__요청처리하기
____서브라우터사용하기
__Vert.x애플리케이션테스트하기
__데이터베이스다루기
____설정관리하기
__이벤트루프이해하기
__이벤트버스와통신하기
____이벤트버스로JSON보내기
__요약
__질문


정답과해설

출판사 서평

◈이책에서다루는내용◈
◆코틀린언어를이용한모든고전디자인패턴구현방법
◆반응형패턴과동시성패턴을적용한애플리케이션의확장성개선방법
◆코틀린언어의모범사례와새로운기능
◆함수형프로그래밍의핵심원칙과코틀린에서해당원칙적용방법
◆관용적인코틀린코드와피해야할코틀린코드
◆코틀린의언어적힘을이용한안정적인동시성시스템설계방법
◆코틀린과Ktor프레임워크를이용한마이크로서비스작성실습방법

◈이책의대상독자◈
안정적이고확장성있으며유지보수가용이한애플리케이션을개발하기위해코틀린에서디자인패턴을익히고자하는개발자를대상으로하는책이다.제대로이해하려면프로그래밍에관한사전지식이꼭필요하다.디자인패턴에관한지식은유용하지만필수는아니다.

◈이책의구성◈
1장,‘코틀린시작하기’에서는코틀린의기본적인문법을다루고디자인패턴의쓸모와코틀린에서디자인패턴을활용해야하는이유를논한다.1장의목표는코틀린의모든기능을설명하는것이아니라코틀린의기본적인개념과관용구에익숙해지는것이다.코틀린의더많은기능은이후의장들에서관련된디자인패턴을다루면서하나씩설명할것이다.
2장,‘생성패턴사용하기’에서는고전적인생성패턴을모두설명한다.생성패턴은객체를생성하는방법및시기와관련된다.생성패턴에숙달되면객체의생애주기를더욱잘관리할수있으며유지보수하기쉬운코드를작성할수있다.
3장,‘구조패턴이해하기’에서는유연하며확장성있는객체간계층구조를만드는방법에초점을맞춘다.데코레이터패턴과어댑터패턴등을다룬다.
4장,‘동작패턴과친해지기’에서는코틀린을사용한동작패턴을설명한다.동작패턴은객체가다른객체와상호작용하는방법,그리고동적으로객체의동작을변경하는방법을다룬다.효율적이며결합도가낮은객체간통신을구현하는방법을살펴본다.
5장,‘함수형프로그래밍소개함수형프로그래밍의기본원칙을설명하고이원칙이코틀린언어와어떻게어울리는지살펴본다.불변성과고차함수,값으로서의함수등의주제를다룰것이다.
6장,‘스레드와코루틴’에서는코틀린에서스레드를새로띄우는방법을자세히알아보고스레드보다코루틴이확장성측면에서더나은이유를설명한다.코틀린컴파일러가코루틴을다루는방법,그리고코루틴시야및분배자와의관계를살핀다.
7장,‘데이터흐름제어집합’에서는자료구조에적용할수있는고차함수를다룬다.순서열(sequence),채널(channel),흐름(flow)을사용해동시성·반응형코드에서고차함수를적용하는방법을살펴볼것이다.
8장,‘동시성을위한설계’에서는동시성디자인패턴이어떻게수많은작업을한번에관리하고작업의생명주기를구조화할수있도록해주는지설명한다.동시성디자인패턴을잘사용하면자원유출이나데드락과같은문제를방지할수있다.
9장,‘관용구와안티패턴’에서는코틀린에서권장되는모범코드와사용해서는안될코드를논한다.관용적으로사용되는모범적코틀린코드가어떻게생겼는지,또피해야할코드는어떻게생겼는지배울수있을것이다.9장을읽고나면가독성과유지보수성이더욱높은코틀린코드를작성할수있을뿐아니라흔히저지르는실수도피할수있을것이다.
10장,‘Ktor를사용한동시성마이크로서비스’에서는지금까지배운지식을활용해코틀린으로마이크로서비스를개발한다.이를위해젯브레인스에서개발한Ktor프레임워크를사용할것이다.
11장,‘Vert.x를활용한반응형마이크로서비스’에서는코틀린에서마이크로서비스를만들기위한또다른방법으로반응형디자인패턴에기반을둔Vert.X프레임워크를소개한다.실무에서실제로사용되는코드예제를살펴보며동시성및반응형패턴의장단점을논하고,언제각패턴을사용해야하는지알아볼것이다.

◈옮긴이의말◈
코틀린은매력적인언어입니다.현대적인언어의특징을잘갖추고있으면서도사용하기까다롭지않습니다.자바의오래된문법으로부터독립했지만여전히자바생태계를누릴수있습니다.젯브레인스사에서개발한언어인만큼IDE지원이강력하고,안드로이드의기본개발언어로채택돼커뮤니티역시두텁습니다.최근에는상당한수준의멀티플랫폼개발까지지원하면서미래가더기대되는언어입니다.
코틀린의이러한매력을충분히느끼려면코틀린을‘코틀린답게’사용해야합니다.그러나코틀린의문법만공부해서는무엇이코틀린다운코드인지알기어렵습니다.코틀린은기본적으로모든프로그래밍패러다임을지원하는다중패러다임언어이기때문입니다.즉코틀린으로도얼마든지자바스타일의코드를작성할수있습니다.
그래서실제문제를해결할수있는코드를살펴보는것이중요합니다.〈코틀린디자인패턴2/e〉이다양한수준의수많은예제로가득한것도그런이유입니다.저자는자주등장하는문제에대한전형적인해결책인디자인패턴을가장코틀린다운코드로구현해보여줍니다.어떤패턴은코틀린의문법요소덕분에훨씬간결해지고,어떤패턴은구현할때코틀린의기능에크게의존합니다.이러한예제를통해독자는코틀린의모범사례를자연스럽게체득할수있을것입니다.
이책의놀라운점은GoF(GangofFour)의고전디자인패턴에그치지않고반응형패턴과동시성패턴까지자세히다룬다는것입니다.프론트엔드개발에서반응형프로그래밍은이제표준처럼자리잡았고,많은데이터를효과적으로다루기위해서동시성프로그래밍은필수적입니다.그러나이들을디자인패턴으로인식하고예제코드와함께일목요연하게정리한자료를찾기란여전히쉽지않습니다.그렇기에코틀린개발자뿐만아니라현대적인어플리케이션을개발하는모든이들에게이책은좋은안내서가돼줄것입니다.
책의마지막두장에서는Ktor와Vert.x프레임워크를이용해서실제마이크로서비스를개발하는예제를보여줍니다.비록간단한서비스지만코틀린이웹서버개발에사용하기에도충분히매력적인언어라는것을엿볼수있습니다.또한앞서설명한여러디자인패턴이실제프레임워크를활용할때어떻게접목되는지확인할수있기에,예제를그대로따라구현하는것만으로도책의내용을더깊이이해할수있게될것입니다.
이책을통해코틀린이라는멋진언어를처음배우려는이들은그매력을십분느끼고,현대적인언어에디자인패턴을접목해확장성있는소프트웨어를개발하고자하는이들은필요한모범사례를습득할수있기를바랍니다.마지막으로이책이한국의코틀린커뮤니티에조금이나마보탬이되기를기대합니다.