데이터과학 유망주의 매일 글쓰기 — 쉬어가는 시간 — 1
Heroku vs AWS
# Heroku, #AWS
오늘 한일:
이번 한주는 “쉬어가는 한 주"다. 정확히 말하면, 아무것도 안하고 쉬기보다는, 그동안 부족했던 것을 채워가는 시간이다. 그동안, 과제를 하면서 놓친것들 등을 다시 한번 학습해보는 시간이라고 할 수 있다.
그래서, 지난 과제에서 내가 짚고 넘어가지 못한 것들에 대해 정리해 보았다. 그 중 하나가 Heroku와 AWS같은 것들에 대한 좀 더 깊은 탐구였다.
Heroku는 어플리케이션을 쉽게 배포할 수 있게 해주는 플랫폼이며, AWS는 클라우드 서비스 플랫폼이다. 둘은 어떠한 차이가 있을까?
AWS
유연하고(flexible), 신뢰성있으며(reliable), 스케일이 조정가능하고(scalable), 사용하기 편리하고 가성비 좋은 클라우드 컴퓨팅 솔루션을 제공하는 플랫폼이다. 개발자에게 저장소, 데이터베이스, analytics, 네트워킹 및 배포/출시(deployment/delivery) 기능들을 제공한다. AWS 클라우드는 현재 전세계 16개의 지역에서 제공되며, 그 숫자는 계속 증가하고 있다.
AWS의 장점:
- DevOps 팀이 있다면 인프라를 설정하고 관리할 수 있다.
- 웹 또는 모발일 앱의 새로운 버전이 개발되었을 때, 빠르게 출시할 수 있다.
- 앱을 쉽게 출시할 수 있게 해준다.
- AWS 웹 서비스는 프로젝트가 고사양의 컴퓨팅이 필요할 때 이상적이다.
- 어플리케이션 개발팀의 생산성을 높여준다.
- 설정, 스케일링, 셋업, 다른 자동화된 기능들을 지원한다.
- AWS는 모든 리소스에 대해 컨트롤을 할 수 있게 해준다.
- AWS는 조직에서 이미 사용하고있는 프로그래밍 모델, OS, 데이터베이스 및 아키텍쳐를 을 사용할 수 있게 해준다.
- 바로 지불해야할 비용이 없이, 비용을 지불한 만큼 서비스를 얻을 수 있다.
- 데이터 센터를 마련하고 유지하는데 비용이 들지 않는다.
- 빠른 배포를 할 수 있다.
- 쉽게 용량을 더하거나 뺄 수 있다.
- 제한없이 빠르게 클라우드에 접근할 수 있다.
- 그 어떤 개인용/특화된 서버 보다도 소유를 위한 총 비용이 매우 낮다.
- 비용을 일원화하여 관리할 수 있다.
- 융합식 량을 제공한다.
- 전 세계 어느 곳에서도 클릭 몇번 만으로 어플리케이션을 배포할 수 있다.
AWS의 단점
- 에러에 대한 정보가 없고, 배포의 신뢰성이 떨어진다.
- 배포과정이 쉽지 않으며, 매우 길다. 간단한 웹 사이트도 15~20분이 걸린다.
- AWS는 기술적으로 복잡한 서비스를 제공하는 스타트업에게는 적합하지 않다
- 업데이트나 새로운 스택 버전이 자주 릴리즈되지 않는다.
- 레시피, Capistrano, 또는 수동으로 어플리케이션을 직접 배포해야한다.
- AWS에서 다수의 어플리케이션 인스턴스를 론칭하는 것이 어렵다.
Heroku
Heroku는 Salesforce라는 곳의 소유이다. 클라우드 서비스와 소프트웨어 개발 플랫폼을 제공하며, 웹 어플리케이션의 빠르고 효과적인 개발, 출시 및 스케일링이 가능하다. 모니터링, 캐싱(caching), 이메일링 및 네트워킹 등을 할 수 있는 140개 이상의 alert, analytic 및 보안 서비스 add-on을 제공한다.
내제된(built-in) 즉각적(instant) run-time 어플리케이션 서비스를 제공한다. 또한, 소프트웨어가 자동으로 인프라를 관리해준다는 장점이있다. Heroku는 AWS같은 플랫폼위에 만들어진다.
Heroku의 장점
- 개발자가 인프라 구성보다도 코드에 집중할 수 있다.
- 클라우드 어플리케이션 개발 팀의 생산성을 높일 수 있다.
- 모든 프로젝트에 대해 하나의 요금제를 통해 비용을 지불할 수 있다.
- 풍부한 어플리케이션 모니터링 기능을 통해 성능을 모니터링하고 향상시킬 수 있다.
- 개발 및 QA, 그리고 비즈니스 stakeholder들의 통합된 dashboard를 생성할 수 있게 돕는다.
- 오픈 소스 언어의 서포트를 받을 수 있다.
- 고사양의 Salesforce 통합이 가능하다.
- 수직/수평 스케일링이 단순하다.
- Heroku 운용 및 보안 팀은 24시간 동안 일주일 내내 준비가 되어있다.
- 플랫폼 및 보안 시스템이 가장 앞서있다.
- 운용보다는 새로운 기능을 추가하는 것에 집중할 수 있다.
- Heroku는 시스템 업데이트 동안 downtime이 거의 없다.
- 어플리케이션 lifecycle의 관리와 허용이 빠르다.
- 강력한 대쉬보드 및 CLI를 제공한다.
- 개발자에게 익숙한 workflow를 제공
- 어플리케이션 개발 및 유지 보수의 비용을 예측할 수 있고, 인사이트를 얻을 수 있다.
- 개발에 있어 장애를 없앨 수 있다.
- 지원가능한 도구 제공
- 초보자 및 스타트업에 적합
- Heroku Command Line의 인터페이스를 사용하여10초 안에 새로운 서버를 생성할 수 있다.
- 패치 및 모든 것들을 원활한 상태로 관리하는 클라우드 컴퓨팅 플랫폼을 제공한다.
- 스케일링, 설정, 설치 및 자동화된 기능들을 지원한다.
- AWS 제품과 쉬운 통합이 가능
- 배우기가 지나치게 까다롭지 않다.
- Salesforce 데이터에 안전하게 연결할 수 있다.
- 유니크한 DevOps workflow가 필요한 커스터마이징과 서포트를 유연하게 가져갈 수 있다.
Heroku의 단점
- Inbound및 outbound latency가 높다.
- 낮은 네트워크 성능
- Heroku 는 dynos에 그 어떤 다른 서비스를 허용하지 않는다.
- 추가적인 dynos/worker를 위해서는 적어도 매월 35불 정도를 내야한다.
- 용량이 크고, 트래픽이 높은 어플리케이션을 돌릴 경우 비용이 비싸진다.
- 인스턴스 타입에 제한이 있다.
- 고사양의 컴퓨팅이 필요할 경우에는 적합하지 않다.
주요 차이점:
- Heroku는 컨테이너 기반 클라우드 플랫폼 서비스(PaaS)로써, IaaS, PaaS, SaaS등을 제공하는 안전한 클라우드 서비스 플랫폼이다.
- Heroku는 만들어진 코드를 빠르게 배포할 수 있는 환경을 제공하지만, AWS의 경우 배포 과정이 훨씬 더 복잡하다.
- Heroku는 스타트업이나 중소기업 규모의 비즈니스에 적합하며, AWS는 중견이상 대기업 정도의 비즈니스에 적합하다.
- Heroku는 저사양의 컴퓨팅을 요구할때 적합하며, AWS는 훨씬 더 많은 컴퓨팅이 필요할 경우 사용하는 것이 좋다.
- Heroku는 인프라의 유지 및 보수가 필요 없지만, AWS는 DevOps 전문가를 필요로 한다.
- Heroku는 좀 더 적은 지역에서만 제공된다.
결론
Heroku와 AWS모두 훌륭한 플랫폼들이다. 하지만, 자신이 속해있는 조직과, 그 조직이 얼마나 비용을 지불할 의사가 있느냐에따라 어떤 것을 쓰는 것이 적합한지가 달라진다. 추후 유지 및 보수를 위해 자신의 조직에 DevOps관련 엔지니어가 있는지 확인하는 것이 좋다. 개발자의 생산성을 높이고, 비즈니스 목표를 이룰 수 있는 것이 적합한 플랫폼이라 할 수 있다.
앞으로 할일:
오늘은 Heroku와 AWS의 차이점에 대해 알아보았다. 둘다 세계적으로 유명한 플랫폼이고, 각 상황마다 쓸모가 다르다. 기술적으로 복잡하지 않으면서, 빠른 배포가 필요할 경우 Heroku를 이용할 수 있다. 반대로, 복잡한 어플의 경우 AWS를 이용할 수 있다. Heroku는 작은 규모의 회사, 특히 스타트업에 적합하고, AWS는 좀 더 큰 규모의 중견기업이나 대기업에 적합하다. 놀랍게도 Heroku가 기술지원은 좀 더 좋은 것으로 보인다. AWS는 업데이트가 생각보다 자주 되지 않기 때문이다.
결국, 그 어떤 도구도 상황에 맞게 쓰는 것이 가장 중요한 것 같다. 매번 새로운 지식을 공부하면서 매번 느끼는 거지만, “각 상황에 가장 최선의 결과를 내는 것이 가장 좋은 도구”다. 그러므로, 절대적으로 좋은 도구란 없다, 모든 상황에 가장 적합한 도구가 있을 뿐이다.
이 글은 대부분 Heroku vs AWS: 10 Most Important Differences You Must Know! 를 참조하여 작성했습니다.
참조:
(1) https://railsware.com/blog/wp-content/uploads/2018/11/HerokuvsAWS-illustration.jpg