aws x-ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (aws...
TRANSCRIPT
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
윤석찬
@channyunAWS�테크에반젤리스트
AWS�X-Ray를 통한서버리스분산애플리케이션추적하기
일반적인개발과정단계
• 타시스템과통합테스트
• 부하테스트• UI 테스트• 침투테스트
• 소스코드커밋• 코드상호검토
(peer�review)
• 코드컴파일• 유닛테스트• 스타일검증• 빌드테스트• 콘테이너
이미지제작
• 프로덕션환경으로배포
Source Build Test Production
DevOps란 무엇일까요?
개발사이클속도를높이는것 = 잦은실험및혁신 =�서비스성공
developers customers
releasetestbuild
plan monitor
배포파이프라인
피드백메카니즘
민첩한소프트웨어개발사이클을위한자동화
DevOps를 위한개발아키텍처및개발문화
Microservices Two-Pizza�Team Automation
작은서비스개발단위로쪼개 API로연동하여개발민첩성및독립적배포가능
서비스개발및배포운영등을모두맡는자율적이고오너쉽을가진팀구성및문화
개별팀이자신의서비스개발에만집중할수있는자동화도구제공
DevOps 개발프로세스개념
지속적통합: Continuous�integration
지속적전달: Continuous�delivery
지속적배포: Continuous�deployment
Source Build Test Production
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
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
전통적인소프트웨어디버깅
소프트웨어디버깅과정• 코드개발시문제재현코드및로그삽입
• 로컬에서코드에중단점을설정하여실행을중지하고, 변수및호출스택검사
• 테스트환경으로 (필요에따라) 추가로그를삽입후, 애플리케이션재배포
• (해결될때까지) 무한반복
문제점• 전통적인 디버깅 프로세스는 로컬 개발, 테스트 배포 및 정식 서비스에서
나오는문제를전반적으로확인하기어려움
• 마이크로서비스또는서버리스같은최신분산아키텍처에서활용이어려움
• 개발자에게지루하고반복적이며시간이많이걸림
• 그냥 QA 엔지니어에게맡긴다면? 해결될까
AWS�X-Ray�서비스
성능추적(Tracing)애플리케이션서비스를통과하는모든요청에대한데이터수집
트레이스저장생성된모든데이터를저장
서비스맵보기지연속도, HTTP상태, 메타데이터를시작적으로표시
문제분석비정상적인동작및원인파악
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 연동을통한보안및권한관리
서비스맵을통한시각적구성및트레이스상세도표를제공하며,서버와클라이언트사이드의지연속도, 데이터필터링및검색가능
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
AWS�X-Ray�Daemon�설치방법
AWS�X-Ray�개념설명
user
Amazon API Gateway
AWS Lambda
Amazon DynamoDB
AmazonSQS queue
Trace 클라이언트부터전체서비스 기록 Annotations 별도필터로추적가능한사용자정의데이터
Segments 개별서비스에서생성된데이터 Metadata 필터로추적하지않는비지니스데이터
Sub-segments 원격호출이나 개별서비스내데이터처리 Errors 정규화된오류메시지
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
AWS�X-Ray�SDK 코드삽입예제
AWS�X-Ray�SDK 코드삽입예제:�Java
예제: X-Ray기반이미지인식서비스성능측정
https://github.com/awslabs/aws-xray-rekognition-lambda-sample
AWS�X-Ray�비용
프리티어 (12개월이후에도종료하지않음)• 100,000개의트레이스저장• 1,000,000개의스캔및검색
추가요금• 1백만트레이스저장당 5달러• 1백만트레이스스캔및검색당 0.5달러
참고사항• 고객이직접샘플링비율을선택가능
트레이스의최대크기500KB
트레이스의저장기간30일
AWS�X-Ray�비용산정사례
Q:�시간당 2,000건의요청을수신하는애플리케이션이있고 10%를샘플링해서저장한후, 매일 100개의쿼리를수행해서최슨 1시간단위의200개를스캔해서 50개를검색하는경우
참고자료
서비스홈페이지: 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