[Serverless Framework with Python] 환경 구축에서 간단한 API 개발까지 (1) - 설치 및 환경 구축




최근 서버리스 프레임워크를 통해 API를 개발하는 업무를 진행했습니다.


비록 연구/개발 초창기 단계 이기에 부족한 부분이 많지만, 지금까지 진행했던 과정을 정리해두면 다른 os나 업무 환경에서 서버리스를 이용한 API 개발 환경을 바로 구축할 수 있을 것이고, 나아가 다른 분에게 인수인계하거나 (저와 같은...)주니어 개발자를 교육할 때 도움이 될 것 같아 미리 정리해두고자 합니다.


그리고 제가 스스로 파고든 내용을 웹 상에 공유하면 많은 개발자 분들에게 피드백을 받을 수 있을 것 이므로... 개인의 코딩 실력 발전에 도움이 될 수 있을 것 같아 이렇게 작성하게 되었습니다.


이번 목표는 Serverless Framework의 개발 환경을 구축하고, Python을 활용해 AWS를 기반으로 하는 간단한 API 서비스를 만들어 볼 예정입니다.

비단 Serverless Framework말고도, 아마존에서 도메인 구매와 연동, route53을 활용한 도메인 설정 기능도 다뤄 단순한 학습용 코드로 끝나지 않고 고객에게 배포할 수 있는 API를 만들어보도록 하겠습니다.







serverless 설치 및 환경 구축



serverless는 웬만한 조작을 cmd / 터미널에서 다루고, macOS든 window든 패키지 관리를 Node.js의 npm으로 진행하기 때문에 설치하고 개발할 때 큰 차이가 없습니다. 다만 macOS에 설치할 때 permission 오류가 발생할 경우가 있으니 그 부분만 추가로 짚고 넘어가도록 하겠습니다.



serverless 설치



계속 언급하는 부분이지만 serverless 환경은 Node.js 기반으로 갖춰져 있습니다. 그러므로 당연하게도 Node.js를 설치해야 합니다.


macOS라면 Homebrew를 통해서, window에서는 chocolatey를 이용해 콘솔에서 설치하는 방법이 존재합니다. 저는 Node.js 사이트에 접속해 직접 패키지를 다운받아 진행하였기에 콘솔 설치 방법은 구글링을 권장하겠습니다...


※ 참고
macOS의 경우 패키지로 설치 시 permission 이슈가 발생할 가능성이 높고, 강제로 permission을 바꾸는 과정에서 보안상의 이슈가 존재할 수 있다고 합니다. permission 문제를 강제로 해결하는 방법을 하단에 기입해 두었으나, 그래도 걱정 되시는 분들은 콘솔 설치를 추천 드리겠습니다.


Node.js 사이트 링크는 다음과 같습니다.


https://nodejs.org/en/


macOS에서 Node.js 사이트에 접속한 화면 





링크에 들어가시면 LTS와 Current 두 가지 버전의 패키지가 존재하는 것을 확인 할 수 있습니다.

LTS 버전은 과거 버전이지만 안정성이 보장된 버전입니다.

Current는 그런 거 상관 없이 최신 버전으로 설치하는 링크입니다.

원하는 버전을 고르고 패키지를 다운로드 받습니다. 저는 LTS 버전으로 다운받았습니다.


설치를 마무리 지었으면 콘솔(cmd 혹은 터미널)에 접속하여 아래의 명령어를 입력합니다.



npm install -g serverless


위의 명령어에서 -g는 글로벌, 즉 전역환경을 의미합니다. 각 os의 시스템 폴더에 설치되어 이후 npm 사용 시 모든 환경에 적용되도록 라이브러리를 설치하는 것으로 알고 있습니다.


설치가 마무리 되었으면 아래 명령어를 통해 serverless 버전을 확인합니다. 버전이 뜬다면 설치가 완료된 것입니다.



serverless --version


이대로 설치가 마무리된다면 좋겠지만, 제가 설치할 때는 macOS 환경에서, 그것도 패키지를 다운받아 설치하였기에 permission에러가 발생하였습니다.


제가 검색해서 알아낸 permission error 해결법에 대해 알려 드리겠습니다.

만약 오류가 뜨지 않고 제대로 설치가 되었다면 아래의 글은 무시하셔도 상관 없습니다.



permission error 해결(macOS)



permission error를 해결하는 방법은 두 가지가 있습니다.



1. sudo 명령어로 serverless 설치

2. /root에 npm의 전역 환경 이동



1번을 사용하면 바로 해결됩니다. 다만 이후에 개발을 진행할 때 계속해서 sudo를 입력해야 하는 이슈 때문에 2번 방법으로 전환하였습니다.


2번 방법은 다음과 같습니다.


먼저 /root에 .npm-global 디렉토리를 생성합니다. 터미널 명령어는 다음과 같습니다.




mkdir ~/.npm-global


그다음 npm config를 설정합니다.




npm config set prefix '~/.npm-global'


다시 /root으로 돌아와 profile을 작성합니다.




cd ~
touch .profile
open -e .profile


위의 코드를 입력하면 porfile 파일이 텍스트 편집기로 열립니다.

텍스트 편집기에 아래의 명령어를 입력합니다. npm-global 디렉토리를 환경변수에 등록하는 코드입니다.




export PATH=~/.npm-global/bin:$PATH


입력했으면 profile을 저장하고 닫습니다. 그 다음 아래의 명령어를 터미널에 입력합니다.




source ~/.profile


그러면 .npm-global 디렉토리가 정상적으로 환경변수에 추가됩니다.

환경 변수에 제대로 추가되었는 지 확인하려면 다음 명령어를 입력해 확인합니다.



echo $PATH


.npm-global 디렉토리가 추가 된 것을 확인했다면 셋팅은 끝났습니다.

다시 위의 serverless 설치 코드를 입력해 봅시다. permission 에러가 해결 되었을 것입니다.


※ 참고
이 방식으로 진행할 경우 터미널을 켤 때마다 환경변수가 초기화 되기 때문에 매번 .profile을 실행해야 하는 번거로움이 존재합니다... 환경 변수에 고정적으로 등록하는 방법도 존재할 것이기에 찾으시는 분들은 알려주시면 감사하겠습니다 ㅎㅎ...


만약 serverless 설치는 잘 되었으나 serverless 관련 명령어를 입력시 permission 에러가 날 경우에는 /root의 .serverless 디렉토리에 모든 사용자 권한을 부여하는 방법으로 해결 할 수 있습니다.

터미널에 다음 명령어를 입력하시면 해결될 것 입니다.



sudo chmod -R 777 ~/.serverless





지금까지 serverless 설치하는 방법에 대해 알아보았습니다.

다음 파트에서는 AWS 셋팅 및 serverless와 연동을 진행하도록 하겠습니다.

댓글