과거에는 물리적인 서버를 이용하여 트래픽이 쌓이면 부하를 많이 받았습니다.
열을 받은 서버를 식히기 위해 차고에 서버를 두는 경우가 많았는데요.
그 열을 버티지 못한 서버는 결국 다운되어 원하는 서비스를 제공하지 못하게 됩니다.
서버를 업그레이드 하는 방법에는 두가지가 있었는데요.
하나는 scale up
방식으로써 CPU나 메모리 같은 부품을 업그레이드하는 것이고,
다른 하나는 scale out
방식으로써 동일한 사양의 서버 개수를 늘리는 것이었습니다.
회사에서는 어땠을까요?
보통 대부분의 회사에 전산실이 구축되어 있고 사각형의 기계들이 줄을 서있는 것을 본 적이 있을 것입니다.
이 전산실도 마찬가지로 물리적인 공간으로 물리적인 서버를 두는 곳이었죠.
최근에는 데이터센터에서 서버를 빌려주는 방식도 등장했는데요
다음과 같은 문제점이 있다고 합니다:
데이터센터 렌탈 비용
서비스 지속 유지 기간은 보통 1년 단위로 매년 결제를 해야합니다.
전원공급, 쿨링 (열 식히기) 등 유지보수 비용
하드웨어 서버 추가/교체 비용
확장 제한
모니터링 인원 필수
천재지변에 대응하기 어려움
물리적인 서버가 지니는 다양한 문제점은 이 클라우드
서버로 보완할 수 있습니다.
cloud, 구름을 연상하면 되는데요,물리적인 서버 대신 가상의 서버라고 생각하면 됩니다.
다음과 같은 장점이 있습니다:
IT 리소스 (물리적인 기계 렌트 비용 등)를 인터넷을 통해 on-demand (필요할 때만)로 제공합니다.
pay as you go pricing : 사용한만큼만 지불합니다.
필요한 타입과 크기의 리소스를 지정하여 사용할 수 있습니다.
서버, 스토리지, 데이터베이스 등에 간편하게 접근 가능한 솔루션을 제공합니다.
이런 클라우는 다음과 같은 문제를 해결할 수 있는데요 :
flexibilty : 유동적으로 원하는 리소스의 타입과 사이즈를 쉽게 변경할 수 있습니다.
cost Effectiveness : 비용측면에서 효율성을 지닙니다.
scalability : 확장이 용이해집니다.
High avilability and fault tolerance : 가용성이 높고 결함에 취약하지 않습니다.
Agility : 개발, 테스트, 배포 빠르게 서비스를 확장할 수 있습니다.
클라우드 서비스 종류에는 다음 세가지가 있습니다.
IaaS (Infrastructure as a service)
PaaS (platform as a service)
SaaS (software as aservice)
전세계에서 가장 유명하고 많이 사용하는 AWS에 대해 알아보겠습니다.
AWS는 클라우드 컴퓨팅 장점을 지니고 있습니다.
기업의 기존 자원 및 아키텍쳐를 사용할 수 있습니다. (모델링, os, db 등)
어플리케이션에 aws 리소스를 신속하게 추가하고 제거할 수 있는 확장성과 탄력성을 지니고 있습니다.
보안 모범 사례에 따라 서비스를 구축하고 서비스마다 적절한 보안 기능을 제공합니다. (문서화)
인프라적 안정성을 지니고 있습니다.
AWS의 특징 중 하나는 글로벌 인프라
라는 점인데요.
전세계 어디에서나 AWS에서 배포한 서비스를 이용할 수 있습니다.
지역(region)에 따른 latency는 고려하지 않아서는 안될 중요한 요소인데요.
요청을 했을 때 응답까지의 반응 시간이 지역에 따라 달라지기 때문입니다.
만약 서울
에서 배포한 서비스를 뉴욕
에서 접근한다고 가정했을 때 같은 지역에서 접근하는 것보다 시간이 오래걸릴 것입니다.
이를 보완하기 위해 AWS는 Edge Location
서비스를 제공하는데요.
Edge Location
이란 CDN
서비스를 위해 캐시 서버를 모아놓은 것을 의미합니다.
CDN 서비스는 Content Deilivery Network의 약자입니다.
결국 CDN 서비스를 이용하는 사용자들이 파일을 빠르게 받고 전송할 수 있도록
전세계에 위치한 캐시 서버에 파일을 복제해주는 것입니다.
AWS에서 제공하는 주요 서비스는 다음과 같습니다.
EC2 (Elastic Computer Cloud)
VPC (Virtual Private Cloud)
S3 (Simple Storage Service)
CloudFront (Contents Delivery Network)
Route53
RDS (Relational Databases Service)
ELB (Elastic Load Balancing)
서버로 들어오는 트래픽을 여러대의 머신으로 전달하는 기능입니다.
개발을 한 나의 웹페이지를 나만 갖고 있는다면,,,
그보다 의미없는 일은 정말 없을 것입니다.
얼른 세상으로 내 웹/앱을 내보내주어야 비로소 그 가치를 발휘하게 될 것입니다.
다음 포스팅에서는 AWS를 통해 백엔드 서버를 배포하는 방법에 대해 알아보겠습니다.