aws x-ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (aws...

26
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 윤석찬 @channyun AWS 테크에반젤리스트 AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기

Upload: amazon-web-services-korea

Post on 23-Jan-2018

749 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

윤석찬

@channyunAWS�테크에반젤리스트

AWS�X-Ray를 통한서버리스분산애플리케이션추적하기

Page 2: AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)

일반적인개발과정단계

• 타시스템과통합테스트

• 부하테스트• UI 테스트• 침투테스트

• 소스코드커밋• 코드상호검토

(peer�review)

• 코드컴파일• 유닛테스트• 스타일검증• 빌드테스트• 콘테이너

이미지제작

• 프로덕션환경으로배포

Source Build Test Production

Page 3: AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)

DevOps란 무엇일까요?

개발사이클속도를높이는것 = 잦은실험및혁신 =�서비스성공

developers customers

releasetestbuild

plan monitor

배포파이프라인

피드백메카니즘

민첩한소프트웨어개발사이클을위한자동화

Page 4: AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)

DevOps를 위한개발아키텍처및개발문화

Microservices Two-Pizza�Team Automation

작은서비스개발단위로쪼개 API로연동하여개발민첩성및독립적배포가능

서비스개발및배포운영등을모두맡는자율적이고오너쉽을가진팀구성및문화

개별팀이자신의서비스개발에만집중할수있는자동화도구제공

Page 5: AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)

DevOps 개발프로세스개념

지속적통합: Continuous�integration

지속적전달: Continuous�delivery

지속적배포: Continuous�deployment

Source Build Test Production

Page 6: AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)

Source Build Test Production

AWS�기반 DevOps�개발도구

Third PartyToolingAWS CodeCommit AWS CodeBuild AWS CodeDeploy

AWS Elastic BeanstalkAWS CloudFormation

AWS CodePipeline

AWS CodeStar

AWS IAM

Amazon CloudWathch

3rd Party Extensions

Page 7: AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)

AWS�기반 DevOps�개발도구

AWS CodeCommit

AWS CodeDeploy

AWS CodePipeline

AWS CodeBuild

AWS CodeStarAmazon CloudWatch AWS CloudTrail

AWS Config AWS X-Ray

EC2 System Manager

AWS CloudFormation

AWS OpsWorks AWS OpsWorks for Chef Automate

AWS ElsticBeanstalk

EC2 Container Service

Page 8: AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)

전통적인소프트웨어디버깅

소프트웨어디버깅과정• 코드개발시문제재현코드및로그삽입

• 로컬에서코드에중단점을설정하여실행을중지하고, 변수및호출스택검사

• 테스트환경으로 (필요에따라) 추가로그를삽입후, 애플리케이션재배포

• (해결될때까지) 무한반복

문제점• 전통적인 디버깅 프로세스는 로컬 개발, 테스트 배포 및 정식 서비스에서

나오는문제를전반적으로확인하기어려움

• 마이크로서비스또는서버리스같은최신분산아키텍처에서활용이어려움

• 개발자에게지루하고반복적이며시간이많이걸림

• 그냥 QA 엔지니어에게맡긴다면? 해결될까

Page 9: AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)

AWS�X-Ray�서비스

성능추적(Tracing)애플리케이션서비스를통과하는모든요청에대한데이터수집

트레이스저장생성된모든데이터를저장

서비스맵보기지연속도, HTTP상태, 메타데이터를시작적으로표시

문제분석비정상적인동작및원인파악

AWS��기반마이크로서비스아키텍처나서버리스같은분산애플리케이션을분석하고디버깅하는데유용한서비스

Page 10: AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)

AWS�X-Ray�소개

EC2�(ECS),�ElasticBeanstalk,�ELB,�API�Gateway,��Lambda�등의다양한 AWS�클라우드환경에서사용가능(복수 AWS�계정및리전의서비스추적가능)

손쉽게 X-Ray�SDK (Node.js,�Java,�Go,�Python�및 .NET)�및 클라이언트프로그램으로엔드-투-엔드추적가능(관리콘솔, AWS�CLI,�SDK�접속지원및 X-Ray�API 맞춤백오피스구축가능)

http://docs.aws.amazon.com/ko_kr/xray/latest/devguide/xray-gettingstarted.html

AWS�IAM 연동을통한보안및권한관리

서비스맵을통한시각적구성및트레이스상세도표를제공하며,서버와클라이언트사이드의지연속도, 데이터필터링및검색가능

Page 11: AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)

AWS�X-Ray�DaemonAmazon Linux AMI, RHEL, Ubuntu, OS X 및 윈도서버설치가능

App & X-RaySDK

EC2 Instance

X-Ray Daemon

LocalhostUDP

X-Ray API

HTTPS

HTTPS

Console

App & X-RaySDK

Server

X-Ray Daemon

LocalhostUDP

IAM Role AWSCredentials

DevOps Team

HTTPS

Page 12: AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)

AWS�X-Ray�Daemon�설치방법

Page 13: AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)

AWS�X-Ray�개념설명

user

Amazon API Gateway

AWS Lambda

Amazon DynamoDB

AmazonSQS queue

Trace 클라이언트부터전체서비스 기록 Annotations 별도필터로추적가능한사용자정의데이터

Segments 개별서비스에서생성된데이터 Metadata 필터로추적하지않는비지니스데이터

Sub-segments 원격호출이나 개별서비스내데이터처리 Errors 정규화된오류메시지

Page 14: AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)

AWS�X-Ray�SDK

Node.js, Java, Go, Python 및 .NET 지원 가능하며, 간단한 코드삽입만으로각서비스의메타데이터를자동으로수집가능

• AWS services using the AWS SDK

• Non-AWS services over HTTP and HTTPS

• Databases (MySQL, PostgreSQL, and Amazon DynamoDB)

• Queues (Amazon SQS)

Amazon ECS

Amazon EC2

AWS Elastic

Beanstalk

AmazonSQS

AmazonSNS

AmazonRDS: Postgres, MySQL, Aurora

Amazon API

Gateway

AmazonDynamoDB

AWSLambda

Page 15: AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)

AWS�X-Ray�SDK 코드삽입예제

Page 16: AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)

AWS�X-Ray�SDK 코드삽입예제:�Java

Page 17: AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)
Page 18: AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)
Page 19: AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)
Page 20: AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)
Page 21: AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)
Page 22: AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)

예제: X-Ray기반이미지인식서비스성능측정

https://github.com/awslabs/aws-xray-rekognition-lambda-sample

Page 23: AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)

AWS�X-Ray�비용

프리티어 (12개월이후에도종료하지않음)• 100,000개의트레이스저장• 1,000,000개의스캔및검색

추가요금• 1백만트레이스저장당 5달러• 1백만트레이스스캔및검색당 0.5달러

참고사항• 고객이직접샘플링비율을선택가능

트레이스의최대크기500KB

트레이스의저장기간30일

Page 24: AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)

AWS�X-Ray�비용산정사례

Q:�시간당 2,000건의요청을수신하는애플리케이션이있고 10%를샘플링해서저장한후, 매일 100개의쿼리를수행해서최슨 1시간단위의200개를스캔해서 50개를검색하는경우

Page 25: AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)

참고자료

서비스홈페이지: https://aws.amazon.com/xray

정식출시 (4월 20일)• https://aws.amazon.com/ko/blogs/korea/aws-x-ray-update-general-

availability-including-lambda-integration/

기술 문서:�http://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html

• .NET�샘플코드:�https://github.com/awslabs/aws-xray-dotnet-webapp

• Java�샘플코드:�https://github.com/awslabs/eb-java-scorekeep/tree/xray

• Node.js 샘플코드:�https://github.com/awslabs/eb-node-express-sample/tree/xray

• CloudWatch Log�수집: https://github.com/awslabs/cloudwatch-xray-apm-demo

Page 26: AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)