본문 바로가기

Creation/Programming

Google Appengine 시작하기

Google Appengine 시작하기



  제목은 거창하게 지었지만.. 나름대로 공부해보면서 겪고 있는 점들에 대해서 간략하게 정리하려고 합니다.

  Google Appengine은 Google Cloud Platform에 속한 서비스이고.. 이 서비스는 장단점이 있겠지만 일단 큰 장점으로 개발자 혼자서 쉽게 환경을 구성하고 Application을 만들어 볼 수 있다는 점이 있겠고, 나중에 Scaling또한 굉장히 쉽다는 것이 있죠. 더 쉽게 말해서는 24시간 돌아가는 서버를 Google에게 주문을 하는데, 그 서버크기는 무한정 제공되고, 이용량에 따라 나중에 청구하겠다는 개념으로 보시면 됩니다.


  저는 사실 다른 이유 때문에 시작한 것은 아니고.. 텔레그램 봇을 돌려보려고 배워보고 있습니다. 사실 돌리고 있는 서버가 있어서 굳이 이럴 필요까지는 없지만.. 확실히 사용해보니 간단하더군요.




Google Appengine SDK 다운받기



  이것은 프로젝트 작성을 위해서 설치해야 하는 툴입니다. 프로그램 내부에서는 Deploy라는 이름으로 명명하던데.. 무튼 프로그램을 작성하고 서버로 올리는 역할을 한다고 보면 됩니다. 설치하고 실행하면 아래와 같은 화면을 볼 수 있구요.. Linux용은 콘솔로 동작하고 저는 윈도우 용으로 깔았습니다.(FYI..)




  프로젝트 추가는 File에 들어가셔서 하면 되구요, Hello world 넣는 것처럼 기초 설명은 아래 구글 SDK 홈페이지에 있더군요.. 사실 간단한 구조 구현하는데는 읽어보실 필요도 없겠지만 읽어보면 도움이 됩니다. 



  몇 항목만 발췌를 해보면..



Helloworld.py

	
import webapp2

class MainPage(webapp2.RequestHandler):
    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.write('Hello, World!')

app = webapp2.WSGIApplication([
    ('/', MainPage),
], debug=True) 
	


  설명은 Python 기준으로 합니다. Python의 경우 코드 하단의 app = webapp2.WSGIApplicaion~으로 시작하는 부분이 중요한데, 자신이 생성한 Appengine 계정의 가상 url에 연결할 코드를 넣는다고 보시면 됩니다. 이 예제의 경우에는 루트 디렉토리로 들어가게 될 경우 MainPage의 함수를 실행시키는 모습을 하고 있습니다. 간단한 구조이지요? 만약에 추가적인 수행을 원하는 경우에는 배열형식으로 계속해서 추가시켜주면 됩니다.


  먼저 설명을 했어야 하는 부분인데, 이렇게 작성한 프로그램을 동작시키기 위해서는 먼저 구글계정을 통해서 만들고자 하는 프로그램을 선언해야 합니다.





  Create a project를 눌러서 프로젝트를 만들고, 여기서 생성된 ID를 이용하여 구글은 사용량을 측정합니다. 개인이 이용하는 목적으로 만든다면 복잡한 프로젝트가 아닌이상 과금되는 일은 잘 없겠지만, 어쨌든 추후에 언제라도 과금될 수 있다는 사실을 명심하고 있어야겠습니다.



  이렇게 해서 작성한 Python 프로그램을 올리려면 아래처럼 앞서 설치한 Appengine 관리 프로그램을 켜시고, 프로젝트를 등록한 후, 아래 보이는 Deploy 버튼을 누르면 됩니다.




  다만 이렇게 하기 위해서는 app.yaml이라는 파일을 수정해야 합니다. 이 파일은 앱 동작을 위한 기본 설정을 적는 파일인데.. 위의 레퍼런스를 읽어보시거나, 아니면 추후에 기회가 되면 좀 더 설명하도록 하겠습니다.


  구글 Appengine은 로그또한 지원을 하기 때문에, 작성한 프로그램이 에러가 난다면 웹페이지를 통해서도 볼 수 있지만, log 페이지를 통해서 동작 로그를 확인할 수도 있습니다.





PS: 여건상 블로그를 오랫동안 쉬었었고, 이전처럼 포스팅하기 쉽지 않을 것 같습니다. 나중에 다시 봤을 때 도움이 될만하거나, 다른 사람들이 도움이 될 만한 내용들을 포스팅하는 방향으로 하려고 합니다. 양해 부탁드립니다.