일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- wsgi
- wsgi란
- toolkit
- microsoft office 2010 정품인증
- js
- Margin
- Micro
- instance method
- 갱신
- padding
- Python
- jquery
- pep8
- disabled
- uwsgi
- javascript
- div
- https
- 제품 키
- letsencrypt
- gunicorn
- 해제
- 2010 micro office
- class method
- Callback
- 만료
- 인증서
- word
- jjquery
- border
- Today
- 40
- Total
- 125,219
jadehan
Back-end 하는 일, 역할 서버 MVC에 대해서 본문
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개발자라고 부릅니다.
'IT > Back-end' 카테고리의 다른 글
AWS에서 SSH protocol이 종료되도 web service를 유지시키는 법 (nohup) (0) | 2016.05.02 |
---|---|
AWS - nginx + https 설정(2) - letsencrypt를 통한 SSL인증서 발급 (2) | 2016.04.25 |
AWS - nginx + https 설정(1) (0) | 2016.04.14 |
ubuntu VM환경에서 localhost접속 시 django debug-toolbar 미적용 issue해결 (0) | 2016.03.18 |
VirtualBox(ubuntu)환경에 window에서 putty를 사용하여 원격 접속 (2) | 2016.03.07 |
Back-end 하는 일, 역할 서버 MVC에 대해서 (5) | 2016.03.02 |
-
한남자 2016.03.20 17:06 백엔드 개발자가 되고싶은 한사람입니다.
님처럼 될려면 얼마나 공부해야하나요ㅠ? 자주 오겠습니다 -
방문객 2017.09.19 18:57 복잡하게 얽혀있는 정보를 간단하고 이해하기 쉽게 설명해놓으셔서ㅠㅠ
읽으면서 정말 많은 도움이 됐어요
궁금한 점도 한번에 해결됬고요ㅠㅠㅠㅠㅠ
진짜 좋은 정보 너무너무 감사합니다 -
PaPhoPu 2017.09.22 19:40 신고 방문해주셔서 정말 고맙습니다^^
-
Peter빈지노 2020.11.21 12:00 신고 정말 퀄리티 있는 글입니다~! 워너비 백엔드 디벨로퍼가 잘 읽었습니다!!! 혹시 서로이웃같은거 가능할까요???
-
12 2020.12.18 23:20 좋은 글 감사합니다. 덕분에 이해를 한층 높였습니다.