웹 개발 경험을 통해 PHP, Java, Python 등의 언어가 백엔드 개발 도구 (서버에서 실행되는 소프트웨어)에 사용되며 프론트 엔드 언어에는 JS / HTML / CSS가 사용된다는 것을 알고 있습니다.
그러나 많은 회사들이 프론트 엔드 개발 용 PHP, 백엔드 용 파이썬 등을 사용한다고 말합니다.
이는 PHP가 REST, RPC ..etc를 통해 다른 언어로 작성된 다른 서비스를 호출하기위한 프론트 엔드를 의미합니까?
웹 개발 경험을 통해 PHP, Java, Python 등의 언어가 백엔드 개발 도구 (서버에서 실행되는 소프트웨어)에 사용되며 프론트 엔드 언어에는 JS / HTML / CSS가 사용된다는 것을 알고 있습니다.
그러나 많은 회사들이 프론트 엔드 개발 용 PHP, 백엔드 용 파이썬 등을 사용한다고 말합니다.
이는 PHP가 REST, RPC ..etc를 통해 다른 언어로 작성된 다른 서비스를 호출하기위한 프론트 엔드를 의미합니까?
답변:
"프론트 엔드"및 "백 엔드"라는 용어를 "서버 측"및 "클라이언트 측"과 혼동했습니다. "백엔드"는 일반적으로 사용자에게 직접 노출되지 않은 시스템 (데이터베이스 서버, 미들웨어 등)을 지칭하고 "프론트 엔드"는 일반적으로 애플리케이션 (웹의 경우 일반적으로 정적을 의미 함)을 나타냅니다. 클라이언트가 직접 액세스하는 동적 웹 페이지).
웹 응용 프로그램에서 클라이언트 (사용자의 브라우저)는 "프론트 엔드"기술로 저장되거나 동적으로 생성 된 "서버 측"웹 페이지에 액세스합니다. 이러한 프론트 엔드 구성 요소는 "백엔드"구성 요소에서 데이터 또는 기타 정보를 가져올 수 있습니다. 따라서 PHP로 작성된 웹 응용 프로그램은 "프론트 엔드"이지만 "서버 측"입니다. 그러나 웹 페이지에 사용자 브라우저가 실행할 자바 스크립트가 포함 된 경우 해당 자바 스크립트 코드는 "클라이언트 측"으로 실행됩니다.
잘만되면 나는 약간의 혼란을 제거했지만 이제는 더 많은 위험을 만들 위험이있다.
먼저, 클라이언트 (클라이언트 측)에서 실행되는 코드 (보통 JavaScript) 인 AJAX 를 사용하여 웹 페이지를 생성하지 않는 인터넷 연결 서비스에서 정보를 가져 와서 표시되는 웹 페이지를 만듭니다. 서비스는 프론트 엔드에서 정보를 서버 측에 생성하고 있습니다 (공개되어 URL을 알고 있으면 브라우저를 바로 가리킬 수 있기 때문에).
둘째, JavaScript는 물론 클라이언트 측 사용으로 제한되지 않습니다. "서버 측"언어로 인기가 높아지고 있습니다 ( 예를 들어 node.js 참조 ). 따라서 가장 일반적인 용도는 이전 단락에서 설명한 일종의 인터넷 연결 서비스에만 사용됩니다.
Web 2.0 이전에는 훨씬 간단했습니다 . 그 당시 웹 응용 프로그램 의 맥락 에서 프론트 엔드는 웹 페이지가 생성되는 곳이었습니다. 반면 JavaScript는 클라이언트 쪽만 실행하고 마우스를 움직일 때 하이라이팅 이미지와 같은 웹 페이지에 약간의 외관을 만들었습니다. 그러나 이러한 단순성으로 인해 사람들은 그들의 정의에 대해 게을러졌습니다. 이제 상황이 더 복잡하므로 이러한 용어에 대해 정확해야합니다.
(당신이 경우 아, 그리고 이 PHP를 사용하여, 그것은 단호하다. 프런트 엔드에 보관하십시오 없습니다 당신이 이제까지 PHP 클라이언트 측을 실행하는 브라우저를 만드는 사람을 발견하면, 촬영을 좋은 백 - 엔드 기술. 그리고.)
나는 당신이 언급 한 다른 백엔드 기술을 볼 수 없기 때문에 귀하의 질문은 실제로 PHP에만 국한 될 것이라고 생각합니다.
PHP는 많은 웹 프로젝트와 관련하여 올인원 언어로 볼 수 있기 때문에 재미있는 예제입니다. " 프론트 엔드 "마크 업을 구축하는 동시에 파일 및 데이터베이스 작업과 같은 기존의 " 백엔드 "작업을 수행 할 수 있습니다 .
이것은 실제로 별개의 분리가없는 스파게티 혼란으로 이어질 수 있으므로 실제로 내 마음에 찡 그려야합니다. 훌륭한 예를 들어, 워드 프레스 소스를 찾아 보면 종종 길을 잃을 수 있습니다. 이것이 언어를 비난하는 프로젝트 중 하나입니다.
이는 " 템플릿 엔진 "( Smarty 등 ) 을 사용하여 다소 해결할 수 있지만 "백엔드"기능을 제공하는 동시에 "프론트 엔드"를 구축하는 것은 여전히 PHP입니다. 이것은 PHP 디자인의 의도적 인 결정이지만, 결국 " 하이퍼 텍스트 프로세서 "입니다!
따라서 PHP는 " front-end "및 " back-end "용도에 쉽게 맞출 수 있으며 , 이는 예제를 명확히해야합니다. 따라서 PHP가 프론트 엔드에 대한 모든 마크 업을 처리하고 빌드한다는 점에서 가장 정확할 것입니다. 그러나 필요한 데이터를 수집하기 위해 다른 곳에서 요청을 할 것입니다. .
개인적으로, 나는 "백엔드"와 "프론트 엔드"용어 전체가 약간 낡았다 고 생각합니다. 차라리 클라이언트 쪽과 서버 쪽을 언급하고 싶습니다. 그런 다음에는 실제 모호성이 없습니다. *
최근에는 node.js 및 관련 도구로 작성된 백엔드 시스템이 필요한 클라이언트 사양을 보았지만 PHP 프레임 워크 (Laravel)를 사용하여 프론트 엔드 빌드를 원했습니다. 이것은 많은 관련 비용과 함께 제공되며, 제 생각에는 우아한 솔루션이 아니며 공정한 몇 가지 문제가 발생할 수 있습니다.
개인적으로, 이런 종류의 구성은 누군가가 PHP를 불필요하게 다른 스택에 넣은 것처럼 보입니다. 즉, 실제로 필요한 것보다 더 많은 리소스가 필요하고 유지 보수 직원은 더 넓은 범위의 기술에 노출되어야하며 더 많은 실패 지점이 필요합니다.
또한 이런 종류의 중개 스택을 보증하는 시나리오는 거의 없다고 생각합니다. 대부분의 백엔드 언어 / 프레임 워크는 프론트 엔드에 필요한 마크 업을 완벽하게 생성 할 수 있습니다. 나는 거기에 시정 될 것이지만.
*하지만 질문에 답하기 위해서는 Javascript를 사용하여 구축 된 백엔드 시스템은 어떻습니까? (node.js;))
편집하다:
@itsbruce의 의견을 읽은 후 "프론트 엔드"/ "백엔드"용어의 모호함에 의해 의미하는 바를 명확히하기로 결정했습니다.
전통적으로이 용어는 훌륭했을 것입니다. 건축 적으로 웹 응용 프로그램은 훨씬 더 단순했습니다. "서버 측"과 "클라이언트 측"이라고 말하는 것이 제 생각에는 훨씬 더 깨끗하며, 클라이언트에 더 많은 처리 및 로직을 적용하려는 현재 추세가 점점 일반화되면서 더욱 명확 해지고 있습니다.
클라이언트 측에서 상당한 양의 데이터 처리를 수행하는 것이 수용 가능 해지고 있습니다 (현재 트렌드가되는 일부 자바 스크립트 프레임 워크 만 살펴보십시오). 이것이 실제로 프론트 엔드입니까? 사용자는이를 보지 않고 결과를 볼 수 있으며 일반적으로 "백엔드"로 간주되는 기존의 기준으로 볼 수 있습니다. 그러나 이것은 현재 브라우저에서 발생합니다.
마찬가지로,이 질문과 엄청나게 관련이있는, PHP에서 마크 업을 구축하는 것이 진정한 프론트 엔드 작업입니까? 작업 보드를 빠르게 탐색하면 PHP 경험이나 지식을 기대하는 프런트 엔드 개발자 위치가 거의 없음을 알 수 있습니다. 그러나 직관은 인터페이스의 마크 업이 본질적으로 프론트 엔드임을 암시합니다.
이 질문이 존재한다는 사실은 " 프론트 엔드 "와 " 백엔드 "가 본질적으로 어떻게 모호한 지에 대한 예로써 작용하며 앞으로도 계속 될 것입니다.
모호성이 손실되는 "서버 측"또는 "클라이언트 측"으로 작업을 참조하면 코드 실행 위치 및 사용할 언어를 알 수 있습니다. OP가 제공 한 예제에서 " front-end " 라고 말하면 많은 사람들이 " 아, PHP를 서버에 올릴까? "