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 re:Invent 특집(1) – 파이선(Python) 개발자를 위한 AWS 활용 방법 (윤석찬)

6,428 views

Published on

최근 입문용 혹은 개발 및 데이터 분석 용도로 파이썬을 사용하는 개발자들이 많이 늘고 있습니다. 본 세션에서는 파이썬을 활용하여 AWS에서 해 볼 수 있는 다양한 서비스와 기능을 소개하고자 합니다. 그 중에서도 Django 및 Flask 같은 웹 프레임워크를 AWS Elastic Beanstalk으로 손쉽게 배포하고 운영하는 방법, AWS Lambda를 통해 Python 기반 서버리스 애플리케이션을 제작하는 방법 그리고, Boto3와 AWS Python SDK를 통해 AWS의 다양한 서비스 API를 다루는 방법을 살펴 봅니다. Python으로 구성된 AWS 기반 인기 오픈 소스 프로젝트를 소개하여 직접 참여하는 방법을 안내합니다. 특히, 가상 서버 호스팅인 AWS re:Invent에서 새로 소개된 Amazon Lightsail 등도 함께 소개합니다.

Published in: Technology
  • Be the first to comment

AWS re:Invent 특집(1) – 파이선(Python) 개발자를 위한 AWS 활용 방법 (윤석찬)

  1. 1. © 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 윤석찬 @channyun AWS 테크에반젤리스트 파이선(Python) 개발자를 위한 AWS 활용 방법 2016년 12월 re:Invent 특집 온라인 세미나
  2. 2.
  3. 3. 본 발표의 주요 주제 • Boto3 소개 및 Amazon Lightsail 활용 • AWS Elastic Beanstalk에서 Django 웹앱 배포 • AWS Lambda 기반 서버리스 앱 개발 • AWS Lambda 및 Flask ASK를 통한 음성 인식 앱 개발 • Amazon Greenglass 소개
  4. 4. 1. Boto 3 소개 § 2006년에 처음 Mitch Garnaat가 Amazon S3용 파이선 클라이언트 로 시작 § 2015년 6월 정식 공개한 후, 모든 AWS 서비스 지원 § 데이터 모델 기반으로 작성되어, JSON 기반 AWS API 모델 활용 § 모델 업데이트만으로 신규 및 변경 API를 바로 바로 지원 가능 § Python 2.6.5+, 2.7, 3.3, 3.4 버전 지원 Boto 3 Botocore Session Resources ClientsConfig Session Credentials Clients Authentication Serialization HTTPS
  5. 5. Boto3 주요 기능 • Resources: § 고수준 객체 지향 인터페이스 • Collections: § 리소스 결과 처리 • Paginators: § 결과 페이지 처리 import boto3 # S3 버킷 목록 출력 S3 = boto3.resource('s3') bucket = s3.Bucket('my-bucket') for obj in bucket.objects.all(): print(obj.key, obj.last_modified) # 버킷 내 객체 페이지 처리 paginator = s3.get_paginator('list_objects') for page in paginator.paginate(Bucket='my-bucket'): for obj in page['Contents']: print(obj['Key'])
  6. 6. Boto3 주요 기능 (2) • Clients: § 저 수준 서비스 연결 • Waiters § 특정 상태에 완료될때 까지 대기 import boto3 # SQS 클라이언트 연결 sqs = boto3.client('sqs') response = sqs.list_queues(QueueNamePrefix='test') print(response['QueueUrls'][0]) ec2 = boto3.client('ec2') # 인스턴스 대기 waiter = ec2.get_waiter('instance_running') waiter.wait(InstanceIds=['i-abc123']) print('Instance is ready!')
  7. 7. Boto3 시작하기 https://github.com/boto/boto3
  8. 8. Amazon Lightsail – 가상 사설 서버 호스팅 • 간편하고 이해하기 쉬운 AWS 서버 호스팅 • 확장성 및 고가용성을 그대로 활용하면서 손쉽게 서버 운영 Launch VM Attach SSD Storage Assign Static IP Configure DNS Create Security Groups Create Instance GO! Created By Amazon Lightsail Manage IAM $5 Per month
  9. 9. Amazon Lightsail – 가상 사설 서버 호스팅 • 기존 AWS 서비스 연결 가능 및 API 및 CLI을 통한 제어 가능 • 사용한 만큼 종량 과금제 그대로 적용 (데이터 사용료 추가 가능) • 1개월 프리티어 제공
  10. 10. Demo: Amazon Lightsail을 통한 Boto3 코드 실행 해보기
  11. 11. Boto3을 이용한 Lightsail 인스턴스 연결 import boto3 # Lightsail 클라이언트 연결 client = boto3.client('lightsail') response = client.create_instances( instanceNames=[ 'my-instance',], availabilityZone='us-east-1a', blueprintId='app_lamp_70', userData='apt-get –y update') print(response['QueueUrls'][0]) waiter = client.get_waiter('instance_running') waiter.wait(InstanceIds=['i-abc123']) print('Instance is ready!')
  12. 12. 2. AWS Elastic Beanstalk을 통한 웹 앱 만들기 • AWS ElasticBeanstalk이란? § AWS 자원을 활용하여 손쉽게 웹 서비스를 구성 및 배포할 수 있는 무료 관리형 서비스 § Amazon EC2 (VPC, Elastic Load Balancing, Auto Scaling, Monitoring), Amazon RDS 및 앱 배포를 결합한 관리 서비스 • AWS EB 활용 방법 § 단계1. 앱 플랫폼 선택 ü Ruby, Python, PHP, Java, NodeJS 기반 오픈소스 애플리케이션 프레임웍 지원 ü DB, 로드밸런싱 및 오토스케일링 § 단계2. 애플리케이션 배포 및 운영
  13. 13. Djaongo 기반 웹 앱 개발하기 • Django란? § 파이썬으로 만들어진 가장 인기있는 무료 오픈소스 웹 애플리케이션 프레임워크 § MVC(Model-View-Controller) 기반 ü https://www.djangoproject.com/ • DjangoGirls란? § Django를 통한 간단 블로그 제작 튜토리얼 제작 및 오프라인 교육 활동 § DjangoGirls 서울 ü https://djangogirls.org/seoul/
  14. 14. Demo: Amazon EB를 통한 Djangogirls 앱 배포 해보기
  15. 15. Dr. Werner Vogels, Amazon.com CTO re:Invent 2015 Keynote
  16. 16. Weeks 가상 컴퓨팅 기술의 변화 Minutes Amazon EC2 Seconds Amazon EC2 Containers Services Milliseconds AWS LambdaOn-Premises
  17. 17. Packaging Updates Execution Run time Unit of Cost VMs AMI Patching Multi-threaded, multi-task Hours to months Per VM per hour Containers Container File Versioning Multi-threaded, single-task Minutes to days Per VM per hour Serverless Code Versioning Single-threaded, single-task Microseconds to seconds Per memory/second Per request 가상 컴퓨팅 기술의 변화
  18. 18. 3. AWS Lambda 기반 서버리스 앱 만들기 높은 확장성 및 빠른 서비스 연동 서버 필요 없이 코드만 배포 함수 실행 시 100ms 단위 과금 서버 없는, 이벤트 처리 방식의 컴퓨팅 서비스 AWS Lambda = 클라우드 함수 기반 마이크로서비스
  19. 19. AWS Lambda- 동작 원리 Bring your own code • Node.js, Java, Python, C# • Java = Scala Clojure 등의 어떠한 JVM기반 언어. • Bring your own libraries 유연한 호출 경로 • Event 기반 호출 옵션 (여러 AWS 서비스들과 통합) • REST API 호출 가능 (Amazon API Gateway와 연동) 단순한 자원 모델 • 128MB부터 1.5GB까지 64MB 단위로 메모리 설정 • 할당된 메모리에 비례하여 CPU 및 네트웍 자원 할당 • 실제 사용량 내역 보고 효과적인 권한 통제 • VPC(Virtual Private Cloud) 연동 및 IAM (Identity and Access Management) Role을 사용한 실행 권한 설정 • AWS 이벤트 소스에 대한 다양한 리소스 정책
  20. 20. AWS Lambda@Edge • 기능 소개 § CloudFront Edge 로케이션에서 람다 함수 실행 가능 § Lambda@Edge는 HTTP 헤더를 분석하여 호출에 대한 간단한 응답 (라우팅 혹은 리다이렉션)을 처리할 수 있는 기능 § 현재 Node.JS만 제공 • 주요 사용 사례 § HTTP 헤더 검사, 접근 제어 § 모바일 디바이스 탐지 § A/B 테스트 § 크롤러 또는 봇 신속 처리 § 장애 시 사용자 친화적인 URL 리다이렉트
  21. 21. Demo: AWS Lambda와 Python을 통한 초간단 API Backend 만들기
  22. 22. 서버리스 프레임웍의 등장 Serverless Apex ClaudiaJS Chalice 목표 Feature-rich solution for multi-vendors Simple and robust solution Serverless deployment utility Serverless micro- framework for AWS 지원 런타임 NodeJS Python Java Golang NodeJS Python Java NodeJS Python CLI 지원 O O O O 자원 관리 O △ (Terraform) X X 멀티 벤더 △ (AWS only) X X X 플러그인 지원 O △ (User-defined handler) △ (3rd party builders) X 유닛 테스트 X X △ (Partial unit-test) X (Channy Yun’s Personal opinions in 2016 September)
  23. 23. Chalice • Python Serverless Microframework for AWS • 앱 제작, 배포 및 관리는 간단한 커맨드라인으로 제작 가능 • Python 코드를 통해 선언적 API를 통해 손쉽게 개발 가능 • 현재 미리보기 제공 중 https://github.com/awslabs/chalice
  24. 24. Demo: Chalice를 통한 초간단 서버리스 앱 배포해 보기
  25. 25. Python 기반 Lambda 지원 프레임웍 • Zappa • Facilitates the deployment of all Python WSGI applications on AWS Lambda + API Gateway. • Kappa • A Python command line tool that (hopefully) makes it easier to deploy, update, and test functions for AWS Lambda. • Lambda-complex: • A Node.js framework for applications that runs entirely within Lambda, SQS, and other high abstraction layers AWS services. • λambdify: • A tool that turns any python callable into an AWS Lambda function. Serverless Functional Reactive Programming • Python-lambda: • A toolset for developing and deploying serverless Python code in AWS Lambda.
  26. 26. ALEXA SKILLS KIT (ASK) https://developer.amazon.com/ask
  27. 27. 4. AWS Lambda 기반 Alexa Skills 개발하기 Amazon Alexa Service Developer’s Application Service Amazon’s Developer Portal 애플리케이션, 사용자 의도, 샘플 데이터, 개발자 서비스 등 정보 전달 사용자 의도를 서비스로 전달 GUI 카드를 알렉사 앱에 전달 오디오를 서비스로 전송 오디오 결과를 렌더링해서 재생 텍스트 결과 및 GUI 카드 정보 전달
  28. 28. Flask-ASK https://github.com/johnwheeler/flask-ask
  29. 29. 5. Amazon Greengrass 스마트 홈 농업 현장 공장 지역 Embed Lambda Compute (& Other AWS Services) in Connected Devices AWS 서버리스 프로그래밍 모델을 그대로 활용하여 원격지 컴퓨팅에서 활용 임베디드 기기 및 원격 대용량 데이터 처리에 용이 IoT 기기 제조 Greengrass 런타임 설치 = +
  30. 30. 로컬 컴퓨팅 로컬 데이터 캐싱기기간 보안 통신 로컬 메시징 AWS Greengrass: 로컬 컴퓨팅, 메시징, 데이터 캐싱 IoT 기기 제조 Greengrass 런타임 설치 로컬 Lambda 함수 지원 AWS 콘솔에서 관리 가능 클라우드 프로그래밍 모델 활용 로컬 통신 및 데이터 통합 = = Lambda Everywhere!
  31. 31. ※ 총정리! http://bit.ly/awskr-reinvent-2016 신규 서비스 발표 목록
  32. 32. 질문을 남겨주세요! 세미나 설문조사 발표 자료/녹화 영상 http://bit.ly/awskr-webinar

×