SharedIT | 묻고 답하기(AMP)

'Server'와 'Instance'의 차이점, AWS 질문드립니다.

네트워크 완전 초심자이며, 클라우드(AWS) 공부중에 있는 사회 초년생 입니다.


AWS Solution Architect Associate 단계를 공부하고 있습니다.

개념은 가급적 꼼꼼하게 공부하는 방향으로 노력중입니다. 공부하는 도중 명쾌한 해답을 얻지못해 답답한 마음에  질문드립니다.


질문 1. 통상적으로 Field에서  Server와 Instance 가 Interchangable하게 사용이 가능한지 궁금합니다. 

질문 2. 아래 문제에서 아래와 같은 논리로 추론하여 답을 찍었는데, 틀린점 있다면 지적 부탁드립니다.  

-------------------

A company runs a web service on Amazon EC2 instances behind an Application Load Balancer. The instances run in an Amazon EC2 Auto Scaling group across two Availability Zones. The company needs a minimum of four instances at all times to meet the required service level agreement (SLA) while keeping costs low.
If an Availability Zone fails, how can the company remain compliant with the SLA?

(자체번역)

  • 웹 서비스를 운영중인 회사, ALB 뒤에 EC2 Instances 들이 있음

  • EC2 Instance들은 Auto Scaling Group으로 구성 + 2 AZ에 Deploy 되어 있음.

  • SLA를 충족시키기 위해 최소 4개 인스턴스가 동시에 Run하는 것이 필요, 
    비용절감 목표로 최소요구 사항인 4개의 인스턴스로 돌리고 있음.

  • 아래 보기 중 비용을 최대한 아끼면서, 한 AZ가 중단되었을 때 SLA를 충족시킬 수 있는 대안?

  • A. Add a target tracking scaling policy with a short cooldown period.

  • → Target Tracking = 타겟 값(Mainly Computing Resource) 에 대한 Scaling (주로 CPU Utilization) , 자원 명시X, 

  • B. Change the Auto Scaling group launch configuration to use a larger instance type

  • → Keeping Cost Low 인데  Larger Instance type 교체는 추가적인 Cost 발생, TCO↑..

  • C. Change the Auto Scaling group to use six servers across three Availability Zones.

  • D. Change the Auto Scaling group to use eight servers across two Availability Zones.

----------------------

<자체 풀이>


A&B는 배제

 

Assumption.


① C: 3AZ에 2/2/2 Instance들이 고르게 분배되었음. 
    D: 2AZ에 4/4   Instance들이 고르게 분배되었음.


② 문제에서 언급된 Instance 와 Server 가 동치


③ Instance는 모두 동일한 유형의 Instance 가정, i.e 동일한 가격의 인스턴스

  • 1.C 와 D에서는 어느 한 AZ가 Fail 되더라도 Total 4개의 Instance가 살아있어 서비스 제공 가능

  • 2.그렇다면 6개의 Instance vs 8 개의 Instance 가격대결 
    인스턴스 유형 및 가격 동일하다고 가정하면 결국 8개의 인스턴스를 배포한 쪽이 비용이 더 많이나옴.
    (※ AWS는 한 Region 내 서로 다른 AZ 이용료에 추가비용이 없음.)

  • 3.6개의 Instance 가 가격이 더 싸므로 답은 C

틀린부분 지적 감사히 받겠습니다.








2개의 답변이 있습니다.

양성환
  0 추천 | 약 3년 전

인스턴스는 서비스개념이고, 서버는 물리개념으로 보시면 됩니다. 

물리 환경에서는 서버는 인스턴스를 여러개 돌릴수 있었는데, 

클라우드 환경은 mirco-Service 를 지향하기에 인스턴스가 하나의 서비스 , 

즉 하나의 서버로 개념을 매칭하셔도 무방합니다.


그리고 AWS 의 시험자체는 문제에 함정을 많이 심어두기때문에 최소 4개를 보장해야 합니다. 

멀티AZ면 한곳에 장애가 나도 ALB가 자동으로 올려주니 6개로 돌리는것이 적절하다고 봐요 

FANG | 약 3년 전

답변 감사합니다~

wansoo
  0 추천 | 약 3년 전

AWS를 공부하지 않고서는 제대로된 답을 하기 쉽지 않을것 같은 질문이네요.

AWS를 제대로 공부하지 않아... 답을 알려드리기는 어려울 것 같고...

제가 이제까지 공부하면서 알고 있는 지식을 기반으로해서 아는 만큼만 적어 볼께요.


instance라는 건... 객체 지향 언어가 나오면서 많이 사용되기 시작한 용어가 될 것 같은데...

실체라는 의미로 받아 들이면 될것 같습니다.


객체 지향 언어에서 설계도에 해당하는 틀인 class를 이용해서 실체를 찍어 내어 어떤 객체를 만들어 내게 되는데, 구체적으로 작동하는 각 객체가 인스턴스가 되겠고요.

동일한 설계도를 이용해서 만들어 졌기 때문에 똑 같은 모양에, 똑 같은 기능을 하지만... 각각을 구분하기 위해 이름(ID)을 부여해서 사용하게 되겠고...

사람 DNA(설계도)로 만들어진(태어난) 철수, 길동, 영민,... 등이 모두 각각의 인스턴스라고 생각하면 되겠죠.


이 개념을 가상 컴퓨터나 컨테이너 등에 적용한다면...

원본 디스크 이미지를 메모리에 올려서 구체적인 서비스를 하는 실체를 만들어서 사용할때 실제적인 액션을 하는 대상(객체)을 instance라 생각하면 되겠고요.

디스크에 저장되어 있는 원본 이미지 file을 메모리에 올리면서 이름을 부여해서 여러개를 찍어내어 각각을 개별 서버로 구동해서 클러스터를 구성하고 로드 밸런싱으로 부하 분산하여 일 처리를 시키게 되겠는데... 이름이 부여되어 작동되는 각각의 개별 서버들이 인스턴스라고 보면 되겠고요.


사용 가능한 2개의 존이 있는데, 한개 존이 사용하지 못하게 되었을때 계약된 SLA로 어떻게 Compliant(유연성?)를 유지할 수 있겠는가? 라는 질문이 될것 같은데요.


처음에는 2개 존에 가상 서버 인스턴스들을 나눠서 구동하고 있다가 한개 존이 사용하지 못하는 상태가 되었다면... 사용하지 못하게 된 존에서 구동되던 인스턴스들도 함께 사용하지 못하게 되었으니, 사용할 수 있는 남아 있는 존에다 fail된 존에서 구동했던 인스턴스들을 대체할 수 있을 만큼 추가 생성해서 구동하면 될거라 보여 지네요.


글을 적다 보니... Availability zone의 정확한 개념이 이해가 되지 않네요~ ㅎㅎ

이용할수 있는 존이라는 의미같은데...  처음에는 사용할 수 있는 zone이 2개 밖에 없다는 개념인가 생각했다가 한개 availability zone이 fail 했는데, 2군데 availability zone, 3군데 avaiability zone에 여러대의 서버를 올린다는 게 무슨 말인지 혼동이 느껴지네요~ ㅎㅎㅎ

FANG | 약 3년 전

wansoo님 답변 감사합니다.


질문1. Server = Instance ?

엄밀히 사전적 정의로 Instance와 Server가 완전히 같지 않은 것으로 보이나, 필드에서 Instance를 Server로도 통용되는지 궁금했었습니다. 

문제에서는 Instance라고 말하다가 선택지에서 쌩뚱맞게 Server로 말인지 저역시 혼동이 왔었습니다.


질문 2. 두서없이 쓴 것 같아 한번 내용 다듬었습니다. ㅎㅎ

우선 제가 공부한 바로 

복수개의 Data Center의 집합 = 1 Availability Zone (가용영역, 줄여서 AZ)

복수개의 Availability Zone의 집합 = 1 Region

으로 이해하고 있습니다. 

(참조: https://aws.amazon.com/ko/about-aws/global-infrastructure/regions_az/?p=ngi&loc=2)

-------------------

질문 2에서 제가 생각했던 것은 (선택지 C와 D 에서, A,B는 배제)

1. 'D' 선택지도 장애로 인해 1개의 AZ가 중단되더라도 다른 AZ에 4개의 Instance가 배포되어 있기에 SLA 충족


2. 'C' 선택지 역시 1AZ가 중단되더라도 2개의 AZ에서 4개의 Instance가 동작되기에 SLA 충족


3. 그렇다면, C와 D 선택지 중 비용이 저렴한 선택지를 고름


4. Server = Instance 라고 가정.


- C: 총 6개 Instance D: 총 8개 Instance,

- AWS에서 한 Region에서 추가 비용 없이 AZ에 Instance 배포 가능


- C: 3AZ에 Instance들이 2/2/2 개로 고르게 분배되었음. (가정)

- D: 2AZ에 Instance들이 4/4 개로 고르게 분배되었음. (가정)


즉, 6개 Instance vs 8개 Instance 가격 의 대결


5. 선택지에 Instance 유형에 대하여 별도로 명시되어 있는 점이 없으므로 동일한 Instance 유형이라고 가정하며

C와 D에서 말하는 Instance는 같은 가격을 가진다고 가정


6. 6개의 인스턴스가 배포된 쪽이 가격이 더 저렴하므로 답은 C


이런 논리로 C를 답하였는데, 논리가 맞는지, 틀린점이 있다면 어디서 틀렸는지 질문을 올려봤습니다. ㅎㅎ..


P.S AWS Associate 시험 어렵네요... 공부해야할 범위가 너무 넓고 공부할 수 있는 소스들이 한국에는 많이 없어 더욱 힘든 것 같습니다. ㅠㅠ 



wansoo | 약 3년 전

물리 서버에 인스턴스라는 용어는 사용하지 않겠고...

복제해서 사용할 수 있는 가상 서버... 동일한 서버 이미지 소스를 기반으로 여러개 가상 서버를 찍어내어 구동할때 각각의 가상 서버를, 가상 서버 인스턴스라고 부를 수 있겠고요.

서버라는 개념보다는 동일 복제틀을 기반으로 만들어진 객체라는 개념에서 인스턴스라는 용어가 사용되겠고요.


AZ 한개가 fail 했을때 새로운 AZ를 추가로 더 사용가능하다면 fail된 AZ 대신 다른 AZ에 동일하게 서버를 구동시키면되지 않을까요...?

제 생각에는 2개 AZ 중에 1개가 fail했기 때문에 1개 AZ만을 사용할 수 있는 상황에서 성능 저하없이 계속 유지 하려면 한개 fail되지 않은 AZ에서 구동되는 서버들을 좀 더 성능있는걸로 구동해야 하지 않을까 하는 생각이 드네요.

잘은 모르겠지만... 제 생각에는 2번이 답이 아닐까 하는 생각이 드네요~ ^^

FANG | 약 3년 전

네~ 의견 감사합니다 ㅎㅎㅎ