게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
웹 개발 주저리
게시물ID : programmer_591짧은주소 복사하기
작성자 : 잠이오네요
추천 : 17
조회수 : 838회
댓글수 : 9개
등록시간 : 2014/01/19 17:38:39


그냥 개인적으로 웹 개발에 대해 주절거려 보려고 합니다.



0. 어떤걸 배우는게 좋은가

웹 서버를 개발할 때 많은 프레임워크와 언어가 있죠.

PHP, JAVA, Spring, django, node.js 등등 나열하면 엄청나게 많은 웹 서버를 개발하는 방법들이 있습니다.

개인적으로는 가능하면 다 어느정도는 배워 두는게 좋다고 생각합니다.

다만 그중에서 자신이 가장 자신 있는 언어와 프레임워크 하나 정도는 만들어 두는게 좋다고 봅니다.

정부 과제 같은 경우에는 전자정부 프레임워크 지침에 따라야 하기 때문에 Spring을 써야하지만

정부과제가 아닌 대개의 웹 개발 프로젝트의 경우 프레임워크 선택은 상당히 자유로운 편입니다.

해당 프로젝트의 발주자(대개 '갑')들은 원하는 형태대로 웹페이지가 나오기만 하면 만족하기 때문이죠.

개발기간 한달 남짓의 중소규모 사이트의 경우는 아직도 php를 쓰는 경우가 상당수이고

기존 솔루션 재활용 없이 초기부터 개발되는 경우에는 django를 쓰거나

나름 최신 프레임워크인 play framework를 쓰는 경우도 드물지 않게 있습니다.

그러니 나중에 기존 사이트 유지보수일을 하던, 신규개발을 하던 가능한 많은 종류의 프레임워크를 사용할 줄 알고

또 그중에 자신이 프레임워크를 선택할 기회가 될 때 사용할, 자신의 손에 잘 맞는 프레임워크를 깊숙히 익혀야겠죠.




0-1. MVC model

웹 개발시, 혹은 앱 개발시에도 반드시 숙지해야할 부분입니다.

MVC 패턴이라고도 말합니다.

위키 백과에 간략한 설명이 있지만, 별도로 찾아서 개념을 익히는 것이 좋다고 생각합니다.
http://ko.wikipedia.org/wiki/%EB%AA%A8%EB%8D%B8-%EB%B7%B0-%EC%BB%A8%ED%8A%B8%EB%A1%A4%EB%9F%AC

간략한 설명을 하자면, 아래의 세가지의 머릿글자를 합쳐서 MVC가 됩니다.

데이터의 형태를 나타내는 Model
데이터를 보여주는 View(대개 UI 역할)
데이터를 가공하고 view가 어떤 데이터를 보여줄 것인지 결정하는 Controller

이 세가지 요소를 분리하여 개발하자는 패러다임입니다.

이를 웹에 적용할 경우 웹을 DB, 비지니스 로직, 웹 페이지(템플릿)로 분류하여 개발 및 유지보수 하는 것이 됩니다.

자세한 부분은 구글링 해서 공부하는 쪽이 더 나을테니 일축하겟습니다.




1. PHP

Personal Home Page tools의 약자...였습니다만 지금은 PHP: Hypertext Preprocessor의 약자로 바뀌었습니다.

하지만 태생이 "프로그래밍에 무지하거나 초보자인 사람이 개인용 홈페이지를 간단하게 만들수 있는 언어를 만들자!" 인 만큼

매우 간단하게 웹 서버를 만들 수 있는 장점이 있습니다.

하지만 MVC 패턴에 따라 개발하기 위해서는 PHP 기반의 다른 프레임워크를 적용해야 합니다.
(이런 PHP 기반 프레임워크는 매우 많지만 생략하겠습니다)

아무튼 간단하게 웹 서버를 작성할 수 있는 만큼 초보자들이 배우기 좋은 도구입니다.

하지만 간단함을 모토로 만들어진 언어에 갈수록 각종 기능들이 붙다보니

수많은 보안 취약점이 존재하고 언어로써의 완성도 면에서도 조금 부족한 감이 있습니다.
(예를 들어 php에서 "_123"==123 은 true 입니다. 또 "123"==123도 true 입니다. 하지만 "_123"=="123"은 false 입니다. ??!)

아마 PHP로 서버를 개발하면서 가장 많이 마주치는 것은 비즈니스 로직의 논리오류 보다는 PHP 자체의 문제와 버그들일 겁니다.

하지만 그 간편함 덕에 중소규모 사이트 제작에서는 여전히 많이 사용됩니다.

취미로 혹은 중소규모 사이트 위주의 웹 개발을 한다면 PHP로도 충분하지만,

엔터프라이즈급 개발자를 목표로한다면 충분히 익히고 다른 프레임워크로 눈을 돌려야 할 것이라고 생각됩니다.



2. SpringMVC

Spring은 JAVA Application을 제작하기 위한 프레임워크고, 이에 다시 웹 개발을 위해 MVC 패턴을 적용 시킨것이 SpringMVC입니다.

하지만 대부분의 경우 별다른 구분을 하지않고 사용하니 Spring과 다른 것이라고 생각하지 않으셔도 됩니다.

템플릿으로 JSP를 사용하고 비지니스 로직은 Controller에 작성하거나 일반적인 java class(Bean이라고 부릅니다)로 작성 가능합니다.

자체적인 사용자 인증 기능도 있고, 또한 장기간 안정성을 검증받은 프레임워크입니다.

만약 동접 수십만명~수백만명 급, 혹은 안정성이 매우 중요하거나 설계가 복잡한 서버를 개발할 경우에는

SpringMVC 만큼 믿음직한 프레임워크가 드뭅니다.

JAVA 자체의 언어적 특징 또한 겹쳐 구조적으로 견고한 설계를 적용하기 좋습니다.

단점은 JAVA의 특징을 그대로 받아 코딩할 부분이 많습니다.

C/C++보다는 생산성이 지극히 높지만, 웹개발에 사용되는 다른 언어들에 비하면 생산성이 조금 모자란 감이 있습니다.

또한 프레임워크 자체도 안정성이 높고 견고한 만큼 요소가 추가될 때마다 설정해 줘야하는 부분이 많습니다.
(물론 직접 구현하는 것보다는 매우매우 편합니다, 어디까지나 다른 프레임워크에 비해 상대적으로 그렇다는 겁니다)



3. django

Python을 사용하는 대표적인 웹 개발 프레임워크입니다.

Python의 자료형 자체가 자바스크립트와 매우 유사한 형태로 사용가능하기 때문에(json 형태)

복잡한 구조의 model을 다루는데 매우 편리합니다.

또한 Python 자체가 매우 동적인 언어이기 때문에

Python에 숙달되기만 하면 JAVA나 PHP로는 구현하기 힘든 로직을 간편히 구현할 수 있습니다.

또 Python은 open source 진영에서 상당히 사랑받는 언어라 익혀둬서 손해볼 일은 없습니다.

다만 가장 많이 사용되는 Python 인터프리터인 CPython의 threading 성능이 영 좋지 않은 편이라
(파이썬은 스크립트 언어라 인터프리터를 사용합니다)

만약 request와 별개의 비지니스 로직이 worker thread로 돌아야 한다면 멀티쓰레딩 보다는 멀티 프로세스로 구현해야하는 불편함이 있습니다.

물론 싱글쓰레드 성능은 JAVA와 다툴 정도로 좋은 편이니 대개의 경우 나쁘지 않은 프레임워크입니다.
(일워도 이 프레임워크를 사용했다고 알고 있습니다)



4. flask

Python을 사용하는 또 다른 프레임워크입니다.

Python 자체의 언어적 특징을 적극적으로 사용했고 동시에 초경량을 목적으로 제작된 프레임워크입니다.

django를 사용해본, 혹은 python에 익숙한 프로그래머라면 처음 사용하더라도

하루이틀이면 블로그 사이트 정도는 만들어 낼 수 있을 정도로 간편합니다.

개인적으로 Python을 사용할수 잇다는 가정 아래 웹개발시 첫 입문으로 추천하는 프레임워크입니다.



5. node.js

최근 핫한 프레임워크입니다.

웹 클라이언트(웹 페이지)에서 로직 개발을 자바스크립트로 하니까, 서버도 자바스크립트로 짜면 언어가 같아서 생산성이 좋아 질거야!

라는 단순한 논리로 시작된 프로젝트입니다.

단순한 모토에 비해 생산성이 상당히 좋고, 성능도 괜찮은 편이라 node.js를 배우는 것이 트렌드화 되어가고 있는것 같습니다.

하지만 자바스크립트라는 언어 자체의 한계성 때문에 엔터프라이즈급 서버를 개발하기에는 견고성이 부족한 감이 있습니다.

그래도 그 높은 생산성에 기인하여 많은 사랑을 받는 프레임워크입니다.

개인적으로 웹개발 입문용으로 추천하는 프레임워크 두번째입니다.



6. Play Framework

최근 핫한 프레임워크입니다.(2)

SpringMVC의 견고함과 django의 간편함이 조화를 이룬 프레임워크입니다.

다만 Play Framework는 scala라는 언어를 사용하는데, 이 scala가 좀 어렵습니다.

JVM 위에서 돌기 때문에 기존 JAVA의 라이브러리와 클래스들을 그대로 가져다 쓸수 있는 점은 매우 큰 이점이지만

언어 자체가 상당히 추상적이고 동적 언어의 특성과 정적언어의 특성을 고루 가지고 있으며

객체지향적 언어이지만 동시에 함수지향적 특징들도 다수 보유하고 있는... 결국 초보자가 배우기엔 좀 어렵습니다.

언어 자체가 객체지향과 함수지향을 고루 숙지해야만 하고, 동적/정적 언어에 대한 개념을 알아야만 십분 활용할 수 있습니다.

하지만 일단 scala에 익숙해 지기만 하면 높은 생산성과 동시에 Spring에 버금가는 견고한 서버를 개발할 수 있습니다.
(JAVA와 동일한 로직을 짜는데 필요한 코드량이 scala가 두배이상 적습니다. 즉, JAVA의 두배 이상의 생산성을 가집니다.)

node.js가 극도의 생산성에 초점을 맞춰서 핫한 프레임워크라면,

Play Framework는 Spring을 대체할만 하면서도 높은 수준의 생산성이 보장되어 핫한 프레임워크입니다.

최근 Spring 대신 Play를 사용하는 프로젝트가 종종 보이니 만큼, 중급개발자를 넘어 고급개발자를 목표로 한다면 익혀서 나쁠것이 없습니다.




7. HTML5

html 문서 자체로의 html5 는 별 것 없습니다.

태그 몇개 더 추가된 정도죠.(주로 멀티미디어 요소가 늘었죠, 이제 상당수의 경우 html5만으로도 flash가 필요 없습니다.)

하지만 html5의 가장 큰 변환점은 CSS와 자바스크립트API들입니다.

CSS를 이용해 다양한 효과를 줄 수도 있고, 자바스크립트는 API를 통해 더 많은 일들을 할 수 있게 되었습니다.

웹서버 개발만 한다면 DOM 구조나 ajax 기초 정도만 알고 계셔도 되지만

기획문서와 디자인 시안만 내려오고 그에 맞춰 웹 클라이언트까지 작업해야하는 경우가 종종 있으니

어느쪽이던 웹 관련된 곳에 발담그고 있다면 익혀두는 것이 좋습니다.

추가로 플래시와 액션스크립트를 배우시려는 분이 계시다면, 일단 HTML5와 자바스크립트를 배우는 것을 추천드립니다.



8. 자바스크립트

제이쿼리, ajax 정도는 사용할 줄 아셔야 하고, 자바스크립트 특유의 객체지향 방식(프로토타입)에도 익숙해 지실 필요가 있습니다.

웹클라이언트 개발자나 웹 디자이너 겸 개발자를 목표로 하신다면 각종 자바스크립트 라이브러리도 익혀두는 것이 좋습니다.

최근 커피스크립트나 dart와 같이 자바스크립트보다 생산성(혹은 언어적 특징)이 좋은 언어로 개발해서 컴파일 하면

자바스크립트를 결과물로 만들어주는 도구가 많으니 자바스크립트를 어느정도 익힌 뒤에는 이런 도구들도 익히는게 좋습니다.




0. 마무리

주말에 심심해서 그냥 주절 거린 거니, 혹여나 읽으시는 분은 필요한 부분만 취하시고 나머진 잊어주시면 됩니다.

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호