AWS를 공부해야하는 이유

ki hyun Lee·2022년 10월 23일
4
post-thumbnail

개요

나는 이때까지 웹 개발을 하면서 AWS를 사용할 일이 정말 많았다. 웹 서버를 배포하는데에도 AWS를 사용했고, 유저의 프로필 사진, 유저가 올린 사진 등을 관리하는데도 AWS를 사용했었다. (사실 이젠 Cloudflare를 사용할 것 같긴 하다...) 하지만, 정작 이렇게 AWS를 쓸 일이 많으면서도 계속해서 AWS를 피해오기만 했다. AWS가 너무 방대하고 복잡하다는 이유로 또한, 잘못 건드렸다가 돈을 잃을거라는 이유로 AWS를 계속해서 피해왔다.

사실, 잘못 건드렸다가 돈이 날라간다는 말은 어느정도 사실이다. 주변에서 AWS를 잘못 건드리거나 AWS가 해킹당해서 많은 돈이 지출됬다는 개발자들을 많이 봤기 때문이다. 하지만, 대부분의 경우 학습을 목적으로 사용한 경우라면 환불해주는 편이다.

솔직히 말해서 사이드 프로젝트로 만들 웹 서비스를 호스팅 할 용도라면 굳이 AWS를 배울 필요는 없다고 본다. AWS는 마치 뭐든 다 잘라버리는 전기톱과 같은 도구이기에 당신의 지갑까지 잘라버릴 수도 있다. 그러니 작은 사이드 프로젝트를 할 생각이라면 Render와 같은 무료 호스팅 서비스를 추천한다.

AWS를 공부해야 하는 이유

가성비

이렇게 계속해서 AWS를 피하고 Heroku와 Render같은 서비스를 사용하다 한 가지 느낀 점이 있다. 바로 성능에 비해 너무 비싸다는 것이다.

⛔️ 주의: 이 글은 절대 Render나 Heroku 같은 서비스가 이유 없이 비싸다는 것이 아니다. 이러한 서비스들은 CI / CD, Auto Scaling 등 정말 복잡하고 다양한 기능들을 버튼 클릭 한 번으로 구현해주기에 충분히 저런 가격을 제시할 만하다. 하지만, 오직 성능만 놓고 보자면 AWS를 공부해서 AWS를 사용하는 것이 훨씬 싸다고 할 수 있기에 이러한 말을 하는 것이다. 나도 개인적으로 사이드 프로젝트를 할때면 이러한 서비스들을 사용하는 편이다.

위 사진은 Render의 Pricing이다. 가장 저렴한 가격인 (Free를 제외하고) Starter를 살펴보면 512MB 램에 0.5 CPU를 $7에 제공한다. 심지어 리전도

Oregon, USA
Frankfurt, Germany
Ohio, USA
Singapore

이 4가지 밖에 제공하지 않는다.

자 그럼 이제 같은 성능으로 AWS에서는 어떤 결과가 나올까?

당연하겠지만 vCPU 2개에 0.5 Gib의 램을 제공하는 t4g.nano를 사용한다면 월 $5 라는 저렴한 가격에 서비스를 이용할 수 있다. 거기다 AWS를 사용한다면 현재 자신의 위치에서 가장 가까운 리전의 서버를 사용할 수 있고, CPU도 Render보다 4배 많이 제공하기에 실제로는 훨씬 더 빠른 성능을 제공할 것이다.

요금 모델을 바꿔서 1년치 비용을 전체 선결제한다면 월 $3까지 비용을 낮출 수도 있다.

여기서 의문점이 생길 수 있다. "내가 사용했던 EC2는 분명 저것보단 훨씬 비쌌던것 같은데..?" 그건 바로 EC2의 요금 모델 때문이다. EC2의 요금 모델은 크게 2가지로 나뉜다. (하나가 더 있긴한데 일반적으로 사용하는 플랜은 아니니 여기서 다루지 않도록 하겠다) 예약 모델과 온디맨드 인스턴스이다. 온디맨드 모델는 언제든지 인스턴스를 시작 및 중단시킬 수 있는 보편적으로 사용하는 모델이다. 이 모델은 언제든지 인스턴스를 시작 및 중단시킬 수 있다는 점에서 상당히 유연하지만 시간당 비용이 가장 비싸다는 단점이 있다. 예약 모델은 1년 혹은 3년 단위로 인스턴스를 빌리는 모델이다. 년 단위로 인스턴스를 빌리기 때문에 큰 폭의 할인 혜택이 있고 이로 인해 위와 같은 차이가 생기게 되는 것이다.

이처럼 AWS를 제대로 공부하게 된다면 엄청난 혜택을 누릴 수 있다. 자신에게 필요한 서비스를 찾아 최저가로 사용할 수도 있고, 여러가지 서비스를 합쳐서 자신의 입맛에 맞게 사용할 수도 있다.

물론, AWS는 어렵다. 하지만, AWS를 제대로 공부하게 된다면 앞으로 엄청난 혜택을 누릴 수 있을 것이다. 음.. 맥가이버를 사용하다가 전문 공구 툴을 사용하는 정도? 잘 모르겠다. 어쨌든 잘 이해했을 것이라 믿는다.

자율성 (?)

먼저 내가 말하는건 신뢰도가 떨어질 수 있기에 유명 개발자인 태오님의 말씀을 인용해오겠다.

프론트엔드 개발자 태오님

Q. 프론트엔드 관련 자료를 찾아보면 vercel에 대한 얘기는 적고, 아마존(cloudfront 등)을 이용해서 많이들 배포하시는데 vercel에는 어떤 단점이 있어서 그런걸까요? 아니면 다른 이유가 있는걸까요?
A.
Vercel과 같은 경우에는 우리에게 맡겨 우리가 알아서 다 해줄게라면, AWS여기 필요한거 다 있으니까 필요한거 니가 골라써 우리가 빌려줄게의 전략입니다. 맡기면 편하긴한데 아쉬울때 필요한 걸 요구할 수가 없다는게 단점인거죠
이러한 맥락으로 당연히 백엔드 취업에도 AWS를 다루는 편이 Vercel을 다루는 것버다 훨씬 도움이 되고 취업을 떠나 훨씬 더 많은 회사에서 AWS를 다루니 당연히 그 생태계가 더 클 수 밖에 없습니다. 많은 프레임워크가 있지만 React 생태계와 자료가 제일 많은것과도 같은 맥락입니다. 후략

물론 허락도 받았다 ㅎ

위에서도 말하듯이, vercel과 같은 플랫폼들의 전략은 우리에게 맡겨 우리가 알아서 다 해줄게이다. CI/CD, 환경 변수 관리 등 AWS에서 직접하려면 복잡하고 시간이 걸리는 일들을 별다른 설정 없이도 쉽게 해준다. 반면, AWS는 여기 필요한거 다 있으니까 필요한거 니가 골라써 우리가 빌려줄게라는 전략을 사용한다. 따라서 vercel을 사용한다면 100% vercel에 의존해야만 하지만, AWS는 사용자의 필요에 따라 필요한 서비스들을 골라서 사용할 수 있다. 예를 들자면, Static 웹 사이트를 배포하고 싶다면 S3를 사용할 수 있고, React 웹 애플리케이션을 배포한다면 EC2, 서버리스 배포를 하고싶다면 Lambda를 사용할 수 있다. 사이드 프로젝트나 작은 소규모의 프로젝트를 한다면 이러한 자율성이 왜 필요한지 모를 수 있다. 하지만, 대규모 트래픽을 처리해야하는 상황 또는 회사 내부 사정으로 무조건적으로 AWS를 (혹은 GCP나 Azure같은 다른 클라우드...) 사용할 수 밖에 없는 상황에 처할 수도 있다. 이를 대비하여 AWS 혹은 다른 클라우드 플랫폼에 대해서라도 공부하는 것이 좋다고 생각한다.

AWS 공부를 시작하는 방법

내가 생각하기에 AWS 공부를 시작하기에 가장 좋은 방법은 자격증을 따는 것이다. 자격증을 목표로 공부하게 된다면 공부의 목표, 기한이 생기기에 그냥 공부할 때보다 더욱 효율적으로 공부할 수 있게 된다. 많은 사람들이 그저 공부를 하겠다는 목표만은 가지고 공부를 시작한다. 내 경험상 이런식의 공부는 길게 가지 못한다. 또한, 자격증은 그 자체만으로도 자신이 AWS에 대한 어느정도의 이해를 가지고 있다는 증거가 되기에 AWS에 관한 지식을 증명하는데 도움이 될 수 있다. (물론 크게 도움이 되지는 않는다고 한다.) 여기서는 많은 사람들이 추천하는 책을 추천하겠다.

👍 물론 자격증을 따고 싶지 않고 자신만의 공부법으로 AWS를 완벽하게 공부할 수 있다면 그것도 좋다. 하지만, 이왕 공부하는거 링크드인에 멋진 배지 하나 걸어두는게 더 좋지 않겠는가?

AWS Certified Solutions Architect Study Guide


아마존에서 공인한 스터디가이드이다. AWS의 주요 서비스에 대한 상세한 설명과 이것들을 통해 효율적인 아키텍트를 설계하는 방법까지 상세하게 적혀있다. 각 장마다 연습문제가 들어있어 각 장을 제대로 이해했는지 확인해볼 수 있다.

결론

사실 나도 아직 자격증을 목표로 공부를 하는 중이다. (원래는 저번달에 시작해서 내년초에 자격증을 취득하는걸 목표로 하였는데 TOEFL 등 여러 일정으로 인해 많이 밀리게 되었다) 확실히 AWS를 공부하는것은 어렵다. 방대한 양의 서비스들을 전부 이해하고 그에 대한 시험까지 친다고 생각하면 정말.. 악몽이다. 하지만, 이러한 서비스들을 잘 이해하고 능숙하게 다룰 줄 안다면 나중에 큰 도움이 될 것이라고 생각한다!

profile
Full Stack Developer at Team Verse

0개의 댓글