GW LABS

Google Cloud StudyJam (8) - Serverless 본문

Infrastructure/Cloud Computing

Google Cloud StudyJam (8) - Serverless

GeonWoo Kim 2020. 12. 16. 17:49

Google Cloud StudyJam

이번 포스팅에서는 서버리스 아키텍처에 대해 알아본다. 지금까지 클라우드 서비스를 이용하면 네트워크와 하드웨어, 운영체제 등을 IT 팀이 직접 구축하지 않아도 되고 pay-as-you-go 형태로 인프라를 사용할 수 있다는 점을 배웠다. 그런데 서비스가 커지면 클라우드 상에서 관리해야할 자원들이 많아지고, 이로 인한 이슈도 점점 늘어날 것이다. 특히 설계했던 아키텍처에 문제가 있어서 설계를 변경해야 한다면 서비스 중단시간이 발생할 수도 있고, IT 팀이 대용량 트래픽 경험이 부족하다면 어플리케이션 자체에 문제가 있을 수도 있다. 이를 해결하고자 나온 개념이 서버리스 아키텍처이다.


서버리스

서버리스 아키텍처는 인프라를 관리할 필요없이 애플리케이션과 서비스를 구축하고 실행하는 방식이다. 서버, 미들웨어 등을 개발팀이 관리할 필요없이 클라우드 제공자가 관리해주는 것이다. 이로써 개발팀은 코드에만 집중할 수 있게 된다. 또한 기존 IaaS 방식과 달리 애플리케이션이 필요할 때에만 사용된다. 이벤트가 발생했을 때에만 사용되고 코드 실행이 중단되면 비용이 청구되지 않는다. 즉, 초단위로 컴퓨팅 리소스를 대여할 수 있는 것이다! 서버리스 아키텍처는 다음과 같이 3 가지로 구성된다.

  • 함수 서비스: 비즈니스 로직을 담당하는 서버리스 서비스
  • 메모리 캐시 서비스: 메모리 저장소 역항르 담당하는 서버리스 서비스
  • 데이터베이스 서비스: 데이터베이스 샤드 클러스터의 서버리스 서비스

개발팀은 함수 서비스에 함수를 구현하고, 필요한 만큼의 메모리 캐시 서비스를 예약하고, 데이터베이스 서비스에 들어갈 데이터 구조를 정의하면 서버리스 아키텍처를 이용한 서비스가 가능해진다.

 

서버리스의 장단점

서버리스 아키텍쳐의 장점으로는 대용량 트래픽을 다를 수 있는 서버를 쉽게 구축이 가능하다. 보안 및 성능 튜닝 등의 노력이 없어도 된다. 개발자는 비즈니스 로직에만 집중하게되고 따라서 개발 기간이 단축된다. 또한 서버리스 서비스가 일반적인 클라우드 서버보다 비용이 적다.

단점으로는 서버리스 아키텍처 제공자에 따라 서비스를 마이그레이션 하기가 어렵다. 드문 일이지만 클라우드 제공자의 서버리스 아키텍처 인프라에 문제가 생겼을 경우 컨트롤할 수가 없다. 응답시간이 매우 중요한 서비스의 경우에는 서버리스 아키텍처를 사용할 수 없다.

 

Cloud Function 실습

GCP에는 서버리스 서비스로 Cloud Function과 Cloud Run을 지원한다. Cloud Function은 서비스 이름 그대로 함수 단위로 로직을 배포할 수 있다. Cloud Run의 경우에는 컨테이너 단위로 로직을 배포할 수 있다. 이번 포스팅에서는 Cloud Function을 이용해서 서버리스 아키텍처를 체험해보려고 한다.

 

Google Cloud Functions

GCP 네비게이션 탭에서 Cloud Functions을 선택하면 위와 같은 모습을 볼 수 있다. 함수를 생성하기 위해 CREATE FUNCTONS 버튼을 클릭하자.

 

함수를 생성하는 화면 1

함수의 이름을 작성하고 기본적인 설정을 해줄 수 있다. 인증키 없이 외부에 노출하기 위해서는 비인증 접근을 허용하겠다는 옵션을 설정해줘야 한다. 트리거는 HTTP 요청, Pub/Sub, 클라우드 이벤트 3종류가 있다. 여기에서는 HTTP 요청을 받으면 함수를 실행하는 HTTP 트리거로 설정해준다.

 

함수를 생성하는 화면 2

함수의 언어는 Go, NodeJS, .Net, Python 등 다양하게 선택할 수 있다. 그 중 친숙한 파이썬을 선택했다. 간단하게 Hello World! 를 출력하는 함수이다.

 

함수 생성이 완료된 화면

함수 생성이 완료되면 위와 같은 화면을 볼 수 있다. 생성한 hello 함수를 클릭하면 정보를 볼 수 있다.

 

생성한 hello 함수의 정보 1

Cloud Functions는 생성한 함수의 다양한 정보를 대시보드 형태로 제공해주고 있다. Metrics 대시보드에서 함수의 트래픽이나 사용량을 쉽게 알수 있도록 디자인 되어있다.

 

생성한 hello 함수의 정보 1

Triggers 탭에서는 생성한 함수로 진입할 수 있는 URL을 보여준다. 해당 URL로 브라우저로 진입하면 아래와 같은 화면을 볼 수 있다.

 

함수가 실행된 모습

 

GCP 서버리스 아키텍처 서비스 중 Cloud Functions를 통해 서버리스 아키텍처의 기본을 알아봤다. 서버리스 아키텍처를 공부하면서 실제 업무 중에 사용 중인 많은 서비스들이 서버리스 아키텍처의 도움을 받으면 관리 포인트를 아주 많이 줄일 수 있다는 걸 알게 되었다. 클라우드 서비스를 사용하게되면 적극적으로 서버리스 아키텍처를 이용해서 서비스를 만들어야겠다!

 

 

 

Reference

 - aws.amazon.com/ko/lambda/serverless-architectures-learn-more/

 - www.redhat.com/ko/topics/cloud-native-apps/what-is-serverless

 - namu.wiki/w/%EC%84%9C%EB%B2%84%EB%A6%AC%EC%8A%A4%20%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98

 - velopert.com/3543

Comments