1. 광고배너
  2. 광고배너
/ 이전버튼 다음버튼
2
미리보기

코틀린 디자인 패턴 2/e - 고전 패턴 반응형 패턴 동시성 패턴을 활용해 확장성 있는 애플리케이션 개발하기(에이콘 프로그래밍 언어 시리즈)
저자 : 알렉세이 소신 ㅣ 출판사 : 에이콘출판 ㅣ 역자 : 이대근

2023.08.31 ㅣ 396p ㅣ ISBN-13 : 9791161757810

정가35,000
판매가33,250(5% 할인)
적립금 1,400원 (4%)
배송일정 05월 16일 출고 가능
주문 수량 변경시 안내 배송안내
쿠폰 및 결제혜택 확인하기

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

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

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

[목 차]

1부 ― 고전 패턴

1장. 코틀린 시작하기
__기술적 요구 사항
__기초 문법과 기능
____다중 패러다임 언어
__코틀린 코드 구조 이해하기
____명명 관례
____패키지
____주석
____Hello Kotlin
__타입 이해하기
____기본 타입
____타입 추론
____값
____비교와 동등성
____함수 선언
__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 보내기
__요약
__질문


정답과 해설
펼쳐보기
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(Gang of Four)의 고전 디자인 패턴에 그치지 않고 반응형 패턴과 동시성 패턴까지 자세히 다룬다는 것입니다. 프론트엔드 개발에서 반응형 프로그래밍은 이제 표준처럼 자리잡았고, 많은 데이터를 효과적으로 다루기 위해서 동시성 프로그래밍은 필수적입니다. 그러나 이들을 디자인 패턴으로 인식하고 예제 코드와 함께 일목요연하게 정리한 자료를 찾기란 여전히 쉽지 않습니다. 그렇기에 코틀린 개발자뿐만 아니라 현대적인 어플리케이션을 개발하는 모든 이들에게 이 책은 좋은 안내서가 돼줄 것입니다.
책의 마지막 두 장에서는 Ktor와 Vert.x 프레임워크를 이용해서 실제 마이크로서비스를 개발하는 예제를 보여줍니다. 비록 간단한 서비스지만 코틀린이 웹 서버 개발에 사용하기에도 충분히 매력적인 언어라는 것을 엿볼 수 있습니다. 또한 앞서 설명한 여러 디자인 패턴이 실제 프레임워크를 활용할 때 어떻게 접목되는지 확인할 수 있기에, 예제를 그대로 따라 구현하는 것만으로도 책의 내용을 더 깊이 이해할 수 있게 될 것입니다.
이 책을 통해 코틀린이라는 멋진 언어를 처음 배우려는 이들은 그 매력을 십분 느끼고, 현대적인 언어에 디자인 패턴을 접목해 확장성 있는 소프트웨어를 개발하고자 하는 이들은 필요한 모범 사례를 습득할 수 있기를 바랍니다. 마지막으로 이 책이 한국의 코틀린 커뮤니티에 조금이나마 보탬이 되기를 기대합니다.

추천사
코틀린(Kotlin)이 세상에 나온 지 갓 10년이 됐다. 비교적 젊은 언어다. 그러나 코틀린은 거인의 어깨 위에 서 있다. 다른 프로그래밍 언어에서 많은 기능과 모범 사례를 차용했다는 뜻이다. 덕분에 다른 언어를 통해 습득한 지식을 코틀린에서도 유용하게 활용할 수 있다.
디자인 패턴(design pattern)은 코틀린을 효율적으로 사용하기 위한 모범 사례의 일종이다. 열정 넘치는 코틀린 커뮤니티의 개발자들이 열심히 디자인 패턴을 설명하는 것을 보면 참 대단하다고 느낀다. 그중 한 명인 알렉세이 소신은 이 책뿐 아니라 여러 강의와 매체를 통해 그의 지식을 공유하기 위해 애써 왔다.
코틀린 언어의 친절한 안내서인 이 책을 읽고 나면 다양한 디자인 패턴의 의미와 활용법을 익힐 수 있을 것이다. 디자인 패턴 사용 경험이 있는 자바(Java) 개발자라면 똑같은 일을 코틀린에서는 어떻게 하는지 알 수 있다.
디자인 패턴은 C++과 자바 같은 객체지향 언어의 시대에 탄생했다. 그러나 코틀린에서는 함수형 스타일로도 프로그램을 작성할 수 있다. 이 책은 함수형 스타일의 장점을 갈무리하고 코틀린에 적용하는 방법을 설명한다.
저자는 꽤 많은 분량을 할애해서 코틀린의 코루틴을 사용한 비동기 프로그래밍을 다룬다. 오늘날 동시성 프로그램을 작성하는 법, 그중에서도 비동기 프로그래밍으로 동시성을 구현하는 방법을 이해하는 것은 필수적이다. 애플리케이션을 잘 설계하기 위해서도 동시성에 대한 이해는 매우 중요하다. 동시성 디자인 패턴은 더 나은 동시성 프로그램을 작성하는 방법을 보여줄 것이다.
이 책을 읽고 나면 코틀린이라는 현대적 프로그래밍 언어와 친숙해질 뿐만 아니라 코틀린으로 프로그램을 작성할 때 따라야 할 모범 사례를 탄탄하게 익힐 수 있을 것이다. 저자의 노력과 열정에 경의를 보낸다!
─안톤 아르히포프(Anton Arhipov)/
젯브레인스(JetBrains)의 코틀린 개발자 애드보킷(Developer Advocate)
펼쳐보기
알렉세이 소신(Alexey Soshin)
15년의 실무 경험을 가진 소프트웨어 아키텍트다. 코틀린이 베타 버전일 때부터 코틀린 세계를 누볐으며 그때부터 코틀린의 열성적인 팬이 됐다. 컨퍼런스 연사이자 작가이며, ‘Pragmatic System Design’라는 온라인 강의의 강사로 활동하고 있다.

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

독자서평 쓰기 로그인을 하시면 독자서평을 쓰실 수 있습니다.

독자서평 쓰기 로그인을 하시면 독자서평을 쓰실 수 있습니다.
도서평점
내용
등록하기
0/2000자
교환/반품 방법
  • 마이페이지 > 주문관리 > 주문/배송조회 > 주문조회 후  [1:1상담신청]  또는 고객센터 (1544-9020)
  • ※ 오픈마켓, 해외배송 주문상품 문의 시 [1:1상담신청] 또는 고객센터 (1544-9020)
교환/반품 가능기간
  • 변심반품의 경우 수령 후 7일 이내
  • 상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내
교환/반품 비용
  • 단순변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
  • 해외직배송 도서 구매 후 단순변심에 의한 취소 및 반품 시 도서판매가의 20% 수수료 부과
교환/반품 불가사유
  • 소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
  • 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우 예) 만화, 잡지, 수험서 및 문제집류
  • 복제가 가능한 상품 등의 포장을 훼손한 경우 예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집
  • 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우
  • 디지털 컨텐츠인 eBook, 오디오북 등을 1회 이상 다운로드를 받았을 경우
  • 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
  • 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에 해당되는 경우
상품 품절
  • 공급사(출판사) 재고 사정에 의해 품절/지연될 수 있으며, 품절 시 관련 사항에 대해서는 이메일과 문자로 안내드리겠습니다.
소비자 피해보상
환불지연에 따른 배상
  • 상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은 소비자분쟁 해결 기준 (공정거래위원회 고시)에 준하여 처리됨
  • 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의 소비자 보호에 관한 법률에 따라 처리함

이 분야의 베스트

더보기 >

    이 분야의 신간

    더보기 >
      맨위로가기

      영풍문고 로고

      • 회사명 : (주)영풍문고
      • 대표이사 : 김경환
      • 소재지 : 서울특별시 종로구 청계천로 41 (우)03188
      • 사업자 등록번호 : 773-86-01800 ㅣ 통신판매업 신고번호 : 2023-서울종로-0130 [ 사업자정보확인 ]
      • 개인정보관리 책임자 : 조순제 ㅣ customer@ypbooks.co.kr ㅣ 대량주문 : webmaster@ypbooks.co.kr
      COPYRIGHT © YOUNGPOONG BOOKSTORE INC. ALL RIGHTS RESERVED.
      영풍문고 네이버블로그 영풍문고 인스타그램
      맨위로가기