Advertisement

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

Amazon Web Services Korea
Dec. 14, 2016
Advertisement

More Related Content

Slideshows for you(20)

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

Advertisement

More from Amazon Web Services Korea(20)

Recently uploaded(20)

Advertisement

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

  1. © 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 윤석찬 @channyun AWS 테크에반젤리스트 파이선(Python) 개발자를 위한 AWS 활용 방법 2016년 12월 re:Invent 특집 온라인 세미나
  2. 본 발표의 주요 주제 • Boto3 소개 및 Amazon Lightsail 활용 • AWS Elastic Beanstalk에서 Django 웹앱 배포 • AWS Lambda 기반 서버리스 앱 개발 • AWS Lambda 및 Flask ASK를 통한 음성 인식 앱 개발 • Amazon Greenglass 소개
  3. 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
  4. 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'])
  5. 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!')
  6. Boto3 시작하기 https://github.com/boto/boto3
  7. 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
  8. Amazon Lightsail – 가상 사설 서버 호스팅 • 기존 AWS 서비스 연결 가능 및 API 및 CLI을 통한 제어 가능 • 사용한 만큼 종량 과금제 그대로 적용 (데이터 사용료 추가 가능) • 1개월 프리티어 제공
  9. Demo: Amazon Lightsail을 통한 Boto3 코드 실행 해보기
  10. 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!')
  11. 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. 애플리케이션 배포 및 운영
  12. Djaongo 기반 웹 앱 개발하기 • Django란? § 파이썬으로 만들어진 가장 인기있는 무료 오픈소스 웹 애플리케이션 프레임워크 § MVC(Model-View-Controller) 기반 ü https://www.djangoproject.com/ • DjangoGirls란? § Django를 통한 간단 블로그 제작 튜토리얼 제작 및 오프라인 교육 활동 § DjangoGirls 서울 ü https://djangogirls.org/seoul/
  13. Demo: Amazon EB를 통한 Djangogirls 앱 배포 해보기
  14. Dr. Werner Vogels, Amazon.com CTO re:Invent 2015 Keynote
  15. Weeks 가상 컴퓨팅 기술의 변화 Minutes Amazon EC2 Seconds Amazon EC2 Containers Services Milliseconds AWS LambdaOn-Premises
  16. 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 가상 컴퓨팅 기술의 변화
  17. 3. AWS Lambda 기반 서버리스 앱 만들기 높은 확장성 및 빠른 서비스 연동 서버 필요 없이 코드만 배포 함수 실행 시 100ms 단위 과금 서버 없는, 이벤트 처리 방식의 컴퓨팅 서비스 AWS Lambda = 클라우드 함수 기반 마이크로서비스
  18. 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 이벤트 소스에 대한 다양한 리소스 정책
  19. AWS Lambda@Edge • 기능 소개 § CloudFront Edge 로케이션에서 람다 함수 실행 가능 § Lambda@Edge는 HTTP 헤더를 분석하여 호출에 대한 간단한 응답 (라우팅 혹은 리다이렉션)을 처리할 수 있는 기능 § 현재 Node.JS만 제공 • 주요 사용 사례 § HTTP 헤더 검사, 접근 제어 § 모바일 디바이스 탐지 § A/B 테스트 § 크롤러 또는 봇 신속 처리 § 장애 시 사용자 친화적인 URL 리다이렉트
  20. Demo: AWS Lambda와 Python을 통한 초간단 API Backend 만들기
  21. 서버리스 프레임웍의 등장 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)
  22. Chalice • Python Serverless Microframework for AWS • 앱 제작, 배포 및 관리는 간단한 커맨드라인으로 제작 가능 • Python 코드를 통해 선언적 API를 통해 손쉽게 개발 가능 • 현재 미리보기 제공 중 https://github.com/awslabs/chalice
  23. Demo: Chalice를 통한 초간단 서버리스 앱 배포해 보기
  24. 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.
  25. ALEXA SKILLS KIT (ASK) https://developer.amazon.com/ask
  26. 4. AWS Lambda 기반 Alexa Skills 개발하기 Amazon Alexa Service Developer’s Application Service Amazon’s Developer Portal 애플리케이션, 사용자 의도, 샘플 데이터, 개발자 서비스 등 정보 전달 사용자 의도를 서비스로 전달 GUI 카드를 알렉사 앱에 전달 오디오를 서비스로 전송 오디오 결과를 렌더링해서 재생 텍스트 결과 및 GUI 카드 정보 전달
  27. Flask-ASK https://github.com/johnwheeler/flask-ask
  28. 5. Amazon Greengrass 스마트 홈 농업 현장 공장 지역 Embed Lambda Compute (& Other AWS Services) in Connected Devices AWS 서버리스 프로그래밍 모델을 그대로 활용하여 원격지 컴퓨팅에서 활용 임베디드 기기 및 원격 대용량 데이터 처리에 용이 IoT 기기 제조 Greengrass 런타임 설치 = +
  29. 로컬 컴퓨팅 로컬 데이터 캐싱기기간 보안 통신 로컬 메시징 AWS Greengrass: 로컬 컴퓨팅, 메시징, 데이터 캐싱 IoT 기기 제조 Greengrass 런타임 설치 로컬 Lambda 함수 지원 AWS 콘솔에서 관리 가능 클라우드 프로그래밍 모델 활용 로컬 통신 및 데이터 통합 = = Lambda Everywhere!
  30. ※ 총정리! http://bit.ly/awskr-reinvent-2016 신규 서비스 발표 목록
  31. 질문을 남겨주세요! 세미나 설문조사 발표 자료/녹화 영상 http://bit.ly/awskr-webinar
Advertisement