Heroku를 사용하지 않는 5 가지 어리석은 이유

Russell Smith는 Rainforest QA의 공동 창립자이자 CTO입니다.

다른 CTO와 엔지니어에게 우리가 사업을 운영하기 위해 Heroku에 크게 의존한다고 말할 때, 그들은 변함없이 같은 반응을 보입니다. 왜? AWS가 아닌 이유는 무엇입니까? 농담하는거야? Google Cloud에 대해 들어 보셨습니까? 너 바보 야?

이것은 틀림없이 발생합니다. 와. 밖. 불합격. 논쟁은 일반적으로 다음과 같습니다. Google 또는 AWS에서 직접 구축 할 수 있고 원하는대로 사용할 수 있는데 PaaS에 더 많은 비용을 지불하는 이유는 무엇입니까? 내가 말하는 : 양귀비. 이 사람들은 PaaS의 실제 이점과 기본적인 경제적 감각을 놓치고 있습니다.

2012 년 초부터 자동화 된 QA 테스트 서비스를 실행하기 위해 Rainforest QA에서 Heroku를 광범위하게 사용하고 있습니다. 대부분의 앱에 대한 프로덕션, 스테이징 및 QA를 위해 Heroku에 거의 모든 것을 배포합니다. 안정적이고 경제적으로 합리적이며 우리의 요구에 정확히 맞습니다.

다음은 내가 Heroku에 대해 듣는 주요 주장과 그들이 (대부분) 오류라고 생각하는 이유입니다.

#1. Heroku는 NIH입니다 (여기에서 발명되지 않음).

우리 팀이 사랑스럽게 모아 두지 않으면 우리에게 완벽 할 수 없으므로 충분하지 않습니다. 요즘 기본값은 AWS (단, NIH이기도 함)를 사용한 다음 사람들을 고용하여 현재 유행하고있는 my-startup-is-a-snowflake 인프라를 맨 위에 모으는 것입니다. 이 사고 방식에는 몇 가지 결함이 있습니다.

  • 귀하의 엔지니어링 팀은 기술을 배우고 업무를 제대로 수행 할 시간이 부족합니다. 매우 똑똑한 사람을 추가로 고용하지 않는 한.
  • 매우 똑똑한 사람을 추가로 고용 할 수 없습니다. 위대한 사람들은 매우 비싸고 찾기가 어려우며 아마도 이미 다른 곳에서 일하고있을 것입니다.
  • 인프라를 한 번만 구축 할 필요는 거의 없습니다. 요구 사항이 변경되면 다시 구축해야합니다.
  • 사용자 지정 인프라는 전투 테스트를 마칠 때까지 전투 테스트를 거치지 않습니다. 또는 고객과 엔지니어가 가질 때까지. 그들을 통과시키지 마십시오. 그냥 하지마.

최고의 인력을 고용하여 인프라를 구성 할 수 있다고 생각한다면 농담입니다. 하지만 가능하더라도이 인프라를 구축하는 데 소비하는 시간이 제품을 발전시키는 경우는 거의 없습니다 (인프라 자체가 제품의 핵심 부분이 아닌 경우).

내 경로를 선호하는 이유는 다음과 같습니다.

  • Heroku는 우리가 가장 잘하는 일, 즉 자동화 된 QA 플랫폼 구축에 집중할 수 있도록합니다.
  • 당신에게 몇 가지 구조적 제한을 가하는 것은 실제로 좋은 일이 될 수 있습니다. 그들은 선택과 분석 마비에서 당신을 해방시킵니다.
  • Heroku가 지속적으로 실제로 기능을 추가하고있다 않습니다 앞으로 우리의 제품을 이동합니다.

다음은 우리가 좋아하는 Heroku 기능 중 일부입니다.

  • 고 가용성 Postgres
  • Postgres에 대한 암호화는 기본적으로 켜져 있습니다.
  • 로그 드레인 (로그 수집 및 전달을 수행하는 표준 방법)
  • 앱 검토 (Heroku의 완전한 일회용 앱에서 GitHub pull 요청의 코드를 실행 함)
  • Heroku 애드온 마켓 플레이스

언급 할 가치가있는 최근 주요 추가 사항은 Heroku Shield로, BAA (Salesforce.com의 HIPAA 규정 준수에 대한 비즈니스 제휴 계약)를 제공합니다.이 계약에는 몇 가지 문제가 있지만 HIPAA 규정 준수를 직접 구축하려면 두 명의 엔지니어가 필요합니다. 그 대신 엔지니어들은 우리 제품을 발전시키고 고객을 더 행복하게 만들고 있습니다.

# 2. PaaS는 너무 비싸다

그러나 Heroku는 너무 비싸다! 이것은 무리의 생각이며 눈송이 인프라를 구축하고 유지하기 위해 훌륭한 개발자를 찾고, 모집하고, 훈련시키는 비용을 무시합니다. 이 사람들을 유지하고, 사무실에 배치하고, 탁구대를 제공하거나, 그들을 행복하게 유지하기 위해 필요한 모든 것을 제공하는 비용은 말할 것도 없습니다.

그런 다음 제품 엔지니어링 대신 devops 및 sysadmin 역할에 인력을 고용하는 데 따른 기회 비용이 있습니다. 그리고 이러한 비용은 비즈니스가 확장됨에 따라 선형 적으로 증가합니다. Heroku를 사용하면 한계 비용을 대규모로 줄일 수 있습니다.

그리고 집중력 부족으로 인한 추가 비용을 잊지 마십시오. 주변 인프라 문제를 처리하는 경우 제품을 개선하는 데 집중하지 않습니다.

Heroku를 지불하면 인프라를 구축하고 항상 사용 가능한 상태로 유지하는 것에 대해 걱정할 필요가 없으며 추가 작업 인력을 고용하고 유지하는 것보다 비용이 동일하거나 적습니다.

#삼. PaaS는 너무 제한적입니다.

하지만 ...하지만 ... 내 눈송이! 많은 사람들이 자신의 애플리케이션이나 아키텍처에 고유 한 요구 사항이 있다고 생각합니다. 대부분의 경우 그렇지 않습니다. 만약 그렇다면 아마 그렇게해서는 안됩니다. 하지만 Heroku를 사용할 수없는 몇 가지 합법적 인 이유를 받아 들일 준비가되어 있습니다. 여기 있습니다:

  • 수많은 CPU 또는 RAM이 필요합니다. Heroku는 AWS만큼 확장되지 않으며 구성이 약간 덜 유연합니다. 정말 수천 대의 서버가 필요한 경우 AWS (또는 베어 메탈)가 더 경제적 일 수 있습니다. 그러나 Heroku는 꽤 큰 인스턴스를 지원합니다. 대부분의 사람들에게는 충분합니다.
  • 베어 메탈 서버 또는 특수 프로세서가 필요합니다. 기계 학습 또는 기타 GPU 집약적 인 작업을 수행하는 경우 Heroku는 적합하지 않을 수 있습니다. 그러나 여전히 우리와 같은 하이브리드 접근 방식을 취할 수 있습니다. 우리는 Heroku뿐만 아니라 베어 메탈 서버를 사용하여 가상화 플랫폼에 대한 최고의 성능을 얻습니다.
  • gRPC와 같은 HTTP가 아닌 RPC가 필요합니다. WebSocket, HTTP 또는 HTTPS가 아닌 인바운드 트래픽은 현재 Heroku 라우터에서 지원되지 않습니다.
  • 지원되는 애플리케이션 모델 내에서 작업 할 수 없습니다. 예를 들어 노드 간 통신이 필요하여 앱 서버 그룹이 Erlang 또는 Elixir와 같은 하나의 역할을 할 수 있거나 고유 한 라우팅 설정이 필요한 경우 Heroku는 적합하지 않습니다.

몇 가지 다른 이유가있을 수 있지만 비즈니스에 필수적인 것은 아닙니다. Heroku 모델에 맞게 애플리케이션을 디자인 할 수 있다면 많은 이점을 얻을 수 있습니다. 가장 중요한 것은 배포에서 모니터링, 로깅, 확장에 이르기까지 애플리케이션 간의 일관성입니다.

# 4. Heroku는 Docker를 수행하지 않습니다.

하지만 Docker가 있어야합니다! 더 이상 걱정하지 마십시오. 9 월 초부터 Docker 이미지를 Heroku에 배포 할 수 있습니다. 그 이전에도 Heroku는 Docker와 다소 유사한 기능을 포함하여 컨테이너화 된 앱 빌드를 제공 할 수 있습니다. 기능에 대한 Docker 기능과는 일치하지 않았지만 Heroku는 Docker의 호스팅되고 관리되는 버전이라고 생각할 수 있습니다. 어쨌든 그 우려는 이제 사라졌습니다.

# 5. Heroku는 충분히 안전하지 않습니다.

그러나 Heroku는 안전하지 않습니다! LOL. 금융과 같이 규제가 심한 산업에 속하지 않거나 Heroku에서 지원하지 않는 특정 인증이 필요한 경우가 아니면 문제가되지 않습니다. Heroku가 AWS보다 의미있게 덜 안전하다고 믿을 이유가 없습니다. 플랫폼 보안 관리에 전념하는 전체 팀이 있습니다. 당신은? 또한 자체 인프라를 구축하는 동안 수많은 일회성 결정을 내리게되며 그중 어느 것도 테스트되지 않을 것입니다. Heroku는 오래 전에 이러한 결정을 내 렸으며 대부분의 회사가 상상할 수있는 규모로 테스트를 거쳤습니다.

또한 사용자 지정 환경과 달리 Heroku는 일관되고 균일합니다. 경계가 명확하게 정의되어 있으므로 공격 표면이 더 작아 질 것입니다. 이는 또한 이해하기가 더 쉽기 때문에 실수로 취약성을 만드는 일을 할 가능성이 적다는 것을 의미합니다.

그런데 엔지니어는 보안 외에도 모든 종류의 이유로 일관된 배포 환경을 좋아합니다. 

궁극적으로 모든 회사는 비즈니스와 고객을 위해 최선의 결정을 내려야합니다. 그러나 이러한 고객들은 당신이 최첨단의 자체 제작 예술 작품이나 범용 PaaS를 사용하고 있는지 상관하지 않습니다. 그들은 당신의 서비스가 작동하고, 시간이 지남에 따라 개선되고, 당신이 해킹 당하지 않도록주의를 기울입니다. Heroku는 우리를 위해 매우 잘 작동했으며 아마도 당신에게도 그럴 것입니다.

New Tech Forum은 새로운 엔터프라이즈 기술을 전례없이 깊이 있고 폭넓게 탐구하고 논의 할 수있는 장을 제공합니다. 선택은 우리가 중요하고 독자들에게 가장 큰 관심을 가지고 있다고 생각하는 기술을 선택하여 주관적입니다. 는 게시를위한 마케팅 자료를 허용하지 않으며 제공되는 모든 콘텐츠를 편집 할 권리를 보유합니다. 모든 문의 사항은 [email protected]으로 보내주십시오  .