5월 6일 (월) 오전 12:04

logo

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

개봉 2024.06.05. / 장르 드람 / 국가 대한민국 감독 : 조지 밀러 출연 : 안야 테일러 조이, 크리스 헴스워스 등 ...
개봉 2024.05.22. / 장르 액션 / 국가 미국 감독 : 조지 밀러 출연 : 안야 테일러 조이, 크리스 헴스워스 등 ...

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

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. 2016년 예상되는 인공지능(artificial intelligence) 분야의 6대 트렌드

    머신러닝, 딥러닝, IoT 등의 확산에 힘입어 지난 2015년 한 해 동안 큰 주목을 받아왔던 인공지능 분야가 2016년을 맞이해 비약적 발전이 예상되고 있는 가운데... 첨부 PDF 확인 /...
    Date2015.12.29
    Read More
  2. 2015년 기업 위협 결산: 랜섬웨어 공격이 증가한 한해

    카스퍼스키랩이 지난 1년 동안 기업 대상 보안 위협을 분석한 결과, 2015년에 기업 대상 공격은 일반 공격과는 다른 사이버 공격 툴을 사용한 것으로 나타났습니다. 악성 파일을 장기간 숨기기 위해 합법적...
    Date2015.12.17
    Read More
  3. 2015년 12월 마이크로소프트 월례 패치

    마이크로소프트가 2015년 12월 월례 패치를 공개 했습니다. 이달은 모두 12건(심각성이 가장 높은 "긴급"이 9건, 2번째로 높은 "중요"가 3건이며, "긴급"패치는 인터넷 익스플로러나 엣지, 윈도우 ...
    Date2015.12.09
    Read More
  4. 구글 투명성 보고서 발표 - 페이스북이 최대

    유럽 개인정보 보호 위한 검색결과 삭제 요청 2014년 5월 유럽연합 사법재판소는 Google Spain 대 AEPD, Mario Costeja González 사건에 대한 판결에서 개인은 자신에 관한 특정 검색결과에 대해 Goog...
    Date2015.11.28
    Read More
  5. 윈도우10 PC사양 및 버전, 기능 설명

    [ 윈도우10 사양 ] Windows 7 SP1 또는 Windows 8.1 업데이트의 최신 버전을 실행 중인지 확인하세요. 최신 버전을 다운로드하려는 경우 Windows 7 SP1 또는 Windows 8.1 업데이트를 클릭하세요. ...
    Date2015.11.28
    Read More
  6. 윈도우10 메이저 업데이트 November Update ISO 파일 공개

    MS가 윈도우10 첫 메이저 업데이트 November Update의 ISO파일 제공 시작 November Update는 세부 버전으로 1511,10586 ISO 파일. ISO 파일은 MSDN 가입자용으로 출시, 다운로드한 ISO 파...
    Date2015.11.13
    Read More
  7. 윈도우 서버2012 백신 설치 (Windows Server)

    NT 서버 제품군(서버 2012 등)에서 일반적인 백신 프로그램 설치 불가 방법은 마이크로소프트의 시큐리티 에센셜을 설치 아래 내용에 따라 진행 1. http://windows.microsoft...
    Date2015.10.26
    Read More
  8. 윈도우10 빌드 10565 ISO 파일 다운로드

    마이크로소프트가 최근 발표한 윈도우10 build 10565의 ISO파일 제공을 시작 했습니다. 다운로드는 아래 링크를 클릭하시고, 클린 설치가 필요한 사용자들은 필수 다운로드 입니다. 윈도...
    Date2015.10.16
    Read More
  9. 2015년 10월 마이크로소프트 정기 패치

    다음 표에는 이번 달의 보안 공지가 심각도 순으로 요약되어 있습니다. 영향받는 소프트웨어에 대한 자세한 내용은 영향받는 소프트웨어라는 다음 절을 참조하십시오. 공지 ID 공지 제목 및 요...
    Date2015.10.15
    Read More
  10. 라데온 HBM 메모리 기술 소개

    HBM ​'최초'라는 타이틀을 놓치지 않는 AMD의 HBM가능성의 한계를 극복하는 개방형 표준 기술을 개척해 온 AMD의 또 다른 혁신   저전력 소모, 초광범위한 통신선과 혁신적인 스택트 구성...
    Date2015.10.08
    Read More
  11. AMD + 다이렉트x12 API 기술 소개

    AMD + DirectX® 12 기술Microsoft®의 새로운 DirectX® 12 API를 사용하면 현재 장착된 하드웨어에서도 성능이 현저히 빨라지고 초 당 프레임 속도가 높아지는 반면, 지연 시간은 줄어듭니다. ...
    Date2015.10.08
    Read More
  12. 최고 정보 보안 책임자(CISO)가 직면한 문제들

    당신은 보다 나은 그 무엇을 꿈꾸는 IT 보안 전문가 입니까? 당신의 승진 경력 계발은 한계가 있습니까? CISO(최고 정보 보안 책임자)란 무엇일까요? 과거에는, 기업의 사장이나 이사회에 보고를 담당하고 ...
    Date2015.10.04
    Read More
  13. AWS Lambda 이벤트 기반 클라우드 함수

    서버 없는 클라우드 프로그래밍 도전기 AWS Lambda 이벤트 기반 클라우드 함수 아마존웹서비스(AWS, Amazon Web Service)는 인터넷을 통해 IT 리소스와 애플리케이션을 필요할 때만 사용하는 대표적인...
    Date2015.09.22
    Read More
  14. [만화] 체했을 때 바늘로 손가락 따면 낫는다?!

    대식가 태연에게는 일 년에 정확히 다섯 번의 경축일이 있다. 생일, 어린이날, 크리스마스 그리고 설과 추석. 이유는 단 하나, 맛있는 음식을 원하는 만큼 모조리! 그것도 잔소리 한번 듣지 않고 먹을 ...
    Date2015.09.22
    Read More
  15. 윈도우 메일 서버 만들기 HMail Server 4.4.1

    hMail Server에 대한 전반적인 사항을 정리한다. 메일 서버로 SMTP, POP3, IMAP을 지원한다. 홈페이지 : http://www.hmailserver.com/ 다운로드 : http://www.hmailserver.com/?page=download 라이센스 :...
    Date2015.09.11
    Read More
  16. IPsec VPN - HSRP 이중 경로 설정 방법

    IPsec VPN - HSRP 2중 경로​ ​ VPN을 구성함에 있어 하나의 경로로만 구성하면 안정성이 낮아진다. 그러므로, Intranet을 위한 VPN에 HSRP를 활용하여 이중화를 하여 안정...
    Date2015.09.02
    Read More
  17. IPsec VPN 본사 - 지사 설정 방법

    IPsec VPN (Site-to-Site) VPN Site-to-Site 는 각각의 사설망 접속시에 자신이 속한 Network의 IP 주소를 그대로 가지고 연결된다. ​ ■ Interne...
    Date2015.09.02
    Read More
  18. 국내 미러리스 카메라 인기 순위 - 소니 왕국

    다시돌아온 카메라 인기순위~ 지난번은 하이엔드 카메라 인기순위를 다루어보았는데요 쟁쟁한 미러리스 카메라들이 많이 나온만큼 미러리스 카메라 인기순위를 살펴보도록 ...
    Date2015.09.01
    Read More
  19. 안드로이드 마시멜로: 안드로이드 6.0 SDK와 마지막 개발자 프리뷰

    말랑 말랑한 마시멜로를 싫어하는 분이 있을까요? 분명히 말씀드리자면 안드로이드 팀은 마시멜로를 정말 좋아합니다. 5월 구글 I/O 에서 안드로이드 M 개발자 프리뷰 버전을 공개한 이 후, 많은 분들이 M ...
    Date2015.08.28
    Read More
  20. 이제 안드로이드 웨어 시계에서도 구글 번역을 사용해보세요

    매달 5억 명 이상의 전 세계 사용자들이 모바일이나 웹으로 구글 번역을 이용해 일일 1,000억 개 이상의 단어를 번역합니다. 이제 모바일과 웹을 넘어 안드로이드 웨어가 탑재된 시계에서도 구글 번역을 사...
    Date2015.08.28
    Read More
  21. Airbnb (에어비앤비) - 색다른 숙소 특별한 여행

    Airbnb (에어비앤비) - 색다른 숙소 특별한 여행 여행을 떠나기 전, 처음 가는 여행지라면 어디에서 하루를 보내게 될지 신중히 결정하게 됩니다. 여행 경비를 줄이기 위해 도심 외곽에 숙소를 정...
    Date2015.08.28
    Read More
  22. 데이터를 잘 써먹을 수 있는 구체적인 방법들 : 연재를 마치며 - Data Movement의 미래는?

    ◎ 연재기사 ◎ ▷ 데이터를 잘 써먹을 수 있는 구체적인 방법들 ▷ 데이터를 잘 써먹을 수 있는 구체적인 방법들 : (2) 데이터의 종류와 프라이버시 ▷ 데이터를 잘 써먹을 수 있는 구체적인 방법들 : (3...
    Date2015.08.28
    Read More
  23. 2015년 8월 마이크로소프트 보안 공지

    다음 표에는 이달에 해결된 각 취약성의 악용 가능성 평가가 나와 있습니다. 취약성은 공지 ID 및 CVE ID 순으로 나열되어 있습니다. 공지에서 심각도가 긴급 또는 중요인 취약성만 포함됩니다. 이 표...
    Date2015.08.12
    Read More
  24. DDoS 봇넷 공격 72%가 10개국에 집중 (카스퍼스키)

    2015년 2분기 Kaspersky DDoS 인텔리전스 통계 조사에 따르면 봇넷 공격을 받은 곳 중 4분의 3 가량이 단 10개 국가에 집중적으로 위치하고 있는 것으로 나타났습니다. 그 중 미국과 중국은 가장 많은 공격...
    Date2015.08.06
    Read More
  25. 안드로이드 stagefright 미디어 라이브러리 취약점 주의 권고

    개요 안드로이드의 미디어 파일(동영상, 이미지 등) 처리를 담당하는 stagefright에서 다수의 정수 오버플로우 취약점이 발견됨 공격자가 악성 미디어 파일이 포함된 MMS 메시지를 안드로이드 스마트 기기...
    Date2015.08.04
    Read More
  26. 전염병의 제왕, 천연두를 박멸하기까지

    가뭄과 역병은 역사적으로 큰 위기다. 한 나라가 망하기도 하고, 전쟁에서 패하는 원인이 되기도 한다. 나라가 망하는 원인을 딱 한 가지로 속단할 순 없지만, 기근(饑饉, 흉년으로 양식이 모자라 굶주리...
    Date2015.08.04
    Read More
  27. 윈도우10 업데이트 방법 (반드시 하세요)

    하단 32비트 / 64비트 버전에 맞춰서 실행 기존 설치된 프로그램 및 데이터 모두 유지 가능 Windows 10을 설치하거나 다시 설치해야 하는 경우 이 페이지의 도구를 사용하여 USB...
    Date2015.07.31
    Read More
  28. 오피스에서 구글 드라이브 파일을 직접 여는 플러그인

    구글이 윈도우 데스크탑 버전 오피스에서 구글 드라이브(Google Drive)에 저장된 클라우드 상의 Word와 Excel파일을 직접 열게 하는 오피스용 플러그인 Google Drive plug-in for Microsoft O...
    Date2015.07.22
    Read More
Board Pagination Prev 1 ... 10 11 12 13 14 15 16 17 18 19 ... 47 Next
/ 47