R 공부하기- 1) AWS EC2, AMI, GitHub

기대를 갖고 수강신청한 전공 수업 "온라인데이터커뮤니케이션"의 사용 언어가 Python에서 R로 변경되었다. Python은 이미 데스크탑에 IDE를 갖춰 놓았고, iPad에도 거금 10.99$를 투자하여 Pythonista라는 IDE 비스무리한 애플리케이션을 설치해둔 터였다. 무엇보다 Python은 코드잇 선생님들의 지도 하에 기초를 꽤 닦아둔 언어여서 갑작스러운 변경이 당혹스러울 수밖에 없었다. 

새로운 언어를 배우는 것은 물론 내게 도움이 될테니 꺼려지는 변화는 아니겠지만, R언어를 사용하기에 마땅한 iPad 애플리케이션이 아무리 찾아봐도 없다는 게 문제였다. 물론 가장 좋은 방법은 짱짱한 노트북을 한 대 장만해 학교에 들고다닐 수 있는 개발 환경을 구축하는 것이겠지만, 이 수업 하나 듣자고 딱히 필요성도 느끼지 못하는 노트북을 구입할 수 없었다. 이미 왠만한 일은 iPad로 클라우드상에서 끝내고 있기 때문에..... 

구글에 무작정 "R언어 아이패드" "아이패드 R코딩" "R on the ipad"와 같은 쿼리를 던져넣었고, R의 IDE인 Rstudio가 Web에서 접근 가능한 서버 형태로 배포되고 있다는 사실을 파악했다. 그리고 단숨에 떠오른 것은 아마존의 클라우드 서비스 AWS, 그리고 EC2였다. 

이 로고를 처음 보는 사람은 거의 없을 것이다.

AWS는 물론 종량제 클라우드 서버지만 감사하게도 처음 사용자용 Free Tier를 제공하고 있고, 이 요금제는 언제나 실행 가능한 ubuntu 서버를 포함한다. 

오랜만에 리눅스 명령어 좀 치겠구만....이라고 생각하던 차에, 또한 구글링으로 아래와 같은 블로그를 발견. 

능력자는 도처에 있다.

http://www.louisaslett.com/RStudio_AMI/에서는 이미 다 세팅된 아마존 가상머신 이미지(AMI:Amazon Machine Image)를 배포하고 있었다. 정확히 말하면, 해당 AMI가 AWS Marketplace에 등록되어 있다. 

평소 미국에서의 삶을 동경하는 나는 내 서버만이라도 북가주에 둬 볼까 하고 N, California를 클릭할 뻔 했으나, 사용중인 LG U+망의 극악무도한 해외망 접속 속도를 떠올리고 아쉬움을 잔뜩 머금은 채 Seoul Region을 선택할 수밖에 없었다. 

저 링크를 누르기 전에 미리 AWS 계정을 만들어 두는 것이 좋다. Amazon 계정이 있다면(직구를 한번이라도 해본 적이 있다면) 해당 account에 AWS 서비스가 등록될 것이고, Amazon 계정이 없다면 이 참에 새로 하나 만들면 그만.

AMI를 내 EC2에 설치했다. 설치하는 과정은 물 흐르듯 자연스러워서 스크린샷을 찍거나 설명을 참고할 것 조차 전혀 없었다. 내 데스크탑에 오리진 게임 설치하는 거보다 쉬웠음. 난생 처음 만져보는 클라우드 서버라고 바짝 쫄아 있었는데 민망하게 됐다. 

보안 그룹? 보안 군집? 뭐라 번역을....

딱 하나 신경써줄 부분은 생성한 EC2 Instance에 http로 접근할 수 있게 보안 그룹 설정을 만져줘야 하는 것이다. 해당 AMI로 배포되는 R Studio 서버는 HTTP 80번 포트를 사용한다. 80번 포트까지 모든 포트가 열려있도록 Inbound 설정을 하면 된다. SSH도 열어줘야하는데 아마 default로 열려있을 것이다. 

모든 설정을 마치고 생성한 Instance의 Public DNS로 접속하면 아래와 같은 R studio 로그온 창이 잘 보일 것이다. 기분이 매우 좋다. 

로그온 화면. 기본 ID/PW는 rstudio/rstudio임.

이제부터 이 콘솔에서 수행하는 모든 작업은 EC2가 연산하고, 해당 EC2에 귀속되어 있는 EBS에서 데이터를 저장할 것이다. 기본 저장용량 세팅은 10GB로 되어 있는데 한학기간 수업을 수강하는 데에 아마 충분하고도 남을 거라 본다.

Web 기반이니까 머신에 관계없이 HTTP페이지를 탐색할 수 있는 기기라면 어디서나 이 R studio에 접근할 수 있다. 당초 이 삽질(?)을 한 목적이었던 iPad에서 스튜디오에 접근해 보았다.  

잘 된다.

보시는 것처럼 노트북 살 돈을 굳혔음을 알 수 있다. 

어차피 모든 작업이 클라우드 상에서 연산되고 기록되므로 GitHub Integration은 딱히 필요없을 것 같기도 했지만, 그래도 그때그때 배운 내용을 노트해 둔다는 의미가 있으므로 GitHub 연결을 수행하기로 했다. 이 과정이 의외로 까다로웠다. 

우선 R Studio에서 내 리파지토리로 접근할 수 있게 public key를 추가시켜주는 과정이 필요하다. R Studio에서 발급한 public key를 GitHub에 등록시켜두면, R Studio에서 그 키를 제시해서 내 리파지토리에 코드를 푸시하는 방식이다. 말이 어려운데 그냥 현관문 디지털 도어락에 암호 설정하는거랑 똑같다 말만 그런게 아니라 원리가 그거랑 똑같음. 

GitHub Integration 과정 전반은 이 포스팅을 보고 따라했다. 

여기서 키를 만들고,
여기서 등록한다.

shell을 두려워하면 안된다. 아주 간단한 코드 몇 줄을 치고 나니 R Studio가 그간 commit됐던 변경 내용들을 리파지토리에 푸시하기 시작한다. (프로젝트를 만들 때 Version Control을 사용하겠다고 체크해둬야 함.) 

벨덕이라서 죄송합니다.

코드 달라고 열심히 remote repository 접근법을 알려주던 내 OnlineDataComm 리파지토리가 R 코드를 받아먹고, R언어의 리파지토리임을 파란색으로 나타냈다. 여담이지만 저 언어별 색깔 커스터마이즈할 수 있는 것인지 궁금. 자바가 9호선색(...)이라니 영 어울리지가 않아서...... 

샘플 코드라도 몇 개 올려놓고 스샷을 올리고 싶지만 R은 전혀 몰라서 (hello world도 모름) 그럴 수 없는 사정을 양해해 주시기 바란다. 

오늘 배운 점

  • iPad R 코딩 환경(혹은 어디서나 접속할 수 있는 클라우드기반 개발 환경)을 구축하기 위해 AWS 인스턴스를 세팅하는 방법.
  • R Studio에서 GitHub 연결을 수행하는 방법.
  • 코딩한다는 핑계로 노트북을 굳이 살 필욘 없단 사실.  

더 알고싶은 점

  • 헬로월드라도 할 줄 알았으면 좋았을걸.....
  • AWS Instance는 종량제 과금인데, Instance를 Free Tier 한도 이상 사용했을 때 내게 알림 없이 바로 과금이 시작되는 건가? 

리빙 포인트

  • 노트북 없이 코딩 수업을 수강하려면, 클라우드 서비스를 적극적으로 알아보는 것이 좋다. 
  • 아이패드는 한번 사놓고 두고두고 뽕을 뽑아 갈아 마시는 것이 좋다.