4월 26일 (금) 오전 9:29

logo

  • home
  • head
  • itnews
  • product
  • mobile
  • game
  • benchmark
  • analysis
  • blog

개봉 2023.11.22. / 등급: 12세 관람가 / 장르: 드라마 / 국가: 대한민국 감독 : 김성수 출연 : 황정민, 정우...
노량: 죽음의 바다 / 개봉 2023.12. / 장르: 액션, 드라마 / 국가: 대한민국 감독 : 김한민 출연 : 김윤석, ...

서버 없는 클라우드 프로그래밍 도전기

AWS Lambda 이벤트 기반 클라우드 함수



아마존웹서비스(AWS, Amazon Web Service)는 인터넷을 통해 IT 리소스와 애플리케이션을 필요할 때만 사용하는 대표적인 클라우드 컴퓨팅 서비스로, 사용한 만큼만 비용을 내는 효율적인 IT 인프라를 제공하고 있다.



이러한 클라우드 환경에서 실행되는 응용 프로그램은 개발자들이 코드와 기능 구현에만 집중할 수 있도록 확장성과 신뢰성이 담보되면서 런타임 효율도 우수한 클라우드 중심 개발 환경이 필요하다.

tech_img4055.png

2014년 11월 발표된 AWS Lambda는 클라우드에서 애플리케이션을 실행하는 새로운 개발 플랫폼이다. 기존 프로그래밍과 AWS 지식을 활용해 서버 백엔드를 운영하고 관리할 필요가 없는 게 큰 특징이다. 3회에 걸친 연재를 통해 AWS Lambda의 기본 개념과 이를 이용한 서버 없는 모바일 앱 개발, 자바와 스칼라로 람다 함수를 구현하는 방법 등을 살펴보겠다.



AWS Lambda의 개념

애플리케이션을 구동하기 위해서는 AWS에서 가상서버인 EC2 인스턴스를 만들고 그 위에 운영체제(OS)와 프로그래밍 개발 환경을 설치해야 한다. 일반적으로 서버 프로그램은 확장성과 트래픽 등의 탄력성을 고려해 서버 용량을 미리 요청하거나 확보해야 한다. 클라우드 컴퓨팅 환경에서는 이를 좀 더 빠르고 유연하게 처리할 수 있다. 그러나 클라우드 함수인 AWS Lambda는 람다 함수(Lambda function)를 통해 개발자가 이러한 준비를 전혀 하지 않아도 외부에서 오는 다양한 이벤트(이미지 업로드, DB 업데이트)의 발생 시점에 특정 처리를 할 수 있다.

Lambda에서 가장 중요한 개념은 ‘람다 함수’다. 이 람다 함수는 Node.js(자바스크립트로 개발된 이벤트 기반 서버 구현)와 자바8 언어로 구현하고 실행할 수 있다. 람다 함수는 실행 환경(구현 언어, 필요한 메모리 제한 기간이나 인증 자격)을 지정하는 콘텍스트 정보와 실제 코드를 업로드하는데, 콘솔에서 직접 편집하거나 클래스 파일 혹은 아마존 S3(Simple Storage Service)로부터 업로드할 수 있다. 필요할 경우 타사 라이브러리도 업로드에 포함할 수 있다. 참고로 람다 함수는 하나의 ZIP 파일 형식으로 돼 있다.

업로드 이후 람다 함수 자신과 AWS 리소스(특정 S3 버킷, 아마존 다이나모DB(DynamoDB) 테이블 또는 아마존 키네시스(Kinesis) 실시간 스트림)을 연결한다. AWS Lambda는 람다 함수에 이벤트(일반적으로 자원이 변경된 경우 실행)를 함께 연결한다.

tech_img4056.png
tech_img4057.png

예컨대 <그림 2>처럼 모바일 앱에서 아마존 S3 스토리지에 신규 이미지를 올릴 경우 관련 썸네일을 생성하려면 기존 서버에 설정된 애플리케이션이 있어야 한다. 그러나 이제는 람다 함수가 이를 대신할 수 있다. 또한 아마존 다이나모DB에 새로운 데이터가 추가됐을 때 다른 테이블을 수정하거나 사용자에게 알림을 보낼 수도 있다.

AWS Lambda는 AWS 관리 콘솔(Management Console), AWS SDK 및 AWS CLI(Command Line Interface)에서 접근할 수 있다. Lambda API는 모두 문서화돼 있으며 기존 코드 편집기 및 기타 개발 도구를 Lambda에 연결해 사용할 수도 있다.



AWS Lambda 프로그래밍의 실행 환경

람다 함수는 연결된 AWS 서비스의 리소스가 변경될 때 활성화된다. 즉 지정된 Node.js나 자바 클래스 함수가 실행되고서야 작업이 처리된다. 함수는 (POST와 함께 전달 된 매개 변수를 통해) JSON 형식의 데이터 구조에 접근할 수 있다. 이 데이터 구조는 람다 함수를 활성화하는 계기가 되는 변경 또는 기타 이벤트에 대한 자세한 정보를 가지고 있다.

Lambda는 리소스 변경 속도에 뒤쳐지지 않도록 필요에 따라 람다 함수의 추가 복사본을 활성화한다. 람다 함수는 컴퓨팅 인스턴스에 상태를 영구적으로 저장할 수 없다. 만약 저장을 원하면 S3나 다이나모DB를 사용해야 한다.

여러분의 코드는 Node.js 및 리눅스 환경 그리고 자바8에서 내재된 기능을 사용할 수 있다. 다른 AWS 서비스를 호출하기 위해 AWS SDK for JavaScript in Node.js를 쓸 수도 있다. 각 람다 함수에 지정된 콘텍스트 정보에는 함수의 최대 실행 시간이 지정돼 있다. 일반적으로 짧게 설정되어 있지만 (몇 초 정도에 대부분 실행 가능하므로) 필요에 따라 최대 60초까지 지정 가능하다.

Lambda는 AWS가 제공하는 사용자 권한을 지정하는 IAM 역할(role)을 사용해 람다 함수에 대한 접근과 AWS 리소스를 관리한다. 이러한 호출 역할(Invocation role)은 Lambda에서 특정 람다 함수를 수행할 권한을 부여한다. 실행 역할(Execution role)은 특정 AWS 리소스에 대한 접근 권한을 부여한다. 또한 람다 함수의 실행을 감시하고 요청 수, 지연 시간, 가용성 및 오류 비율 통계를 아마존 클라우드워치(CloudWatch)에 저장한다. 이는 30일 동안 보관되며 콘솔에서도 볼 수 있다. 이제 Lambda를 사용할 때 고려해야 할 몇 가지 사항을 살펴보자.

● 람다 함수 콘텍스트 정보에는 실행에 필요한 메모리 양을 지정한다. 128MB에서 1??GB까지 원하는 값을 지정하면 된다. 메모리 설정에 따라 람다 함수를 사용 가능한 인스턴스의 CPU 능력, 네트워크 대역폭, IO 대역폭이 결정된다.

● 각 람다 함수의 시작은 최대 256개의 프로세스나 스레드를 사용할 수 있다. 최대 512MB의 로컬 스토리지와 102개 이상의 파일 디스크립터도 사용 가능하다. 또한 최대 10개의 동시 아웃 바운드 연결을 생성할 수 있다.

● Lambda는 각 AWS 계정에서 관리상 제한할 수 있다. 미리보기 기간 동안에는 동시 실행 요청을 최대 25개까지 처리할 수?? 있다.



AWS Lambda 함수 만들기

지금부터는 AWS 관리 콘솔을 사용해 간단한 람다 함수를 만드는 과정을 살펴보자. 우선 콘솔에서는 8개 정도의 기본 예제를 이용할 수 있는데, 이 중 하나를 람다 함수로 만들고 실행해 보자. 먼저 [Create a Lambda function]나 기본 예제 중 ‘Hello World’를 선택한다(<그림 3> 참조). 이름과 설명을 입력하고 Node.js와 자바8 클래스 등 실행 환경을 선택한다. 아직 2개의 프로그래밍 언어만이 지원하지만 향후에는 다양한 언어 지원이 추가될 예정이다. 람다 함수는 콘솔에서 직접 작성하거나 패키지가 포함된 ZIP 파일 혹은 S3로부터 직접 업로드할 수도 있다. 예컨대 새로운 이미지가 업로드됐을 때 문자를 인식하는 라이브러리를 ZIP에 포함해 람다 함수를 작성한 후 인식된 결과를 다이나모DB에 넣을 수 있다.

tech_img4058.png

다음으로 람다 함수 실행 시 어떤 IAM 역할을 사용할지 여부를 지정하고 메모리 요구 사항 조정과 실행 시간 제?진 권한 중 하나를 선택해 바로 만들 수 있다.

tech_img4059.png

이제 [Next]를 누르면 간단한 Hello World 람다 함수가 만들어진다. 이렇게 만든 람다 함수는 콘솔에서 반복 편집 테스트할 수 있다. <그림 5>처럼 람다 함수를 편집하고, 실제 데이터를 넣어 테스트해 볼 수도 있다. 참고로 테스트 시에는 테스트 실행 시간 결과 로그 등을 확인할 수 있다 . 앞서 설명했듯 Lambda는 각 람다 함수마다 통계 정보를 수집하고 이를 아마존 클라우드워치로 보낸다. 관련 통계는 콘솔에서 확인 가능하다.

tech_img4060.png

tech_img4061.png

tech_img4062.png



자바 언어 지원

람다 함수는 Node.js와 마찬가지로 자바8로 코드를 작성할 수 있다. 물론 개발에 자바 라이브러리도 사용할 수 있으며, AWS SDK for Java를 이용해 AWS API를 호출할 수도 있다. 자바를 이용한 람다 함수 제작에는 aws-lambda-java-core라는 함수 핸들러, 콘텍스트 객체, aws-lambda-java-events라는 AWS 리소스의 이벤트 두 가지 라이브러리가 쓰인다. 자바 기반의 람다 함수를 만드는 방법은 두 가지다. 객체를 입출력하는 높은 수준의 모델(자바 POJO나 프리미티브 입출력 형식 사용 가능)을 이용하는 게 대표적이다. 만약 POJO를 사용하지 않거나 Lambda 시리얼리제이션 모델이 요구 조건을 충족하지 않을 경우 스트림 모델을 쓸 수 있다. 자바로 람다 함수 개발 방법은 차후 예제와 함께 자세하 다루니 참고하자.



<리스트 1> POJO를 이용한 Lambda 입출력 모델 public lambdaHandler(input, Context context) throws IOException; public lambdaHandler(input) throws IOException;



<리스트 2> 스트림을 이용한 Lambda 입출력 모델 public void lambdaHandler(InputStream input, OutputStream output, Context context) throws IOException;



AWS Lambda는 개발자가 현재 사용하는 개발 도구를 그대로 사용할 수 있다. 컴파일된 자바 코드를 람다 함수에서 사용하기 위해서는 ZIP 또는 JAR 파일에 컴파일된 클래스 파일을 넣고 업로드하면 된다. 참고로 Lambda 패키지 업로드의 크기는 50MB 이하로 제한된다. 핸들러 함수는 자바 디렉터리 구조에 따라 구성돼 있어야 한다(예 : com/mypackage/MyHandler.class). 또한 JAR 파일은 lib 서브 디렉터에 위치해야 하며, 배포를 쉽게 하기 위해 메이븐(Maven)이나 그래들(Gradle)와 같은 자바 개발 도구를 이용해도 된다. ZIP 파일을 업로드할 때에는 ‘java8’이라고 지정해야 한다. 만약 핸들러 인터페이스를 구현했으면 클래스명도 넣어야 한다. 그렇지 않을 경우 com.mypackage.LambdaHandler::functionHandler처럼 전체 메소드 레퍼런스를 입력해야 한다. AWS Toolkit for Eclipse 플러그인을 이용하면 ZIP 파일 생성과 업로드를 자동화할 수 있다. 또한 이클립스 AWS 메뉴에서 Lambda 프로젝트를 만들 수도 있다. 이를 통해 손쉽게 함수를 만들고 한 번 클릭만으로 실행까지 할 수 있다.

tech_img4063.png

AWS Lambda는 람다 함수가 실행된 만큼만 과금하는 요금 체계로 운영된다. 만약 우리가 원하는 요구 사항이 람다 함수로 구현 가능할 경우 애플리케이션 배포, 실행을 위한 가상 서버가 필요 없으며, 이를 관리하는 데 드는 비용 또한 없다. AWS Lambda는 한 달에 100만 건의 실행 요청과 최대 320만 초 컴퓨팅 처리 시간까지는 무료로 서비스되고 있다.

AWS Lambda는 AWS 서비스 이벤트에 따라 코드를 실행하고 컴퓨팅 리소스를 자동으로 관리하는 클라우드 서비스다. 서버 없이도 기능을 수행하는 애플리케이션을 쉽고 빠르게 개발할 수 있어 기대를 모으고 있다. 다음 시간에는 람다 함수를 이용해 서버 없이 모바일 앱을 효과적으로 만드느 방법과 Node.js 활용에 대해 좀 더 깊이 살펴보겠다.



출처 : 마이크로소프트웨어 8월호

제공 : 데이터 전문가 지식포털 DBguide.net






  1. 9월 스팀 통계) 게이밍 시장 점유율, AMD는 회생 불가?

    전세계 게이머들이 모이는 스팀의 2017년 9월 점유율 (http://store.steampowered.com/) CPU 점유율은 8월에 이어 AMD의 점유율이 16%까지 계속 떨어지고 있다. 엎친데 덮치기로 최근 커피레...
    Date2017.10.06
    Read More
  2. IDC, 2021년 전세계 AR/VR 시장은 6배 규모로

    미국 IDC는 9월 28일(현지시간), 2021년 AR(증강현실)/VR(가상현실) 시장 전망 리포트를 발표했다. 이에 따르면 2017년에는 약 1370만대의 AR/VR 헤드셋이 출하될 전망이지만 2021년에는 약 5.93배인 82...
    Date2017.10.02
    Read More
  3. 리눅스 Samba 취약점 보안 업데이트 권고

    □ 개요 o Samba 소프트웨어에서 발생하는 취약점을 해결한 보안 업데이트를 발표[1] o 낮은 버전 사용자는 서비스 거부 공격 및 중간자 공격에 취약할 수 있어 해결방안에 따라 최신 버전으로 업데이트 권...
    Date2017.09.23
    Read More
  4. DxOMark 사진 퀄리티 성능 순위 (9월 17일 기준)

    카메라 및 센서, 렌즈 등 이미지 기술 성능을 측정하는 DxOMark의 2017년 9월 17일 기준 순위 출처 - https://www.dxomark.com/ 스마트폰 (모바일) 공동 1위 구글 픽셀 / HTC U11, 2위 애플 아...
    Date2017.09.17
    Read More
  5. 보안) 전문가들이 사용하는 17가지 침투 테스트 툴

    David Geer | CSO 침투 테스트는 전문 해커가 공격자보다 먼저 시스템 취약점을 찾기 위해 사용하는 방법이다. 침투 테스트를 위해서는 치밀한 사고와 인내심이 필요하며 약간의 운도 필요하다. 또한 ...
    Date2017.09.16
    Read More
  6. 8월 스팀 통계) CPU, GPU 점유율 및 AMD의 몰락

    전세계 게이머들이 모이는 스팀의 2017년 8월 점유율 (http://store.steampowered.com/) CPU 점유율은 인텔과 AMD 격차가 더욱 커져 인텔은 82%까지 상승, AMD는 17%까지 내려가 매달 차이가...
    Date2017.09.04
    Read More
  7. 2017년 8월 글로벌 웹브라우저 및 OS 점유율

    2017년 8월 기준 글로벌 웹 브라우저 및 OS 점유율 (조사기관 : Net Applications) 웹 브라우저 점유율_PC 1위, Chrome:59.38%(59.57%) 2위, Internet Explorer:15.58%(16.50%) 3위, Fire...
    Date2017.09.02
    Read More
  8. 개발자용 macOS High Sierra 10.13 beta 9 릴리스

    애플이 개발자용 macOS High Sierra 10.13 beta 9를 발표하고 있습니다. 베타버전에서 변경점은 불분명하며 완성판에 가깝기 때문에 버그 수정 및 안정성 향상이 예상되고 있습니다. 다운로드는 개발자용 ...
    Date2017.09.02
    Read More
  9. 2017년 8월 마이크로소프트 보안 업데이트

    다음 소프트웨어에 대 한 보안 업데이트 8 월 보안 릴리스에 의하여 이루어져 있다: 인터넷 탐색기 마이크로소프트 지 마이크로소프트 윈도 Microsoft SharePoint 어도비 플래시 플레이어 Microsoft SQL ...
    Date2017.08.26
    Read More
  10. 보안감사로 드러난 기업의 사이버 보안 실태

    개요 보안감사업체 Positive Technologies 社는 2016년 수행한 보안감사에서 기업 시스템 중 47%에서 심각한 취약점이 발견되었다고 연구 결과를 발표 주요내용 보안감사 결과 - 조사 된 기업 시스템 ...
    Date2017.08.26
    Read More
  11. 2017년 2분기 글로벌 노트북PC 점유율 순위

    2017년 2분기 전세계 노트북PC 점유율 순위 1위 HP : 23.4% 2위 레노버 : 20.1% 3위 델 : 16.4% 4위 에이수스 : 10.0% 5위 애플 : 10.0% 6위 에이서 : 8.0%
    Date2017.08.16
    Read More
  12. 인공지능, 오프라인 유통분야의 대변혁 예고

    인공지능(AI), 오프라인 매장에서의 활용 가속화 기계학습 알고리즘이 적용된 모바일 어시트턴트 앱을 통해 매장 내에서 사용자들의 요구를 더욱 빠르게 충족시키는 것이 가능해짐 - 예를 들어, 백화...
    Date2017.08.12
    Read More
  13. Adobe 제품군 보안 업데이트 권고

    □ 개요 o Adobe社는 Adobe Flash Player, Acrobat, Reader, Experience Manager, Digital Edition에 영향을 주는 취약점을 해결한 보안 업데이트를 발표 o 낮은 버전의 사용자는 악성코드 감염 등에 취...
    Date2017.08.12
    Read More
  14. 모바일 트로이 목마 Svpeng 변종 등장

    개요 Kaspersky Lab의 보안 연구원 Roman Unuchek, Android 운영체제 장치 대상 트로이 목마인 Svpeng의 변종을 발견했다고 공개(7.31) * Svpeng은 러시아, 독일 터키, 폴란드, 프랑스 등 1주일동안 23개 ...
    Date2017.08.12
    Read More
  15. GIGABYTE GTX1080Ti 워터포스, 워터블럭 출시

    GIGABYTE Technology Co., LTD (이하 기가바이트)의 공식 공급원인 제이씨현시스템㈜ (대표: 차현배)에서는 2017년 7월 28일(금), 엔비디아 파스칼 GPU를 탑재하고, 수냉PC에 최적화된 기가바이트 지포스 G...
    Date2017.08.12
    Read More
  16. 능동형 아키텍처: 진정한 사이버 보안의 열쇠

    다년간 축적한 경험에 따라 카스퍼스키랩의 연구진은 기업 IT 인프라의 사이버 보안을 실현하기 위해서는 다계층적 솔루션이 필요하다는 결론을 내렸습니다. ‘다계층’이라는 말에는 기본적으로 여러 가지 ...
    Date2017.08.12
    Read More
  17. AMD 라이젠의 작업(연산) 프로그램 성능 확인

    AMD 라이젠 프로세서가 작업(연산) 프로그램들에서 어느정도 성능인지 벤치마크 데이터를 확인한다. ...
    Date2017.08.06
    Read More
  18. Cisco IOS 소프트웨어 신규 취약점 주의 권고

    □ 개요 o Cisco社는 자사의 제품에 영향을 주는 취약점을 해결한 보안 업데이트를 발표 o 공격자는 해당 취약점을 악용하여 서비스 거부 등의 피해를 발생시킬 수 있으므로, 최신버전으로 업데이트 권고 □ ...
    Date2017.07.27
    Read More
  19. 가상현실(VR)과 기존 PC방의 접목

    中 VR방 시장, 기존 PC방과 접목으로 돌파구 마련   지난 2016년 하반기 중국 VR 업계에 한파가 불면서 폐업한 VR방도 늘어났으나, 대형 상점 내 여전히 많은 VR방이 성업 중   최근 Chongqing시내 한 PC방...
    Date2017.07.21
    Read More
  20. 가상현실(VR)에서 냄새를 맡을 수 있는 단말의 등장 및 활용 사례

    지난 2017년 7월 4일 VR 전문 매체 Upload VR의 보도에 따르면, 일본 스타트업 Vaqso는 가상현실(VR)에서 다양한 종류의 냄새를 발생시킬 수 있는 장치 ‘Vaqso VR’을 앞세워 최근 진행된 시드 라운드에서 6...
    Date2017.07.21
    Read More
  21. 4차 산업혁명, 반도체 제조기술 핵심특허 확보가 관건

    4차 산업혁명, 반도체 제조기술 핵심특허 확보가 관건! # 인공지능(AI), 사물인터넷(IoT), 빅데이터 등으로 대표되는 4차 산업혁명의 도래를 앞두고 그 기반산업인 반도체산업이 최근 호황기에 접어들었지...
    Date2017.07.21
    Read More
  22. Windows10 레드스톤 버전에서 모바일 핫스팟 이용하기

    Windows 10 Redstone에서 모바일 핫스팟 이용하기 Windows10 Redstone (ver.1607) 업데이트 이후 새로 추가된 '모바일 핫스팟' 기능을 활용 하시면 ipTIME 무선랜카드를 AP처럼 사용 하실 수 있습니다. 1. ...
    Date2017.07.08
    Read More
  23. 꼭 지켜야 할 정보보호 실천수칙 10가지

    꼭 지켜야 할 정보보호 실천수칙 10가지 01 정품 프로그램 사용하기 정품 OS는 해당 OS에 대한 보안 업데이트를 꾸준...
    Date2017.07.05
    Read More
  24. 췍췍! 모니터 지르기 전 꼭 알아야 할 필수 단어 사전

    보도 - 삼성전자) 모니터 하나 장만하려는데 용어를 잘 알지 못해 어려움을 겪었던 적 있다면? 모니터 추천 후기를 보거나 추천 댓글을 봐도, 어려운 단어의 나열에 ‘좋은 줄은 알겠지만 정확히 어디...
    Date2017.07.05
    Read More
  25. 동적디스크 기본디스크로 변환하는 방법

    ​ 안녕하세요 까망똘끼 입니다. 이번에 알려드릴 주제는 윈도우7 동적디스크 기본디스크로 변환하는 방법에 대해서 알려드릴텐데요, 저도 초보수준일 때는 이 말이 뭔말인지도 몰랐고, 방법도 몰랐...
    Date2017.07.02
    Read More
  26. 가상현실(VR)의 의료분야 적용 범위 확장

    통증관리와 물리치료는 물론 심리치료와 재활까지 VR의 긍정적 역할을 제시하는 연구자료들이 발표되고 있음 통증에 관여하는 뇌부위인 감각피질과 뇌도가 VR에 몰입하고 있을 때는 활성도가 떨어진다는 연...
    Date2017.07.01
    Read More
  27. 신종 랜섬웨어 GoldenEye, 세계 각지로 확산

    2016년에 출현한 랜섬웨어 Petya의 새로운 변종으로 보이며 Bitdefender는 GoldenEye라고 이름을 붙이고 있다. Petya는 HDD의 MBR(마스터 부트 레코드)를 암호화해 PC를 동작이 불가능하게 한 ...
    Date2017.07.01
    Read More
  28. 드론 배송 본격화를 위한 혁신적 사례와 4대 유망 사업

    최근 드론 배송의 현실화를 앞당길 사례들이 잇따라 등장하는 가운데, 드론 교통 관리 시스템의 구축 과정에서도 다양한 사업 기회가 존재한다는 분석 PDF 전문 읽기 - http://raptor-hw.net/xe/?mod...
    Date2017.06.17
    Read More
Board Pagination Prev 1 ... 5 6 7 8 9 10 11 12 13 14 ... 47 Next
/ 47