본문 바로가기
개발공부

MVC(Model-View-Controller) 모델이란? – 웹 개발 구조의 기본

by 안스토리 2025. 5. 10.

최근 사내 프레임워크 구조를 설명할 일이 있었는데,
그 핵심이 바로 MVC 모델이었다.
CodeIgniter, Laravel, Spring 등 많은 웹 프레임워크들이 채택하고 있는 이 구조는
처음에는 다소 헷갈릴 수 있지만, 제대로 이해하면 유지보수, 확장성, 협업 효율성 면에서 큰 장점을 준다.
이번 글에서는 MVC 모델이 무엇인지, 왜 쓰이는지, 실제 예시

🧭 MVC란 무엇인가?

MVCModel-View-Controller의 약자로,
웹 애플리케이션의 구조를 세 가지 역할로 나누는 설계 패턴이다.

핵심 목적:
코드를 역할별로 분리해 더 명확하고 유지보수하기 쉽게 만들기 위함


🔍 각 구성 요소 설명


 

구성 요소 역할 예시
Model 데이터와 관련된 처리 DB 접근, 저장, 수정, 삭제 등
View 사용자에게 보여지는 화면 HTML, 화면 출력, 디자인
Controller 사용자 요청 처리 및 흐름 제어 사용자의 요청을 받고, 필요한 Model을 호출, 결과를 View에 전달
 

📌 간단 예시로 살펴보기

사용자가 /mypage에 접속하면 "내 정보"가 보이는 구조

  1. Controller: 사용자의 /mypage 요청을 받음
    → MypageController.php의 index() 함수 실행
  2. Model: DB에서 로그인한 사용자의 정보를 가져옴
    → UserModel.php의 getUserInfo() 호출
  3. View: mypage.php 파일을 로드해서 사용자 정보를 HTML로 보여줌
[User Request]
     ↓
[Controller]
     ↓
[Model] ←→ [DB]
     ↓
[View]
     ↓
[Response: 브라우저에 출력]

 

✨ MVC 구조의 장점

장점 설명
역할 분리 코드가 깔끔하고 명확해짐
유지보수 용이 한쪽 로직만 수정해도 다른 영역에 영향 적음
협업 효율성 ↑ 백엔드 개발자, 프론트엔드 개발자 간 작업 분리 가능
테스트 및 확장성 ↑ 모듈화되어 테스트/추가 개발 용이

 

 

🧱 실제 회사에서는 어떻게 사용되나?

CodeIgniter나 Laravel 같은 프레임워크에서는
MVC 구조가 디렉토리로도 명확히 나뉘어 있음:

/application
  ├── controllers/
  ├── models/
  └── views/
  • 신규 기능 추가 시, 보통 다음 흐름으로 작업함:
    1. 컨트롤러 생성
    2. 모델에서 DB 연동
    3. 뷰 페이지에서 출력 디자인

회사 시스템이 복잡해질수록 이 구조를 잘 이해하는 것만으로도 업무 이해도가 훨씬 높아진다.

 

🎯 느낀 점 / 회고

처음엔 Controller에 모든 코드를 몰아넣고 싶어진다.
하지만 시간이 갈수록 코드는 섞이지 않고 나뉘어 있어야 유지보수가 쉽다는 걸 실감하게 된다.
MVC는 단순한 "이론"이 아니라, 모든 웹 프로젝트에서 가장 많이 쓰이는 실질적인 개발 방식이다.
지금 내가 다루는 프레임워크가 어떻게 MVC 구조를 활용하는지 살펴보는 것만으로도 실력이 한 단계 올라간다.