다음 프로그래밍 프로젝트를위한 MEAN 대 LAMP

최첨단 호기심에서 실용적인 도구로의 전환은 많은 기술이 만드는 것이 아닙니다. 어제의 조숙 한 신생 기업은 종종 버전 0.1 약속을 지키지 못합니다. 맹렬하게 약어 화 된 MEAN 스택을 구성하는 기술은 그렇지 않습니다.

MongoDB, Express.js, AngularJS 및 Node.js가 스스로 눈썹을 올린 것은 불과 몇 년 전이었습니다. 이제 그들은 성장하고 뭉 쳤고, 그들은 함께 진지한 일을하고 있으며, 광대 한 LAMP 캠프에서 소수의 개발자를 몰래 쫓고 있습니다. 그러나이 새로운 의미의 것이 LAMP와 얼마나 정확히 일치합니까? 이 JavaScript 중심 기술의 신생 컬렉션보다 잘 테스트되고 성숙한 LAMP를 선택하는 것이 언제 더 낫습니까?

답은 단순함과 일반적인 구조가 당신의 삶을 더 쉽게 만들어 줄 때입니다. MongoDB는 데이터 저장을위한보다 유연하고 수용 가능한 계층을 제공합니다. Node.js는 서버 실행을위한 더 나은 연결성을 제공하는 반면 Express는 웹 사이트 구축 방법을 표준화하는 데 도움이됩니다. 클라이언트에서 Angular는 대화 형 함수와 AJAX 기반 풍부한 구성 요소를 추가하는 깔끔한 방법을 제공합니다. 이들을 모두 모아서 사용자에서 디스크 팜으로 데이터를 이동하고 다시 되돌릴 수있는 깔끔하고 일관된 메커니즘을 만듭니다.

그러나 실제 설명은 더 깊습니다. 다음 프로젝트에서 MEAN에 기회를 제공해야하는 9 가지 이유를 제공합니다. 모든 사람이 최신의 트렌디 한 프레임 워크에서 오래된 것을 버리고 다시 코딩 할 시간이나 예산이있는 것은 아니며, Apache, MySQL 또는 PHP와 같은 전투 테스트를 거친 도구의 견고한 안정성을 포기해서는 안됩니다. 그러나 유연성, 단순성 및 성능의 혜택을받을 수있는 그린 필드 프로젝트의 경우 MEAN을 선택하면 생각보다 삶이 더 나아질 수 있습니다.

MongoDB는 클라우드 용으로 구축되었습니다.

웹 앱 계획에 클라우드의 CPU 당 비용을 활용하는 것이 포함되어 있다면 MEAN 스택은 MongoDB에서 매력적인 데이터베이스 계층을 제공합니다. 이 현대적인 데이터베이스는 자동 분할 및 전체 클러스터 지원을 즉시 제공합니다. MongoDB를 연결하면 서버 클러스터에 분산되어 장애 조치 지원 및 자동 복제를 제공합니다. 클라우드에서 앱을 쉽게 개발, 테스트 및 호스팅 할 수 있다는 점을 고려할 때 다음 프로젝트에서 MongoDB를 고려하지 않을 이유가 거의 없습니다.

MySQL의 구조는 제한적입니다. 

얼마 동안 LAMP 기반 앱을 개발하거나 유지 한 사람은 관계형 데이터베이스로서의 MySQL의 강점이 때때로 약간 감금 될 수 있다는 것을 알고 있습니다. 모든 관계형 데이터베이스와 마찬가지로 MySQL은 데이터를 테이블로 푸시해야합니다. 모든 출품작이 정확히 같은 형식에 들어 간다면 문제가되지 않지만, 세상은 얼마나 자주 그렇게 관대할까요? 두 사람이 같은 주소를 공유하지만 같은 계정이 아닌 경우 어떻게됩니까? 주소에 두 줄이 아닌 세 줄을 넣으려면 어떻게해야합니까? 너무 많은 데이터를 단일 열에 넣어 관계형 데이터베이스를 수정하지 않은 사람은 누구입니까? 그렇지 않으면 또 다른 열을 추가하고 테이블이 무제한으로 커집니다.

반면에 MongoDB는 훨씬 더 유연한 문서 구조를 제공합니다. 사용자 프로필에 새로운 개인 정보를 추가하고 싶으십니까? 양식에 필드를 추가하고 JSON 문서의 나머지 데이터와 함께 롤업 한 다음 MongoDB 컬렉션에 밀어 넣으면됩니다. 이는 유동적 인 프로젝트 및 궁극적으로 테이블 형식으로 제한하기가 까다로울 수있는 데이터를 처리하는 데 유용합니다.

디스크 공간이 저렴합니다.

관계형 데이터베이스의 큰 폭로 중에는 JOIN 명령이 있습니다. JOIN을 사용하면 도시, 주 및 우편 번호와 같은 반복되는 필드를 제거하여 디스크 공간을 절약 할 수 있습니다. 이 자주 액세스하고 반복되는 데이터를 JOIN을 통해 향후 결과에 포함 할 수있는 별도의 테이블에 저장함으로써 데이터베이스를 깔끔하게 유지하고 디스크를 슬림하게 유지합니다.

그러나 JOIN은 일부에게는 까다로울 수 있고 RAM에서는 하드 할 수 있으며 JOIN을 통해 별도의 테이블에있는 데이터를 분리하고 액세스하는 것이 여전히 좋은 생각이지만 디스크 드라이브가 수 테라 바이트로 측정되므로 디스크 공간을 많이 절약 할 필요가 없습니다. 공간이 너무 저렴하여 일부 데이터베이스 디자이너는 JOIN이 너무 느리기 때문에 데이터를 비정규 화하게됩니다. 그렇게하면 관계형 데이터베이스가 그다지 필요하지 않습니다. 대신 MongoDB를 사용하지 않는 이유는 무엇입니까?

Node.js는 서버 계층을 단순화합니다.

LAMP 스택의 다양한 레이어를 탐색하는 것은 많은 모자의 어려운 춤일 수 있습니다. MEAN은 Node.js를 사용하여이를 단순화합니다.

앱에서 요청을 라우팅하는 방법을 변경하고 싶으십니까? 자바 스크립트를 뿌려 나머지는 Node.js가 알아서하도록하세요. 쿼리에 응답하는 데 사용되는 논리를 변경하고 싶으십니까? 거기에서도 JavaScript를 사용하십시오. URL을 다시 작성하거나 이상한 매핑을 구성하려는 경우에도 JavaScript에 있습니다. Node.js에 대한 MEAN 스택의 의존은 이러한 종류의 파이프 작업을 모두 하나의 언어로 한곳에, 모두 하나의 논리 더미에 넣었습니다. PHP, Apache 및 스택에 추가하는 다른 모든 항목에 대한 매뉴얼 페이지를 다시 읽을 필요가 없습니다. LAMP 생성에는 모든 것에 대해 다른 구성 파일이 있지만 Node.js는이 문제를 모두 방지합니다. 모든 것을 하나의 레이어에두면 여러 레이어 간의 이상한 상호 작용으로 인해 발생하는 혼동이 적고 이상한 버그가 발생할 가능성이 줄어 듭니다.

MEAN은 코드를 동형으로 만듭니다.

단순함은 서버에서 JavaScript를 사용하는 것으로 끝나지 않습니다. MEAN으로 이동하면 LAMP 스택의 클라이언트 / 서버 정신 분열증을 남기고 클라이언트에서도 동일한 JavaScript를 즐길 수 있습니다. Node 용 코드를 작성하고 Angular에 배치하는 것이 더 좋다고 결정하면 쉽게 이동할 수 있으며 동일한 방식으로 실행되는 것이 거의 확실합니다. 이러한 유연성 덕분에 MEAN 기반 앱을 훨씬 쉽게 프로그래밍 할 수 있습니다. 또한 프로젝트에 인력을 배치하는 경우 PHP 전문가와 JavaScript 전문가 또는 프런트 엔드 및 백 엔드 전문가를 찾을 필요가 없습니다. 대신 스택 전체의 모든 JavaScript입니다.

어디서나 JSON

Angular와 MongoDB는 Node.js와 Express처럼 JSON을 사용합니다. 데이터는 다시 쓰거나 다시 포맷하지 않고도 모든 레이어간에 깔끔하게 흐릅니다. 쿼리에 응답하기위한 MySQL의 기본 형식은 모두 고유합니다. 예, PHP에는 이미 MySQL 데이터를 가져 와서 PHP에서 쉽게 처리 할 수있는 코드가 있지만 클라이언트 계층에는 도움이되지 않습니다. 데이터를 쉽게 변환하는 잘 테스트 된 라이브러리가 너무 많기 때문에 노련한 LAMP 베테랑에게는 약간 사소 할 수 있지만 모두 약간 비효율적이고 혼란스러워 보입니다. MEAN은 모든 곳에서 데이터에 동일한 JSON 형식을 사용하므로 각 레이어를 통과 할 때 더 간단하고 형식을 다시 지정하는 시간이 절약됩니다. 또한 MEAN 스택을 통한 JSON의 편재성 덕분에 외부 API 작업을 훨씬 쉽게 수행 할 수 있습니다. 하나의 형식으로 GET, 조작, 표시, POST 및 저장이 모두 가능합니다.

Node.js는 초고속입니다

Apache는 훌륭했지만 요즘 Node.js는 종종 더 빠릅니다. 많은 벤치 마크에 따르면 Node.js는 더 나은 성능을 제공하는 동시에 훨씬 더 많은 작업을 수행합니다. 아마도 코드의 시대 일 것입니다. 아마도 Node.js 이벤트 기반 아키텍처가 더 빠를 것입니다. 상관 없습니다. 최근에는 특히 참을성이없는 모바일 장치 사용자들 사이에서 앱 성능을 밀리 초로 줄이는 것이 중요하며 Node.js는이를 재 프로그래밍하기위한 Turing-complete 메커니즘을 제공하면서이를 수행 할 수 있습니다.

깊이가 중요하다

PHP 애호가는 WordPress 또는 Drupal과 같은 지배적 인 플랫폼을 위해 구축 된 훌륭한 코드 라이브러리를 선호합니다. 자랑스러워 할만한 이유가 있지만 Node.js가 따라 잡으면 서 장점이 사라지고 있습니다.

Node.js 패키지 관리자 인 NPM을 사용하면 코드를 훨씬 더 쉽게 공유 할 수 있으며 Node.js를 대상으로하는 공용 저장소가 빠르게 성장하고 있습니다. PHP 군중이이 순간을 이끌 수 있지만 미래는 Node.js를 선호 할 것입니다. 또한 기존 기업은 변화하는 추세에 직면하여 부서지기 쉬운 경우가 많습니다. 새로운 버전으로 Drupal과 같은 확고한 플랫폼을 현대화하려는 시도는 더 많은 개발자가 Node.js를 기반으로 구축 된 더 새롭고 더 민첩한 플랫폼으로 눈을 돌릴 수 있음을 의미합니다.

Angular는 신선합니다.

LAMP는 아날로그를 포함하지 않기 때문에“MEAN”의“A”를 LAMP 스택의 어떤 것과 비교하는 것은 정확하지 않습니다. 클라이언트 측에서 무엇이든하고 싶다면 혼자서해야합니다. 물론 MySQL과 함께 작동하는 좋은 PHP 기반 프레임 워크가 많이 있지만 각각은 조금씩 다르며 자체 방향으로 이동합니다. 예를 들어 WordPress, Joomla 및 Drupal은 서로 다른 전략을 제공하며 포트 코드는 물론이고 다른 전략으로 전환하기가 어렵습니다. 하나의 클라이언트 프레임 워크에 기름을 부으면 일관성과 안정성이 추가됩니다.

또한 Angular는 웹 앱 구축 경험이 20 년인 사람들에 의해 구축되었습니다. 그들은 디자인 작업을 HTML과 CSS에 맡길만큼 충분히 알고있었습니다. 또한 HTML을 스캔하기 위해 약간의 JavaScript를 추가하는 방법도 알아 냈습니다. Angular의 디자이너는 인간이 잘하는 일을 살펴본 다음 인간을 지원하도록 JavaScript를 조정했습니다. 템플릿 시스템과 로직 레이어는 이전에 보았던 것보다 훨씬 더 깨끗합니다. 부분적으로는 팀이 자바 스크립트의 로컬 기능을 활용하여 사용자가 무엇을하는지 추측하는 더 간단한 방법을 알아 냈기 때문입니다.

믹스 앤 매치

물론, 당신이 정말 까다 롭다면, 그것을 조금 섞을 수없는 이유가 없습니다. 많은 개발자가 Apache 및 PHP와 함께 MongoDB를 사용하고 다른 개발자는 Node.js와 함께 MySQL을 사용하는 것을 선호합니다. Angular는 모든 서버, 심지어 MySQL에서 데이터를 전달하기 위해 PHP를 실행하는 서버에서도 잘 작동합니다. 두문자어의 노예가 될 필요는 없습니다.