서버리스(Serverless)

전은평·2023년 5월 7일
0

서버리스란?

이름에서부터 알 수 있듯이, 서버리스 서비스란 서버가 없다는 뜻으로 백엔드 서버 없이도 해당 서비스가 실행된다.

그럼 그런 일이 어떻게 가능한 것일까?

구글 Cloud Function을 이용해서 함수 단위로 배포를 진행하게 되면, 인스턴스를 따로 관리하지 않아도 서버리스 서비스를 사용할 수 있다. 기존에 했던 구글 인스턴스를 통한 배포는 항상 켜놓아야하기 때문에, 켜놓는 시간동안 비용이 들었다. 반면에 서버리스 서비스를 이용하게 되면, 함수가 실행되는 조건을 충족해서 함수가 실행될 때만 비용이 든다. 이는 24시간동안 서버를 켜놓아야하는 경우에 비해 비용절감의 효과가 있다.

그럼 다들 서버리스 서비스를 사용하면 될텐데, 그러지 않는 이유가 뭘까?

그건 바로 cold start 문제가 있기 때문이다!

Cloud Function을 이용한 함수를 실행한다면 함수를 실행시키는 조건이 충족이 되면, VM이 실행되고 서버가 열린다. 그리고 VM 안에서 해당 함수가 실행되게 된다.

그 후, 함수 요청이 끝나면 VM도 다시 사라진다.

즉, 24시간 서버가 켜져 있는 것이 아니라 요청이 들어올 때마다 서버가 켜지게 되는 것이다.

그러므로 서버가 켜지는 데 시간이 걸리며 일정 시간 동안(5s ~ 10s) 해당 서버가 존재하는 컴퓨터가 켜져 있다가 꺼지게 되어서 켜져 있을 동안 또 다른 요청이 들어오면 빠르게 해당 요청에 대한 응답이 이루어지는 반면, 일정 시간 후, 해당 서버가 꺼진 후 또 다른 요청이 들어온다면 서버가 다시 켜지는데 시간이 필요하다.

이렇게 서버가 켜지는데 시간이 걸려서 요청이 느려지는 것을 cold start 라고 한다.

cold start 문제를 해결하고자 계속해서 가짜 요청을 보내는 방법이 존재하는데, 계속 가짜 요청을 보내게 되면 결국 비용이 계속 발생하게 되므로 서버를 24시간 켜놓는것과 비슷한 비용으로, 결과적으로는 비용 절감의 효과가 없어진다.

결론은 해당 서버에 요청의 빈도에 따라 알맞는 것을 선택해서 이용하는 것이 바람직하다!!

무엇이든지 이게 무조건 낫다 라고 할 순 없다.
항상 상황에 맞춰 유동적으로 적용할 수 있는 융통성을 키울 수 있는 개발자가 되도록 노력해야겠다!

profile
`아는 만큼 보인다` 라는 명언을 좋아합니다. 많이 배워서 많은 걸 볼 수 있는 개발자가 되고 싶습니다.

0개의 댓글