개발자 관점에서 대규모 소셜 웹 애플리케이션에 어떤 플랫폼을 고려 하시겠습니까? 어떤 대안의 강점이라고 생각하는지에 대한 세부 정보를 제공 할 수 있다면 좋을 것입니다.
개발자 관점에서 대규모 소셜 웹 애플리케이션에 어떤 플랫폼을 고려 하시겠습니까? 어떤 대안의 강점이라고 생각하는지에 대한 세부 정보를 제공 할 수 있다면 좋을 것입니다.
답변:
GAE (Python 및 현재 Java)와 Azure에서 동일한 앱을 작성했습니다. 나는 아마도 다른 것들을 위해 둘 다 계속 사용할 것입니다. 다음은 계속 업데이트 할 몇 가지 생각입니다.
GAE를 사용해야하는 이유 :
Azure를 사용하는 이유 :
개발자 관계를 수행하는 App Engine 팀에서 일하고 있습니다. 그러나 이것이 내 편입니다.
그것들은 직접 비교할 수 없습니다. 어떤 앱에도 쓸 수있는 앱 세트가 있지만 각 경우마다 다른 것을 작성하게됩니다. App Engine은 파일에 쓰기, 소켓 등이 아닌 제한된 런타임 환경과 비 관계형 DBMS를 제공합니다. 그러나 그 대가로 무한정 확장 가능한 런타임 환경과 앱이 원하는만큼 확장 될 수 있다는 합리적인 수준의 확신을 얻습니다.
반면에 Azure는 약간 덜 제한된 환경을 제공하므로 더 넓은 범위의 앱을 작성할 수 있지만 더 많은 스택을 직접 구현하고 있기 때문에 더 많이 작성해야하며 확장성에 대한 보증이 훨씬 느슨합니다. .
마지막으로 AWS는 최고의 DIY 솔루션을 제공합니다. 그것들은 하드웨어와 스토리지를 제공합니다. 스택을 처음부터 빌드하고 유지 관리하고 업그레이드하는 등의 작업을 수행합니다. 규모에 맞게 작성하는 경우에만 앱의 크기가 조정됩니다. 그러나 하드웨어를 완전히 제어 할 수 있습니다.
내 조언은 다음과 같습니다. 앱이 App Engine 모델에 적합하고 소셜 네트워크 앱이 App Engine 모델 (Java 또는 Python, 선택한)에서 앱을 작성하는 것의 좋은 예가 될 수 있습니다. 더 저렴하고 확장 가능한 앱을 작성하는 것이 훨씬 쉽습니다.
앱이 GAE 모델에 맞지 않는 경우 MS 스택 용으로 작성 중인지 여부와 실행 환경에 대해 원하는 제어량에 따라 Azure 또는 AWS를 선택하십시오. 대부분의 앱이 GAE에 적합하지만 작은 부품에는 맞지 않는 경우 GAE에서 실시간 서비스를 제공하지만 S3에서 스토리지 또는 EC2에서 대량 처리와 같은 하이브리드를 고려할 수 있습니다.
나를 위해, 잠금은 결정 요인입니다.
Google을 선택하면 애플리케이션이 Google에서만 작동합니다. 어느 정도 시간이 지난 후에도 만족도가 떨어지면 갇혀있는 것입니다.
MS를 선택하면 응용 프로그램은 Azure에서만 작동합니다. 같은 것.
아마존에서는 (a) 익숙한 머신과 똑같이 작동하는 가상 서버를 얻게됩니다. 만족하지 않습니까? 앱을 들고 실제 하드웨어에 설치하십시오.
내 개인적인 선택은 현재 Java를 사용하는 Google입니다 (대부분 .NET 인 경우에도). 비용에 대해 생각하십시오-스키마를 비교하기가 어렵습니다.
이 기사를 확인하십시오-http: //www.infoq.com/news/2008/11/Comparing-EC2-App-Engine-Azure
거미 류의 동물처럼, 나는 편견, 구글 사람입니다. 그래서 그러나, 나는, 또한 아마존 주주있어 그 편견이 부분적으로 ;-) 처음을 상쇄 할 수있다. Azure 경험이 없습니다. (하지만 MSFT 주식도 보유하고 있기 때문에 다른 편견도 있습니다.).
가장 간단한 방법은 App Engine이 시스템 관리 작업이 필요하지 않은 코딩만으로 쉽게 제한없이 작업 할 수있는 기능을 제공한다는 것입니다 . AWS는 훨씬 융통성이 있지만 유연성 을 활용 하려면 실질적인 시스템 관리 작업 이 필요합니다. 결국 나는 두 번째 거미 류의 제안을 할 것입니다 : App Engine이 귀하의 요구를 충족시킬 수 있다면 절대로 가십시오. 더 많은 유연성이 필요한 경우 AWS가 갈 길입니다 (Azure의 알려지지 않은 기능이 더 잘 맞지 않는 한)-AWS와 같이 Azure가 수행 할 수있는 작업에 관계없이 AWS가 더 유연해질 것이라고 생각합니다. 필요한 OS를 선택할 수도 있습니다).
방금 Azure로 작업을 시작했으며 F #에서 http://code.msdn.microsoft.com/fsharpazure 에서 할 수 있다는 인상을 받았습니다 .! 지금까지는 관리 형 방식으로 기능 프로그래밍을 사용할 수있는 유일한 클라우드 플랫폼입니다 (물론 EC2에서 Haskell 또는 Algol 68을 수행 할 수 있음). Visual Studio 통합의 품질에 깊은 인상을 받았습니다. 실제 SQL Server 인 스토리지를 사용하여 로컬 "클라우드"DevFabric을 테스트하여 업로드하기 전에 재생할 수 있습니다. GAE가 그렇게 할 수 있습니까? F # (Linux 및 OCaml에서 제공)을 사용하여 VS를 학습하는 Azure를 보면 오래 전에 MS 스택으로 전환했으면 좋겠습니다. SQL 스토리지를 생성하고 VS에서 검사하는 것은 매우 쉽습니다. 매우 편리합니다. 오픈 소스에는 일치하는 도구 세트가 없으며 사람들이 MS에게 공정한 고려를 할 시간입니다. 필자는 Mac OSX 기반 (Vista로 이중 부팅)을 계속 사용하고 있으며 직감은 Azure를 로컬로 개발할 수 있으므로 Azure 개발을위한 별도의 Vista 상자가 제공됩니다. .NET은 PowerShell, SQL 및 LINQ, C # 및 F # (내 주요 이유)과 같은 Unix 파이프 세계에서 왔을 때 정말 압도적이지만 대신 모든 것이 추가되고 학습 가치가 있음이 밝혀졌습니다. 리눅스; 모든 경우에 Azure는 시야를 넓힐 것입니다.
GAE를 좋아하는만큼 현재 프로젝트에서 GAE를 통해 EC2를 사용하는 주된 이유는 전 세계 다른 지역에 위치한 데이터 센터에서 응용 프로그램의 프런트 엔드를 서비스 할 수 있어야하기 때문입니다. GAE는 한 번에 하나의 데이터 센터에서 실행됩니다. 예를 들어, 아시아 지역의 사용자가 내 응용 프로그램에서 가능한 가장 빠른 응답 시간을 위해 서버를 공격해야합니다. dns,로드 밸런서, 선택한 데이터베이스, 데이터의 하둡 처리 등을 위해 S3로 밀려 드는 독창성 관리 기능을 추가하면 EC2는 정말 매력적인 솔루션이됩니다.
고려해야 할 사항 :
속도 향상 : 선택한 환경에서 어떤 종류의 문서가 존재하고 명확하고 잘 지원되는 샘플이 명백하고 유용한 지 선택한 환경에서 얼마나 빨리 생산성을 얻을 수 있습니까?
비용 : 비용이 중요한 요소이지만 실제로 고객을 확보 할 수있는 상용 앱을 만드는 경우 이러한 모든 선택이 가능합니다. "소규모"인스턴스에서 하나의 proc을 사용하여 Azure를 24x7 사용시 한 달에 약 $ 90로 실행한다고 가정하면 그 시간에 몇 명의 사용자를 서비스 할 수 있습니까? 이중화를위한 두 번째 인스턴스를 추가하십시오. 트래픽이 보증하는 경우에는 그다지 비용이 들지 않습니다. 그렇지 않은 경우 왜 저렴한 호스팅 제공 업체 대신 클라우드에 있습니까? 이를 구현하려면 더 큰 비용 요소가 필요합니다. AWS는 롤 자체 솔루션입니다. 안정적이고 잘 관리되는 솔루션을 얻기 위해 처리해야 할 것이 많습니다. Azure와 GAE는 즉시 사용할 수 있습니다. 내 마음에 AWS는 당신이 넣어야 할 작업으로 인해 가장 비쌉니다. 세밀한 수준에서 세부적으로 제어해야합니까? 그렇다면,
원하는 작업 수행 능력 : AWS Azure는 2 위, GAE는 3 위입니다. 원하는 것이 Java와 Python이라면 큰 문제는 없습니다. C ++에서 관계형 DB 또는 광범위한 다중 스레드 데이터 처리를 수행하려는 경우 가장 큰 문제입니다 (이 중 하나라도 지금 수행하고 있는지 확실하지 않습니까?).
이식성은 어떻습니까? 나중에 자신의 팜으로 가져 가거나 다른 클라우드 팜으로 옮길 수 있습니까? 그것들은 모두 어느 정도 휴대 가능합니다.
생각해야 할 것이 많지만 여전히이 문제에 대해 배우고 있습니다.
수요를 충족시키기 위해 인스턴스를 수동으로 시작해야하는 경우 클라우드가 아닙니다.
Azure 및 EC2는 일부 서비스가 측면에있는 가상 서버 일뿐입니다.
최신 정보:
EC2와 Azure는로드시 자동으로 새 인스턴스 시작을 관리하는 옵션을 제공하지만 여전히 관리해야합니다. 또한 유휴 상태 인 인스턴스에 대한 비용을 지불합니다.
GAE는이 기본 제공 기능을 자동으로 처리하며 요청 중에 코드가 실행되는 시간에 대해서만 요금을 청구합니다.
다른 고려 사항이 있습니다.
GAE-ghs.google.com DNS를 통해 라우팅되는 모든 트래픽은 AWS 및 Azure보다 서비스 스택으로서 플랫폼에서 더 높으며, 머신 중 하나를 통해 페이지를 동적으로로드하여 가격을 낮게 유지할 수 있습니다. 이 접근 방식으로 스케일링이 세분화되고 단점은 정적 IP가 아니며 필터링되거나 차단되기 쉽습니다. 고정 IP 제한이 없으므로 사이트 별 https 인증서를 설정할 수 없습니다.
AWS와 Azure는 정적 IP와 전용 VM을 제공하여 https 인증서와 같은 기본 요구 사항을 허용합니다. 관계형 스토리지 지원도받을 수 있습니다. 이 전용 VM 사실을 반영하면 비용도 높아지며, VM 당 확장하여 40 달러 / 월 단위로 확장 할 수 있습니다. 이점은 VM을 직접 가져 오므로 GAE에 대한 30 초 CPU 처리 제한으로 제한되지 않고 더 큰 작업을 실행할 수 있다는 것입니다.
따라서 필터링 된 국가의 고객 기반을 고려하거나 정적 IP가 자체 DNS 설정을 수행하거나 관계형 DB 또는 30 초 이상의 작업이 필요한 요구 사항이 필요한 경우. AWS, Azure는 훨씬 친숙합니다.
각 클라우드 제품이 제공하는 솔루션을 살펴보고 하이브리드 모델로 이동하십시오. 일부 문제에는 망치가 필요하고 다른 문제에는 드라이버가 필요합니다. 도구를 알고 올바른 문제에 적용하십시오.
위의 답변 중 하나에 대한 의견을 남길 평판이 충분하지 않습니다. 이러한 클라우드 솔루션의 적합성은 요구 사항 및 기술 세트를 포함한 많은 요소에 따라 다릅니다.
nosql 데이터베이스가 필요한 소셜 네트워킹 프로젝트가 있습니다. AppEngine은 다양한 프레임 워크를 더 잘 지원한다면 좋은 솔루션이 될 것입니다. nonrel 어댑터가있는 Django는 Python GAE에서 작동하지만 여러 가지 이유로 Rails를 선호합니다. Rails3는 몇 달 동안 나 왔으며 커뮤니티 나 GAE 팀의 어느 누구도 아직이를 지원할 레시피를 작성하지 않았습니다. 루비와 레일 내부, jruby, GAE 내부를 알고 자신 만의 레시피를 작성하는 기술을 가지고 있지 않다면, 다른 사람들이 플랫폼에 올라가는 자비에 달려 있습니다.
AWS는 훨씬 더 많은 작업을 수행하지만 최소한 내부 개발자 나 더 높은 권한을 요구하는 사람이 아니라 모든 도구를 사용하여 플랫폼을 통해 많은 문제를 관리적으로 처리 할 수 있습니다.
Ruby 개발자를위한 Heroku와 EngineYard에 대한 저의 불만은 데이터베이스 확장 방법에 대한 미스터리입니다. 그들은 어떻게 확장합니까?
필자의 경우 NoSQL 솔루션을 선택하고 Mongo가 좋은 선택 인 것 같습니다. MongoMachine은 Heroku 또는 EY와 같은 사람들에게 권장되는 솔루션 인 것 같지만 비용이 많이 듭니다. GB 당 $ 2.50? 스토리지는 GAE 또는 EBS에서 $ 0.10 GB / mo에 불과합니다.
나는 최근에 Google App Engine을 실험하기 시작했으며 웹 소셜 네트워크의 경우 모든 요구를 충족시킬 것이라고 생각합니다. 쉽게 사용할 수 있으며 Python 또는 Java와 함께 사용할 수 있습니다. 파일에 대한 액세스를 제공하지는 않지만 응용 프로그램의 경우 GQL (제공하는 데이터베이스에 대한 SQL과 같은 인터페이스)이 충분할 것입니다 (그리고 매우 강력합니다).
고려해야 할 사항 중 하나는 GAE의 애플리케이션이 Google 계정 사용자 또는 Google Apps를 사용하는 도메인의 계정 (바로 가기)을 사용할 수있는 인터페이스를 사용할 수 있다는 것입니다. 이 중 하나를 선택하십시오. 따라서 이미 Google Apps 웹 사이트를 사용하고 있다면 사용자가 새 계정을 등록 할 필요가 없으므로 Google App Engine이 적합합니다.
편집 : Arachnid가 지적했듯이 자신의 로그인 시스템을 코딩 할 수는 없습니다. 죄송 합니다만 걱정하시면됩니다.
다른 두 가지 대안에 관해서는, 나는 그것들에 대해서만 읽었고 테스트하지 않았습니다. 그러나 나는 GAE가 내 연구에서 더 쉬운 프레임 워크를 제공한다고 생각합니다.
어떤 경우에도 공간 및 대역폭에 대한 무료 할당량을 사용하여 GAE를 사용해보고 필요에 맞는지 확인할 수 있습니다.
행운을 빕니다.
Azure에는 서버 "서비스로 플랫폼"으로서 Windows / SQL이 있으며, 확실하게 고착되어 있지 않으며, 자체 데이터 센터에서 Windows / SQL로 돌아가십시오 (리눅스는 없지만 Java, Python, PHP, Ruby, Tomcat을 지원합니다). , Apache 등). Amazon과 마찬가지로 액세스 가능한 가상 머신 옵션도 제공하므로 원하는대로 설치 / 실행할 수 있습니다.
아마존에는 가상 머신 만 있기 때문에 여전히 설치, 패치, 라이센스, 보안 등을해야합니다. 제 생각에는 클라우드로 이전 할 때 얻을 수있는 이점이 있습니다. 데이터 센터에서 다른 곳으로 무언가를 옮겼습니다.
Google은 관계형 데이터베이스가 없으며 귀하는 충격을받습니다. 그들은 실제로 파이썬 개발자와 일부 Java 지원을 제공합니다. 그들은 실제로 내 의견으로는 클라우드 공간의 플레이어가 아닙니다.
여기서 언급되지 않은 한 가지는 누군가가 끔찍한 이름 외에 "Windows Azure AppFabric Service Bus & ACS"를 고려한 것입니다.
온 프레미스 인프라에 대한 투자로 비즈니스의 관점에서 Azure를 매력적으로 만드는 강력한 통합 기능 스택으로 보입니다.
Amazon EC2를 잠시 실험하고 약간의 지연이 발생한 후 비용 때문에 실험하면서 Google Apps를 연구하기 시작했습니다. Erlang을 개발 언어로 선호하지만 Python을 처리 할 수 있으므로 결정적인 요소는 아닙니다. 고정 IP를 보지 못했을 때였습니다. 또한 스택에서 더 높아지는 것에 대한 전체 부분은 성능과 관련하여 약간 긴장합니다.
나는 AWS가 저렴했다 좋겠지 만, 구글이 제공 될 때까지 고정 IP 바람직 추가 언어 와 같은 스칼라, JRuby를하고 얼랑 등을, 선택은 나를 위해 분명하다 : AWS를 . 처음 두 언어도 단순해야하며 둘 다 JVM 기반입니다. 나는 그것에 대해 뭔가를 읽는 것을 기억하는 것처럼 이미 해결 방법을 통해 수행되었을 수도 있습니다.
나는 비교를 지원하는 플랫폼에 대해 생각하는 것 외에도 확장 성, 액세스 용이성, 다목적 성 (구현 측면에서)에 있어야하며 비즈니스 사례에 대해 경제적으로 실행 가능한 다른 호스팅 플랫폼을 수용 할 수 있으며 엔터프라이즈를위한 여러 솔루션을 보유 할 수 있습니다 애플리케이션 (즉, 스토리지, 전송, 대역폭, 라이센싱 정책 등), 서비스 품질의 기록 신뢰성, 보안 감사, 청구 투명성 및 비용 등을 추적 할 수 있습니다. 위의 모든 지표를 살펴보면 AWS 점수가 훨씬 높다고 생각합니다 . 나는 2 년 이후 AWS에서 10 개의 프로덕션 계정을 관리하고 있으며 동시에 회사 / 사업부는 고객의 거대한 확장 성 요구를 충족시킬 수있었습니다 .... AWS의 경우 인프라, 업데이트 (있는 경우 /있는 경우)를 유지해야합니다. 필수), 보안 등 그러나 시장에서 모든 도구를 자유롭게 사용할 수 있습니다. 기존 IT 리소스는 AWS의 모든 인프라도 유지할 수 있습니다.
Azure에는 VS 2010과 통합 된 IDE가 있지만 응용 프로그램 (배포 용 플랫폼)을 성공적으로 배포 한 후 클라우드의 실제 비용이 시작됩니다. 실시간 배포 / 확장 가능한 생산 시나리오를 해결하기 위해 아직 먼 길을 가고 있습니다 ....... 모든 사람들이 알고 있듯이 MS는 많은 숨겨진 계획을 원가 계산에 사용합니다.. 추정치).
GAE는 Python / Java 앱에 매우 적합합니다. 애플리케이션 재 작성 (기존), 테스트, 배포 등을위한 엄청난 노력 (자원 + 비용 측면).