IT 서비스 운영의 기본 – SLA 이해하기

SLA의 이해

서비스 수준 협약서(Service Level Agreement)는 서비스를 제공함에 있어서 공급자와 사용자간에 서비스에 대하여 측정지표와 목표 등에 대한 협약서입니다. 여러분이 서비스를 아웃소싱 받고 있다면 서비스 업체에 SLA를 요구할 수 있습니다. 하지만 SLA가 외부 업체를 통해 서비스를 제공 받는 경우에만 작성하는 것은 아닙니다. SLA는 서비스 운영의 내부 규정을 마련하기 위해 정의하기도 합니다. ITSM(IT Service Management)을 운영하는 IT 조직을 가진 기업들은 내부 고객들(기업내 다른 부서)을 대상으로 SLA를 작성하기도 합니다. IT 부서는 SLA를 통해 서비스를 측정하고 정의하고 다른 아웃소싱 업체의 서비스와 비교합니다.

SLA의 역사

SLA는 1980년대 후반 통신 사업자가 기업에 제공하면서 시작되었습니다. 하지만 IT 서비스 사업이 발전하는 상황에 맞물려 이제는 클라우드 서비스와 같은 IT 서비스 기반 사업 전반에 걸쳐 사용되어 지고 있습니다.

SLA가 필요한 이유?

SLA는 제공되는 서비스와 기대하는 품질에 대한 모든 정보를 하나의 문서를 통해 공유합니다. SLA는 책임과 기대에 대해 명확하게 작성된 메트릭입니다. 그렇기 때문에 문제가 발생했을 때 양사가 책임을 떠넘기는 상황을 막을 수 있습니다. SLA를 통해 양사는 요구사항에 대해 동일하게 이해하고 보장 받을 수 있습니다. SLA는 꼭 고객만을 보호하는 것은 아닙니다. 상황에 따라서는 서비스 제공자에게 도움이 될 수도 있습니다. SLA는 오해의 소지가 발생할 수 있는 서비스 레벨에 대해 명시적으로 정의하여 양 당사자를 모두 보호하는 문서입니다.

SLA는 누가 제공하는가?

대다수의 서비스 제공자들은 가격 정책에 따른 표준 SLA를 가지고 있습니다. 이 SLA는 서비스 협상에 좋은 시작 포인트가 될 수 있습니다. 일반적으로 SLA는 공급자의 편의에 맞춰져 있기 때문에 고객의 법적 변호인에 의해 검증되고 변경되기도 합니다.

RFP(Request For Proposals: 제안요구)를 보낼 때, 고객은 기대하는 서비스 수준을 요구할 수 있습니다. 이것은 공급제품과 가격뿐만 아니라 공급자의 결정에 영향을 미치게 됩니다. 예를 들어 사용자가 99.999퍼센트의 시스템 가용성을 요구한다면 그리고 공급자가 사용자의 확정된 디자인을 조정할 수 없다면 SLA는 더 강력한 해결책을 포함하여 다르게 제안되어야 합니다.

SLA는 서비스 제공자의 성능 및 품질을 다양한 방법으로 측정합니다. SLA에 명시된 메트릭은 다음과 같습니다.

가용성과 가동시간 – 서비스를 이용할 수 있는 시간의 비율 서비스 사용가능한 동시 사용자 수 명확한 성능 수치에 대한 벤치마크 (주기적으로 비교) 애플리케이션 응답시간 다양한 문제 상황에 대한 헬프데스크 응답시간

성능 메트릭을 설정하는 것 외에도, SLA는 서비스 제공자는 계약 위반시에 고객을 보상하는 방법에 대해 포함 할 수있다. SLA는 정기적으로 검토해야 하며 기술의 변화에 따라 변경될 수도있습니다.

관련 글:

http://www.slickbar.co.id/documents/2007011221320023(1).pdf http://ww35.nextslm.org/ http://www.cio.com/article/2438284/outsourcing/sla-definitions-and-solutions.html https://en.wikipedia.org/wiki/Service-level_agreement

AWS EC2 Instsance 와탭 자동 등록

클라우드에서 작동하는 서비스가 많아지면서 부하 증감시 자동으로 scale out하는 기능이 대세로 자리잡고 있습니다. 클라우드 사용 비용을 낮추는데도 도움을 줄 수 있고 부하 증감에 대하여 서비스 안정성 및 품질을 높여줄 수 있기에 클라우드를 사용하게 하는 주요 동기중 하나라고 필자는 생각합니다.AWS에서도 사용자가 웹 트래픽의 증감에 실시간으로 대처할 수 있도록 일찌감치 EC2 AutoScaleGroup – ASG 과 Elastic Load Balancer – ELB를 제공하고 있습니다. 이 경우에도 부하에 대응하여 작동하는 EC2 Instance들에 Guest OS 레벨 모니터링(와탭 같은)을 제공하려면 ASG Launch Configuration에 지정된 AMI가 Monitoring Agent를 내장하고 있어야 사용 가능합니다. 또 AWS AutoScaleGroup에서는 부하가 증감함에 따라 EC2 Instance가 삭제되는 경우 모니터링에서 서버 다운 알림을 막아 줄 있는 방법이 필요합니다. 그렇지 않다면 부하 감소로 인한 EC2 Instance Scale Down시에 모니터링(와탭)에서는 서버 다운알림이 발생하게 됩니다. 와탭에서는 이번에 사용자가 AMI에 내장하여 설치할 수 있도록 윈도우 버젼 Agent를 1.4.0으로 업데이트 하였습니다. 이것을 이용하여 어떻게 AWS ASG가 생성 삭제하는 EC2 Instance 를 와탭에 자동 등록/해지 할 수 있는지를 적어보겠습니다.

AWS Instance 생성

20151111_AWS-CreateInstance-01

20151111_AWS-CreateInstance-02

20151111_AWS-CreateInstance-03

20151111_AWS-CreateInstance-04

20151111_AWS-CreateInstance-05

20151111_AWS-CreateInstance-06

20151111_AWS-CreateInstance-07

20151111_AWS-CreateInstance-08

20151111_AWS-CreateInstance-09

20151111_AWS-CreateInstance-10

20151111_AWS-CreateInstance-11

20151111_AWS-CreateInstance-12

AWS Image 생성

20151111_AWS-CreateImage-01 20151111_AWS-CreateImage-02 20151111_AWS-CreateImage-03 20151111_AWS-CreateImage-04

AWS-CreateImage-02
AWS-CreateImage-03
AWS-CreateImage-04

20151111_AWS-CreateImage-05

Whatap 서버리스트에서 자동으로 등록된 서버를 확인하실수 있습니다.

20151111_AWS-CreateImage-06

1. AWS Auto Scale Group – ASG 이란

ASG란 부하가 증감하는것에 비례하여 EC2 Instance 의 수를 조절하여 부하 증감에 자동 대응하는 시스템입니다.

Auto scaling group 생성

그러면 AutoScale Group 을 생성해보도록 하겠습니다.

Create Auto Scaling group버튼을 클릭합니다.

20151111_AWS-CreateAutoScaling-01

AWS> AUTO SCALING>Auto Scaling Groups 에서 Create Auto Scaling group 버튼 을 클릭합니다.

Create a new launch configuration을 선택하고 Next Step을 클릭합니다.

20151111_AWS-CreateAutoScaling-02

 

앞서 작성한 AMI 를 선택합니다. AMI가 탑재하고 있는 Application의 성능을 고려하여 적절히 선택합니다. CPU/Disk/Traffic 부하에 따라 Credit 이 떨어지지 않는 정도의 최하 Type이 적절할 수 있습니다.

20151111_AWS-CreateAutoScaling-03

 

인스턴스 타입을 을 선택후 Next 버튼을 누릅니다.

20151111_AWS-CreateAutoScaling-04

 

Confituratio Detail 을 설정후 Next 버튼을 누릅니다.

20151111_AWS-CreateAutoScaling-05

 

Storage 설정후 Next 버튼을 누릅니다.

20151111_AWS-CreateAutoScaling-06

 

Security Group 설정후 Review 버튼을 누릅니다.

20151111_AWS-CreateAutoScaling-07

 

작성한 내용이 맞는지 확인후 Create luanch Configuration 으로 설정합니다.

20151111_AWS-CreateAutoScaling-08

 

Review후에 Create launch configuration을 클릭하면 생성된 EC2 Instance에서 사용할 Key를 정하게 됩니다. 이 경우 키 이외에도 ActiveDirectory에 Join 하는 것이 관리가 편리합니다.

20151111_AWS-CreateAutoScaling-09

 

이제부터 ASG 본체를 생성하게 됩니다. 이름과 서브넷, ELB를 사용할지 여부를 선택하고 다음을 클릭합니다.

20151111_AWS-CreateAutoScaling-10

20151111_AWS-CreateAutoScaling-11

Auto Scale Group 에서 부하가 증감하는것을 감지하여 자동으로 EC2 Instance를 생성하는 메커니즘을 정의하게 됩니다. 원리는 CloudWatch의 Metric 중 하나를 선택하여 지정된 조건이 만족하면 한번에 Instance 몇개를 생성 삭제할지 지정하게 됩니다.

이것이 전반적인 서비스 품질을 선택하게 되므로 필자는 Scale Out은 빨리 Scale Down은 천천히 하도록 설정하고 있습니다.

20151111_AWS-CreateAutoScaling-12

Notification은 ASG를 생성 후 와탭이 제공하는 별도 스크립트에서 설정하게 됩니다.

20151111_AWS-CreateAutoScaling-13

Key / Value 값을 지정합니다.

20151111_AWS-CreateAutoScaling-14

 

Create Auto scaling group을 클릭하여 설치를 마무리 합니다.

20151111_AWS-CreateAutoScaling-15

Auto scaling group이 생성되어 첫번째 Instance가 생성되고 있는것을 Instances 탭에서 확인할 수 있습니다.

20151111_AWS-CreateAutoScaling-16

Auto scaling group이 Scale down할때 whatap에 feed back을 주도록 설정하기

Auto scaling group이 scale down할 때 EC2 Instance가 삭제되면 whatap 콘솔에서는 서버다운으로 표시되고 알림도 발생하게 됩니다. 이 경우에만 서버 다운이 아니라 서버 정지로 표시될 수 있도록 ASG의 Notification 을 자동 설정하는 방법을 적어보겠습니다. 와탭에서는 자동으로 ASG Notification을 설정할 수 있도록 스크립트 코드를 공개하였습니다. https://raw.githubusercontent.com/whatap/tools/master/aws/ConfigAutoScaleGroup.ps1 위 주소에 있는 파워쉘 파일을 EC2 Windows 2012 Instance 에 다운로드 받아 실행하면 자동으로 Notification을 설정할 수 있습니다. 스크립트를 실해하면 EC2FullAccess/SNSFullAccess 권한이 있는 Access/Secret Key를 입력해야 진행하실 수 있습니다.

위스크립트를 재실행하면 아래와 같이 설정된것을 확인할 수 있습니다.

끝마치며

AWS EC2는 확장성이 높은 서비스를 네트워크/서버 인프라에 대한 대규모 투자 없이 누구나 만들 수 있다고 생각하게 합니다. 그 핵심적인 기능중 하나인 Auto scaling group 과 와탭 Agent의 연동 방법에 대해 적어보았습니다. 와탭에서는 ASG 에서 Scale out되어 생성되는 인스턴스 내부의 정보를 제공할 수 있는 방법을 제공함으로써 고객이 좀 더 부하 증감 폭이 큰 서비스를 높은 품질을 유지하며 안전하게 운영하게 될 수 있기를 바랍니다.

남형석,김광명