ASP, PHP 장단점
[질문]
현재 회사에서 관리하고 있는 웹사이트들과 db사이트들이 있는데 제작 플랫폼이 너무 노후되고, 윈도우호스팅을 쓰는것도 있어서 사용성과 보안에 취약합니다.
현재는 카페24에 사이트별로 호스팅을 사용하고 있는데 이번에 이전을 하여 개선하고 노후된 웹사이트는 리뉴얼 하려합니다.
아마도 윈도우호스팅을 리눅스로 변경하고 이에 따른 마이그레이션 등 여러 작업을 해야하는 상황이라 규모가 있고 실력있는 회사에게 외주를 맡기려하는데, 비용이 많이 들어도 믿을수 있는 회사로 추천 부탁드립니다.
[답변]
안녕하세요. IT전문 컨설턴트 입니다.
윈도우호스팅으로 개발된 상황을 유추해 보았을대, ASP나 ASP.net계열의 언어로 개발된 것으로 보입니다.
이를 리눅스호스팅으로 변경하려고 하면, 개발언어를 PHP쪽으로 변경해야 하는 상황입니다.
문제는 윈도우와 리눅스의 장단점에 대해서 반대로 이해하고 있어서 이 부분을 우선적으로 확인하셔야 활듯 합니다.
윈도우는 상용이고, 리눅스는 무료입니다. 가끔 리눅스의 커스트마이징된 버전의 경우 저렴하게 판매하는 경우가 있지만, 원칙적으로 오픈소스를 기반으로한 리눅스를 무산으로 공급됩니다. 상용으로 개발된 OS가 문제가 발생할 경우 어떤일이 벌어질까요?. 즉시 패치나 보안패키가 지원되는 방식으로 긴급대응이 가능하며, 소스코드가 공개되지 않은 상황이라 소스코드가 공개된 무료기반의 소프트웨어보다는 훨씬 안전합니다.
즉 윈도우가 리눅스보다 훨씬 안전하고 안정적입니다.
반면 리눅스의 경우 제로데이공격이라 불리는 소스상의 허점이 발견되어 해커들 사이에서 공유가 되어도, 이를 즉각적으로 패치 및 보안패치가 제작되지는 않습니다. 오픈소스의 특징상 우회할수 있는 공격방식또한 쉽게 분석되기때문에 절대적으로 보안상으로 불리할수 밖에 없는 상황입니다.
3세대 개발언어에 속하는 ASP와 PHP의 특장점을 비교해 보아도, 사용용도가 명확하게 분리됩니다.
특히 개발방법에 있어서 ASP계열의 언어는 오픈소스가 많지 않고, 전통적인 단계별개발방법론(폭포수모형/나선형모형 등)이 표준으로 진행되는 환경상, 연차별 개발인력의 스킬이 비슷하게 성장할수 있는 형태입니다. 이에 소스를 보완하거나 수정하는 등의 작업을 타 인력이나 타회사가 가능한 구조가 만들어집니다. 유지보수에 적합한 형태라 생각할수 있습니다.
반면 PHP언어는 플랫폼의 구성 특성상 GNU기반의 오픈소스가 많은 비중을 차지합니다. 오픈소스를 가지고 일부 커스트마이징을 통해서 구축하는 컨테이너형(모듈러형) 개발방법론이 표준으로 진행됩니다. 문제는 이런 컨테이너에 해당되는 소스를 사용해서 쉽고 빠르게 구축할수 있는 점에 있습니다. 컨테이너를 제작할수 있는 개발인력은 제한적이지만, 이를 활용해서 개발하는 인력들이 많아질수 있는 구성입니다. 이런 이유에서 프리랜서분들이 상대적으로 PHP를 선호하는 경향이 있습니다. 컨테이너에 해당되는 모듈이나 소스를 사용법만 가지고 셋티하고, 바로 쓸수 있다는 점에서 강점은 분명히 있지만, 마찬가지로 소스코드가 공개되어있다는 치명적인 단점이 발생하게 됩니다 또한 단순한 활용이 아니라 컨테이너에 해당하는 모듈을 수정해야 되는 상황이면, 거의 대부분의 프로젝트가 중단될수밖에 없는 상황이 만들어집니다. 게시판을 에를들면 기존 사이트가 제로보드로 만들어졌는데, 특정부분을 손을 댈수 없거나, 리뉴얼시에 타 개발사가 관리를 하게 되면, 그 개발사가 주로 사용하는 소스를 기반으로 그누보드와 같은 타 빌더를 사용해서 구축하고, 기존 소스를 사용하지 않는 상태로 운영하게 됩니다. 물론 데이터 이전정도는 빌더의 개발자가 충분이 방법을 안내하고 있을듯 합니다.
시간이 지나면 지날수록 소스코드의 효율성이 현저히 낮아지게되고, 이때 완전히 삭제되지 못한 스크립트에서 보안상의 치명적인 문제가 만들어질수 밖에 없습니다. 이 경로를 타고 들어오면 해킹이 될수 밖에 없는 구조가 됩니다. 또한 관리를 하지 않고 있던 소스부분에서 오픈된 소스 분석이나, 해당 모듈의 공유된 문제점을 통해서 공격이 들어온다면 곧 심각한 문제가 만들어 집니다.
물론 PHP를 컨테이너형이 아닌 ASP처럼 단계별개발방법론을 활용하는 경우도 있지만, 해당 언어의 장점 부분을 포기하는 형태가 예상됩니다. 서버적인 부담이 되어 리눅스계열을 사용해야만 되는 프로젝트가 아니라면, 무리하게 언어를 바꾸면서 까지 진행하는것은 위험부담이 높습니다.
개발될 당시에도 분명 윈도우계열로 구축했다면, 그 이유가 있을듯 합니다.
현 상황이라면 윈도우 서버를 이전하면서, 기존 소스 및 알고리즘을 최신상황으로 재해석해서 윈도우서버에서 ASP나 ASP계열의 언어를 사용해서 재구축 하는 전략이 최적입니다.
사이트가 여러개가 있더라도 관리자를 1개로 만들수도 있고, 분리된 관리자에서도 특정 부분을 연동하거나, ERP나 내부시스템의 요소를 반영하여 시스템화를 시키는 전략 또한 가능합니다.
많은 분들이 오해하시는 3세대 개발언어의 장단점은 명확합니다.
ASP계열이 예전에 나온 개발언어가 아니냐 라고 말씀하실 분들이 분명 있겠지만, 죄송하지만 ASP(1996년),PHP(1994년),JSP(1999년),ASP.net(2002년),Python(1991년)의 언어가 비슷한 시기에 나왔고, 동일하게 3세대나 3.5세대로 분류하고 있는 상황을 생각해본다면, 사업의 특성에 맞는 개발언어를 선택하는것이 좋지 않을까요?.
3세대 서버기반의 SP계열의 언어들은 해당언어가 전체개발에서 차지하는 비중보다 HTML+CSS+Script+SQL 등의 요소가 차지 하는 비중이 더 높습니다. 백엔드라 불리는 관리자 페이지나, 시스템에서 핵심적인 알고리즘을 담당하는 언어에 대한 선택만이 있을 뿐입니다.
[IT 컨설턴트의 생각]
생각보다 해당 프로젝트는 쉽지 않습니다. 우선적으로 기존 소스가 표준화된 개발이 진행된것을 확인해야 합니다. 개발시의 자료들이 제대로 남아있지 않거나 사투리에 가까운 비표준 방식으로 개발하는 경우가 많습니다. 중요알고리즘 부분이 암호화나 패키징이 되어있을 가능성도 있으며, 화면만으로 역구성을 해야할수도 있습니다. 30년에 가까운 시간동안 해당 언어 및 개발방법론도 진화해 왔으며, 특히 오래된 사이트나 시스템일수록 그 부분에 대한 전반적인 이해가 가능해야만 합니다. 사이트가 단순하지 않고, 시스템화가 되어있거나, 다양한 비즈니스모델이 적용된 형태의 구조라면 개발난이도 자체가 낮아지기가 어렵습니다.
최소한 웹마스터 세대부터 Web을 접하고, 경험하고, 제작해온 경험이 없다면 해당프로젝트는 쉽지 않습니다.
20년 이상의 개발자를 찾기 어려운 시장환경이나, 그런 경험을 갖고 있더라도 다양한 비즈니스에 대한 경험이 없다면, 더 어려운 선택이 될수 있습니다. 예전에는 웹마스터만으로 모든 비즈니스가 가능했지만, 전문화되고 분업화된 환경에서 성장해온 웹의 특성상 현재의 개발기술을 단순히 접목한다는 생각만으로 프로젝트를 진행할수 없습니다. IT컨설턴트의 도움을 통해서 현상황에 대한 최적화된 방안을 모색하는것을 추천드립니다.