Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

찾아가는 AWS 세미나(구로,가산,판교) - AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

1,865 views

Published on

Published in: Technology
  • Be the first to comment

찾아가는 AWS 세미나(구로,가산,판교) - AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

  1. 1. AWS 에서 작은 서비스 구현 하기 솔루션즈 아키텍트 김필중 2016년 10월 27일
  2. 2. 이번 세션의 진행 > 백그라운드 지식 > 시나리오 기반 작은 서비스 구현 > 정리
  3. 3. > 들어가기에 앞서 백그라운드 지식
  4. 4. AWS 클라우드의 다양하고 폭넓은 서비스 고객 및 기술 지원 영업 지원 고객지원 프로페셔널 컨설팅 교육 및 인증 보안 및 빌링 시스템 파트너 생태계 솔루션즈 아키텍트 엔터프라이즈 가상 데스크톱 기업용 공유 도구 기업용 이메일 백업 및 복구 글로벌 리전 (Region) 가용 영역 (AZ) 콘텐츠 배포 지점(Edges) 인프라 핵심 서비스 컴퓨팅 가상머신, 자동확장, 부하분산, 컨테이너, 클라우드 기능 스토리지 오브젝트, 블록, 파일, 아카이브, Import/Export 데이터베이스 관계형, NoSQL, 캐싱, 마이그레이션 네트워킹 VPC, DX, DNS 콘텐츠 배포 (CDN) 하이브리드 환경 데이터 백업 통합 앱 개발 환경 전용 회선 연결 통합 인증 통합 리소스 관리 네트워크 통합 서비스 접근 제어 사용자 인증 관리 암호 키 관리 및 저장 모니터링 로그 기업 자원 설정 및 보고 리소스 사용량 및 감사 보안 및 규정 준수 기업 내 규정 준수 웹 방화벽 비지니 스 앱 비지니스 인텔리전스 데이터베이스 DevOps 도구 네트워킹보안 스토리지 IoT 규칙 엔진 디바이스 섀도 디바이스 SDK 레지스트리 디바이스 게이트웨이 개발 및 운영 도구모바일 서비스앱 서비스데이터 분석 데이터웨어 하우스 하둡/Spark 실시간 데이터 저장 머신 러닝 Elasticsearch 서비스 알람 및 큐 서비스 워크 플로우 풀-텍스트 검색 Email 전송 동영상 변환 원 클릭 앱 개발 모바일 인증 디바이스 동기화 모바일 앱 테스트 푸시 알림 DevOps 리소스 관리 앱 생명주기 관리 도구 컨테이너 서비스 클라우드 함수 리소스 템플릿 API 게이트웨이 실시간 데이터 분석 비지니스 인텔리전스 모바일 분석 모바일 허브 마켓 플레이스
  5. 5. Amazon EC2 가상 서버 (Virtual Machine) CPU/메모리/네트워크에 따라 다양한 인스턴스 타입 제공 다양한 OS 사용 가능 다양한 과금 옵션 (온디맨드/예약/스팟) 컴퓨팅
  6. 6. Amazon S3 어떤 것이든 저장 오브젝트 저장소 확장 가능 99.999999999% 내구성 Static 웹사이트 호스팅 서비스 가능 사용(저장)한 만큼만 지불 오브젝트 저장소
  7. 7. Amazon CloudFront 콘텐츠 배포 네트워크 (CDN) 이미지, 동영상, 파일, 웹 페이지 등 전송 정적/동적 콘텐츠 캐싱 및 가속 업로드 가속 (PUT, POST HTTP 지원) 실제 전송량 만큼 과금 콘텐츠 배포
  8. 8. Auto Scaling 사용자 정의 조건 (ex, 트래픽, CPU 사용률 등)에 따라 EC2 인스턴스를 자동으로 확장 및 축소 비정상적이거나 연결이 안되는 인스턴스를 교체하여 애플리케이션의 고가용성을 유지 자동 확장
  9. 9. Amazon Lambda 이벤트에 응답하는 코드를 작동시키는 Serverless 컴퓨팅 서비스 사용자 정의 커스텀 로직으로 AWS 서비스를 확장 처리된 요청과 동작한 컴퓨팅 시간만큼만 비용 청구 이벤트 처리
  10. 10. 많은 분들이 다음 처럼 질문 하십니다. “클라우드, AWS 관련 얘기가 많이 들려오는데, 어떻게, 어디에 써야 하는지 모르겠어요.” – 아무개 특히나 비지니스 영향이 없어야 하는데..
  11. 11. 뭐든지 해볼 수 있습니다!
  12. 12. 올인! 개발 및 테스트 실제 서비스 미션 크리티컬 개발을 위한 환경과 테스트 환경 실 서비스 애플리케이션 구축 및 마이그레이션 미션 크리티컬 애플리케이션 구축 및 마이그레이션 사내 표준으로 도입
  13. 13. 기존 환경 AWS 클라우드 한번에 옮겨가기 그대로
  14. 14. 기존 환경 한번에 옮겨가기 수십~수백대의 서버들 FTP, NAS 등의 각종 스토리지 L2, L4 장비 백업용 테이프 포크리프트 AWS의 장점은?
  15. 15. 하지만 비지니스에 영향이 있으면 안되는데… 그래서, 작은 서비스 위주로 옮겨봅시다! 비지니스에 영향을 최소화 하는 방향으로요! Serverless 를 활용 한다면 가능 합니다
  16. 16. 왜 Serverless 일까요?
  17. 17. Servers서버의 물리적인 장애를 어플리케이션에서 어떻게 처리하지? 내 서버들에 대한 접근을 어떻게 통제할 수 있지? 서버의 수를 언제 늘려야 하지? 내 서버의 용량을 언제 늘려야 하지? 내 예산에 맞는 서버의 크기는? 내 서버들의 남아있는 용량은 얼마나 되지? (AAHHHHHHHHH!!)
  18. 18. 서버 없는 아키텍쳐 완전 관리형 • 프로비져닝 없음 • 관리요소 없음 • 높은 가용성 개발자 생산성 • 중요한 코드에 집중 • 빠르게 혁신 • 시장에 빠르게 접근 지속적인 스케일링 • 자동으로 • 스케일 업/다운
  19. 19. AWS의 수많은 Serverless 옵션 스토리지 데이터베이스 네트워크 컴퓨팅 콘텐츠 전송 메시징 및 대기열보안 게이트웨이 사용자 관리 모니터링 및 로깅 사물 인터넷 기계 학습
  20. 20. 시나리오 #1 우리는 티켓 예약 서비스를 제공하고 있어요. 서버는 15대가 운영 중이고요. 유명한 가수의 콘서트 예약 시 부하가 가장 커요. 가끔 서비스 장애가 발생하죠… 서버 늘려달라고 해도 평균 사용률이 높지 않다는 이유로 안해주세요. 장애 발생하면 실무자들 능력 부족이라 몰고 가는게 너무 슬프네요…
  21. 21. 떠오르는 생각들 - AWS 는 필요한만큼만 컴퓨팅을 사용할 수 있는 기능을 제공 한다던데 - 예약 페이지만 AWS 에서 구현해볼까? - 그런데 갑자기 늘어나는 트래픽을 감당할만큼 탄력적이긴 할까?
  22. 22. 기존 시스템 백엔드 로직 데이터베이스브라우저/ 모바일
  23. 23. AWS 에서의 예약 페이지 AWS Lambda Amazon API Gateway Amazon DynamoDB Serverless Microservice
  24. 24. AWS Lambda 이벤트에 대한 응답으로 작성한 코드를 실행하는 컴퓨팅 서비스 이벤트 트리거들: • 비동기적 혹은 동기적인 직접 호출을 통해 • Amazon S3 버킷으로의 오브젝트 업로드를 통해 • API Gateway 엔드포인트 호출을 통해 • Amazon SNS 메시지를 통해 • 그 이외에도 다양한 방법으로 사용처: • 데이터 기반의 감사, 분석 및 알림 등을 수행할 때 • 자동으로 확장하는 백엔드 서비스를 만들 때
  25. 25. AWS Lambda 의 이점 지속적으로 확장관리할 서버 없이 코드가 각 트리거의 응답에 따라 실행되어 자동으로 확장. 코드는 병렬로 실행하고 개별적으로 트리거를 처리, 워크로드의 볼륨에 정확하게 맞춰 확장 1초 이하의 미터링 매 100ms의 코드 실행 시간과 코드가 실행된 횟수에 따라 비용이 발생, 코드가 실행되지 않을 땐 그 어떤 과금도 발생 안함 서버를 준비하거나 관리할 필요 없이 코드를 자동으로 실행. 코드를 작성하여 업로드만 하면 작동함 1 2 3
  26. 26. -코드 언어 - 메모리 / 실행시간 -
  27. 27. 서버 확장 Lambda 함수
  28. 28. Lambda의 구성 요소 • Lambda 함수(사용자 작성) • 이벤트 소스 • AWS Lambda 서비스 • 함수 네트워킹 환경
  29. 29. AWS Lambda 함수 • 사용자 코드 (Java, NodeJS, Python) • 실행 시 코드가 가정하는 IAM 역할 • 사용자 코드에 할당된 메모리 양(CPU 및 네트워크에도 영향을 줌) 유효하고 완전한 Lambda 함수
  30. 30. 이벤트 소스 • 함수 실행 시기는 언제입니까? • 현재 이벤트 소스로 사용되는 수많은 AWS 서비스: • S3 • Kinesis • SNS • DynamoDB • CloudWatch • Config Rules • Amazon Echo • 기타 • …및 Amazon API Gateway (더 많은 서비스 제공 예정)
  31. 31. AWS Lambda 서비스 • 서버 관리 또는 확장 없이 함수 코드를 실행 • 함수 실행을 트리거하기 위한 API를 제공 • 트리거 시 규모에 상관없이 병렬로 함수가 실행 • 함수에 추가 기능을 제공 (로깅, 모니터링)
  32. 32. 함수 네트워킹 환경 기본 - VPC 내에 기본 네트워크 환경 제공 • 함수의 인터넷 액세스 상시 허용 • VPC 배포 자산 액세스 불가 고객 VPC - 사용자 VPC의 컨텍스트 내부에서 함수가 실행 • 사용자 VPC 내에서 다른 리소스와 프라이빗 통신 • 익숙한 구성 및 동작: – 서브넷 – ENI – EC2 보안 그룹 – VPC 라우팅 테이블 – NAT 게이트웨이
  33. 33. PlayOn! 스포츠 - 비디오 스트림 처리 랩톱 인코더 HLS S3 재생 VOD 스트림 모바일 클라이언트 CloudFront 스트리밍 라이브 스트림 모바일 클라이언트 CloudFront S3 수집 480p 트랜스코드 HQ 사본 360p 트랜스코드 오디오 전용 트랜스코드 썸네일 QOS 분석 Lambda 함수 종속 연결 http://www.slideshare.net/AmazonWebServices/arc308-the-serverless-company-using-aws-lambda
  34. 34. 시나리오 #2 우리는 모바일 게임 회사 입니다. 초창기 캐주얼 게임으로 크게 성공하고, 중간 중간 소소한 타이틀을 출시 했습니다. 실제 매출에 가장 큰 도움이 되는건 아무래도 이벤트를 진행하는 것 이었습니다. 하지만 이것도 갈수록 그 효과가 줄어들고 있는 것 같아요. 매출이 줄고 있어요… 더욱이 데이터를 기반으로 의사 결정이 중요하다고 하던데… 인력도 부족하고 경험도 부족한 상황 입니다.
  35. 35. 떠오르는 생각들 - 이벤트 시스템을 AWS 에서 구현해볼까? - 데이터 분석도 하고 싶은데… 해본적이 없구나… - 그런데 구성해 두면 뭐해, 관리 인력이 부족한데…
  36. 36. 13시 ~ 18시 매일 12시 30분 게임 서버 확장 Lambda Scheduling 12시 30분 Amazon Elasticsearch 근 실시간 분석 Lambda Scheduling 매일 13시/18시 이벤트 개시/종료 Amazon SNS 푸시 메시지 전송 Lambda 데이터 처리 Amazon S3 데이터 저장 13시/18시 이벤트 개시/종료 à 푸시 메시지 전송 à 데이터 수집 à 저장 à 처리 à 근 실시간 분석 Lambda 스트림 처리 Kinesis Streams 아키텍처 #1
  37. 37. 13시 ~ 18시 매일 12시 30분 게임 서버 확장 Lambda Scheduling 12시 30분 Amazon Elasticsearch 근 실시간 분석 Lambda Scheduling 매일 13시/18시 이벤트 개시/종료 Amazon SNS 푸시 메시지 전송 Lambda 데이터 처리 Amazon S3 데이터 저장 Kinesis Firehose 아키텍처 #2 13시/18시 이벤트 개시/종료 à 푸시 메시지 전송 à 데이터 수집 à 저장 à 처리 à 근 실시간 분석
  38. 38. 13시 ~ 18시 매일 12시 30분 게임 서버 확장 Lambda Scheduling 12시 30분 Amazon Elasticsearch 근 실시간 분석 Lambda Scheduling 매일 13시/18시 이벤트 개시/종료 Amazon SNS 푸시 메시지 전송 Kinesis Analytics Kinesis Streams Kinesis Firehose 아키텍처 #3 13시/18시 이벤트 개시/종료 à 푸시 메시지 전송 à 데이터 수집 à 저장 à 처리 à 근 실시간 분석
  39. 39. Amazon Kinesis Streams 스트리밍 데이터를 처리 하거나 분석하는 커스텀 애플리케이션을 개발 Amazon Kinesis: 스트리밍 데이터를 쉽게 이용 AWS 에서 실시간 데이터 스트림 관련 작업을 쉽게하는 서비스 Amazon Kinesis Firehose 방대한 볼륨의 스트리밍 데이터를 Amazon S3나 Redshift로 쉽게 로드 Amazon Kinesis Analytics 표준 SQL쿼리를 이용 하여 데이터 스트림을 쉽게 분석
  40. 40. Amazon Kinesis Streams 는 1초 이하의 처리 지연으로 스트리밍되는 각 레코드마다 커스텀 처리를 수행하고 선택적으로 스트림 처리 프레임워크들을 사용할 수 있는 워크로드에 맞는 서비스 Amazon Kinesis Firehose 는 관리 운영 없이 S3 또는 Redshift 를 기반으로하는 기존 분석 툴들을 그대로 사용할 수 있고 60초 또는 그 이상의 데이터 지연을 요구하는 워크로드에 맞는 서비스 Amazon Kinesis Streams 와 Firehose
  41. 41. Amazon Kinesis Streams Easy administration: 스트림 생성, 샤드와 수용량 설정. 데이터 쓰루풋 rate 와 볼륨에 맞게끔 확장. Build real-time applications: Kinesis Client Library (KCL), Apache Spark/Storm, AWS Lambda 등을 활용해 스트리밍 데이터 처리 Low cost: 어떠한 크기의 워크로드에도 비용 효율적
  42. 42. • Zero administration: 애플리케이션 개발 및 관리 인프라 없이 S3 또는 Redshift로 스트리밍 데이터 를 캡처하여 전송 • Direct-to-data store integration: 간단한 설정만으로 스트리밍 데이터를 일괄처리, 압축, 암호화 하여 거의 60초 이내에 목적지에 전송 • Seamless elasticity: 특별한 개입없이 데이터 처리량에 맞는 원활한 확장 Firehose 로 스트리밍 데이터를 캡처하고 전송 Firehose는 지속적으로 S3 또는 Redshift로 스트리밍 데이터를 로드 선호하는 BI 툴들을 사용하여 스트리밍 데이터를 분석 Amazon Kinesis Firehose 방대한 양의 스트리밍 데이터를 Amazon S3 나 Amazon Redshift 로 쉽게 로드
  43. 43. Amazon Kinesis Analytics Apply SQL on streams: Kinesis Stream 과 Firehose Delivery Stream 에 쉽게 연결하여 SQL 기술을 적용. Build real-time applications: 1초 이내 프로세싱 지연으로 거대한 스트리밍 데이터를 지속적으로 처리 Easy Scalability : 데이터 쓰루풋에 맞게끔 탄력적으로 확장 Connect to Kinesis streams, Firehose delivery streams Run standard SQL queries against data streams Kinesis Analytics can send processed data to analytics tools so you can create alerts and respond in real-time
  44. 44. Amazon Elasticsearch Service 는 클라우드에서 Elasticsearch 클러스터를 쉽게 구성하고, 운영하며 확장할 수 있는 관리형 서비스 쉽게 클러스터를 구성하고설정을 관리 IAM 를 통한 보안 Amazon CloudWatch 를 통한 모니터링 CloudTrail 을 통한 감사 AWS 서비스들과 통합 가능 CloudWatch Logs, Amazon DynamoDB, Amazon S3, Amazon Kinesis ELK 를 지원 Amazon Elasticsearch Service
  45. 45. 이벤트 기간내 Top 10 결제 유저 이벤트 스테이지에서 결제 발생 횟수 및 금액 스테이지별 결제 발생 횟수 (녹색: 이벤트 스테이지) 이벤트 대상 아이템 획득 횟수 전체 아이템 획득 횟수(3: 이벤트 아이템) 스테이지별 클리어 성공 및 실패 횟수
  46. 46. 그 이외에도 로그 정리 작업 통계를 위한 배치 작업 알람 작업 인프라 자동화 작업
  47. 47. 시나리오 #2 우리는 모바일 게임 회사 입니다. 초창기 캐주얼 게임으로 크게 성공하고, 중간 중간 소소한 타이틀을 출시 했습니다. 실제 매출에 가장 큰 도움이 되는건 아무래도 이벤트를 진행하는 것 이었습니다. 하지만 이것도 갈수록 그 효과가 줄어들고 있는 것 같아요. 매출이 줄고 있어요… 더욱이 데이터를 기반으로 의사 결정이 중요하다고 하던데… 인력도 부족하고 경험도 부족한 상황 입니다. : 서버없이, 자동화로 인력 부족 해소 및 장애 요인 최소화 : 많이 사용되는 스택을 관리형으로 사용하여 경험 부족을 채움 : 근 실시간으로 데이터를 분석하여 의사 결정에 활용
  48. 48. 시나리오 #3 전 개발자에요. 저희 서비스는 잘 동작하고 있어요. 건들고 싶지 않아요. 그런데 단 하나 불만이 있는데요. 서비스에 기능이 추가되기 전 테스트를 하려면 다양한 환경이 필요한데, 그런 환경 구성이 쉽지 않네요. 여유 리소스도 없고 시간도 필요 하고… 또, 간단한 웹 기반 툴 만들어서 팀이랑 같이 쓰려니 어디에다 해야 할지... 개발 서버는 개발 테스트 용이라 힘들고, 제 컴퓨터를 항상 켜둘 수는 없고…
  49. 49. 떠오르는 생각들 - AWS 에서는 다양한 환경을 순식간에 구성할 수 있다고 하던데? - 그런데 간단한 웹 기반 툴을 위해 서버를 유지해야 할까? - 그것도 안 쓸 땐 돈만 나가는데…
  50. 50. SPPutPaste 웹 브라우저 Amazon S3 동적 콘텐츠 정적 콘텐츠 Amazon DynamoDB 간단한 웹 기반 툴: Serverless Pastebin (gist) Amazon API Gateway ServerlessPastebin - pid - content - created_at SPGetPaste SPUpdatePaste SPDeletePaste 모바일 /paste POST OPTIONS /{id} POST GET PUT DELETE OPTIONS Amazon Route 53 s3://serverless.piljoong.com
  51. 51. Amazon API Gateway
  52. 52. API의 완전 관리형 서비스 생성 구성 게시 보관 모니터링 보안
  53. 53. Amazon API Gateway RESTful API 들을 생성, 배포, 유지, 관리 63 개의 엣지 로케이션을 가진 콘텐츠 전송 네트워크를 활용 DDoS 방어와 쓰로틀링 기능 제공 API 스테이징 가능 (dev, test, prod 등) AWS Lambda Amazon API Gateway Amazon EC2 AWS API On-prem server
  54. 54. 시나리오 #4 AWS Lambda 로 좋아 졌다는 말들은 많이 들었어요. 그래도 프로덕션에 적용하기는 위험하지 않을까 합니다. (팀장님이 그래요…)
  55. 55. 떠오르는 생각들 - 실제 서비스일 필요는 없지 않을까? - 테스트, 관리 등등에서 활용할 수 있지 않을까?
  56. 56. https://goad.io/
  57. 57. https://goad.io/
  58. 58. 참고: AWS 부하 테스트와 관한 정보는 http://bit.ly/LoadTestingOnAWS
  59. 59. 시나리오 #5 저희는 모바일 애플리케이션을 서비스 하고 있습니다. UX 가 강점이고, 아이디어가 좋다는 평가가 많아요. 그런데, 무엇이 문제인지 비지니스 관점에서 성적이 좋지 못 해요. 특히나 실제 사용자(DAU)는 많은데 이상하네요…
  60. 60. 떠오르는 생각들 - 사용자가 원하는게 무엇이고, 어떤 행동 패턴을 보이는지 알면 도움이 될까? - 모바일 개발자는 여유가 있지만, 백엔드 개발자는 부족한데.. - 데이터 분석은 뭘 해야 하는거지?
  61. 61. Amazon Mobile Analytics 확장성과 Free Tier 상관 있는 지표에 집중. 60분 동안 가용한 사용 리포트 빠름 매일 수백만 사용자로 부터 생성되는 수억개의 이벤트를 수용할 수 있는 확장성 데이터를 직접 소유 ”규모와 상관 없이 앱 사용 데이터를 쉽게 수집, 가시화, 이해를 위한 서비스” 수집된 데이터는 공유되지 않으며, 재사용되지 않음
  62. 62. Key Business Metrics (with one line of code) 1. Monthly Active Users (MAU) 2. Daily Active Users (DAU) 3. New Users, 4. Daily Sessions, 5. Sticky Factor, 6. 1-Day Retention, 7. Avg. Revenue per DAU, 8. Daily Paying Users, 9. Avg. Paying DAU
  63. 63. 사용자가 행한 특정 행동으로 앱에 대한 행동의 통찰력을 얻을 수 있음 얼마나 자주 Custom Event 가 발생하였고, Attribute 와 Metric 의 추가 정보를 포함한 리포트를 제공 예제 좋아요/공유 횟수를 추적 레벨별 사용자의 플레이 중지 비율에 대한 이해 사용자 세션별 음악이 재생된 횟수 In-app 아이템의 인기도 Custom Events
  64. 64. Mobile Analytics 초기화 // Within your activity private static MobileAnalyticsManager analytics; // Within your activity onCreate() try { AnalyticsConfig options = new AnalyticsConfig(); options.withAllowsWANDelivery(true); analytics = MobileAnalyticsManager.getOrCreateInstance( getApplicationContext(), "YOU MOBILE ANALYTICS APP ID", Regions.US_EAST_1, cognitoProvider, // You need a Cognito credential provider options ); } catch(InitializationException ex) { Log.e(this.getClass().getName(), "Failed to initialize Amazon Mobile Analytics", ex); }
  65. 65. Activity Lifecycle 관리 @Override protected void onPause() { super.onPause(); if(analytics != null) { analytics.getSessionClient().pauseSession(); // Attempt to send any events that have been recorded to the Mobile Analytics service. analytics.getEventClient().submitEvents(); } } @Override protected void onResume() { super.onPause(); if(analytics != null) { analytics.getSessionClient().resumeSession(); } }
  66. 66. Custom Event 기록 public void onLevelComplete(String level, String difficulty, double timeToComplete, int playerState) { // Create a Level Complete event with some attributes and metrics(measurements) // Attributes and metrics can be added using with statements AnalyticsEvent levelCompleteEvent = analytics.getEventClient().createEvent("LevelComplete") .withAttribute("LevelName", levelName) .withAttribute("Difficulty", difficulty) .withMetric("TimeToComplete", timeToComplete); // attributes and metrics can also be added using add statements if (playerState == STATE_LOSE) levelCompleteEvent.addAttribute("EndState", "Lose"); else if (playerState == STATE_WIN) levelCompleteEvent.addAttribute("EndState", "Win"); // Record the Level Complete event analytics.getEventClient().recordEvent(levelCompleteEvent); } this.onLevelComplete(”Taipei Hotpot Hotspot", "Very Difficult", 2734, STATE_WIN);
  67. 67. Monetization Event 기록 EventClient eventClient = mobileAnalyticsManager.getEventClient(); // create a builder that can record purchase events for Amazon IAP AmazonMonetizationEventBuilder builder = AmazonMonetizationEventBuilder.create(eventClient); Event purchaseEvent = builder.withProductId(purchasedItem.getSku()) .withFormattedItemPrice(purchasedItem.getPrice()) .withQuantity(1).build(); eventClient.recordEvent(purchaseEvent); // create a builder that can record purchase events for Google Play IAP GooglePlayMonetizationEventBuilder builder = GooglePlayMonetizationEventBuilder.create(eventClient); Event purchaseEvent = builder.withProductId(sku) .withFormattedItemPrice(price) .withTransactionId(purchase.getOrderId()) .withQuantity(1).build(); eventClient.recordEvent(purchaseEvent); MonetizationEventBuilder AmazonMonetizationEventBuilder CustomMonetizationEventBuilder GooglePlayMonetizationEventBuilder VirtualMonetizationEventBuilder
  68. 68. S3 로 추출 후 다양한 방법으로 분석 Mobile Client Amazon S3 Amazon Redshift Amazon Mobile Analytics Hadoop/Spark Amazon EMR Amazon Glacier Archive Batch
  69. 69. Query And Visualize Data Mobile Client Amazon S3 Amazon Redshift Amazon Mobile Analytics Augment Your Data External Data S3 로 추출 후 Redshift 적재 및 가시화
  70. 70. 시나리오 #6 저희는 모바일 애플리케이션 개발을 그냥 처음부터 다 AWS 에서 하고 싶어요!
  71. 71. 사용자 인증 접근 제어 사용자 행동 분석 콘텐츠 저장 및 공유 데이터 동기화 미디어 전송 공유 데이터 저장 실 시간 데이터 스트림비지니스 로직 수행 푸시 알림 전송 사용자와 인증 제공 관리 클라우드 리소스에 안전하게 접근 디바이스 간의 사용자 설정 동기화 활성 유저, 인게이지먼트 추적 서버 없이 상태 없는 커스텀 코드 실행 사용자 제작 사진과 미디어 저장 및 공유 모바일 디바이스 자동 인지 콘텐츠를 빠르게 글로벌로 전송 메시지를 전송하여 사용자 인게이지먼트 레벨 향상 사용자와 디바이스 간 NoSQL 데이터를 빠르게 저장 및 쿼리 실 시간 클릭스트림 로그 수집 및 빠르게 동작 수행 TYCOON 麻辣火鍋
  72. 72. TYCOON 麻辣火鍋 사용자 인증 접근 제어 사용자 행동 분석 데이터 동기화 Amazon Mobile Analytics Amazon Cognito (Sync) AWS Identity and Access Management Amazon Cognito (Identity) 콘텐츠 저장 및 공유 미디어 전송 Amazon S3 Amazon CloudFront (Device Detection) 공유 데이터 저장 Amazon DynamoDB Amazon Lambda 푸시 알림 전송 Amazon SNS Mobile Push AWS Mobile SDK 실 시간 데이터 스트림비지니스 로직 수행 Amazon Kinesis
  73. 73. 그 이외에 Lambda 활용 방안
  74. 74. Lambda를 활용하여 CloudTrail 로그 감사 AWS Lambda Amazon S3Amazon CloudTrail Amazon SNS AWS IAM
  75. 75. Lambda를 활용하여 인프라 운영 자동화 AWS Lambda Amazon SNS Amazon CloudWatch Alarm ec2 runInstance ecs startTask beanstalk updateApp kinesis splitShard Any API call https://aws.amazon.com/blogs/compute/scaling-amazon-ecs-services-automatically-using-amazon-cloudwatch-and-aws-lambda/
  76. 76. Lambda를 활용하여 Lambda function 배포 https://aws.amazon.com/blogs/compute/dynamic-github-actions-with-aws-lambda/ AWS Lambda Amazon SNS GitHub Repo lambda createFn ()
  77. 77. Serverless 아키텍처 패턴
  78. 78. 마이크로서비스
  79. 79. 모바일 백엔드
  80. 80. 실시간 분석 엔진
  81. 81. > 정리
  82. 82. AWS 활용 = Building Block 조립 작은 서비스 구축에 적절한 다양한 서비스들을 유연하게 조립하여 활용
  83. 83. 무엇이든 구축해 보세요! Amazon API Gateway AWS Lambda Amazon DynamoDB
  84. 84. 참고자료는 여기에! https://aws.amazon.com/ko/ https://aws.amazon.com/ko/new/ https://aws.amazon.com/ko/blogs/aws/ http://aws.amazon.com/ko/documentation/ https://aws.amazon.com/ko/whitepapers/ https://twitter.com/awskorea
  85. 85. 감사합니다!

×