LogoLogo
NHN커머스 메인고도몰 운영 도움말
  • 고도몰 튜닝 가이드
    • Intro
    • 이해하기
      • 용어
      • 구조
        • 튜닝 진행 방법
        • 튜닝 가능 범위
        • 고도몰 아키텍쳐(Architecture)
        • 코딩 규칙
        • 네이밍 규칙
    • 준비하기
      • 심화 구조 이해
        • Routing 소개
        • Controller 소개
        • HTTP 소개
        • Database 소개
        • Security 소개
        • Exception 소개
        • Language 소개
      • 오픈 API 사용가이드
        • 인증키 발급 방법 안내
        • 공급사 이용 방법 안내
    • 튜닝하기
      • 소스 코드 튜닝
        • 기본 튜닝 방법
        • 컨트롤러 튜닝 방법
        • 템플릿 튜닝 방법
        • 튜닝 시 유의사항
      • 데이터베이스 튜닝
        • 튜닝 방법
        • 튜닝 시 유의사항
        • 고도몰 테이블 명세서
        • PhpMyAdmin 이용
      • 디버깅 방법
      • 패치 확인 및 대응 방법
    • 튜닝 따라하기
      • 관리자 GNB 색상 변경하기
      • 즐겨찾기 메뉴 바로가기 만들기
      • 관리자 메뉴 추가하기
      • 관리자 메뉴 수정하기
      • 관리자 페이지 추가하기
      • 관리자 페이지 수정하기
      • 사용자 페이지 추가하기
      • 사용자 페이지 수정하기
    • 잘못된 튜닝사례
      • 상속 미준수
      • 메소드 관련
      • 그 외
  • 기타 개발 가이드
    • 로그 사용 가이드
    • [PMA] 내보내기(export) 이용 안내
    • 외부 스크립트 사용 가이드
    • SDK 사용 가이드
    • [DB] 사용 가이드
  • 튜닝가이드 영상 보기
Powered by GitBook
LogoLogo

NHN COMMERCE

  • 공지사항
  • 회사소개

Partners

  • 서비스 제휴문의
  • 셀러어드민
  • 디자인 파트너

Developers

  • 스토어

©NHN COMMERCE Corp. All rights reserved.

On this page
  • 📌 Request 처리 순서
  • 📌 Route의 동작
  • 📌 Application의 동작
  • 📌Controller의 동작
  • 📌 View의 동작
  • 📌 Class Loader
  • 📌 사용자 소스 디렉토리(User Sourc Directory) 구조
  • 📌 사용자 소스 디렉토리(User Source Directory) 권한

Was this helpful?

  1. 고도몰 튜닝 가이드
  2. 이해하기
  3. 구조

고도몰 아키텍쳐(Architecture)

Request의 처리순서 Controller 등의 동작 방법과 디렉토리 구조 등 고도몰의 전반적인 아키텍쳐에 대한 내용입니다.

Previous튜닝 가능 범위Next코딩 규칙

Last updated 1 year ago

Was this helpful?

📌 Request 처리 순서

  1. 사용자의 요청은 route로 전달 되어 고도몰에서 처리할 준비를 합니다.

  2. Application은 솔루션 구동에 필요한 리소스를 준비하고 요청을 처리할 Controller를 찾아서 실행 시킵니다.

  3. Controller는 사용자의 Request를 처리하고 템플릿을 찾아 화면에 보여질 데이터를 전달합니다.

  4. 템플릿은 Controller로 부터 데이터를 전달 받아서 데이터를 설정한 뒤 Controller로 HTML 스트링을 반환합니다.

  5. Controller는 템플릿과 데이터가 처리된 HTML 스트링을 화면에 출력합니다.

📌 Route의 동작

  • 사용자의 요청은 모두 사용자 소스 디렉토리(User Source Directory) 내 route.php 에서 받은 뒤 처리됩니다.

  • autoload.php는 ClassLoader를 이용하여 원본 소스 디렉토리(Base Source Directory) 및 사용자 소스 디렉토리(User Source Directory) 아래의 클래스를 생성하여 로드합니다.

  • bootstrap.php는 Application 생성 후 필요한 리소스를 로드합니다.

📌 Application의 동작

  • bootstrap.php에서 Application 객체를 생성합니다.

  • Application 객체가 생성되면 AbstractBootstrap을 상속받은 클래스를 로드하여 객체를 모두 실행합니다.

  • Bootstrap에 필요한 클래스의 객체 생성 후 Application 컨테이너에 주입시킵니다.

  • Application의 실행 준비가 완료되면 사용자 요청을 처리한 Controller를 찾아서 요청을 처리하도록 합니다.

📌Controller의 동작

  • Interceptor에서 템플릿 레이아웃 설정, 글로벌 변수 설정, 통계 데이터 측정, 보안 및 인증과 같은 전역에서 이루어져야 하는 작업을 처리합니다.

  • 사용자가 작성한 MyController::pre() 메소드가 실행됩니다.

  • 사용자가 작성한 MyController::index() 메소드가 실행됩니다.

  • 사용자가 작성한 MyController::postHandle() 메소드가 실행됩니다.

📌 View의 동작

  • 컨트롤러에서 호출한 View 엔진인 Template_를 토대로 템플릿 엔진을 구성합니다.

  • 템플릿 엔진의 종류

    1. Template_ 엔진 : 사용자 스킨 처리

    2. Include 엔진 : 관리자 스킨 처리

📌 Class Loader

Class Loader 소개

  • 고도몰은 클래스의 FQN(Fully Qualified Name)을 이용하여 class 파일을 자동으로 include 하는 autoload 시스템을 사용합니다.

  • Classloader는 사용자 소스 디렉토리(User Source Directory) 내 route.php 에서 정의된 Class를 사용할 수 있도록 설정합니다.

  • PHP에서는 Classloader를 Loader Stack에 여러개 등록할 수 있고, Stack의 순서대로 Classloader가 동작하여 Class를 찾습니다. 하지만, 고도몰 에서는 하나의 Classloader를 사용하며, 내부에서 여러개의 ClassPathResolver를 등록하여 Loader Stack을 구현하고 있습니다.

Fully Qualified Name란?

네임스페이스의 완전한 이름으로 아래의 예에서 볼 때 Framework\ClassLoader\ClassLoader, Framework\Http\Request을 의미합니다. 또한 반드시 네임스페이스와 물리적인 디렉토리의 경로가 동일해야 Classloader가 정상 실행됩니다.

Class Loader 동작

  1. Classloader가 사용자 소스 디렉토리(User Source Directory)의 module에서 class를 먼저 검색하고, 없으면 원본 소스 디렉토리(Base Source Directory)에서 검색을 합니다.

  2. class가 사용자 소스 디렉토리(User Source Directory)의 module에서 검색되면 원본 소스 디렉토리(Base Source Directory)의 class는 무시됩니다.

  3. 원본 소스 중 확장 가능한 class는 사용자 소스 디렉토리(User Source Directory)의 module에 원본 소스의 class를 확장한 Wrapping class를 만들어 사용할 수 있습니다.

📌 사용자 소스 디렉토리(User Sourc Directory) 구조

  • 최상위 경로에서 동작하는 파일은 route.php, blank.php만 해당됩니다.

  • 신규 파일을 생성하시려면 data, skin 을 이용해 주시기 바랍니다.

  • tmp 에서 이미지 및 신규파일의 작업을 진행하시면 파일의 소실이 우려가 있으니 지양해 주시기 바랍니다.

📌 사용자 소스 디렉토리(User Source Directory) 권한

  • data, skin 디렉토리(하위 경로 포함)는 0707 이상의 권한이 필요합니다.