jadehan

Back-end 하는 일, 역할 서버 MVC에 대해서 본문

IT/Back-end

Back-end 하는 일, 역할 서버 MVC에 대해서

PaPhoPu 2016. 3. 2. 19:05

index.html = html문서

index.jsp = java로 실행되는 html문서

index.php = php로 실행되는 html문서


백엔드 개발자란


에 보이지 않는 개발을 하는 개발자를 말합니다.


하지만 눈에 보이지 않기에 무엇을 하는지


모르는 사람들이 굉장히 많습니다.


오늘은 Back-end 개발자가 무슨 일을 하는지


알아보도록 하겠습니다.




개발자들에 의해
만들어진
웹 서비스(쇼핑몰)




여러 개발을 거쳐서 만들어진 웹서비스가 있습니다.

(이해가 쉽도록 여기서 말하는 웹서비스는 온라인 쇼핑몰 'A'이라고 가정하겠습니다.)


아직 도메인 구매나 서버 연동을 하지 않아


localhost로 접근하는 것 외에는 방법이 없는


서비스입니다.


한마디로 개발자 외에는 그 누구도 저 쇼핑몰에 접속할 수 없다는 뜻입니다.



일단 우리는 이 웹 서비스를 클라이언트가(외부 유저) 접근 할 수 있도록


서버로 옮기는 일을 해야합니다.




하지만 그냥 서버에 내가 만든 서비스만 갖다 붙여넣기 한다고


클라이언트가 접근 할 수 있는 것이 아니죠!




그러기 위해서 우리는 외부 사용자가


우리의 서비스로 접근할 수 있도록 도와주는


웹 서버를 서버 PC에 설치하여야 합니다.

(혹은 이미 환경설정상 미리 설치되어 제공 해주는 곳도 있습니다.)


웹 서버란 TCP/IP(google-OSI7계층 검색)를 기반으로


http, https 프로토콜 통신을 가능하게 도와주는 프로그램을 말합니다.


대표적으로 


Apach사에서 만든 Apache(점유율 60%이상),

마이크로소프트사에서 만든 iis 같은 프로그램이 있습니다.


이 프로그램이 서버PC에 내장되어 있어야


우리가 서버PC에 업로드 해놓은


웹 서비스를 외부 클라이언트PC가 접근 하여


사이트 메인 페이지를 볼 수 있는 것이 됩니다.


(서버PC의 어느 폴더에 접근할 수 있도록 설정할 지도


Apache로 설정해주시면 됩니다.


일반적으로 www 디렉토리를 지정합니다.)




그러면 이제 친구,동생,형,누나,가족 들에게


내가 만든 홈페이지를 자랑스럽게 보여줄 수 있는


상황이 만들어지게 되는 것 입니다




하지만!! 여기서 끝이 아닙니다.




물론 설치는 되었죠, 그래서 사람들이 내 홈페이지를 구경할 수 있습니다.


그런데... 회원가입은? 로그인은??


그런건 지금 못 합니다...


왜냐하면 우리가 만들어놓은 데이터베이스에 접근할 수 있는


방법이 없기 때문입니다.


데이터베이스에 접근하려면 


서버단에서 실행되는 웹 프로그래밍 언어


가 필요합니다.


JSP, PHP, ASP 등등이 있습니다.


그런데.... 어?? 이상하다??


나는 분명히 저 3개의 언어 중에 하나를 사용해서


localhost에서 DB에 접근하는 테스트를 모두 마쳤는데?


하지만 서버PC에 설치가 안되었습니다


서버PC에서 개발자PC와 똑같은 환경을 셋팅해주어야


똑같이 돌아갑니다.


만약 당신(개발자)PC에서 PHP를 이용해서


서비스를 만들었다면 서버PC도 PHP를 설치 해야합니다.


'자 그럼 이제 Apache와 PHP도 설치하였으니


서비스가 되야겠지'......라고 생각하시겠지만


아직 DB를 옮기지 못했기 때문에 마지막으로 DB를 옮기는 작업을 해야합니다.


개발자 PC에 존재하는 mysql혹은 mariaDB, mongoDB, oracle등등


여러 DB를 dump떠서 백업시킨 다음에


서버로 가서 복사해서 붙여넣기를 합니다.


이렇게


Apache, Php, Mysql


3가지가 통칭 APM이라고 불리는 것입니다.


여기서 끝이 아닙니다.


아직 멀었습니다.




그저 재미로 프로그래밍을 배우는 사람이라면


여기까지만 해도 됩니다.




하지만 Back-end 개발자는


만들기만 하는게 전부가 아닙니다


한 발 앞서나가 유지보수가 수월한지


정리해줄 필요가 있습니다.


사실 이건 서비스를 서버로 옮기기 전에...


테스트를 거치기 전에....


웹 서비스를 만들기 전에 계획 단계에서


미리 계획해놓고 진행해야할 일이지만


생각대로 쓰다보니 순서가 뒤바뀐 감이 있습니다.



결국..


아무리 정교하게 잘짜여진 프로그램이라 할지라도


아무리 테스트 케이스를 많이 거친 서비스라 할지라도


언젠가 버그는 나옵니다...


진짜 별 짓을 해도 언젠가는 터집니다..



하지만 우리가 만약



모든 html코드

모든 php코드

모든 css코드

모든 javascript코드를


하나의 파일에 쑤셔 넣는다면....


그렇게 했다가 만약 오류가 터진다면


수 천 줄이 넘어가는 코드중에서


에러를 어떻게 찾겠습니까...


더군다나 만약에 에러가


연쇄작용로 곳곳에서 실타래처럼 엉켜서 터져버린다면?


그리고 그게 디자이너 잘못인지


front-end 개발자 잘못인지


back-end 개발자 잘못인지 모른다면....


정말 상상도 하지 못할 수준의 문제가 생기게 될 것입니다.


그런 일이 일어나는 것을 사전에 방지하기 위하여


소프트웨어 공학계에서는


굉장한 방법론을 만들어냅니다.


바로 MVC 모델이라고 하는데


이 MVC 모델은


사람들이 프레임워크를 사용함으로써


이용이 편리하게 되었는데요


Model(데이터의 접근, 수정, 생성)

V(화면에 보여지는 부분)

C(request의 종류에 따라서 m, v를 나누어 주는 부분)


이라는 기본적인 메커니즘으로


각각의 같은 역할을 하는 코드들을 묶어서


그룹처럼 나눈 모델링 방법이라고 생각하시면 편할 것 같습니다.



이렇게 된다면 장점은 무엇이냐!


1. front-end, back-end, 디자이너 어느 누가 잘못한건지 

분야별로 나뉜 모듈을 통해 확인 할 수 있다.



2. 코드를 분할 하기 때문에 한 모듈에 들어가는 코드의 길이가

비교적 짧아져 유지보수가 수월해진다.


등등이 있습니다.



일단 MVC를 알았다면


각각 M,V,C가 무슨 역할 을 하는 지도 찬찬히 뜯어보아야겠습니다.


V는 화면에 출력되는 코드를 말합니다.


html 코드가 대표적인 예입니다.


M은 모델, 데이터의 정보가 저장되어있는 코드들이 모여있는 그룹이라고 생각하면 됩니다.


대표적으로 데이터베이스에 대한 정보를 여기에 입력합니다.


마지막으로 C는 컨트롤러로써


외부에서 요청된 request가


View로 요청된 request인지

model로 요청된 request인지


구분해 주는 역할을 합니다.



이런 일련의 과정들을 만들고 수정하는 역할을 하는


개발자를 통칭


Back-end개발자라고 부릅니다.

5 Comments
댓글쓰기 폼