본문 바로가기
개발/Server

[인프라] heroku를 써야할까 AWS를 써야할까?

by 마동쿠 2017. 9. 4.

원문 : https://medium.com/@aleicher/should-i-use-heroku-or-aws-3bfcd4706a36


(해당 번역은 번역 수준으로도 범위적으로도 완전하지 않습니다. 원문을 볼 것을 추천드립니다.)


순수한  API든 완전한 웹 어플리케이션이든 상관없이, 모든 웹 프로젝트를 운영하는 사람들은 그들의 서비스를 호스팅

해야할 시점이 이를것입니다. 소프트웨어를 선택하고 나면 (Ruby on Rails vs. Node.js vs. Django vs. etc.) 당신은

아름답게 만들어진 응용 프로그램을 전세계에 공개 할 필요가 있습니다. 현재 사용할 수 있는 옵션은 여러가지가 있으며,

이 설명이 완벽하지는 않지만, 일부 옵션에 대한 첫번째 아이디어가 있기를 바랍니다.


서비스로서의 플랫폼, Amazone의 AWS, 인프라를 서비스로 제공하고 자신의 머신을 호스팅하는 Heroku에 대한 간략한

개요를 제공할 겁니다. 이 목록은 완전하지도 않고, 다른 사람의 구체적인 추천을 나타내는 것도 아니며, 내 경험에 근거한

개인적인 의견이라고 생각했으면 좋겠습니다.


IaaS vs. PaaS

누군가 사과와 오렌지를 비교하고 있다고 말한다면, 먼저 맞다고 말하고 싶습니다. 간단히 말해서 IaaS는 제공자(AWS)가

인터넷을 통해 컴퓨팅 자원 (가상화)을 제공하는 클라우드 컴퓨팅 유형입니다. 전선, 전기, 하드웨어 등을 관리하지 않고

어딘가에서 기계(머신)을 임대하는것으로 생각하세요.


예를 들어 heroku에서 제공하는 PaaS (Platform as a Service)는 사용자를 위한 인프라 작업을 처리합니다. 따라서 인프라

(로드 밸런서, 기계 등)를 구축하기 위해 여러 구성요소에 대해 걱정할 필요는 없지만 간단한 git push로 전체 프로그램을

배포하는 경우가 있습니다.


Amazon AWS vs. Heroku

따라서 서버 인프라의 일부를 다른 회사에 아웃소싱하도록 기꺼이 원한다면 계속 읽어보세요. 그렇지 않고 자신의 서버를

직접 실행한다면 끝까지 건너뛰고 저의 권장사항을 확인해 보세요.


AWS

앞서 언급했듯이 AWS에서는 로드 밸런서 설정, EC2 인스턴스에 올바른 소프트웨어 스택 설치, 데이터베이스 구성 등을

처리해야 합니다. 또한 배포 프로세스를 구현 및 구성해야합니다. (예: 카피스트라노 같은 것을 이용해서)


인스턴스에 소프트웨어를 유지 관리하려면 인스턴스에 소프트웨어를 수동으로 설치하지 않는것을 강력히 추천합니다.

그것은 다른 기계 등에서 서로 다른 설정으로 이어질 수 있습니다. 저의 추천은 함부르크의 dynport에서 위대한 팀에서 

만든 Puppet, Chef 또는 Urknall과 같은 적절한 프로비저닝 도구 체인을 사용하는 것입니다. Urknall은 Go 기반의

'영리한 개발자들을 위한 Opinionated provisioning tool'입니다. 또한 (AWS 클라우드 아키텍트가 권장하는) AWS 

Cloudformation을 진지하게 고려해야합니다. Cloudform을 사용하면 AWS에서 인프라를 설명하는 템플릿을 작성할 수

있습니다. 따라서 Cloudform을 사용하면 코드에서 인프라의 적절한 문서를 제공 할 수 있으며 처음에 했던 것과 똑같은 

구성으로 가져올 수 있습니다. 


AWS를 실행하는 비용은 당신이 Heroku에 내는 비용보다는 적을것입니다. (오직! 인프라에

관한 비용에 대해서는!) 인스턴스 유형에 따라 t2.micro 인스턴스의 경우 시간당 $0.014 또는 production ready t2.med

ium 인스턴스의 경우 $0.056 로 시작합니다.


Heroku

Heroku는 소프트웨어 설치, 유지관리, 필수 업데이트를 위한 소프트웨어 모니터링, 배포 설정 등 모든 문제를 해결합니다.

말도 안되는 소리 같나요? 처음 사용할 때 이런 느낌이 들껍니다. heroku가 많은 자습서에서 제안된 것은 놀라운 일이 아

닙니다. 웹 응용 프로그램 개발에 대한 강의에서도 이 도구를 사용하는 것이 좋습니다. 그것은 단지 작동하고 당신이 빨리

볼 수 있는 세계에 대한 귀하의 웹 응용 프로그램을 온라인으로 얻을 수 있습니다. 또한 무료 티어를 제공하므로 앱을 테스트

할때에도 좋습니다. 


더 좋은 성능이 필요하십니까? 더 큰 Postgres 데이터베이스가 필요하십니까? Redis를 스택에 추가

하시겠습니까? AWS에서 새 인스턴스를 설정하고, 프로비저닝하고, 구성하는데 필요한 대부분의 소프트웨어는 클릭 또는

명령어를 통해 heroku에 추가할 수 있습니다. 성능을 조정할때 필요한 것은 그저 dynos라는 것을 추가하는 것입니다.


그럼 왜 모두가 heroku를 사용하지 않는거냐고 묻는다면, 항상 그러하듯이 여러가지 이유가 있습니다. 첫째는 비용입니다.

모든 플랫폼과 소프트웨어를 서비스로 받으면 그에 대한 비용도 지불하게됩니다. 따라서 인프라가 확장되는 경우 추가 비용

을 계산하여 이를 AWS 인프라 설정 비용과 비교해야합니다. 또한 어떤 사람들은 heroku에게 코드를 부여하고 같은 인스턴

스 (heroku의 dyno 격리로 격리 됨)***(해석이 애매..)에서 다른 사람들과 공유하는 것을 불편하게 느낄수도 있습니다.


너의 인프라로 운영하는가?

모든 응용프로그램이 클라우드 제공자에게 적합하지는 않습니다. 때로는 자신의 데이터 센터를 운영하거나 서버를 호스팅

해야하는 법적 문제 또는 요구사항이 있을 수 있습니다. 처음에는 비용이 저렴하지만 컴퓨터 관리에 대한 추가 노력을 고려

해야합니다. 2년된 하드 디스크가 일요일 아침에 작동을 멈추었다면? 당신을 시스템을 가동하여 운영할 책임이 있으며 잘

하면 RAID에 통합 할 수 있는 대체 디스크를 찾을 수 있습니다. AWS 또는 heroku를 사용하면 이와 같은 사항을 완전히

숨길 수 있으며 일요일 아침엔 가족과 함께 아침식사를 즐길 수 있습니다.


그래서?

heroku 사용 : 

 - 소규모 개인 프로젝트를 프로모션 하고 싶은 경우

 - 프리랜서로서 자신의 포트폴리오를 서비스중인 앱으로 제시할 경우(대부분의 경우 무료 dyno 플랜으로 충분합니다.)

 - 에이전시인 경우 웹 응용 프로그램을 제공하는데 주력해야하며 고객이 운영을 철저히 관리할 것은 약속하고 선상에 전문

가가 없는 경우

 - 당신이 매우 빨리 시작할 필요가 있고 시스템 관리의 오버헤드를 원하지 않고 그렇게 할 수 있는 완전한 자유가 필요하지

않다면

 - 학생인 경우 / 새로운 프레임워크를 배우고 그냥 놀고싶다면


AWS 사용 : 

 - 당신이 에이전시이고 devops에서 전문가를 가질 여력이 있다면

 - SLA가 있는 생산로드

 - 소프트웨어 버전, 틀정 패치 등 인프라에 대한 추가 제어가 필요한 경우

 - 당신이 devops에서 약간의 시간을 할애 할 수 있다면

 

 * Amazon AWS와 Heroku는 데이터 프라이버시에 관한 미국 / EU 세이프 하버 협약에 서명했습니다. 여기서 아마존의

개인 정보 보호 정책을 찾을 수 있습니다.


호스팅된 서버 또는 자체 인프라 사용 :

 - 당신이 devop과 행정에 많은 시간을 할애 할 수 있다면

 - 법적으로 그렇게 해야하는 경우

 - 하드웨어에서 성능의 최대를 끌어내야 할 경우

 - 서버룸에 앉아서 일요일 아침에 머리카락을 찢고 싶다면 (ㅋㅋ)


참고 : 독자는 Dan Peterson 및 Christioan Weyer의 의견을 반영하여 이 게시물을 2015년 2월 3일에 편집했습니다.

귀하의 의견을 보내주셔서 감사합니다 ! 


추가로 읽어보면 좋은것 : 

https://stackoverflow.com/questions/9802259/why-do-people-use-heroku-when-aws-is-present-whats-distinguishing-about-heroku




'개발 > Server' 카테고리의 다른 글

[Server] uWSGI와 nginx로 django와 웹 서버 설정하기  (0) 2017.09.07

댓글