Top

젠킨스 마스터 [기초부터 빌드 파이프라인 구축까지 효율적인 자동 배포 환경 만들기]

  • 원서명Mastering Jenkins: Configure and extend Jenkins to architect, build, and automate efficient software delivery pipelines (ISBN 9781784390891)
  • 지은이조나단 맥앨리스터(Jonathan McAllister)
  • 옮긴이이정표
  • ISBN : 9791161751467
  • 30,000원
  • 2018년 05월 14일 펴냄
  • 페이퍼백 | 400쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 소프트웨어 테스팅

책 소개

요약

하루가 다르게 진보하는 기술 속에서 IT 기업들은 배포 자동화, 품질 검증 활동 자동화 등을 비즈니스 역량과 통합해 대응하는 추세다. 대표적인 자동화 솔루션인 젠킨스를 활용하면 격리된 조직 부서들을 하나로 통합해서 일관성 있게 제품을 개발하고 릴리스할 수 있다.
이 책은 독자가 젠킨스를 활용해 지속적 통합과 인도, 배포할 수 있는 역량을 갖출 수 있도록 필요한 지식을 제공한다. 시스템 관리의 기초를 비롯해 마스터/슬레이브를 활용한 젠킨스 확장, 고급 테스트 자동화 기법, 빌드 파이프라인, 플러그인 개발 기법 등을 다룬다. 이 책을 읽으면 조직을 위한 젠킨스 자동화 솔루션을 구축하고 관리하는 데 필요한 지식을 갖추게 될 것이다.

추천사

애자일 실천법은 전 세계 많은 회사에서 영향력을 발휘하고 있지만, 배포 팀과 조직 내 다른 팀들 간의 문화적, 기술적 차이로 인한 갈등이 없는 것은 아니다.
이런 갈등은 새로운 아이디어를 거부하는 자연스러운 본능에서 비롯되기도 하지만, 애자일 실천법이 더 빠르고 더 나은 품질로 비즈니스 가치를 제공한다는 주장에 대한 불신이 주요한 원인으로 작용한다.
이 책은 프로젝트 관리 그 자체에 전적으로 집중하지는 않는다. 하지만 지속적 빌드, 통합, 인도, 배포 솔루션의 활용 사례를 통해 제품을 성공적으로 개발할 수 있는 기반을 제공한다.
지속적 실천법을 따르면 소프트웨어를 제대로 컴파일하고 테스트할 수 있으므로 (개발자의 컴퓨터에서만이 아니라) 항상 배포 가능한 상태가 된다. 지속적 통합을 통해 코드 및 비즈니스에서 설정한 기대치에 맞게 각 하위 시스템이 제대로 동작하는지 알 수 있다.
지속적 인도를 통해 이전 단계에서 생성된 아티팩트의 재사용 및 관련자들에게 제품을 시연할 수 있도록 상위 환경으로 배포하는 것을 보장한다. 반면 지속적 배포는 아티팩트를 개발 환경에 전달해 빠르게 기능 검증을 할 수 있다.
인도(delivery) 파이프라인을 만드는 일은 제품 설계자가 원하는 속도로 회사의 가치를 구현하는 데 있어 핵심 요소다. 이 방식은 전에는 없던 다양한 기술 덕분에 가능해졌다. 즉, 제품을 개발해서 배포한 후 신속히 테스트하고 평가한 다음, 혹시라도 시장 상황을 잘못 파악한 것이 있다면 개발 또는 사업을 방향을 바꾸는 방식인 빠른 실패 역량보다 더 나은 방식은 없기 때문이다.
이런 방식의 소프트웨어 개발은 자동화 없이는 불가능하다. 자동화를 이용한 소프트웨어 개발 방식은 개발자가 안전하게 코드를 수정하고 리팩토링할 수 있게 하고, 제품의 기능 증가에 따른 회귀 테스트 케이스 증가에 대응한다. 또한 아마도 가장 중요한 서버 프로비저닝과 구성의 작성과 실행, 애플리케이션의 배포를 가능케 한다.
제품이 좋든 나쁘든 제품의 성공 여부는 빠른 피드백에 달렸다. 이 책은 젠킨스와 다양한 플러그인을 사용해 설계자, 개발자, 테스터, 제품 관련자 그리고 넓게는 고객으로부터 빠르게 피드백을 받는 실용적인 방법을 자세히 설명한다.
따라서 제품의 구상 단계에서 수익을 낼 때까지 걸리는 시간을 단축해 사업의 성공을 돕고, 표준 소프트웨어 개발 주기의 한 부분으로써 배포 절차를 간결하게 만들고자 한다면, 파이프라인 아키텍처와 자동화를 완전히 숙달해 자기 것으로 삼아야만 한다.
전체적으로 이 책은 젠킨스를 활용한 배포 파이프라인에 대해 알려주며, 데브옵스로 개발 방식을 바꿀 수 있게 도와줌으로써 제품 개발 방식을 획기적으로 향상시켜 줄 것이다.
이따마르 하신/ Thought Leader, 프로젝트 리드, 쏘트웍스

이 책에서 다루는 내용

█ 다양한 형태의 빌드 작업 생성과 관리
█ 다양한 소프트웨어를 지원하는 자동화 태스크 구축 방법
█ 젠킨스에서 자동화된 테스트 구조 이해 및 구현 기법 소개
█ 확장형 자동 배포 솔루션 구축으로 소프트웨어 개발 주기(SDLC)에 따른 제품 인도 절차 구현
█ 최신 빌드, 테스트, 배포 전략을 사용해 젠킨스 내 확장형 자동 파이프라인 관리
█ 윈도우와 맥 OS X, 리눅스, 유닉스 등을 지원하는 확장형 마스터와 슬레이브 빌드 자동화 플랫폼 구현
█ 젠킨스 분산 빌드 기능 이해 및 조직 규모에 따른 젠킨스 확장 기법
█ 젠킨스와 다양한 기술 및 소프트웨어 통합 방법

이 책의 대상 독자

지속적 통합, 지속적 인도, 빌드 파이프라인 등을 구축하고 조직 내에 전파하는 역할을 하는 초급 및 중급 수준의 젠킨스 관리자를 위한 책이다.

이 책의 구성

이 책은 다양한 기술을 사용하는 수많은 조직에서의 연구 개발과 엔지니어링 자동화 경험을 융합한 결과다. 지속적 통합, 지속적 인도, 지속적 배포의 실질적인 구현 지침을 제공하려고 한다. 이 책은 다양한 규모와 기술적 배경을 가진 조직이 빌드 파이프라인을 설계 및 구현, 전파하는 데 필요한 도구를 제공하는 것을 목표로 한다.
1장, '젠킨스 설치와 구성'에서는 크기나 규모와 상관없이 젠킨스 인스턴스를 관리하는 방법을 설명한다. 하지만 젠킨스는 매우 다양하고 거의 모든 플랫폼을 지원하기 때문에 쉬운 일은 아니다. 초기 설정과 백업 전략, 구성 기술, 모범 사례, 서비스를 수평적으로 확장하고 이를 적절히 관리하는 방법을 학습한다.
2장 '분산 빌드: 마스터/슬레이브 모드'에서는 분산 빌드 솔루션과 슬레이브 에이전트 설정 방법에 대해 전체적인 가이드를 제공한다. 이는 매우 중요한 구현 방식으로, 젠킨스가 더 많은 사용자와 다양한 기술 스택에 대한 지원을 언제 확장해야 하는지 이해하는 데 도움이 된다.
3장, '젠킨스에서 뷰와 작업 생성'과 4장, '젠킨스에서 뷰와 작업 관리하기'에서는 젠킨스의 대시보드 및 뷰, 작업에 대한 사용법을 설명한다. 젠킨스의 가장 기초가 되는 내용으로 젠킨스 플랫폼을 이해하는 데 큰 도움이 된다.
5장, '고급 테스트 자동화'에서는 품질 보증 효율성 향상 방법을 설명한다. 또한 비즈니스 가치를 제공하는 테스트 자동화 솔루션을 설계하고 구현하는 방법을 알려준다. 파이프라인을 통해 병목 현상이 없는 효율적 상태를 유지하므로, 파이프라인은 ‘지속적’ 솔루션 구현의 핵심이다. 테스트 자동화를 구현할 때는 균형 유지가 중요하다. 자동화 테스트 실행에 드는 시간과 빠른 전달 속도 사이에는 트레이드오프가 있기 때문이다.
6장, '소프트웨어 배포 및 인도'에서는 확장 가능한 배포 자동화 작업의 구현 방법을 다룬다. 배포 자동화는 빌드 파이프라인과 지속적 실천법의 근간이다. 또한 업스트림 및 다운스트림 작업과 이를 명명 규칙으로 관리하는 법도 다룬다. 그 외에 신속한 배포와 효율적인 릴리스를 유지하는 데 도움이 되는 팁과 요령을 배운다.
7장, '빌드 파이프라인'에서는 빌드 파이프라인의 개념을 소개하고, 구현 및 확장 방법을 설명한다. 빌드 파이프라인은 지속적 인도와 배포의 기본 요구 사항이다. 특히 수많은 기술 스택을 아우르며 확장도 가능한 구현 방법을 제공하고자 한다.
8장, '지속적 실천'에서는 지속적 통합과 지속적 인도, 지속적 배포에 대한 정의를 내린다. 또한 실천법의 구현 지침을 제시한다. 그간 젠킨스는 지속적으로 진화하고 발전해 현재는 지속적 실천법을 완벽하게 지원한다. 이에 대한 이해를 돕고자 각 실천법별 예제를 통해 잘 정의된 구현이 무엇인지 보여주고자 한다.
9장, '젠킨스와의 기술 통합'에서는 도커와 앤서블, 셀레늄과 아티팩토리, 지라 같은 흥미로운 자동화 기술을 소개한다. 또한 젠킨스를 통해 이들을 상호 연결하는 방법을 보여준다. 플러그인 아키텍처를 통한 확장성은 젠킨스가 널리 보급된 주요 이유 중 하나다.
10장, '젠킨스 확장'에서는 플러그인 작성법, 확장 포인트를 활용한 젠킨스 기능 추가, 젠킨스 시스템 조작 방법 등 실용적인 방법을 알려준다.
부록, ‘젠킨스 업그레이드 가이드’에서는 젠킨스 공식 사이트에서 제공하는 젠킨스 LTS 업그레이드 가이드(Jenkins LTS Upgrade Guide)를 번역해 업그레이드 관리자를 대상으로 중요한 변경 사항을 설명한다.

저자/역자 소개

지은이의 말

젠킨스(Jenkins)는 널리 호평받는 빌드 자동화 협업 솔루션이다. 이 솔루션은 전 세계 수백 명의 오픈소스 개발자와 품질 엔지니어, 데브옵스 담당자들의 노력의 집합체다. 끊임없이 업데이트하고 개선하며 사용자를 지원하는 열렬하고 활발한 오픈소스 커뮤니티는 젠킨스를 혁신적이고 독창적이게 하는 원동력이다. 젠킨스가 지속적 통합, 지속적 인도 실천 도구 분야에서 최고가 될 수 있었던 것은 오픈소스 개발자들의 노력 덕분이다.
젠킨스 플랫폼은 전통적으로 분리된 개발 팀들을 연결하고, 협업팀으로 바꾸기 위해 개발 방법과 테스트 환경, 비즈니스 요구 사항들을 잇는 다리 역할을 한다. 지난 수년간 젠킨스는 대중성과 명성을 얻었으며, 사실상 업계 표준 도구로 자리잡았다. 젠킨스의 확장성과 협업 역량은 채택률을 기하급수적으로 높였으며, 전 세계에 100,000건이 넘게 설치돼 사용된다.
나는 젠킨스가 허드슨(Hudson)이라는 이름으로 불리던 2008년부터 공식적으로 이 솔루션을 사용하기 시작했다. 자바 개발 커뮤니티 외부의 개발자들이 허드슨을 널리 사용하기 시작한 것이 바로 이쯤이다. 내가 일했던 소프트웨어 구성 관리 팀은 다양한 기술 스택에서 표준화된 아키텍처 및 인도 서비스 솔루션을 구현하고자 했는데, 이것이 다양한 기술 스택과 규모를 아우를 수 있는 빌드 및 인도 표준을 정립하려는 노력의 시작이었다. 이런 경험을 통해 지속적 통합, 지속적 인도, 빌드 파이프라인, 테스트 자동화 등 젠킨스의 기능을 확실히 이해할 수 있게 되어, 2012년쯤에는 다양한 규모와 범위의 기술 스택을 아우르는 솔루션을 구현했다. 그리고 마침내 이 책을 쓰면서 이 모든 경험을 정리할 수 있게 되어 무척 기쁘다.

지은이 소개

조나단 맥앨리스터(Jonathan McAllister)

어려서부터 소프트웨어를 개발했고, 자동화를 실천하고 있다. 소프트웨어 개발과 테스트, 배포 분야에서 10년 동안 전문가로서 경력을 쌓았다. 특히 다양한 기술 스택을 사용하는 최신 기술 조직에서 아키텍처 설계, 소프트웨어 빌드, 테스트, 인도 솔루션 구축 등의 업무를 수행했다. 최근에는 빌드 파이프라인, 지속적 통합, 지속적 인도, 마이크로서비스 아키텍처, 프로세스 수립에 집중하고 있으며, 마이크로소프트나 머크, 로지텍 등 업계 최고의 기업들을 대상으로 고확장성 자동화 솔루션을 구축했다.
지속적 실천법을 통해 수익을 높이는 전략을 개발하고, 표준화를 통한 릴리스 간소화가 가능하게 하는 확장형 빌드, 업데이트, 테스트 파이프라인을 설계하는 일에 관심이 있다.
성공적인 기업가이자 작가이며, 비즈니스 컨설턴트로서 기술과 문화가 각기 다른 조직에서 효율적인 인도 파이프라인을 구축하고 관리한 경험이 있다.

옮긴이의 말

오랫동안 소프트웨어 개발 분야에 있다가 몇 년 전부터는 소프트웨어 평가 업무를 맡게 됐다. 사업 부서에서 요청한 서비스를 구현하기에 적합한 개발사를 발굴해, 필요 시 회사를 직접 방문하고 인터뷰 및 조사를 통해 기술 역량을 파악하는 업무를 통해 다양한 프로젝트, 다양한 소프트웨어 개발사와 개발자를 접할 수 있었고, 인터뷰를 통해 국내 스타트업부터 중견 개발사에 이르기까지 각 기업이 추구하는 개발 방법론과 개발 환경을 직접 확인할 수 있었다.
소프트웨어 개발 기업의 역량을 파악하기 위해 다양한 평가 도구를 사용하지만, 그 중 가장 중요한 것이 애플리케이션 수명 관리(ALM, Application Lifecycle Management) 환경이다. ALM은 비즈니스의 요구 사항 관리와 소프트웨어 개발 과정을 융합하고 이를 자동화된 툴을 이용해 관리하는 것으로 요구 사항 관리, 설계, 코딩, 테스트, 이슈 관리, 릴리스 등을 모두 포함한다.
그러므로 하루가 다르게 진보하는 기술의 변화 속에서 소프트웨어 개발사가 다양한 고객의 요구를 만족시키면서도 지속성을 유지하려면 적은 인원으로도 효율적으로 빠르게 운영돼야 하며 ALM 환경이 얼마나 효율적으로 운영되는지를 통해서 기업의 역량을 간접적으로 파악할 수가 있다. 국내에서도 이제는 많은 기업이 배포 자동화, 품질 검증 활동 자동화 등을 비즈니스 역량과 통합해 대응하는 추세다. 특히 대표적인 자동화 솔루션인 젠킨스를 활용하는 기업이 많다. 하지만 여전히 많은 개발사가 젠킨스의 무궁무진한 기능은 거의 활용하지 못한 채 기초 기능만 사용하는 것을 지난 몇 년간의 업무를 통해 알게 됐다.
이 책은 독자가 젠킨스를 활용해 지속적 통합과 인도, 배포할 수 있는 역량에 필요한 많은 정보를 제공한다. 또한 마스터/슬레이브를 활용한 젠킨스 확장, 고급 테스트 자동화 기법, 빌드 파이프라인, 플러그인 개발 기법 등 블로그나 인터넷에 자세히 설명돼 있지 않는 내용도 다루고 있어서, 독자가 속한 조직에서 젠킨스 자동화 솔루션을 구축하고 관리하는 데 심화된 지식을 필요로 하는 경우 큰 도움이 될 것이라 생각한다.
아쉬운 점은 젠킨스가 아직 완벽한 한글화가 되지 않아, 영문 그대로 쓰는 경우가 많다는 것이다. 아마 이는 개발사의 규모와 상관없이 젠킨스를 운영 관리하는 사람이 소수이기 때문이기도 할 것이다. 이런 이유로 이 책에서는 영문 버전 젠킨스를 기본으로 하고, 필요 시 우리말로 부연 설명을 하는 방식으로 독자에게 편의를 제공하고자 했다.

옮긴이 소개

이정표

PC용 소프트웨어부터 모바일 브라우저 및 클라우드 서비스 개발에 이르기까지 20년 동안 다양한 개발 프로젝트에 참여했으며, 현재 KT에서 SW 품질 평가 업무를 맡고 있다. 오픈 라이선스를 활용한 IT 기술 및 콘텐츠 확산에 관심이 많으며, 오픈아이디어랩(OIL) 프로젝트를 통해 의미 있고 재미있는 시도를 이어나갈 수 있는 방법을 고민하고 있다.
옮긴 책으로는 『워드프레스 플러그인과 테마 만들기』(에이콘, 2012), 『Hudson 3 설치와 운용』(에이콘, 2014)이 있고, 『크리에이티브 커먼즈 권리표현언어(ccREL)』(2009)와 『참여와 소통의 정부 2.0』(아이앤유, 2011), 『난독화, 디지털 프라이버시 생존 전략』(에이콘, 2017)의 공역자로 참여했다.

목차

목차
  • 1장. 젠킨스 설치와 구성
  • __젠킨스 플랫폼 아키텍처와 구성 기법
  • __마이크로소프트 윈도우용 젠킨스
  • ____JVM과 자바 인수값 구성: 포트와 JRE와 메모리
  • __리눅스와 유닉스용 젠킨스
  • ____JVM 구성
  • __NGINX 리버스 프록시에서 젠킨스 실행하기
  • ____아파치 리버스 프록시에서 젠킨스 실행하기
  • __젠킨스에서의 재해복구
  • ____젠킨스 스냅샷 백업
  • ____젠킨스 미러: rsync 설치
  • __맥 OS X용 젠킨스
  • ____젠킨스 LTS 릴리스 라인
  • ____젠킨스 XML 구성 파일
  • __요약

  • 2장. 분산 빌드: 마스터/슬레이브 모드
  • __마스터와 슬레이브 구조 이해
  • ____UI에서 슬레이브 노드 생성하기
  • __실행 방식을 정하기
  • ____자바 웹스타트를 통한 슬레이브 에이전트
  • ____WMI와 DCOM으로 윈도우에서 슬레이브 에이전트 실행
  • ____SSH 터널링을 통한 슬레이브 에이전트
  • __젠킨스 슬레이브 관리
  • ____노드 관리 대시보드
  • ____예방적 모니터링
  • ____개별 슬레이브 노드 관리
  • __레이블과 그룹, 로드밸런싱
  • ____레이블을 생성해 슬레이브를 그룹화하기
  • ____슬레이브를 여러 그룹과 연결하기
  • ____슬레이브 실행을 전역 범위나 연결된 작업 범위로만 제한하기
  • ____분산 빌드를 지원하는 젠킨스 플러그인
  • __요약

  • 3장. 젠킨스에서 뷰와 작업 생성
  • __젠킨스 유저 인터페이스
  • ____메인 헤더
  • ____구성 패널
  • ____작업 테이블
  • ____RSS 피드
  • ____젠킨스 빌드 대기 목록과 빌드 실행자 상태 패널
  • __젠킨스의 작업
  • ____젠킨스의 프리스타일 프로젝트
  • ____메이븐 프로젝트
  • ____외부 작업 모니터링
  • ____젠킨스의 다중 구성 작업: 매트릭스 작업
  • __뷰 생성
  • ____정규 표현식으로 작업 필터링
  • __요약

  • 4장. 젠킨스에서 뷰와 작업 관리하기
  • __젠킨스에서 뷰 관리
  • ____기본 뷰를 바꾸기
  • ____뷰의 기본 내용 변경
  • ____Views 콘텐츠의 고급 설정
  • __작업의 프로젝트 페이지 탐색
  • ____구성 패널
  • ____빌드 내역 패널
  • ____프로젝트 개요: 중앙 패널
  • __작업 실행
  • __작업 실행 구성 패널
  • __상태 패널
  • __콘솔 출력창
  • __요약

  • 5장. 고급 테스트 자동화
  • __품질 보증 계획 및 테스트 자동화 용어
  • __소프트웨어 개발 생명주기
  • __제품 코드와 테스트를 연결하기
  • __품질 좋은 제품 만들기
  • ____효율적인 테스트 자동화 아키텍처
  • __젠킨스의 테스트 자동화
  • __MSTest를 통한 젠킨스의 단위 테스트
  • ____MSTest 에이전트 설정 방법
  • ____MSTest를 통한 테스트 자동화 실행
  • ____MSTests 실행 및 젠킨스 내에서의 결과 보고
  • ____테스트 작업 구성
  • __분산형 테스트 솔루션
  • ____셀레늄 그리드
  • ____병렬 다운스트림 작업
  • __요약

  • 6장. 소프트웨어 배포 및 인도
  • __빌드 출력 표준화
  • ____패키징 방법 설계
  • __공인 미디어 라이브러리 구현
  • ____자산을 DML에 발행하기
  • __배포 자동화
  • ____빌드 아티팩트 및 패키지 검색
  • ____배치 자동화 실행
  • ____배포를 위해 젠킨스 슬레이브 노드 활용
  • __요약

  • 7장. 빌드 파이프라인
  • __빌드 파이프라인의 가치 제안
  • __빌드 파이프라인 설계
  • ____빌드 파이프라인의 첫 번째 세그먼트
  • ____추가 파이프라인 세그먼트
  • ____파이프라인의 완성
  • ____최종 파이프라인 시각화
  • ____포장 판매 및 임베디드형 프로젝트용 변환
  • __젠킨스에서 빌드 파이프라인 구현
  • ____업스트림 작업: 트리거 됨
  • ____다운스트림 작업: 포스트 빌드 액션을 통해
  • ____Parameterized Trigger 플러그인
  • ____Promoted Build 플러그인
  • ____포스트 빌드 태스크 플러그인
  • ____Delivery Pipeline 플러그인
  • ____두 개의 젠킨스 인스턴스 연결: 개발 및 프러덕션
  • __요약

  • 8장. 지속적 실천
  • __카이젠: 지속적 개선
  • ____칸반
  • __지속적 통합
  • ____지속적인 통합이 아닌 것
  • ____코드 기반 브랜치 기법
  • ____기능 토글
  • ____신속한 실패와 더 신속한 복구
  • ____분산 버전 관리
  • ____젠킨스에서의 지속적 통합
  • __지속적인 인도
  • ____지속적 인도의 원칙
  • ____젠킨스에서의 지속적 인도
  • __지속적 배포
  • ____젠킨스에서의 지속적 배포
  • __요약

  • 9장. 젠킨스와의 기술 통합
  • __젠킨스와 도커: 리눅스 가이드
  • ____도커 컨테이너에서 젠킨스 실행하기: 리눅스
  • ____도커를 사용하는 동적 젠킨스 슬레이브 노드
  • __젠킨스와 앤서블 통합: 리눅스와 윈도우
  • __젠킨스와 아티팩토리
  • __젠킨스와 셀레늄 그리드
  • ____셀레늄 그리드 구축
  • ____테스트를 작성하고 젠킨스에 통합하기
  • __젠킨스와 지라
  • __요약

  • 10장. 젠킨스 확장
  • __개발 환경 설정
  • __젠킨스 플러그인 스켈레톤 만들기
  • __플러그인 스켈레톤
  • __메이븐이 생성한 스켈레톤을 인텔리제이로 가져오기
  • __젠킨스 플러그인의 아키텍처
  • ____젠킨스 작업 라이프 사이클의 이해
  • ____오버라이드 사용하기
  • ____describables와 지시자로 작업하기
  • __젤리 태그와 파일
  • __HPI 플러그인 컴파일 및 설치
  • __요약

  • 부록. 젠킨스 업그레이드 가이드

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

[p.8, 14]
저자 소개
->
지은이 소개