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

40
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 윤석찬 @channyun AWS 테크에반젤리스트 파이선(Python) 개발자를 위한 AWS 활용 방법 2016년 12월 re:Invent 특집 온라인 세미나

Upload: amazon-web-services-korea

Post on 16-Apr-2017

2.781 views

Category:

Technology


15 download

TRANSCRIPT

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

© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

윤석찬

@channyunAWS 테크에반젤리스트

파이선(Python) 개발자를 위한AWS 활용 방법

2016년 12월 re:Invent 특집 온라인 세미나

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

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

본 발표의 주요 주제

• Boto3 소개 및 Amazon Lightsail 활용• AWS Elastic Beanstalk에서 Django 웹앱 배포• AWS Lambda 기반 서버리스 앱 개발• AWS Lambda 및 Flask ASK를 통한 음성 인식 앱 개발• Amazon Greenglass 소개

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

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

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

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'])

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

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!')

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

Boto3 시작하기 https://github.com/boto/boto3

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

Amazon Lightsail – 가상 사설 서버 호스팅

• 간편하고 이해하기 쉬운 AWS 서버 호스팅• 확장성 및 고가용성을 그대로 활용하면서 손쉽게 서버 운영

Launch VM

Attach SSD Storage

Assign Static IP

ConfigureDNS

Create Security Groups

Create Instance

GO!

Created By Amazon Lightsail

ManageIAM

$5Per month

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

Amazon Lightsail – 가상 사설 서버 호스팅

• 기존 AWS 서비스 연결 가능 및 API 및 CLI을 통한 제어 가능• 사용한 만큼 종량 과금제 그대로 적용 (데이터 사용료 추가 가능)• 1개월 프리티어 제공

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

Demo:Amazon Lightsail을 통한 Boto3 코드 실행 해보기

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

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!')

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

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. 애플리케이션 배포 및 운영

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

Djaongo 기반 웹 앱 개발하기

• Django란?§ 파이썬으로 만들어진 가장 인기있는

무료 오픈소스 웹 애플리케이션프레임워크

§ MVC(Model-View-Controller) 기반ü https://www.djangoproject.com/

• DjangoGirls란?§ Django를 통한 간단 블로그 제작

튜토리얼 제작 및 오프라인 교육 활동§ DjangoGirls 서울

ü https://djangogirls.org/seoul/

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

Demo:Amazon EB를 통한 Djangogirls앱 배포 해보기

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

Dr. Werner Vogels, Amazon.com CTOre:Invent 2015 Keynote

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

Weeks

가상 컴퓨팅 기술의 변화

Minutes

Amazon EC2

Seconds

Amazon EC2 Containers Services

Milliseconds

AWS LambdaOn-Premises

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

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/secondPer request

가상 컴퓨팅 기술의 변화

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

3. AWS Lambda 기반 서버리스 앱 만들기

높은 확장성 및빠른 서비스 연동

서버 필요 없이코드만 배포

함수 실행 시100ms 단위 과금

서버 없는, 이벤트 처리 방식의 컴퓨팅 서비스AWS Lambda = 클라우드 함수 기반 마이크로서비스

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

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 이벤트 소스에 대한다양한 리소스 정책

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

AWS Lambda@Edge

• 기능 소개§ CloudFront Edge 로케이션에서 람다

함수 실행 가능§ Lambda@Edge는 HTTP 헤더를 분석하여

호출에 대한 간단한 응답 (라우팅 혹은리다이렉션)을 처리할 수 있는 기능

§ 현재 Node.JS만 제공

• 주요 사용 사례§ HTTP 헤더 검사, 접근 제어§ 모바일 디바이스 탐지§ A/B 테스트§ 크롤러 또는 봇 신속 처리§ 장애 시 사용자 친화적인 URL 리다이렉트

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

Demo:AWS Lambda와 Python을 통한초간단 API Backend 만들기

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

서버리스 프레임웍의 등장

Serverless Apex ClaudiaJS Chalice목표 Feature-rich solution

for multi-vendorsSimple and robust

solutionServerless deployment

utilityServerless micro-

framework for AWS

지원 런타임 NodeJSPythonJava

GolangNodeJSPythonJava

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)

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

Chalice

• Python ServerlessMicroframework for AWS

• 앱 제작, 배포 및 관리는간단한 커맨드라인으로제작 가능

• Python 코드를 통해선언적 API를 통해손쉽게 개발 가능

• 현재 미리보기 제공 중

https://github.com/awslabs/chalice

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

Demo:Chalice를 통한 초간단 서버리스앱 배포해 보기

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

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.

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

ALEXA SKILLS KIT (ASK)https://developer.amazon.com/ask

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

4. AWS Lambda 기반 Alexa Skills 개발하기

Amazon Alexa

Service

Developer’s Application

Service

Amazon’s Developer

Portal애플리케이션, 사용자의도,샘플데이터, 개발자서비스등정보전달

사용자의도를서비스로전달

GUI 카드를알렉사앱에전달

오디오를서비스로전송오디오결과를렌더링해서재생

텍스트결과및GUI 카드정보전달

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

Flask-ASK https://github.com/johnwheeler/flask-ask

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

5. Amazon Greengrass

스마트 홈 농업 현장 공장 지역

Embed Lambda Compute (& Other AWS Services) in Connected Devices

AWS 서버리스 프로그래밍 모델을 그대로 활용하여 원격지 컴퓨팅에서 활용임베디드 기기 및 원격 대용량 데이터 처리에 용이

IoT 기기제조

Greengrass 런타임 설치

= +

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

로컬 컴퓨팅 로컬 데이터 캐싱기기간 보안 통신 로컬 메시징

AWS Greengrass: 로컬 컴퓨팅, 메시징, 데이터 캐싱

IoT 기기제조

Greengrass 런타임 설치

로컬 Lambda 함수 지원

AWS 콘솔에서관리 가능

클라우드 프로그래밍모델 활용

로컬 통신 및데이터 통합

=

=

Lambda Everywhere!

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

※ 총정리! http://bit.ly/awskr-reinvent-2016

신규 서비스 발표 목록

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

질문을 남겨주세요!

세미나 설문조사

발표 자료/녹화 영상http://bit.ly/awskr-webinar