인프런 커뮤니티 질문&답변

yongsoocho님의 프로필 이미지
yongsoocho

작성한 질문수

mongoDB 기초부터 실무까지(feat. Node.js)

https(SSL인증서) 적용

EC2 vs lightsail

작성

·

642

1

취미 활동으로 제 블로그나 사이트를 운영해보고 싶은 학생입니다.

AWS 를 GCP(너무 어렵습니다..) 보다 선호하여 강의를 보고

배포도 직접 해보려고 하고 있어요.

대충은 lightsail 이 EC2 와 비슷하지만 좀 더 라이트하고 개발에 집중할 수 있도록 나온 것 이라고 알고 있습니다. (EC2 는 설정도 많고 이것저것에 따라 가격도 달라진다고 알고 있습니다) 중소규모 개인블로그를 lightsail 으로 쓸 수 있을까요? 아니면 따로 EC2를 공부해서 써야 하나요??

트래픽이 그래도 쫌 나온다 하고 .. 글도 많다고 가정했을 때 lightsail 로는 관리를 할 수 없는건가요..

답변 1

0

yongsoocho님 안녕하세요 :)

lightsail로도 충분히 많은 트래픽을 감당하실 수 있습니다. Node.js는 싱글스레드이기 때문에 어짜피 코어수를 늘린다고 해서 전부 활용을 하지 못해요. 초반에 다룬 비동기 프로그래밍 강의를 들으셔서 알겠지만 Node.js가 싱글 스레드여도 많은 요청을 처리할 수 있어요.

서버 사양이 걱정되신다면 코어가 1개짜리 중에서 제일 좋은걸 선택해주세요. 메모리도 좀 더 여유있게 해주시면 좋구요. 이 정도로도 충분히 많은 트래픽에 응대할 수 있어요. 

물론 트래픽이 너무 많아지면 아무리 비동기적으로 처리해도 서버 사양이 부족해지는 시점이 올거에요. 이 때 서버 이전을 하시면 됩니다.

저 같은 경우 lightsail에 일단 간단하게 배포를 하구요. 트래픽이 늘기 시작하면 CPU 코어를 늘리고 늘어난 CPU 자원들을 모두 활용할 수 있게 해야겠죠. 이 때 Docker로 백엔드를 컨테이너화 시킨 다음에 AWS Elastic Bean Stalk 같은 곳에 Docker Compose를 이용해서 배포를 합니다. Docker Compose는 여러개의 Docker Container들을 쉽게 관리할 수 있게 도와주는 기술이에요.

그러면 쉽게 여러개의 노드 프로세스들을 생성할 수 있어요. 그러면 더 높은 사양을 가진 서버(여러개의 CPU)의 자원들을 모두 활용할 수 있게 되요. 

나중에는 CPU코어를 늘리는것도 한계가 옵니다. 500 코어 이런 CPU 없죠 ㅎㅎ

여기까지는 수직확장이라고 해요. 여기서부터는 수평 확장으로 들어가야 하는데요.

서버 수를 늘리는거에요. 한 서버의 자원을 늘리는건 한계가 있지만 서버 수를 늘리는건 한계가 없죠. 대형 서비스가 되면 궁극적으로는 서버 수를 늘리는 방향으로 가야 됩니다. 근데 딱 들어봐도 관리가 어렵겠죠. 여기서 나타나는 기술이 Kubernetes에요. 분산된 서버 환경에 Docker Container들을 간편하게 관리할 수 있게 해주는 기술이죠. Container들을 늘려야 하는데 서버가 부족하면 서버를 자동으로 증설(auto scaling)하도록 설정할 수도 있어요. Docker Compose와 비슷한데 훨씬 더 강력하고 분산 서버에서 활용할 수 있는 기술이에요,

그리고 보통 이 시점이 되면 Monolith를 돌리기 보다는 Micro Service Architecture로 백엔드가 발전합니다. 

또 한가지 말씀드리면 서버 부하가 아직 적더라도 Docker Compose나 Kubernetes로 전환할 이유가 있을 수 있는데요. 안정성을 위함이에요. 부하 때문이 아니라 서버가 갑작스럽게 죽는걸 대비해서 2~3개의 컨테이너 혹은 서버를 두는거죠. 몽고디비에서 Replica Set을 두는것처럼요. Docker Compose로 한개의 서버에 여러개의 컨테이너를 생성할 경우 특정 컨테이너가 죽어도 문제 없이 돌아가게 되요. 근데 만약 서버 자체가 죽는다면? 그러면 컨테이너가 아무리 많아도 소용이 없죠. Kubernetes로 서버를 여러개 두고 각 서버에 컨테이너를 생성하면 모든 서버가 죽지 않는한 구동합니다.

설명드리다보니 길어졌네요. 이런식으로 대응하면 되는구나 정도로 추상적인 개념정도 익혀두시면 좋을것 같아요! 필요해질거 같으면 미리 공부해두시면 좋구요 ㅎㅎ

yongsoocho님의 프로필 이미지
yongsoocho
질문자

친절하고 이해너무 잘가는 답변 감사합니다 :)

저도 스타트업 CTO 로써 성공하고 싶은데 배워야 할게 너무 많네요..

yongsoocho님의 프로필 이미지
yongsoocho

작성한 질문수

질문하기