ID:
PW:

     0 분
     6 분

프로그래밍 Tips
프로그래밍에 관한 Tip을 공유하는 곳입니다.


AWS Lambda 체험기
이석종  2020-04-18 12:56:46, 조회 : 442, 추천 : 44
- Download #1 : [resize]AWS_lambda_01.png (32.8 KB), Download : 5

- Download #2 : [resize]AWS_lambda_02.png (37.0 KB), Download : 5


저는 개인적으로 모든 프로그램들은 결국 인터넷에서 돌아가는 세상이 올 것이라고 생각해봅니다.

업무환경이 개인 PC에서만 이루어지지 않을 것이라는 것이고
그러면 결국 인터넷에 접속해서 일을 하게 될 것입니다.

우리가 하는 구조설계업무도 모두 인터넷으로 가능하게 되겠죠.
인터넷에서 돌리기 가장 어려운 부분은 아마도 구조해석이겠네요.
구조해석 모델링을 인터넷상에서 하기는 쉽지 않습니다.
3차원 그래픽으로 여러가지 일을 해야하기 때문인데
요즘 인터넷 속도를 봐서는 그렇게 어려운 것은 아닐 것이라고 생각합니다.

개인적으로 인터넷에 올려서 설계업무를 할 수 있는 것을 시도해보려고 합니다.

그래서 AWS (Amazon Web Services)에 아이디를 만들고 스터디를 시작했습니다.

AWS는 결국 가상의 서버를 서비스해주는 것입니다.
저는 천리안시절(아마도 1995년정도인 것 같습니다.)에 무료 홈페이지 서비스를 이용했었고 그 이후로 돈을 내고 웹호스팅서비스를 받았었고 현재도 유료 웹호스팅 서비스를 받고 있습니다.

웹호스팅이라는 것은 웹서비스 즉 웹브라우저로 접속해서 하는 것들을 할 수 있도록 해주는 서비스입니다. 보통은 하드공간과 스트리밍의 크기로 요금을 매깁니다.

사용자들이 많이 방문하나 적게 방문하나 요금은 똑같죠.

그런데 아마존은 이 개념을 바꿔놨습니다.
사용한 만큼만 돈을 내는 내념으로 말이죠.

AWS.com에 접속해보면 엄청나게 많은 서비스 종류가 있습니다.
당연하겠죠? 쓰는 만큼 돈을 내는 것이 어떤 종류의 서비스를 얼만큼 쓰느냐를 정밀하게 관리하도록 해놓다보니 다양한 서비스가 있습니다.

그중에서 가장 인기 있는 것은 Amazon Elastic Compute Cloud(EC2)라고 합니다. EC2라고 부르는데 웹서버를 선택할 수 있습니다. 리눅스서버냐? 윈도우 서버냐? 웹서비스 언어는 무엇이냐? 등등

우리가 브라우저를 통해 웹에 접속하면 서버가 사용자가 요구하는 걸 처리해줍니다. 이 때 프로그래밍 언어가 필요한데 php, java, python, node js 등 다양한 언더들을 선택할 수 있습니다.

이 gumifo.org사이트는 php라는 언어를 씁니다. 이 분야에서 새로운 언어들이 계속 새롭게 나오고 있습니다.

우리나라는 java가 많이 쓰이고 있지만 다른 언어들도 계속 사용자를 확보하고 있는 것 같습니다.

저도 개인적으로 python이 쉽고 라이브러리들이 많아서 조금 공부해봤는데 문제는 이것을 pc에서 돌릴 일은 별로 없다는 것입니다. 나 혼자 쓰려면 문제가 없는데 프로그램을 나혼자 쓰려고 만드는 경우는 별로 없죠.

그래서 웹에서 돌리려고 알아봤는데 제가 웹호스팅을 받고 있는 이 없체에서는 python을 돌리기가 어렵더군요. 아니 돌릴 수는 있는데 python의 장점인 다양한 팩키지를 설치할 수가 없다는 것입니다.

그래서 알아보던 중 AWS Lambda 가 다양안 언어를 사용할 수 있다는 것을 알게 되었습니다. 이 서비스는 서버리스라고 부르더군요. EC2처럼 가상의 서버를 만들어주는 것이 아니라 내가 만든 함수를 돌려주는 역할을 하는 것입니다. 그래서 다른 웹호스팅 서비스와 좀 다릅니다.

아래에는 제가 AWS에 가입하고 python으로 hello world를 찍어본 경험을 간단하게 정리한 내용입니다.
1.AWS 가입
AWS.com에 접속해서 회원가입을 합니다.
아이디는 이메일 주소고
신용카드 번호를 물어봅니다. 처음 가입하면 1년은 무료이고 나중에는 사용한 만큼 요금이 청구된다고 합니다.
집주소, 전화번호 등을 입력하도록 되있습니다. 영문으로 입력해야합니다.
전화번호로 4자리 숫자의 승인번호를 보내줍니다. 이걸 입력하면 최종 가입완료됩니다.

2. 서비스찾기
가입한 아이디로 로그인을 하면 서비스 찾기를 볼 수 있습니다.
전체서비스 목록을 보면 아래와 같이 정말 다양한 것들이 있습니다.

컴퓨팅 | 컨테이너 | 스토리지 | 데이터베이스 | 마이그레이션 및 전송 | 네트워킹 및 콘텐츠 전송 | 개발자 도구 | Customer Enablement  | 로봇 공학  | 블록체인 | 위성 | Quantum Technologies | 관리 및 거버넌스 | 미디어 서비스  | Machine Learning  | 분석 | 보안, 자격 증명 및 규정 준수 | AWS 비용 관리  | 모바일 | AR 및 VR | 애플리케이션 통합 | 고객 참여  | 비즈니스 애플리케이션 | 최종 사용자 컴퓨팅 | 사물 인터넷 | 게임 개발

이중에서 컴퓨팅에 보면 EC2, Lightsail, Lambda ... 등이 있습니다.
이중에서 Lambda를 선택합니다.

3.함수생성
앞에서도 말했듯이 lambda서비스는 웹호스팅서비스가 아닙니다. 그래서 함수를 생성합니다. 함수생성을 누르면 함수이름을 입력하고 어느 언어를 쓸 것인지 설정해줍니다.
언어의 종류는 아래와 같습니다. 같은 언어의 다른 버전들도 선택할 수 있습니다.

.Net core 3.1(C#/PowerShell),
Go 1.x,
Java 11,
Node.js 12.x,
Python 3.8,
Ruby 2.7

4.python코드 편집 및 실행
생성된 python을 편집할 수 있습니다.
이렇게 만들어진 pytho은 AWS에 올라가 있는데 이를 실행시키기 위해서는 웹사용자가 호출을 했을 때 이에 반응하도록 트리거를 설정해줘야 합니다. 트리거를 API 게이트웨이를 선택하고 Create an API를 선택하고 REST API를 선택한 후 열기를 선택합니다.

5.웹에서 접근하기
이렇게 만들어진 함수를 외부에서 실행하려면 API게이트웨이 정보에 있는 url을 참조하면 됩니다. 생성된 API게이트웨이를 선택하면 ▶리소스경로의 ▶를 클릭하면   https://~로 시작하는 URL을 보여줍니다. 브라우져 주소창에 이 URL을 입력하면 이 함수를 실행시킬 수 있습니다.

6.패키지 사용하기
python의 장점은 package입니다. 패키지는 계층(layer)에 올립니다. pip명령으로 자신의 컴퓨터로 package를 다운받고 그 파일을 압축해서 올리는 방법입니다.

7.데이터교환
함수를 작동시킨 결과는 DB로 저장이 됩니다. 즉 python 함수로 어떤 처리를 한 후 그 결과를 db로 저장하고 다른 처리는 java 함수로 처리할 수 있습니다. 이 때 python함수로 만들어 놓은 db를 읽어오면 되는 것입니다. 다양한 언어들을 이용할 수 있다는 것입니다.

저도 아직 다 해보지는 못했습니다.
요즘 워낙 많은 언어들이 있고 오픈소스가 많다보니 다양한 언어로 매쉬업을 잘만 하면 멋진 기능을 만들 수도 있을 것 같다는 생각을 해봤습니다.

제가 본 유튜브 동영상들을 아래에 공유합니다.

AWS Lambda 개요 - 순식간에 웹 서버 만들어 보기 [AWS Lambda 강좌]
https://youtu.be/7uEDep9DFJs

AWS Lambda Layers를 이용해 공통 라이브러리 관리하기 [AWS Lambda 강좌]
https://youtu.be/XsTBlXw98Bo

AWS Lambda로 크롤링 봇 만들기 [AWS Lambda강좌]
https://www.youtube.com/watch?v=GNoZLjnwSP4
lamba에 beutifulsoup를 올려서 이용하는 법











이석종
웹에서도 돌아가고 PC에서도 돌아가는 언어가 있으면 좋겠다는 생각을 많이 해봅니다. 그런 언어가 있다면 아무래도 윈도우 계역이 유리하지 않나 싶습니다. 물론 요즘은 크로스플랫폼이 워낙 발전해서 다양한 언어들이 웹도 지원하지만 OS를 지배하고 있는 언어가 아무래도 유리하리가 생각됩니다. 그리고 예전에 fortran으로 만들었던 프로그램을 돌릴 수 있는 방법도 생각해봐야할 것 같습니다. 물론 fortran을 요즘 언어로 번역할 있으면 제일 좋겠죠? 개인적으로 [다정다감]의 대부분이 lisp으로 만들어져있는데 이를 python이나 java같은 언어로 번역했으면 좋겠다는 생각을 해봤습니다. 2020-04-18
15:16:26

 


ko youngbae
웹서버를 관리하는 OS가 대부분 유닉스 계열이나 리눅스 계열이 많은 것 같습니다. 아무래도 윈도우가 서버계열에 합류한지 얼마되지 않았고 비용이 만만치 않아서 그런 것 같습니다. 그리고 원래 네트웍의 모태가 유닉스이니 그쪽의 비중이 높은게 당연한 것 같기도 합니다. 2020-04-21
08:53:40

 


  추천하기   목록보기

Copyright 1999-2021 Zeroboard / skin by zero
구조설계의 미래를 준비하는 모임 [구조설계미래포럼]