안녕하세요. 저는 프로그래머 후루야마입니다.
우리는 AWS, Azure, GCP 그리고 다른 주요 MSP들을 다루고 있습니다. 이번에는 GCP를 맡겠습니다. GCP는 오랜 역사를 가지고 있으며, 특히 2008년부터 이용 가능한 GAE가 있습니다. 참고로 AWS는 2006년부터 이용 가능해졌습니다. 약간 사라졌지만, GAE는 PaaS로, PaaS 치고는 꽤 빠른 편입니다. 참고로, 가장 초기의 PaaS는 Force.com 인 것 같습니다. 2007. 좋아요. 참고로 GAE는 Google App Engine의 약자이고, 서버 계층은 완전히 숨겨져 있습니다. PaaS는 플랫폼 as a Service입니다. 서버 계층을 알 필요가 없는 앱 엔지니어들을 위한 것입니다. 약어가 많아 죄송합니다.
이 분야에 대해 이야기하고 계시다면 ISAO에 자세한 설명을 요청하시면 개요 수준에서 다루겠습니다. 확실히 하기 위해, 여기서 언급된 내용은 이것만은 아닙니다. 관심이 있으시면 ISAO에 문의해 주세요.
클라우드 엔드포인트에 대하여
https://cloud.google.com/endpoints/
Google Cloud Datastore에 쉽게 접근할 수 있도록 API를 제공하는 서비스입니다. 완전한 SDK를 갖추고 있어 매우 쉽습니다. 백엔드에서는 간단한 구현을, 전면에서는 네이티브 앱이나 JS로 구현하는 전략으로 빛을 발합니다. 하지만 현재로서는 Java나 Python으로만 구현할 수 있으니, Golang을 좋아하거나 PHP를 좋아하는 분들은 주의해야 합니다.
예전에 자바에서 사용해봤고, 그때는 JDO라는 데이터 접근 라이브러리를 사용하고 있었습니다. 이게 너무 큰 부담이었고 실제로 많이 울기도 했지만, 나중에 알게 된 바로는 이건 박쥐 연습이고 보통은 잘 쓰이지 않는 것 같아요. 구글에서는 자바에서 기본 설정으로 사용하는 것 같아서 자동으로 클래스를 생성하는 게 쉬웠어요. 울 수도 있겠네요. 자바로 하면 관리가 많이 안 되지만, Slim3나 글로벌 표준인 Objectify를 추천해요. 하지만 가장 좋은 방법은 GO에 구현하는 거예요. 그럴 경우에는 완전한 스크래치 라이브러리나 서드파티 라이브러리를 사용해야 합니다.
Go-엔드포인트 https://github.com/GoogleCloudPlatform/go-endpoints
구글에서 만든 언어이기 때문에, 요청을 받아 인스턴스로 실행된 후 스핀업 시간이 단연 가장 짧습니다. 약 40msec 정도인 것 같습니다. 참고로 JDO는 7000msec입니다. GO는 정말 대단합니다. 곧 GO를 해야 할까요?
인증에 대하여
앱과 웹사이트에는 보통 로그인 기능이 있습니다. CloudEndpoints와 GAE로 만든 앱/웹사이트에서 로그인 인증을 구현하는 가장 쉬운 방법은 구글 계정으로 인증하는 것입니다. 이 방법은 매우 쉽습니다. 하지만 사실 구글 계정이 없는 사람들도 있고, 애초에 구글 계정으로 인증하기를 꺼리는 서비스도 많습니다. 이게 구글 계정 조작 전략인가요? 저는 그 어둠이 깊다는 인상을 받았습니다.
GCP 관리 UI 소개
GCP 콘솔은 예전보다 훨씬 깔끔해졌지만, 기능이 가득한 AWS에 비하면 여전히 순진한 느낌이 듭니다. 복잡성이 반드시 좋은 것은 아니니 괜찮다고 생각합니다. GCP는 무료 요금제에 만족하지만, 무료 요금제를 최대한 활용하려면 할당량을 적절히 설정해야 합니다. 하지만 너무 어렵지 않고 비교적 직관적입니다. 적어도 일요일 프로그램 관련해서는 GCP와 GAE가 최고라고 느꼈습니다. EXIT를 목표로 하세요! (?)
클라우드 데이터스토어에 대하여
https://cloud.google.com/datastore/
이것은 NoSQL 데이터베이스입니다. GAE와 결합하면 무적의 확장성을 보여줍니다. DAU가 아무리 증가하거나 접근 급증이 있어도 거의 그대로 두는 것이 가능한 것 같습니다. 놀랍습니다.
또한 GQL이라는 쿼리를 사용할 수도 있는데, 이는 SQL과 비슷하지만 NoSQL입니다.
GQL 참조 https://cloud.google.com/datastore/docs/apis/gql/gql_reference
매우 제한적이고 SQL과는 완전히 다른 주의가 필요하지만, GQL이 그 임계값을 상당히 낮췄다고 생각합니다. 한번 시도해 보세요.
Redis나 Mongo 같은 NoSQL로 분류된 여러 데이터 저장소가 있지만, NoSQL처럼 모범 사례가 아니라 각 데이터 저장소마다 고유한 모범 사례가 있어서 수평적으로 확장하기가 어려워 보입니다. 또한 저도 어렴풋이 알고 있었지만, 학습 비용 측면에서는 조금 놀랐습니다.
클라우드 SQL
https://cloud.google.com/sql/docs/
모두가 기다려온 완전 관리형 MySQL로, GCP에서 실행됩니다. v2에서는 Aurora로 충분히 확장할 수 있는 성능을 갖춘 것 같습니다. GCP의 도쿄 지역이 곧 개장할 예정이라 지연 시간은 더 이상 문제가 되지 않습니다. 하지만 VPN으로만 접근을 제한할 수는 없으니, 이런 점에 신경 쓰는 것은 주의해야 합니다. 사실, 접근 권한을 적절히 관리하면 충분한 보안을 보장할 수 있는 것으로 보입니다.
그래서 저는 서둘러 GCP를 도입했습니다. 사용할 수 있다면 무적의 구글 인프라를 활용할 수 있습니다. 관심 있으시면 ISAO에 연락해 주세요.
쿠라마네 https://www.colorkrew.com/kuramane/
또한 9월 28일 사무실에서 Meetup을 계획하고 있으니, 그곳에서 질문하실 수 있습니다. 이 기회를 꼭 이용해 주세요!
Firebase와 Swift 3에서 새로 추가된 점에서 사용하고 싶은 점은 무엇인가 http://isao.connpass.com/event/40442/