마젠토의 MVC 아키텍쳐

마젠토의 MVC 아키텍쳐: MVC 아키텍쳐란?

마젠토는 Zend Framework에 기반해 만들어졌기 때문에 MVC(Model – View – Controller) 아키텍쳐를 사용하고 있습니다.
MVC 아키텍쳐는 시스템의 구조를 모델, 뷰, 컨트롤러로 구분 짓습니다.

1. 모델(Model)
모델은 직접적으로 데이터에 접근하고 그 데이터를 사용해서 연산과 처리를 담당합니다.
사용자 인터페이스와는 전혀 무관합니다.

2. 뷰(View)
뷰는 모델과 컨트롤러를 통해 나온 결과물을 렌더링해주는 사용자 인터페이스(UI)를 담당합니다.
하나의 모델에 여러개의 뷰가 존재할수 있으며 목적에 따라 다른 뷰가 사용되기도 하며, 시스템의 로직과는 전혀 관계가 없습니다.

3. 컨트롤러(Controller)
컨트롤러는 사용자로부터 받는 요청(request)을 처리하고 모델과 뷰를 연결시켜주는 역할을 합니다.

위와같이 세가지로 나뉘어 시스템의 연산/논리(logic)구조와 프레젠테이션을 담당하는 UI가 분리되기 때문에 유지, 보수, 관리가 수월하며 front-end developer가 해야하는일과 back-end developer(programmer)가 해야하는 일을 명확하게 구분시켜주기도 합니다.

 

마젠토의 MVC 프로세스

마젠토의 MVC 프로세스

기본적인 마젠토의 MVC 시스템 프로세스는 위의 이미지와 같습니다.
사용자의 브라우저를 통해 웹서버로 보내진 request는:
1. 컨트롤러(Controller)가 받아들여 어떠한 페이지를 불러내야하는지 분석한 다음
2. 모델(Model)이 데이터베이스에서 적절한 데이터를 불러오고
3. 뷰(View)가 모델(Model)이 불러온 데이터를 사용해서 적절한 HTML을 조합해 컨텐츠로 변환시킨 다음 사용자의 브라우저로 보내줍니다.

 

마젠토의 Configuration-Based MVC vs 일반적인 Convention-Based MVC

많은 온라인 플랫폼들이나 웹애플리케이션들이 모델-뷰-컨트롤러로 이어지는 MVC 시스템을 사용하고 있는데 이런 보통의 MVC 시스템은 Convention-Based MVC 시스템이라고 합니다.
반면에 마젠토는 Convention-Based MVC보다는 좀 더 복잡한 Configuration-Based MVC 시스템을 사용하고 있습니다.
보통의 Convention-Based MVC 시스템은 새로운 클래스나 파일이 생성되었을때 자동으로 감지하고 이를 시스템에 반영하는 반면,
마젠토 같은 Configuration-Based MVC 시스템은 새로운 내용을 자동으로 감지하기도 하지만 기본적으로 각각의 모듈내 /etc/config.xml 파일을 사용해서 설정을 해주어야 새로운 내용이나 바뀐내용이 감지됩니다.
마젠토는 모든 기능이 모듈화 되어있어 선택적으로 기능을 더하고 빼는것이 어렵지 않습니다.
다만 각각의 모듈에는 config.xml 파일이 존재하고 config.xml 파일 안에는 모듈의 버전, 모듈에 사용되는 Model과 Model에 사용되는 ResourceModel, Helper, Block, Router, Layout, Event 사용을 위한 Observer, Crontab 등등 여러가지 내용이 포함됩니다.
config.xml 의 내용이 이해하기 쉬운내용은 아니지만 위의 모든것이 기본적으로 요구되지는 않으므로 각 모듈의 기능에 따라 선택적인 설정을 할수 있습니다.
이렇듯 마젠토의 모든 모듈에는 config.xml 파일을 통한 기본적인 설정이 필요하며 이러한 설정들은 마젠토가 Convention-Based MVC 보다는 조금 더 복잡한 Configuration-Based MVC 의 형식을 띄게 만드는 중요한 요소입니다.

2 replies
  1. wenpo lee
    wenpo lee says:

    안녕해세요.
    우선 좋은 글많이 오려주셔서 감사합니다.
    전 전문 프로그램어는 아니지만 web디자인은 조금 하는 사람입니다.
    지금 마젠토에 입문을 하고 있는데. 어려운 점이 많이 있어서 간단한 질문를 해도 될지요?
    일단 질문을 좀 하겠습니다. 답변을 해주시면 아주 감사하겠습니다.

    참고로 다른분이 만들어 놓은 website를 수정해서 사용하고 싶어서 연구중입니다.
    저는 만들어저 있는 기본틀만 조금 바꾸고 싶은데 어디서 시작해야 될지 모르겠습니다.
    마젠토에서 특정페이지를 수정하고 싶으면 어떻게 해야 하나요?
    backend에서 기본 정보만 고칠수 있더라고요.

    1. attribute에 색갈, 크기 위치를 바꾸고 싶고요..
    2. 제품 페이지에서 제품설명과 과련상품 box를 위치를 바꾸고 싶은데 어디서 해야 돼나요?

    가능하면 답변 꼭 부탁드립니다.
    감사합니다.

    Reply
    • Brian Lee
      Brian Lee says:

      안녕하세요,
      모든 마젠토 사이트가 다 똑같지는 않구요, template이 어떤식으로 만들어 졌느냐에 따라 약간씩 다릅니다.
      가장 좋은 방법은 admin backend에서 template path hint를 yes로 설정하신후에 웹사이트를 다시 로딩하시면 페이지의 각부분이 어떤 템플렛을 사용하고 있는지를 보여줍니다.
      template path hint를 찾는 방법은 구글에서 찾아보면 자세한 설명을 찾을수 있습니다.
      그후 웹사이트에서 template path를 찾으셨으면 FTP에서 /app/design/frontend/{package}/{theme}/template/{해당파일} 을 찾아서 수정하시면 됩니다.

      Reply

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *