요즘 개발자들은 행복한 고민에 빠져 있습니다. 개발, 배포, 운영 ~ 어디서 할까? 선택할 옵션이 다양해졌거든요. 클라우드에 VM 올려놓고 하던 대로 해볼까? 컨테이너, 이참에 나도 PaaS에 도전할까? FaaS, 이건 또 뭐지? 이 질문을 구글 클라우드 플랫폼(GCP)에 대입하면 다음과 같습니다.
- VM 쓰기: Google Compute Engine
- 컨테이너 쓰기: Google Kubernetes Engine
- FaaS 쓰기: Google Cloud Functions
어디서 개발할까? 정답이 있는 질문이 아닙니다. 기호와 편의를 묻는 말입니다. 일단 다음 세 질문에 대한 답을 하다 보면 내가 원하는 개발, 배포, 운영 환경이 무엇인지 좀 또렷해집니다.
- 내가 원하는 추상화 수준은?
- 기술적 요구 사항과 제약 사항은 무엇?
- 현재 우리 팀이 추구하는 방향은?
질문을 답을 달아 본 다음에 다음 표를 보시죠. 컴퓨트 엔진, 컨테이너 엔진, 앱 엔진 중에 당기는 것이 눈에 들어올 것입니다. 표 참 잘 만들었네요.
아마 대부분 개발자가 높은 수준의 추상화를 원할 것입니다. 인프라와 플랫폼이 아니라 개발, 나의 코드에 온전히 집중하고 싶은 게 개발자의 마음이 아닐까요? 하드웨어, 운영체제, 미들웨어 등 일일이 신경 쓰고, 유지 보수를 맡아야 한다면 누가 좋아하겠습니까. 이쯤에서 다음 의사결정 트리를 보시죠. 이러면 내게 필요한 클라우드 서비스를 콕 짚어 낼 수 있습니다.
2편에서는 개발 환경에 따른 개발 시간과 효율의 차이를 간단히 살펴보겠습니다.