New

마젠토 2 개발자 가이드 [전 세계적으로 가장 인기 있는 최신 전자상거래 플랫폼, 파워풀한 마젠토 2 사용법 익히기]

  • 원서명Magento 2 Developer's Guide (ISBN 9781785886584)
  • 지은이브랑코 아젤(Branko Ajzele)
  • 옮긴이곽대기
  • ISBN : 9791161750477
  • 35,000원
  • 2017년 09월 15일 펴냄
  • 페이퍼백 | 512쪽 | 188*235mm
  • 시리즈 : acorn+PACKT

책 소개

요약

이 책은 2015년 릴리즈 된 마젠토 2의 알파에서 오메가까지 두루 섭렵한다. 플랫폼 구조의 이해와 환경 설치에서부터 프로그래밍 개념과 규칙 등을 설명하고 이후 곧장 MVC 구조의 모델이 마젠토 2에서 어떻게 구현됐는지 다룬다. 새롭게 도입된 의존성 주입과 플러그인에 대한 자세한 설명이 뒤를 이으며 백엔드 개발과 프론트 엔드 개발을 나눠서 코어 레벨부터 설명한다. 웹 API와 주요 기능 영역을 코드 레벨에서 상세히 다루며 마지막으로 테스트와 실제 모듈 개발을 한걸음씩 친절하게 가이드 해준다. 현재 출판된 마젠토 2 관련 영문 서적 중에서 가장 포괄적이고 깊이 있는 책으로서 수많은 응용을 가능하게 하는 기반이 돼줄 것이다.

이 책에서 다루는 내용

■ 마젠토 2 개발 서버와 라이브 서버 설치하기
■ 마젠토 2에서 새로 생긴 주요 개념과 관례 이해하기
■ 축소판이지만 온전히 기능하는 모듈을 처음부터 만들어 전자상거래를 효율적으로 관리하기
■ 모델과 컬렉션을 작성, 엔티티 데이터 관리하고 검색하기
■ 이벤트와 옵저버, 크론잡, 로깅, 프로파일링, 메시지 기능 만들기 등 백엔드 개발에 뛰어들기
■ 블럭과 템플릿, 레이아웃, 테마 등의 마젠토 2 프론트엔드 개발 핵심 이해하기
■ 다양한 종류의 API 호출을 통한 토큰과 세션, OAuth 토큰 기반 인증 사용하기와 API 직접 만들기
■ 개발을 통합하기 위해 마젠토 모듈과 커스텀 테마 테스트하는 법 이해하기

이 책의 대상 독자

이 책은 PHP 개발자 중에서 마젠토 2 개발에 흥미를 가진 중급부터 프로 레벨까지의 개발자를 주요 대상으로 한다. 백엔드 개발자를 위해 다수의 주제를 다루며, 이는 마젠토 2 상점을 수정하고 확장하는 데 도움을 줄 것이다. 프론트엔드 개발자 또한 온라인 상점의 외양을 커스텀하는 법을 배울 수 있을 것이다.
엄청난 양의 코드 변화와 구조 변화를 봤을 때, 마젠토 버전 2.x는 마젠토 버전 1.x와 완전히 다른 플랫폼으로 묘사할 수 있다. 이 책은 이러한 점을 염두에 두고 독자가 마젠토 1.x 버전에 대한 지식이 있을 거라는 가정 없이 서술하고 있다.

이 책의 구성

1장. '플랫폼 구성의 이해'에서는 기술 스택과 설계 레이어, 최고 수준 시스템 구성, 개별 모듈 구조에 대해 높은 수준으로 개요를 보여준다.
2장. '개발 환경 관리'에서는 개발 서버와 라이브 서버를 구축하기 위한 버추얼박스(Virtual box)와 베이그런트(Vagrant), 아마존 AWS 플랫폼을 소개한다. 한 단계 나아가 베이그런트와 아마존 EC2 박스를 설치하고 스크립트를 작성하는 실전 예제를 제공한다.
3장. '프로그래밍 개념과 관례'에서는 서로 관련 없어 보이지만 마젠토의 중요한 부분인 컴포저, 서비스 계약, 코드 생성, var 디렉터리 그리고 최종적으로 코딩 표준을 독자에게 소개한다.
4장. '모델과 컬렉션'에서는 모델과 리소스, 컬렉션, 스키마, 데이터 스크립트를 살펴본다. 또한 컬렉션 필터와 함께 엔티티에 적용되는 실용적인 CRUD 액션도 보여준다.
5장. '의존성 주입 사용하기'에서는 의존성 주입의 동작 원리를 가이드한다. 오브젝트 매니저 역할을 설명하고 클래스 프레퍼런스와 가상 타입의 사용법을 설명한다.
6장. '플러그인'에서는 강력하고 새로운 개념인 플러그인에 대한 상세한 통찰을 보여준다. before/after/around 리스너를 통해 이미 존재하는 기능을 확장하거나 추가하는 것이 얼마나 용이한지 보여준다.
7장. '백엔드 개발'에서는 백엔드 관련 개발로 간주되는 부분을 직접 경험한다. 크론잡, 알림 메시지, 세션과 쿠키, 로깅, 프로파일러, 이벤트, 캐시, 위젯 등이다.
8장. '프론트엔드 개발'에서는 프론트엔드 관련 개발로 간주되는 부분을 높은 수준의 접근 방식으로 가이드한다. 마젠토의 렌더링 플로우와 뷰 요소, 블럭, 템플릿, 레이아웃, 테마, CSS, 자바스크립트를 다룬다.
9장. '웹 API'에서는 마젠토가 제공하는 강력한 웹 API를 자세하게 다룬다. PHP cURL 라이브러리나 콘솔을 통해 REST와 SOAP을 모두 생성하고 사용하는 실전 예제를 보여준다.
10장. '주요 기능 영역'에서는 마젠토의 가장 보편적인 부분을 독자에게 높은 수준의 접근 방식으로 소개한다. CMS와 카탈로그, 고객 관리, 상품과 고객 불러오기 등을 포함한다. 이에 더해 커스텀 상품 타입과 배송 모듈 및 결제 모듈 만드는 법도 보여준다.
11장. '테스트'에서는 마젠토에서 사용 가능한 테스트 타입의 개요를 보여준다. 또한 커스텀 테스트를 작성, 실행하는 법도 보여준다.
12장. '모듈 처음부터 만들기'에서는 모듈을 개발하는 전체 프로세스를 보여주고 책 전체에서 배웠던 대부분의 요소를 사용한다. 최종 결과는 어드민 인터페이스와 상점 인터페이스를 갖추고, 어드민 설정 영역, 이메일 템플릿, 설치 스키마 스크립트, 테스트 등을 포함한다.

저자/역자 소개

지은이의 말

마젠토로 상점을 만드는 일은 쉽지 않을 수 있다. PHP/자바스크립트 프로그래밍 언어 및 개발 서버와 라이브 서버 환경, 다양한 마젠토 특유의 기능과 관련된 굉장히 많은 양의 기술이 필요하다. 이 책은 마젠토의 구성 요소를 이해하는 데 필요한 통찰력을 제공할 것이다. 이 책을 끝까지 읽으면 설정 파일과 의존성 주입, 모델, 컬렉션, 블럭, 컨트롤러, 이벤트, 옵저버, 플러그인, 크론잡, 배송 모듈, 결제 모듈 및 기타 사항에 익숙해질 것이다. 이러한 지식은 앞으로의 개발 여정에서 단단한 기반이 돼 줄 것이다.'

지은이 소개

브랑코 아젤(Branko Ajzele)

남편이자 두 아이의 아버지, 아들, 형제, 저자 그리고 소프트웨어 개발자다. 전기공학 학위를 갖고 있으며 디지털과 관련된 모든 것을 사랑한다. 소프트웨어 개발로 먹고 산다. 언젠가 자유 시간을 충분히 활용해 진지하게 취미 전자 개발을 하고 싶어한다. 아두이노(Arduino)와 라즈베리 파이(Raspberry Pi)에 눈독을 들이고 있다. 풀타임 소프트웨어 개발과 팀 관리, 전자상거래 플랫폼 개발을 수년간 직접 경험해왔다. 마젠토는 2008년부터 다뤘으며 첫 번째 베타 버전부터 깊게 관여해왔다. PHP와 데이터베이스(MySQL/MongoDB), 검색/분석(Solr/Elasticsearch), Node.js 등과 관련된 기술 전반에 걸쳐 주기적으로 작업한다. 풍부한 기술 지식을 갖고 강력한 추진력으로 상세하고 명확하게 자주 소통한다. 요구 사항을 개선할 수 있다면 기꺼이 대체할 수 있는 방법을 제안하고 일정을 맞추기 위해 야근도 마다하지 않는다. 몇 개의 저명한 IT 인증을 가지고 있다. 젠드 공인 기술자(ZCE PHP, Zend Certified Engineer), 마젠토 공인 개발자(MCD, Magento Certified Developer), 마젠토 공인 개발자 플러스(MCD+, Magento Certified Developer Plus), 마젠토 공인 솔루션 전문가(MCSS, Magento Certified Solution Specialist), 자바스크립트 공인 개발자(JavaScript Certified Developer) 등이다. 『Instant E-Commerce with Magento: Build a Shop』(Packt, 2013)이 마젠토와 관련해 처음 쓴 책이며 마젠토 초보를 주 대상으로 했다. 그 후, 개발자를 위한 『Getting Started with Magento Extension Development』(Packt, 2013)를 썼다. 현재 Lab Lateral Ltd에서 근무 중이다. 혁신적인 기획자와 예술가, 개발자의 팀으로 이루어져 고객 중심의 웹사이트와 디지털 컨설팅, 마케팅에 전문성을 지닌 수상 경력이 있는 회사다. 마젠토 개발 팀장이며 크로아티아 사무소 소장이다. 2014년 10월에 Digital Entrepreneur Awards로부터 전자상거래 개발과 관련, 탁월한 지식과 전문성으로 올해의 전자상거래 개발자(E-Commerce Developer of the Year)상을 받았다. 작업 물의 수준은 업계 최고다. Lab Lateral Ltd 팀과 전 세계 동료 개발자를 돕기 위해 헌신 중이다.

옮긴이의 말

마젠토는 2008년 로이 루빈(Roy Rubin)에 의해 사이드 프로젝트로 시작됐으며 오픈소스로서 커뮤니티의 전폭적인 도움과 인기를 얻고 급성장했다. 2009년 이후, 오픈소스 전자상거래 솔루션으로 글로벌 시장 점유율 부동의 1위를 유지해왔다. 마젠토는 태생부터 엔터프라이즈급 솔루션을 지향해오고 강력한 어드민 기능 덕분에 온라인 상점을 진지하게 운영하려는 판매자에게 거부할 수 없는 매력을 느끼게 한다. 커뮤니티 에디션과 엔터프라이즈 에디션을 나눠서 비즈니스에서도 성공적인 모델을 확립했다. 이제는 사라진 마젠토 고와 같은 서비스도 있었으나 마젠토 2의 클라우드 서비스에서 다시 부활하려는 조짐을 보이고 있다. PHP가 아직 많이 모던하지 못하던 시절에도 마젠토는 코드의 구조와 체계의 추상화를 위해 나름 많은 고민을 한 흔적을 갖고 있다. 하지만 이제 PHP도 7 버전으로 넘어오고 많은 부분이 시대의 조류에 맞춰 개량돼 모듈화와 느슨한 커플링 등, 여러 추상화 개념이 언어 수준에서 구현됐다. 마젠토도 과거 직접 구현했던 시스템의 옷을 벗고 모던 PHP의 로켓에 올라탈 준비를 끝마쳤으니 그것이 바로 마젠토 2다. 마젠토는 한때 이베이(ebay)에 인수돼 여러 부문에서 이베이 에코 시스템과 통합되는 면을 보여줬으나, 칼 아이칸(Carl Icahn)의 이베이 분리에 의해 퍼미라(Permira) 펀드에 2015년 11월 매각됐고 비슷한 시기에 마젠토 2가 공개됐다. 이후 마젠토 2는 현재진행형 오픈소스로 깃허브(GitHub)에서 이슈 생성 및 풀 리퀘스트(Pull Request)가 가능하며 많은 이슈 포착 및 개선 프로세스가 오픈소스 에코 시스템의 장점을 그대로 따르고 있다. 물론 마젠토 2가 출시되고 시장 점유율이 모멘텀을 얻고 있긴 하지만 마젠토 1이 바로 죽은 것은 아니며 그럴 수도 없다. 마젠토 2가 출시된 날로부터 3년 동안은 마젠토 본사에서 지원해야 할 의무가 있기 때문이다. 마젠토 1의 공식 지원이 완료되는 시점은 2018년 11월 18일이다. 물론 이날 이후에도 마젠토 1은 사용할 수 있고 또 사설 지원 서비스가 인기를 얻겠지만 마젠토 본사로부터 보안 패치나 기능 개선을 기대할 순 없으니 미리 대비하는 것이 좋다. 마젠토 2의 많은 변화 가운데 사용자 입장에서 가장 눈에 띄는 부분은 어드민 관리 화면일 것이다. 마젠토 1에서 사용법을 이해하기 어렵다는 원성이 잦았는데 모던 스타일을 기반으로 직관적이고 보다 간편한 사용이 가능하도록 변경됐다. 개발자 입장에서는 컴포저의 도입과 의존성 주입 및 모듈 구조의 변화 등이 새롭게 느껴지겠지만 코어의 구조와 모듈화는 여전히 마젠토 1의 철학을 그대로 계승하고 있다. 마젠토는 마젠토 1에서부터 개발의 난해함과 생소함으로 악명이 높았다. 대부분 개발 자료가 영어로 돼 있어 접근성도 양호하지 못했다. 국내 기업들도 강력한 기능의 마젠토를 도입했지만 개발자 확보가 여의치 않아 프로젝트가 좌초되기 십상이었다. 마젠토는 여전히 국내 기업의 해외 진출에 주로 채택되는 것으로 보이지만 마젠토 개발자가 늘어나고 환경이 갖춰지면 얼마든지 국내 서비스에도 사용 가능하며 충분히 저력을 보여줄 것이라 믿는다. 이 책이 그러한 미래에 미력이나마 도움이 됐으면 한다. 이 책은 다년간 마젠토 개발을 해온 브랑코 아젤(Branko Ajzele)이 썼다. 현재 시중에 나온 마젠토 서적 가운데 가장 포괄적이고 깊이 있는 책이다. 마젠토 2의 전체 그림과 개발 흐름의 원리를 이해하고자 하는 개발자에게 큰 도움을 줄 것이라 믿어 의심치 않는다

옮긴이 소개

곽대기

다양한 분야와 언어로 개발자의 길을 걸어왔다. 국내외 대기업 및 정부 기관 마젠토 프로젝트에 참여해왔다. 현재 넥스트도어의 기술이사로 재직 중이며 위메이크프라이스(We Make Price)의 글로벌 팀에서 프로젝트를 진행하고 있다. 자연어 처리 및 기계 번역, VR에 관심이 깊다.

목차

목차
  • 1장. 플랫폼 구성의 이해
    • 기술 스택
    • 설계 레이어
    • 루트 파일시스템 구조
    • 모듈 파일시스템 구조
    • 요약

  • 2장. 개발 환경 관리
    • 개발 환경 설치
      • 버추얼박스
      • 베이그런트
      • 베이그런트 프로젝트
    • 라이브 서버 환경 설치
      • 아마존 웹 서비스 소개
      • S3 사용 권한 설정
      • 데이터베이스와 미디어 파일 백업을 위한 S3 설치
      • EC2 설치 자동화를 위한 Bash 스크립트
      • Elastic IP와 DNS 설정
    • 요약

  • 3장. 프로그래밍 개념과 관례
    • 컴포저
    • 서비스 계약
    • 코드 생성
    • var 디렉터리
    • 코딩 표준
    • 요약

  • 4장. 모델과 컬렉션
    • 축소판 모듈 제작
    • 단순 모델 생성
    • EAV 모델
    • 스키마와 데이터 스크립트의 흐름 이해
    • 설치 스키마 스크립트 작성(InstallSchema.php)
    • 업그레이드 스키마 스크립트 작성(UpgradeSchema.php)
    • 설치 데이터 스크립트 작성(InstallData.php)
    • 업그레이드 데이터 스크립트 작성(UpgradeData.php)
    • 엔티티 CRUD 작업
      • 새로운 엔티티 생성하기
      • 엔티티 불러오기
      • 엔티티 수정하기
      • 엔티티 삭제하기
    • 컬렉션 다루기
      • 컬렉션 필터
    • 요약

  • 5장. 의존성 주입 사용하기
    • 오브젝트 매니저
    • 의존성 주입
    • 클래스 프레퍼런스 관리
    • 가상 클래스 타입 사용하기
    • 요약

  • 6장. 플러그인
    • 플러그인 만들기
    • before 리스너 사용하기
    • after 리스너 사용하기
    • around 리스너 사용하기
    • 플러그인 정렬 순서
    • 요약

  • 7장. 백엔드 개발
    • 크론잡
    • 알림 메시지
    • 세션과 쿠키
    • 로그 남기기
    • 프로파일러
    • 이벤트와 옵저버
    • 캐시
    • 위젯
    • 커스텀 변수
    • i18n(internationalization, 국제화, 다언어 대응)
    • 인덱서
    • 요약

  • 8장. 프론트엔드 개발
    • 렌더링 플로우
    • 뷰 요소
      • UI 컴포넌트
      • 컨테이너
      • 블럭
    • 블럭의 구조와 생애
    • 템플릿
    • XML 레이아웃
    • 테마
      • 새로운 테마 생성하기
    • 자바스크립트
      • 맞춤 JS 컴포넌트 생성하기
    • CSS
    • 요약

  • 9장. 웹 API
    • 사용자 타입
    • 사용자 인증 방법
    • REST 대 SOAP
    • 토큰 기반 사용자 인증 방식 따라 해보기
    • OAuth 기반 사용자 인증 방식 따라 해보기
    • OAuth 기반 웹 API 호출
    • 세션 기반 사용자 인증 방식 따라 해보기
    • 커스텀 웹 API 생성하기
    • API 호출 예제
      • getById 서비스 메소드 호출 예제
      • getList서비스 메소드 호출 예제
      • save(새로 생성) 서비스 메소드 호출 예제
      • save(업데이트) 서비스 메소드 호출 예제
      • deleteById 서비스 메소드 호출 예제
    • 리스트 필터링을 위한 검색 기준 인터페이스
    • 요약

  • 10장. 주요 기능 영역
    • CMS 관리
      • 블럭 직접 관리
      • 코드를 통한 블럭 관리
      • API를 통한 블럭 관리
      • 페이지 직접 관리
      • 코드를 통한 페이지 관리
      • API를 통한 페이지 관리
    • 카탈로그 관리
      • 카테고리 직접 관리
      • 코드를 통한 카테고리 관리
      • API를 통한 카테고리 직접 관리
      • 상품 직접 관리
      • 코드를 통한 상품 관리
      • API를 통한 상품 관리
    • 고객 관리
    • 고객 직접 관리
      • 코드를 통한 고객 관리
      • API를 통한 고객 관리
      • 코드를 통한 고객 주소 관리
      • API를 통한 고객 주소 관리
    • 상품과 고객 불러오기
    • 커스텀 상품 타입
    • 커스텀 오프라인 배송 메소드
    • 커스텀 오프라인 결제 메소드
    • 요약

  • 11장. 테스트
    • 테스트의 종류
    • 유닛 테스팅
    • 통합 테스팅
    • 정적 테스트
    • 통합성 테스트
    • 레거시 테스트
    • 성능 테스트
    • 기능 테스트
    • 간단한 유닛 테스트 작성하기
    • 요약

  • 12장. 모듈 처음부터 만들기
    • 모듈 구현 요건
    • 모듈 등록하기
    • 설정 파일 생성하기(configxml)
    • 이메일 템플릿 생성하기(email_templatesxml)
    • 시스템 설정 파일 생성하기(systemxml)
    • 액세스 컨트롤 리스트 생성하기(aclxml)
    • 설치 스크립트 생성하기(InstallSchemaphp)
    • 엔티티 영속화 관리하기(모델, 리소스, 컬렉션)
    • 프론트엔드 인터페이스 만들기
      • 라우트, 컨트롤러, 레이아웃 핸들 생성하기
      • 블럭과 템플릿 생성하기
      • 폼 전송 처리
    • 백엔드 인터페이스 만들기
      • 액세스 컨트롤 리스트와 메뉴의 연결
      • 라우트와 컨트롤러, 레이아웃 핸들 생성하기
      • 그리드 위젯 활용하기
      • 그리드 칼럼 렌더러 생성하기
      • 그리드 칼럼 옵션 생성하기
      • 컨트롤러 액션 생성하기
    • 유닛 테스트 생성하기
    • 요약

도서 오류 신고

도서 오류 신고

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

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

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

정오표

정오표

[p.272 : 2행]
자세히 살펴다.
->
자세히 살펴봤다.