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.

Serverless Architecture - 김현민

1,559 views

Published on

서버리스 아키텍쳐의 등장 배경과 AWS의 서비스를 이용해서 서버리스 스택을 구성하는 방법, 다양한 아키텍쳐 소개 및 프레임워크를 알려드립니다.

Published in: Software
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Serverless Architecture - 김현민

  1. 1. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 김현민, MEGAZONE Serverless Architecture S3, Lambda, API Gateway
  2. 2. 본 강연에서 다룰 내용 서버리스 아키텍쳐의 등장 배경 Amazon S3 소개 AWS Lambda 소개 AWS API Gateway 소개 서버리스 아키텍쳐 구조 소개 서버리스 아키텍쳐 개발 프레임워크 소개
  3. 3. Serverless Architecture
  4. 4. 물리적인 서버 (On-Premise) • 테스트 환경과 운영환경이 서로 다르다 • 운영환경은 주기적으로 업데이트가 필요함 • 느린 개발주기 • 폴리글랏 프로그래밍에 친숙하지 않음 • 배포하는데 몇 주가 걸리고, 배포가 수년간 지속됨
  5. 5. 가상 서버 (Virtual Machine) • 운영환경은 변하지 않음 • 신속한 개발 주기 및 배포가 가능함 • Multi-tenancy • 폴리글랏 프로그래밍에 친숙함 • 배포하는데 몇 분이 걸리고, 배포가 몇 주간 지속됨 Amazon EC2
  6. 6. 컨테이너 (Containers) • 테스트 환경과 운영환경이 동일함 • 운영환경은 변하지 않음 • 좀 더 신속한 반복 및 배포 • High multi-tenancy • 폴리글랏 프로그래밍에 친숙함 • 몇 초 만에 배포되고, 몇 시간 동안 유지됨 Amazon ECS
  7. 7. 서버리스 (Serverless) • 컴퓨팅의 최소 단위 • 높은 확장성 • 신속한 개발 반복 • Extreme multi-tenancy • 매우 쉽게 공동 작업을 할 수 있음 • 독립적으로 배포되고, 몇 초 동안 유지됨 AWS Lambda
  8. 8. Amazon의 서버리스 에코 시스템 Lambda SNS SQS DynamoDB S3 Kinesis
  9. 9. 서버리스란? • 아직 서버가 있지만, 더 이상 관리하지 않음 • 또한 더 이상 서버에 액세스 하지 않는다는 의미 • 따라서 개발자가 따로 서버 설정이나 최적화를 할 필요가 없습니다
  10. 10. 서버리스 컴퓨팅이란? • 가상머신 • 가상머신이 확장 단위 • 하드웨어 추상화 • 컨테이너 • 어플리케이션이 확장 단위 • 운영체제 추상화 • 서버리스 • 함수가 확장 단위 • 프로그래밍 언어 런타임 추상화 EC2 ECS Lambda
  11. 11. 어떻게 선택해야할까요? • 가상머신 • “CPU, 스토리지, 네트워크 및 내가 원하는 OS를 구성하고 싶다” • 컨테이너 • “서버를 실행하고, 어플리케이션을 구성하고, 확장을 제어하고 싶다” • 서버리스 • “필요할때만 내 코드를 실행함” EC2 ECS Lambda
  12. 12. 서버리스 컴퓨팅은 신속한 반복 작업을 도와주고 운영 및 관리의 부담을 제거 하여 전체 개발 속도를 높여줍니다
  13. 13. Amazon S3
  14. 14. Amazon Simple Storage Service(S3)의 장점 • 2006 AWS 시작시, 가장 범용적인 서비스로 시작 • 무제한 용량의 내구성 높은 객체 스토리지로서 다양한 쓰임새 • 정적 웹호스팅, 이미지/동영상 저장, 로그 저장, VM 이미지 백업 등 단순함 확장성 낮은 비용 신뢰성 빠른 속도
  15. 15. AWS Lambda
  16. 16. AWS Lambda란? 높은 확장성 및 빠른 서비스 연동 서버 필요 없이 코드만 배포 함수 실행 시 100ms 단위 과금 서버 없는, 이벤트 처리 방식의 컴퓨팅 서비스 Lambda = 클라우드 함수 기반 마이크로서비스
  17. 17. 인프라의 관리가 불필요 • 실행 기반은 모두 AWS가 관리 • 비즈니스 로직에 집중 • 코드를 업로드 하기만 하면, 나머지는 AWS Lambda가 다음을 핸들링 – Capacity – Scale – Deploy – 복원력 – 모니터링 – 로깅 – 보안패치적용
  18. 18. 자동확장 (Auto Scale) • 이벤트의 발생 빈도에 따라 자동으로 확장 • 프로비저닝 중이거나 완료를 신경 쓸 필요 없음 • 코드를 실행한만큼 비용 지불 • 이벤트 기반 호출 옵션 (여러 AWS서비스들과 통합) • REST API 호출 가능
  19. 19. Bring your own code Node.js/Java로 작성된 코드를 실행 (Python, C#도 가능) Java = Scala, Clojure등의 JVM 기반 언어도 가능 • 128MB 부터 1.5GB 까지 64MB 단위로 메모리 설정 • 할당된 메모에 비례하여 CPU 및 네트워크 자원 할당 • 코드내에서 다음과 같은 기능도 가능 – 쓰레드/프로세스 생성 – 배치 스크립트와 실행 파일의 실행 – /tmp 폴더의 읽기/쓰기 • 각종 라이브러리도 이용 가능 – 네이티브 라이브러리도 가능 – 사용하는 라이브러리를 함께 업로드
  20. 20. 효과적인 권한 통제 • AWS IAM (Identity and Access Management) Role을 사용한 실행 권한 설정 • AWS 이벤트 소스에 대한 자원 정책
  21. 21. 요금 체계 • 100 밀리 세컨드(ms) 단위로 컴퓨팅 시간에 대한 가격 설정 • 요청건에 대한 소액 결제 • 충분한 무료 범위 • 유휴 상태 중에는 청구하지 않음
  22. 22. 이용 사례
  23. 23. 썸네일 생성 및 크기 조절 • S3에 이미지가 업로드 됐을 때 썸네일 이미지 생성 및 크기 조정을 수행 AWS LambdaAmazon S3 Bucket 이벤트 원본이미지 1 썸네일이미지 3 2
  24. 24. 값 체크 및 다른 테이블에 복사 • DynamoDB에 쓰기에 따라 값 체크를 하고 다른 테이블의 업데이트나 푸시 알림을 실행 AWS Lambda Amazon DynamoDB Table and Stream 푸시알림 다른 테이블을 업데이트
  25. 25. 감사(Audit) 및 알림 AWS API 호출 • S3에 저장된 CloudTrail 로그를 분석하고, 이상 한 행동이나 장애가 감지되면 알려줍니다 AWS CloudTrail Logs AWS Lambda Bucket이벤트 푸시 알림
  26. 26. 사진 공유 모바일 어플리케이션 Followers 6. Push알림 - 친구과 팔로워에게 통지 Cognito 1. 인증・인가 ・ 페이스북 응용 프로그램과 연계 Mobile Analytics DynamoDB 4. 메타데이터를 DynamoDB에 등록 - 제목, 코멘트 등 S3 SNS7. 이미지를 게시하는것을 Analytics에 등록 3. 이미지 크기 조정 2. S3에 이미지 업로드 5. 결과를 SNS로 통지 App with AW S Mobile SDK
  27. 27. 모션 센서를 이용한 데이터 수집 및 시각화 • 가속도 센서의 값을 Kinesis에 저장하고, Lambda에서 계산하고, 결과 를 DynamoDB에 저장 • PC 브라우저에서 얻은 결과를 실시간으로 시각화 SmartPhone with JavaScriptSD K DynamoDBS3 1. HTML/JS 4. 센서의 결과를 기록 3. Function시작 Amazon Kinesis 2. 센서의 값을 얻어서 PUT Lambda JavaScript SDK 5. HTML/JS 6. 데이터를 검색해서 JS로 시각 화
  28. 28. API 서버의 대안으로 이용 • 예를들어, 사용자에 따라 콘텐츠를 다르게 보여준다면 • 동기 호출로 실현 DynamoDB 1. HTML/JS S3 4. URL을 바탕으로 콘텐츠 검색 JavaScript SDK 4. 사용자 기반 콘텐츠 (URL) 취득 Lambda 3. 콘텐츠 요청 App with AWS Mobile SDK
  29. 29. Data transformation
  30. 30. 이벤트 기반 배치 Analytics
  31. 31. PlayOn! Sports – Video Stream Processing Laptop Encoders HLS S3 Playback VOD Stream mobile client CloudFront Streaming Live stream mobile client CloudFront S3 Ingest 480p Transcode 360p Transcode Audio-only Transcode Thumbnail QOS Analytics Cascading Lambda Functions HQ Copy
  32. 32. API Gateway
  33. 33. 모놀리식 아키텍처 Client Database Schema LB Customers OrdersInvoices
  34. 34. 모놀리식 아키텍쳐의 장점과 단점 • 장점 • 단순한 형태의 작은 코드베이스 • 빠른 개발 속도 • 쉬운 테스트 • IDE 지원 • 단점 • 코드가 많아질수록 부담 • 시간이 지날수록 느려짐 • 혁신하기가 더 어렵다 • 높은 코드 학습 곡선
  35. 35. 마이크로서비스 아키텍쳐 Client DB Schema LB Customers Orders Invoices LB LB Customers Orders Invoices DB Schema DB Schema Event Handler + Workers
  36. 36. 마이크로서비스 아키텍쳐 장점과 단점 • 장점 • 대규모 응용 프로그램을 위한 더 나은 아키텍쳐 • 장기적으로 개발 속도 향상 • 마이크로서비스 : 학습하기 쉽다 • 확장성 및 오류 제어를 위한 격리 • 단점 • 더 많이 변화하는 부분 발생 • 복잡한 인프라 요구사항 • 일관성 및 가용성 • 테스트 하기가 더 어렵다
  37. 37. API Gateway 패턴 Client DB Schema LB Customers Orders Invoices LB LB Customers Orders Invoices DB Schema DB Schema API Gateway
  38. 38. Amazon API Gateway • 여러 버전 및 스테이징 • API 키 생성 및 배포계획 설정 • 요청의 서명과 인증기능 사용 • 요청 쓰로틀링 및 모니터링 • 백엔드로 AWS Lambda를 이용 가능
  39. 39. Amazon API Gateway의 장점 • 응답을 캐싱할 수 있음 • CloudFront를 이용해서 대기시간을 줄이고 DDoS 공격에 대비 가능 • iOS, Android 및 Javascript용 SDK를 자동 생성 • Swagger 지원 • Request / Response의 데이터 변환
  40. 40. 일반적인 3-Tier 웹 어플리케이션 프레젠테이션 계층 논리 계층 데이터 저장소 계층 Web서버/어플리케이션서버브라우저/모바일 데이터베이스
  41. 41. AWS에서 웹 어플리케이션을 만드는 경우
  42. 42. 서버리스 스택으로 변경
  43. 43. 프론트엔드의 통일
  44. 44. DDoS 공격으로부터 네트워크 보호
  45. 45. 덧붙여서 Lambda의 기능은... • 단독으로 배포/실행이 가능 • 각각의 기능은 독립적으로 실행 • 기능에 대해 개별적으로 언어와 데이터 저장소를 선택 가능 자연적으로 마이크로서비스 아키텍쳐로 다가감
  46. 46. Amazon API Gateway + AWS Lambda
  47. 47. Amazon API Gateway + AWS Lambda = 가장 쉽고 빠르게 마이크로서비스 아키텍쳐로 개발하는 방법
  48. 48. Serverless Frameworks
  49. 49. Serverless Frameworks의 출현 https://github.com/serverless/serverless https://github.com/claudiajs/claudia
  50. 50. Serverless Frameworks의 출현 https://www.zappa.io/ https://github.com/awslabs/chalice
  51. 51. 마무리 AWS Lambda를 통해서 서버 관리가 필요 없는 클라우드 함수 실행 가능 Amazon API Gateway를 통한 손쉬운 API 관리 가능 AWSLambda + API Gateway + 다른 AWS 관리형 서비스 = Serverless Architecuture 로 진화 가능!
  52. 52. 무엇이든 개발해 보세요!! Amazon API Gateway AWS Lambda Amazon DynamoDB
  53. 53. @awskrug #AWSKRUG 해시태그로 소셜 미디어에 여러분의 행사 소감을 올려주세요. Question?
  54. 54. @awskrug #AWSKRUG 해시태그로 소셜 미디어에 여러분의 행사 소감을 올려주세요. 감사합니다

×